diff options
author | Aleksei German <aleksei.german@qt.io> | 2021-03-23 14:04:04 +0100 |
---|---|---|
committer | Aleksei German <aleksei.german@qt.io> | 2021-03-24 14:57:01 +0000 |
commit | 960d0e42adad46f6d8683a5a71d20d920ed5ffa7 (patch) | |
tree | 1329479cd692a9ec1d855a700d55bafd241479c2 | |
parent | 611615f10b2e7d8e37aa7a958b350d71e68dd59e (diff) |
Replace modal dialog with InfoBar in QmlProject
Change-Id: I0dfa8722748ae67ff29ad0aeb72681ee8c413d28
Fixes: QDS-3765
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
-rw-r--r-- | src/plugins/qmldesigner/designersettings.cpp | 1 | ||||
-rw-r--r-- | src/plugins/qmldesigner/designersettings.h | 1 | ||||
-rw-r--r-- | src/plugins/qmldesigner/settingspage.cpp | 5 | ||||
-rw-r--r-- | src/plugins/qmldesigner/settingspage.ui | 7 | ||||
-rw-r--r-- | src/plugins/qmlprojectmanager/qmlproject.cpp | 69 |
5 files changed, 29 insertions, 54 deletions
diff --git a/src/plugins/qmldesigner/designersettings.cpp b/src/plugins/qmldesigner/designersettings.cpp index ec47140584..ed12230ff9 100644 --- a/src/plugins/qmldesigner/designersettings.cpp +++ b/src/plugins/qmldesigner/designersettings.cpp @@ -86,7 +86,6 @@ void DesignerSettings::fromSettings(QSettings *settings) restoreValue(settings, DesignerSettingsKey::SIMPLE_COLOR_PALETTE_CONTENT, QStringList()); restoreValue(settings, DesignerSettingsKey::ALWAYS_DESIGN_MODE, true); restoreValue(settings, DesignerSettingsKey::DISABLE_ITEM_LIBRARY_UPDATE_TIMER, true); - restoreValue(settings, DesignerSettingsKey::OPEN_QMLPROJECT_IN_QDS, false); settings->endGroup(); settings->endGroup(); diff --git a/src/plugins/qmldesigner/designersettings.h b/src/plugins/qmldesigner/designersettings.h index 719beed666..7667b78482 100644 --- a/src/plugins/qmldesigner/designersettings.h +++ b/src/plugins/qmldesigner/designersettings.h @@ -70,7 +70,6 @@ const char ENABLE_TIMELINEVIEW[] = "EnableTimelineView"; const char SIMPLE_COLOR_PALETTE_CONTENT[] = "SimpleColorPaletteContent"; const char ALWAYS_DESIGN_MODE[] = "AlwaysDesignMode"; const char DISABLE_ITEM_LIBRARY_UPDATE_TIMER[] = "DisableItemLibraryUpdateTimer"; -const char OPEN_QMLPROJECT_IN_QDS[] = "OpenQmlprojectInQDS"; /* This key value is used in QmlProjectManager */ } class QMLDESIGNERCORE_EXPORT DesignerSettings : public QHash<QByteArray, QVariant> diff --git a/src/plugins/qmldesigner/settingspage.cpp b/src/plugins/qmldesigner/settingspage.cpp index e3a041e388..569cdb74d7 100644 --- a/src/plugins/qmldesigner/settingspage.cpp +++ b/src/plugins/qmldesigner/settingspage.cpp @@ -178,8 +178,6 @@ DesignerSettings SettingsPageWidget::settings() const m_ui.featureTimelineEditorCheckBox->isChecked()); settings.insert(DesignerSettingsKey::ALWAYS_DESIGN_MODE, m_ui.designerAlwaysDesignModeCheckBox->isChecked()); - settings.insert(DesignerSettingsKey::OPEN_QMLPROJECT_IN_QDS, - m_ui.openQmlprojectInQDSCheckBox->isChecked()); return settings; } @@ -249,13 +247,10 @@ void SettingsPageWidget::setSettings(const DesignerSettings &settings) DesignerSettingsKey::ALWAYS_DESIGN_MODE).toBool()); m_ui.featureTimelineEditorCheckBox->setChecked(settings.value( DesignerSettingsKey::ENABLE_TIMELINEVIEW).toBool()); - m_ui.openQmlprojectInQDSCheckBox->setChecked(settings.value( - DesignerSettingsKey::OPEN_QMLPROJECT_IN_QDS).toBool()); if (settings.value(DesignerSettingsKey::STANDALONE_MODE).toBool()) { m_ui.debugGroupBox->hide(); m_ui.featureTimelineEditorCheckBox->hide(); - m_ui.openQmlprojectInQDSCheckBox->hide(); } } diff --git a/src/plugins/qmldesigner/settingspage.ui b/src/plugins/qmldesigner/settingspage.ui index 0831675447..b6e5ff2497 100644 --- a/src/plugins/qmldesigner/settingspage.ui +++ b/src/plugins/qmldesigner/settingspage.ui @@ -430,13 +430,6 @@ </property> </widget> </item> - <item row="1" column="0"> - <widget class="QCheckBox" name="openQmlprojectInQDSCheckBox"> - <property name="text"> - <string>Open "Qt Quick Prototype" projects (.qmlproject) in Qt Design Studio</string> - </property> - </widget> - </item> </layout> </widget> </item> diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 524c792743..3469a44c23 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -53,7 +53,7 @@ #include <texteditor/textdocument.h> #include <utils/algorithm.h> -#include <utils/checkablemessagebox.h> +#include <utils/infobar.h> #include <QDebug> #include <QLoggingCategory> @@ -73,6 +73,24 @@ Q_LOGGING_CATEGORY(infoLogger, "QmlProjectManager.QmlBuildSystem", QtInfoMsg) namespace QmlProjectManager { +const char openInQDSAppSetting[] = "OpenInQDSApp"; + +static void openQDS(const QString &qdsPath, const Utils::FilePath &fileName) +{ + bool qdsStarted = false; + //-a and -client arguments help to append project to open design studio application + if (Utils::HostOsInfo::isMacHost()) + qdsStarted = QProcess::startDetached("/usr/bin/open", {"-a", qdsPath, fileName.toString()}); + else + qdsStarted = QProcess::startDetached(qdsPath, {"-client", fileName.toString()}); + + if (!qdsStarted) { + QMessageBox::warning(Core::ICore::dialogParent(), + fileName.fileName(), + QObject::tr("Failed to start Qt Design Studio.")); + } +} + QmlProject::QmlProject(const Utils::FilePath &fileName) : Project(QString::fromLatin1(Constants::QMLPROJECT_MIMETYPE), fileName) { @@ -95,45 +113,16 @@ QmlProject::QmlProject(const Utils::FilePath &fileName) if (foundQDS) { auto lambda = [fileName, qdsPath]() { - const QString projectName = fileName.fileName(); - const QString doNotShowAgainKey = "OpenInQDSApp"; //entry that is used only here - const QString openInQDSKey = "QML/Designer/OpenQmlprojectInQDS"; //entry from qml settings - QSettings *settings = Core::ICore::settings(); - const bool shouldAskAgain = Utils::CheckableMessageBox::shouldAskAgain(settings, - doNotShowAgainKey); - bool openInQDS = false; - - if (shouldAskAgain) { - bool dontShow = false; - const auto dialogResult = - Utils::CheckableMessageBox::question(Core::ICore::dialogParent(), - projectName, - tr("Would you like to open the project in Qt Design Studio?"), - tr("Do not show this dialog anymore."), - &dontShow); - openInQDS = (dialogResult == QDialogButtonBox::Yes); - - if (dontShow) { - Utils::CheckableMessageBox::doNotAskAgain(settings, doNotShowAgainKey); - settings->setValue(openInQDSKey, openInQDS); - } - } else { - openInQDS = settings->value(openInQDSKey, false).toBool(); - } - - if (openInQDS) { - bool qdsStarted = false; - //-a and -client arguments help to append project to open design studio application - if (Utils::HostOsInfo::isMacHost()) - qdsStarted = QProcess::startDetached("/usr/bin/open", {"-a", qdsPath, fileName.toString()}); - else - qdsStarted = QProcess::startDetached(qdsPath, {"-client", fileName.toString()}); - - if (!qdsStarted) { - QMessageBox::warning(Core::ICore::dialogParent(), - projectName, - tr("Failed to start Qt Design Studio.")); - } + if (Core::ICore::infoBar()->canInfoBeAdded(openInQDSAppSetting)) { + Utils::InfoBarEntry + info(openInQDSAppSetting, + tr("Would you like to open the project in Qt Design Studio?"), + Utils::InfoBarEntry::GlobalSuppression::Enabled); + info.setCustomButtonInfo(tr("Open in Qt Design Studio"), [&, qdsPath, fileName] { + Core::ICore::infoBar()->removeInfo(openInQDSAppSetting); + openQDS(qdsPath, fileName); + }); + Core::ICore::infoBar()->addInfo(info); } }; |