Axivion: Provide usage hint

If the user opens the Axivion perspective without
configuring dashboards inside the settings the
perspective now gives at least a hint where to
start.

Change-Id: I7c4d171d52122be6fc7310a09eb86eb64270e4b2
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Stenger
2024-10-09 15:57:42 +02:00
parent 41d276eb6f
commit c7c0c43d76

View File

@@ -189,7 +189,8 @@ public:
const std::optional<Dto::TableInfoDto> currentTableInfo() const { return m_currentTableInfo; } const std::optional<Dto::TableInfoDto> currentTableInfo() const { return m_currentTableInfo; }
IssueListSearch searchFromUi() const; IssueListSearch searchFromUi() const;
void showOverlay(const QString &errorMessage = {}); enum OverlayIconType { EmptyIcon, ErrorIcon, SettingsIcon };
void showOverlay(const QString &message = {}, OverlayIconType type = EmptyIcon);
protected: protected:
void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;
private: private:
@@ -426,8 +427,10 @@ void IssuesWidget::initDashboardList(const QString &preferredProject)
m_dashboardProjects->clear(); m_dashboardProjects->clear();
} }
updateBasicProjectInfo(std::nullopt); updateBasicProjectInfo(std::nullopt);
showOverlay(Tr::tr("Configure dashboards in Preferences > Axivion > General."), SettingsIcon);
return; return;
} }
hideOverlay();
GuardLocker lock(m_signalBlocker); GuardLocker lock(m_signalBlocker);
m_dashboards->addItem(Tr::tr("None")); m_dashboards->addItem(Tr::tr("None"));
@@ -803,7 +806,7 @@ void IssuesWidget::onFetchRequested(int startRow, int limit)
fetchIssues(search); fetchIssues(search);
} }
void IssuesWidget::showOverlay(const QString &errorMessage) void IssuesWidget::showOverlay(const QString &message, OverlayIconType type)
{ {
if (!m_overlay) { if (!m_overlay) {
QTC_ASSERT(m_issuesView, return); QTC_ASSERT(m_issuesView, return);
@@ -811,22 +814,26 @@ void IssuesWidget::showOverlay(const QString &errorMessage)
m_overlay->attachToWidget(m_issuesView); m_overlay->attachToWidget(m_issuesView);
} }
m_overlay->setPaintFunction([errorMessage](QWidget *that, QPainter &p, QPaintEvent *) { m_overlay->setPaintFunction([message, type](QWidget *that, QPainter &p, QPaintEvent *) {
static const QIcon noData = Icon({{":/axivion/images/nodata.png", Theme::IconsDisabledColor}}, static const QIcon noData = Icon({{":/axivion/images/nodata.png", Theme::IconsDisabledColor}},
Utils::Icon::Tint).icon(); Utils::Icon::Tint).icon();
static const QIcon error = Icon({{":/axivion/images/error.png", Theme::IconsErrorColor}}, static const QIcon error = Icon({{":/axivion/images/error.png", Theme::IconsErrorColor}},
Utils::Icon::Tint).icon(); Utils::Icon::Tint).icon();
static const QIcon settings = Icon({{":/utils/images/settings.png", Theme::IconsDisabledColor}},
Utils::Icon::Tint).icon();
QRect iconRect(0, 0, 32, 32); QRect iconRect(0, 0, 32, 32);
iconRect.moveCenter(that->rect().center()); iconRect.moveCenter(that->rect().center());
if (errorMessage.isEmpty()) if (type == EmptyIcon)
noData.paint(&p, iconRect); noData.paint(&p, iconRect);
else else if (type == ErrorIcon)
error.paint(&p, iconRect); error.paint(&p, iconRect);
else if (type == SettingsIcon)
settings.paint(&p, iconRect);
p.save(); p.save();
p.setPen(Utils::creatorColor(Theme::TextColorDisabled)); p.setPen(Utils::creatorColor(Theme::TextColorDisabled));
const QFontMetrics &fm = p.fontMetrics(); const QFontMetrics &fm = p.fontMetrics();
p.drawText(iconRect.bottomRight() + QPoint{10, fm.height() / 2 - 16 - fm.descent()}, p.drawText(iconRect.bottomRight() + QPoint{10, fm.height() / 2 - 16 - fm.descent()},
errorMessage.isEmpty() ? Tr::tr("No Data") : errorMessage); message.isEmpty() ? Tr::tr("No Data") : message);
p.restore(); p.restore();
}); });
@@ -939,7 +946,7 @@ void AxivionPerspective::handleShowIssues(const QString &kind)
void AxivionPerspective::handleShowFilterException(const QString &errorMessage) void AxivionPerspective::handleShowFilterException(const QString &errorMessage)
{ {
m_issuesWidget->showOverlay(errorMessage); m_issuesWidget->showOverlay(errorMessage, IssuesWidget::ErrorIcon);
} }
void AxivionPerspective::reinitDashboardList(const QString &preferredProject) void AxivionPerspective::reinitDashboardList(const QString &preferredProject)