diff options
author | Alessandro Portale <[email protected]> | 2024-10-10 17:45:50 +0200 |
---|---|---|
committer | Alessandro Portale <[email protected]> | 2024-10-11 06:53:22 +0000 |
commit | 9a6be8a411b7fe4a0412a5631785c21e2863fc5d (patch) | |
tree | f0ba188cd2788c23bc1ddb44872882045bb915ec /src/plugins/extensionmanager/extensionmanagerwidget.cpp | |
parent | fd8173b827eee658913fa6e667c63a841d1cde43 (diff) |
ExtensionManager: Show details placeholder when no extension is selected
The placeholder and the details widget are in a stack layout and made
visible, accordingly.
Task-number: QTCREATORBUG-31584
Change-Id: I0d42ab52ce12f1d42e259f540c247b79fc33d25f
Reviewed-by: hjk <[email protected]>
Diffstat (limited to 'src/plugins/extensionmanager/extensionmanagerwidget.cpp')
-rw-r--r-- | src/plugins/extensionmanager/extensionmanagerwidget.cpp | 59 |
1 files changed, 48 insertions, 11 deletions
diff --git a/src/plugins/extensionmanager/extensionmanagerwidget.cpp b/src/plugins/extensionmanager/extensionmanagerwidget.cpp index 77b93ef84d6..a2c4e7bebad 100644 --- a/src/plugins/extensionmanager/extensionmanagerwidget.cpp +++ b/src/plugins/extensionmanager/extensionmanagerwidget.cpp @@ -557,6 +557,7 @@ private: QString m_currentItemName; ExtensionsModel *m_extensionModel; ExtensionsBrowser *m_extensionBrowser; + QStackedWidget *m_detailsStack; CollapsingWidget *m_secondaryDescriptionWidget; HeadingWidget *m_headingWidget; QWidget *m_primaryContent; @@ -578,6 +579,40 @@ private: Tasking::TaskTreeRunner m_dlTaskTreeRunner; }; +static QWidget *descriptionPlaceHolder() +{ + auto placeHolder = new QWidget; + static const TextFormat tF { + Theme::Token_Text_Muted, UiElement::UiElementH4 + }; + auto title = tfLabel(tF); + title->setAlignment(Qt::AlignCenter); + title->setText(Tr::tr("No details to show")); + auto text = tfLabel(tF, false); + text->setAlignment(Qt::AlignCenter); + text->setText(Tr::tr("Select an extension to see more information about it.")); + text->setFont({}); + using namespace Layouting; + // clang-format off + Row { + st, + Column { + Stretch(2), + title, + WelcomePageHelpers::createRule(Qt::Horizontal), + text, + Stretch(3), + spacing(SpacingTokens::ExPaddingGapL), + }, + st, + noMargin, + }.attachTo(placeHolder); + // clang-format on + WelcomePageHelpers::setBackgroundColor(placeHolder, Theme::Token_Background_Muted); + placeHolder->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); + return placeHolder; +} + ExtensionManagerWidget::ExtensionManagerWidget() { m_extensionModel = new ExtensionsModel(this); @@ -644,7 +679,6 @@ ExtensionManagerWidget::ExtensionManagerWidget() }.attachTo(m_secondaryDescriptionWidget); Row { - WelcomePageHelpers::createRule(Qt::Vertical), Row { Column { Column { @@ -664,8 +698,12 @@ ExtensionManagerWidget::ExtensionManagerWidget() Row { Space(SpacingTokens::ExVPaddingGapXl), m_extensionBrowser, - descriptionColumns, - noMargin, spacing(0), + WelcomePageHelpers::createRule(Qt::Vertical), + Stack { + bindTo(&m_detailsStack), + descriptionPlaceHolder(), + descriptionColumns, + }, }, noMargin, spacing(0), }.attachTo(this); @@ -743,15 +781,14 @@ static QString markdownToHtml(const QString &markdown) void ExtensionManagerWidget::updateView(const QModelIndex ¤t) { - m_headingWidget->update(current); - - const bool showContent = current.isValid(); - m_primaryContent->setVisible(showContent); - m_secondaryContent->setVisible(showContent); - m_headingWidget->setVisible(showContent); - m_pluginStatus->setVisible(showContent); - if (!showContent) + if (current.isValid()) { + m_detailsStack->setCurrentIndex(1); + } else { + m_detailsStack->setCurrentIndex(0); return; + } + + m_headingWidget->update(current); m_currentItemName = current.data(RoleName).toString(); const bool isPack = current.data(RoleItemType) == ItemTypePack; |