aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/extensionmanager/extensionmanagerwidget.cpp
diff options
context:
space:
mode:
authorAlessandro Portale <[email protected]>2024-10-10 17:45:50 +0200
committerAlessandro Portale <[email protected]>2024-10-11 06:53:22 +0000
commit9a6be8a411b7fe4a0412a5631785c21e2863fc5d (patch)
treef0ba188cd2788c23bc1ddb44872882045bb915ec /src/plugins/extensionmanager/extensionmanagerwidget.cpp
parentfd8173b827eee658913fa6e667c63a841d1cde43 (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.cpp59
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 &current)
{
- 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;