QmlDesigner: Hide ADS for lite designer

* Adapt top toolbar by removing lock button and workspace combo box both
  in toolbar and flyout
* Add lite mode bool to dockamanager in order to lock workspace by
  default and skip config parameter
* Add new flag to ADS to block context menu on DockWidgetTab
* Hide workspace menu in view menu
* Deactivate middle mouse button and close button on DockWidgetTab

Task-number: QDS-13169
Change-Id: I3158c9d7eaef1a58520dc466e85a859e074d1c9e
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Henning Gruendl
2024-07-10 10:58:16 +02:00
committed by Henning Gründl
parent ea5a5b7f1c
commit 7b0b0deb84
7 changed files with 91 additions and 62 deletions

View File

@@ -763,6 +763,11 @@ bool ToolBarBackend::isDocumentDirty() const
&& Core::EditorManager::currentDocument()->isModified();
}
bool ToolBarBackend::isLiteModeEnabled() const
{
return QmlDesignerBasePlugin::isLiteModeEnabled();
}
void ToolBarBackend::launchGlobalAnnotations()
{
QmlDesignerPlugin::emitUsageStatistics(Constants::EVENT_TOOLBAR_EDIT_GLOBAL_ANNOTATION);

View File

@@ -99,6 +99,8 @@ class ToolBarBackend : public QObject
Q_PROPERTY(bool isSharingEnabled READ isSharingEnabled NOTIFY isSharingEnabledChanged)
Q_PROPERTY(bool isDocumentDirty READ isDocumentDirty NOTIFY isDocumentDirtyChanged)
Q_PROPERTY(bool isLiteModeEnabled READ isLiteModeEnabled CONSTANT)
public:
ToolBarBackend(QObject *parent = nullptr);
static void registerDeclarativeType();
@@ -150,6 +152,8 @@ public:
bool isDocumentDirty() const;
bool isLiteModeEnabled() const;
static void launchGlobalAnnotations();
signals:

View File

@@ -205,14 +205,20 @@ void DesignModeWidget::setup()
ADS::DockManager::setConfigFlag(ADS::DockManager::OpaqueSplitterResize, true);
ADS::DockManager::setConfigFlag(ADS::DockManager::AllTabsHaveCloseButton, false);
ADS::DockManager::setConfigFlag(ADS::DockManager::RetainTabSizeWhenCloseButtonHidden, true);
//ADS::DockManager::setAutoHideConfigFlags(ADS::DockManager::DefaultAutoHideConfig);
if (QmlDesignerBasePlugin::isLiteModeEnabled()) {
ADS::DockManager::setConfigFlag(ADS::DockManager::ActiveTabHasCloseButton, false);
ADS::DockManager::setConfigFlag(ADS::DockManager::MiddleMouseButtonClosesTab, false);
ADS::DockManager::setConfigFlag(ADS::DockManager::HideContextMenuDockWidgetTab, true);
}
auto designerSettings = DesignerSettings(settings);
if (designerSettings.value(DesignerSettingsKey::ENABLE_DOCKWIDGET_CONTENT_MIN_SIZE).toBool())
m_minimumSizeHintMode = ADS::DockWidget::MinimumSizeHintFromContentMinimumSize;
m_dockManager = new ADS::DockManager(this);
m_dockManager->setLiteMode(QmlDesignerBasePlugin::isLiteModeEnabled());
m_dockManager->setSettings(settings);
m_dockManager->setWorkspacePresetsPath(
Core::ICore::resourcePath("qmldesigner/workspacePresets/").toString());
@@ -277,35 +283,6 @@ void DesignModeWidget::setup()
ADS::DockManager::iconProvider().registerCustomIcon(ADS::FloatingWidgetNormalIcon,
floatingWidgetNormalIcon);
// Setup Actions and Menus
Core::ActionContainer *mview = Core::ActionManager::actionContainer(Core::Constants::M_VIEW);
// View > Views
Core::ActionContainer *mviews = Core::ActionManager::createMenu(Core::Constants::M_VIEW_VIEWS);
connect(mviews->menu(), &QMenu::aboutToShow, this, &DesignModeWidget::aboutToShowViews);
mviews->menu()->addSeparator();
// View > Workspaces
Core::ActionContainer *mworkspaces = Core::ActionManager::createMenu(QmlDesigner::Constants::M_VIEW_WORKSPACES);
mview->addMenu(mworkspaces, Core::Constants::G_VIEW_VIEWS);
mworkspaces->menu()->setTitle(tr("&Workspaces"));
mworkspaces->setOnAllDisabledBehavior(Core::ActionContainer::Show);
// Connect opening of the 'workspaces' menu with creation of the workspaces menu
connect(mworkspaces->menu(), &QMenu::aboutToShow, this, &DesignModeWidget::aboutToShowWorkspaces);
// Initially disable menus
mworkspaces->menu()->setEnabled(false);
// Enable/disable menus when mode is different to MODE_DESIGN
connect(Core::ModeManager::instance(),
&Core::ModeManager::currentModeChanged,
this,
[mworkspaces](Utils::Id mode, Utils::Id) {
if (mode == Core::Constants::MODE_DESIGN) {
mworkspaces->menu()->setEnabled(true);
} else {
mworkspaces->menu()->setEnabled(false);
}
});
// Create a DockWidget for each QWidget and add them to the DockManager
const Core::Context designContext(Core::Constants::C_DESIGN_MODE);
static const Utils::Id actionToggle("QmlDesigner.Toggle");
@@ -403,8 +380,40 @@ void DesignModeWidget::setup()
return first->description() < second->description();
});
for (Core::Command *command : viewCommands)
mviews->addAction(command);
if (!QmlDesignerBasePlugin::isLiteModeEnabled()) {
// Setup Actions and Menus
Core::ActionContainer *mview = Core::ActionManager::actionContainer(Core::Constants::M_VIEW);
// View > Views
Core::ActionContainer *mviews = Core::ActionManager::createMenu(Core::Constants::M_VIEW_VIEWS);
connect(mviews->menu(), &QMenu::aboutToShow, this, &DesignModeWidget::aboutToShowViews);
mviews->menu()->addSeparator();
// View > Workspaces
Core::ActionContainer *mworkspaces = Core::ActionManager::createMenu(
QmlDesigner::Constants::M_VIEW_WORKSPACES);
mview->addMenu(mworkspaces, Core::Constants::G_VIEW_VIEWS);
mworkspaces->menu()->setTitle(tr("&Workspaces"));
mworkspaces->setOnAllDisabledBehavior(Core::ActionContainer::Show);
// Connect opening of the 'workspaces' menu with creation of the workspaces menu
connect(mworkspaces->menu(), &QMenu::aboutToShow, this, &DesignModeWidget::aboutToShowWorkspaces);
// Initially disable menus
mworkspaces->menu()->setEnabled(false);
// Enable/disable menus when mode is different to MODE_DESIGN
connect(Core::ModeManager::instance(),
&Core::ModeManager::currentModeChanged,
this,
[mworkspaces](Utils::Id mode, Utils::Id) {
if (mode == Core::Constants::MODE_DESIGN) {
mworkspaces->menu()->setEnabled(true);
} else {
mworkspaces->menu()->setEnabled(false);
}
});
for (Core::Command *command : viewCommands)
mviews->addAction(command);
}
// Create toolbars
if (!ToolBar::isVisible()) {