forked from qt-creator/qt-creator
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:
@@ -557,6 +557,7 @@ private:
|
|||||||
QString m_currentItemName;
|
QString m_currentItemName;
|
||||||
ExtensionsModel *m_extensionModel;
|
ExtensionsModel *m_extensionModel;
|
||||||
ExtensionsBrowser *m_extensionBrowser;
|
ExtensionsBrowser *m_extensionBrowser;
|
||||||
|
QStackedWidget *m_detailsStack;
|
||||||
CollapsingWidget *m_secondaryDescriptionWidget;
|
CollapsingWidget *m_secondaryDescriptionWidget;
|
||||||
HeadingWidget *m_headingWidget;
|
HeadingWidget *m_headingWidget;
|
||||||
QWidget *m_primaryContent;
|
QWidget *m_primaryContent;
|
||||||
@@ -578,6 +579,40 @@ private:
|
|||||||
Tasking::TaskTreeRunner m_dlTaskTreeRunner;
|
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()
|
ExtensionManagerWidget::ExtensionManagerWidget()
|
||||||
{
|
{
|
||||||
m_extensionModel = new ExtensionsModel(this);
|
m_extensionModel = new ExtensionsModel(this);
|
||||||
@@ -644,7 +679,6 @@ ExtensionManagerWidget::ExtensionManagerWidget()
|
|||||||
}.attachTo(m_secondaryDescriptionWidget);
|
}.attachTo(m_secondaryDescriptionWidget);
|
||||||
|
|
||||||
Row {
|
Row {
|
||||||
WelcomePageHelpers::createRule(Qt::Vertical),
|
|
||||||
Row {
|
Row {
|
||||||
Column {
|
Column {
|
||||||
Column {
|
Column {
|
||||||
@@ -664,8 +698,12 @@ ExtensionManagerWidget::ExtensionManagerWidget()
|
|||||||
Row {
|
Row {
|
||||||
Space(SpacingTokens::ExVPaddingGapXl),
|
Space(SpacingTokens::ExVPaddingGapXl),
|
||||||
m_extensionBrowser,
|
m_extensionBrowser,
|
||||||
|
WelcomePageHelpers::createRule(Qt::Vertical),
|
||||||
|
Stack {
|
||||||
|
bindTo(&m_detailsStack),
|
||||||
|
descriptionPlaceHolder(),
|
||||||
descriptionColumns,
|
descriptionColumns,
|
||||||
noMargin, spacing(0),
|
},
|
||||||
},
|
},
|
||||||
noMargin, spacing(0),
|
noMargin, spacing(0),
|
||||||
}.attachTo(this);
|
}.attachTo(this);
|
||||||
@@ -743,15 +781,14 @@ static QString markdownToHtml(const QString &markdown)
|
|||||||
|
|
||||||
void ExtensionManagerWidget::updateView(const QModelIndex ¤t)
|
void ExtensionManagerWidget::updateView(const QModelIndex ¤t)
|
||||||
{
|
{
|
||||||
m_headingWidget->update(current);
|
if (current.isValid()) {
|
||||||
|
m_detailsStack->setCurrentIndex(1);
|
||||||
const bool showContent = current.isValid();
|
} else {
|
||||||
m_primaryContent->setVisible(showContent);
|
m_detailsStack->setCurrentIndex(0);
|
||||||
m_secondaryContent->setVisible(showContent);
|
|
||||||
m_headingWidget->setVisible(showContent);
|
|
||||||
m_pluginStatus->setVisible(showContent);
|
|
||||||
if (!showContent)
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_headingWidget->update(current);
|
||||||
|
|
||||||
m_currentItemName = current.data(RoleName).toString();
|
m_currentItemName = current.data(RoleName).toString();
|
||||||
const bool isPack = current.data(RoleItemType) == ItemTypePack;
|
const bool isPack = current.data(RoleItemType) == ItemTypePack;
|
||||||
|
Reference in New Issue
Block a user