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 <hjk@qt.io>
This commit is contained in:
Alessandro Portale
2024-10-10 17:45:50 +02:00
parent fd8173b827
commit 9a6be8a411

View File

@@ -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;