diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp new file mode 100644 index 00000000000..1e772df1b3a --- /dev/null +++ b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp @@ -0,0 +1,194 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "qmljseditingsettingspage.h" +#include "qmljseditorconstants.h" + +#include +#include + +#include +#include +#include + + +using namespace QmlJSEditor; +using namespace QmlJSEditor::Internal; + +QmlJsEditingSettings::QmlJsEditingSettings() + : m_enableContextPane(false), + m_pinContextPane(false), + m_autoFormatOnSave(false), + m_autoFormatOnlyCurrentProject(false) +{} + +void QmlJsEditingSettings::set() +{ + if (get() != *this) + toSettings(Core::ICore::settings()); +} + +void QmlJsEditingSettings::fromSettings(QSettings *settings) +{ + settings->beginGroup(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML)); + m_enableContextPane = settings->value( + QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANE_KEY), + QVariant(false)).toBool(); + m_pinContextPane = settings->value( + QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANEPIN_KEY), + QVariant(false)).toBool(); + m_autoFormatOnSave = settings->value( + QLatin1String(QmlJSEditor::Constants::AUTO_FORMAT_ON_SAVE), + QVariant(false)).toBool(); + m_autoFormatOnlyCurrentProject = settings->value( + QLatin1String(QmlJSEditor::Constants::AUTO_FORMAT_ONLY_CURRENT_PROJECT), + QVariant(false)).toBool(); + settings->endGroup(); +} + +void QmlJsEditingSettings::toSettings(QSettings *settings) const +{ + settings->beginGroup(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML)); + settings->setValue(QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANE_KEY), + m_enableContextPane); + settings->setValue(QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANEPIN_KEY), + m_pinContextPane); + settings->setValue(QLatin1String(QmlJSEditor::Constants::AUTO_FORMAT_ON_SAVE), + m_autoFormatOnSave); + settings->setValue(QLatin1String(QmlJSEditor::Constants::AUTO_FORMAT_ONLY_CURRENT_PROJECT), + m_autoFormatOnlyCurrentProject); + settings->endGroup(); +} + +bool QmlJsEditingSettings::equals(const QmlJsEditingSettings &other) const +{ + return m_enableContextPane == other.m_enableContextPane + && m_pinContextPane == other.m_pinContextPane + && m_autoFormatOnSave == other.m_autoFormatOnSave + && m_autoFormatOnlyCurrentProject == other.m_autoFormatOnlyCurrentProject; +} + +bool QmlJsEditingSettings::enableContextPane() const +{ + return m_enableContextPane; +} + +void QmlJsEditingSettings::setEnableContextPane(const bool enableContextPane) +{ + m_enableContextPane = enableContextPane; +} + +bool QmlJsEditingSettings::pinContextPane() const +{ + return m_pinContextPane; +} + +void QmlJsEditingSettings::setPinContextPane(const bool pinContextPane) +{ + m_pinContextPane = pinContextPane; +} + +bool QmlJsEditingSettings::autoFormatOnSave() const +{ + return m_autoFormatOnSave; +} + +void QmlJsEditingSettings::setAutoFormatOnSave(const bool autoFormatOnSave) +{ + m_autoFormatOnSave = autoFormatOnSave; +} + +bool QmlJsEditingSettings::autoFormatOnlyCurrentProject() const +{ + return m_autoFormatOnlyCurrentProject; +} + +void QmlJsEditingSettings::setAutoFormatOnlyCurrentProject(const bool autoFormatOnlyCurrentProject) +{ + m_autoFormatOnlyCurrentProject = autoFormatOnlyCurrentProject; +} + +QmlJsEditingSettignsPageWidget::QmlJsEditingSettignsPageWidget(QWidget *parent) : + QWidget(parent) +{ + m_ui.setupUi(this); +} + +QmlJsEditingSettings QmlJsEditingSettignsPageWidget::settings() const +{ + QmlJsEditingSettings s; + s.setEnableContextPane(m_ui.textEditHelperCheckBox->isChecked()); + s.setPinContextPane(m_ui.textEditHelperCheckBoxPin->isChecked()); + s.setAutoFormatOnSave(m_ui.autoFormatOnSave->isChecked()); + s.setAutoFormatOnlyCurrentProject(m_ui.autoFormatOnlyCurrentProject->isChecked()); + return s; +} + +void QmlJsEditingSettignsPageWidget::setSettings(const QmlJsEditingSettings &s) +{ + m_ui.textEditHelperCheckBox->setChecked(s.enableContextPane()); + m_ui.textEditHelperCheckBoxPin->setChecked(s.pinContextPane()); + m_ui.autoFormatOnSave->setChecked(s.autoFormatOnSave()); + m_ui.autoFormatOnlyCurrentProject->setChecked(s.autoFormatOnlyCurrentProject()); +} + +QmlJsEditingSettings QmlJsEditingSettings::get() +{ + QmlJsEditingSettings settings; + settings.fromSettings(Core::ICore::settings()); + return settings; +} + +QmlJsEditingSettingsPage::QmlJsEditingSettingsPage() : + m_widget(0) +{ + setId("C.QmlJsEditing"); + setDisplayName(tr("QML/JS Editing")); + setCategory(Constants::SETTINGS_CATEGORY_QML); + setDisplayCategory(QCoreApplication::translate("QmlJSEditor", + QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML)); + setCategoryIcon(Utils::Icon(QmlJSTools::Constants::SETTINGS_CATEGORY_QML_ICON)); +} + +QWidget *QmlJsEditingSettingsPage::widget() +{ + if (!m_widget) { + m_widget = new QmlJsEditingSettignsPageWidget; + m_widget->setSettings(QmlJsEditingSettings::get()); + } + return m_widget; +} + +void QmlJsEditingSettingsPage::apply() +{ + if (!m_widget) // page was never shown + return; + m_widget->settings().set(); +} + +void QmlJsEditingSettingsPage::finish() +{ + delete m_widget; +} diff --git a/src/plugins/qmljseditor/quicktoolbarsettingspage.h b/src/plugins/qmljseditor/qmljseditingsettingspage.h similarity index 54% rename from src/plugins/qmljseditor/quicktoolbarsettingspage.h rename to src/plugins/qmljseditor/qmljseditingsettingspage.h index db0c5ee99b3..85687d6871f 100644 --- a/src/plugins/qmljseditor/quicktoolbarsettingspage.h +++ b/src/plugins/qmljseditor/qmljseditingsettingspage.h @@ -25,7 +25,7 @@ #pragma once -#include "ui_quicktoolbarsettingspage.h" +#include "ui_qmljseditingsettingspage.h" #include #include #include @@ -36,61 +36,77 @@ QT_END_NAMESPACE namespace QmlJSEditor { - class QuickToolBarSettings { + class QmlJsEditingSettings { public: - QuickToolBarSettings(); + QmlJsEditingSettings(); - static QuickToolBarSettings get(); + static QmlJsEditingSettings get(); void set(); void fromSettings(QSettings *); void toSettings(QSettings *) const; - bool equals(const QuickToolBarSettings &other) const; - bool enableContextPane; - bool pinContextPane; + bool equals(const QmlJsEditingSettings &other) const; + + bool enableContextPane() const; + void setEnableContextPane(const bool enableContextPane); + + bool pinContextPane() const; + void setPinContextPane(const bool pinContextPane); + + bool autoFormatOnSave() const; + void setAutoFormatOnSave(const bool autoFormatOnSave); + + bool autoFormatOnlyCurrentProject() const; + void setAutoFormatOnlyCurrentProject(const bool autoFormatOnlyCurrentProject); + + private: + bool m_enableContextPane; + bool m_pinContextPane; + bool m_autoFormatOnSave; + bool m_autoFormatOnlyCurrentProject; }; - inline bool operator==(const QuickToolBarSettings &s1, const QuickToolBarSettings &s2) + inline bool operator==(const QmlJsEditingSettings &s1, const QmlJsEditingSettings &s2) { return s1.equals(s2); } - inline bool operator!=(const QuickToolBarSettings &s1, const QuickToolBarSettings &s2) + inline bool operator!=(const QmlJsEditingSettings &s1, const QmlJsEditingSettings &s2) { return !s1.equals(s2); } -class QuickToolBarSettings; +class QmlJsEditingSettings; namespace Internal { -class QuickToolBarSettingsPageWidget : public QWidget +class QmlJsEditingSettignsPageWidget : public QWidget { Q_OBJECT public: - explicit QuickToolBarSettingsPageWidget(QWidget *parent = 0); + explicit QmlJsEditingSettignsPageWidget(QWidget *parent = 0); - QuickToolBarSettings settings() const; - void setSettings(const QuickToolBarSettings &); + QmlJsEditingSettings settings() const; + void setSettings(const QmlJsEditingSettings &); - static QuickToolBarSettings get(); + static QmlJsEditingSettings get(); private: - Ui::QuickToolBarSettingsPage m_ui; + Ui::QmlJsEditingSettingsPage m_ui; }; -class QuickToolBarSettingsPage : public Core::IOptionsPage +class QmlJsEditingSettingsPage : public Core::IOptionsPage { Q_OBJECT public: - QuickToolBarSettingsPage(); + QmlJsEditingSettingsPage(); QWidget *widget(); void apply(); void finish(); private: - QPointer m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/qmljseditor/quicktoolbarsettingspage.ui b/src/plugins/qmljseditor/qmljseditingsettingspage.ui similarity index 51% rename from src/plugins/qmljseditor/quicktoolbarsettingspage.ui rename to src/plugins/qmljseditor/qmljseditingsettingspage.ui index fddcffef6bf..c0c4c2d6b0a 100644 --- a/src/plugins/qmljseditor/quicktoolbarsettingspage.ui +++ b/src/plugins/qmljseditor/qmljseditingsettingspage.ui @@ -1,7 +1,7 @@ - QmlJSEditor::Internal::QuickToolBarSettingsPage - + QmlJSEditor::Internal::QmlJsEditingSettingsPage + 0 @@ -14,8 +14,8 @@ Form - - + + Qt Quick Toolbars @@ -40,7 +40,7 @@ - + Qt::Vertical @@ -48,13 +48,56 @@ 20 - 207 + 40 + + + + Automatic Formatting on File Save + + + + + + Enable auto format on file save + + + + + + + false + + + Restrict to files contained in the current project + + + + + + - + + + autoFormatOnSave + toggled(bool) + autoFormatOnlyCurrentProject + setEnabled(bool) + + + 216 + 40 + + + 216 + 63 + + + + diff --git a/src/plugins/qmljseditor/qmljseditor.pro b/src/plugins/qmljseditor/qmljseditor.pro index f5a0e42e922..978bc4cfe6e 100644 --- a/src/plugins/qmljseditor/qmljseditor.pro +++ b/src/plugins/qmljseditor/qmljseditor.pro @@ -17,7 +17,7 @@ HEADERS += \ qmloutlinemodel.h \ qmltaskmanager.h \ qmljsoutlinetreeview.h \ - quicktoolbarsettingspage.h \ + qmljseditingsettingspage.h \ quicktoolbar.h \ qmljscomponentnamedialog.h \ qmljsfindreferences.h \ @@ -46,7 +46,7 @@ SOURCES += \ qmltaskmanager.cpp \ qmljsquickfixes.cpp \ qmljsoutlinetreeview.cpp \ - quicktoolbarsettingspage.cpp \ + qmljseditingsettingspage.cpp \ quicktoolbar.cpp \ qmljscomponentnamedialog.cpp \ qmljsfindreferences.cpp \ @@ -62,5 +62,5 @@ SOURCES += \ qmljseditordocument.cpp FORMS += \ - quicktoolbarsettingspage.ui \ + qmljseditingsettingspage.ui \ qmljscomponentnamedialog.ui diff --git a/src/plugins/qmljseditor/qmljseditor.qbs b/src/plugins/qmljseditor/qmljseditor.qbs index 0cba20a7a61..940f414c9b9 100644 --- a/src/plugins/qmljseditor/qmljseditor.qbs +++ b/src/plugins/qmljseditor/qmljseditor.qbs @@ -26,6 +26,9 @@ QtcPlugin { "qmljscomponentnamedialog.cpp", "qmljscomponentnamedialog.h", "qmljscomponentnamedialog.ui", + "qmljseditingsettingspage.cpp", + "qmljseditingsettingspage.h", + "qmljseditingsettingspage.ui", "qmljseditor.cpp", "qmljseditor.h", "qmljseditor_global.h", @@ -68,9 +71,6 @@ QtcPlugin { "qmltaskmanager.h", "quicktoolbar.cpp", "quicktoolbar.h", - "quicktoolbarsettingspage.cpp", - "quicktoolbarsettingspage.h", - "quicktoolbarsettingspage.ui", ] Export { diff --git a/src/plugins/qmljseditor/qmljseditorconstants.h b/src/plugins/qmljseditor/qmljseditorconstants.h index 3f22b6e1ef3..bfebc16d47a 100644 --- a/src/plugins/qmljseditor/qmljseditorconstants.h +++ b/src/plugins/qmljseditor/qmljseditorconstants.h @@ -57,5 +57,8 @@ const char QML_CONTEXTPANEPIN_KEY[] = "QmlJSEditor.ContextPanePinned"; const char QML_UI_FILE_WARNING[] = "QmlJSEditor.QmlUiFileWarning"; +const char AUTO_FORMAT_ON_SAVE[] = "QmlJSEditor.AutoFormatOnSave"; +const char AUTO_FORMAT_ONLY_CURRENT_PROJECT[] = "QmlJSEditor.AutoFormatOnlyCurrentProject"; + } // namespace Constants } // namespace QmlJSEditor diff --git a/src/plugins/qmljseditor/qmljseditorplugin.cpp b/src/plugins/qmljseditor/qmljseditorplugin.cpp index 6bd676e7b82..9a427a1b08f 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.cpp +++ b/src/plugins/qmljseditor/qmljseditorplugin.cpp @@ -23,18 +23,18 @@ ** ****************************************************************************/ -#include "qmljseditorplugin.h" -#include "qmljshighlighter.h" +#include "qmljseditingsettingspage.h" #include "qmljseditor.h" #include "qmljseditorconstants.h" #include "qmljseditordocument.h" +#include "qmljseditorplugin.h" +#include "qmljshighlighter.h" #include "qmljsoutline.h" #include "qmljspreviewrunner.h" +#include "qmljsquickfixassist.h" #include "qmljssnippetprovider.h" #include "qmltaskmanager.h" #include "quicktoolbar.h" -#include "quicktoolbarsettingspage.h" -#include "qmljsquickfixassist.h" #include #include @@ -50,6 +50,8 @@ #include #include #include +#include +#include #include #include #include @@ -193,11 +195,14 @@ bool QmlJSEditorPlugin::initialize(const QStringList & /*arguments*/, QString *e addAutoReleasedObject(new QmlJSOutlineWidgetFactory); addAutoReleasedObject(new QuickToolBar); - addAutoReleasedObject(new QuickToolBarSettingsPage); + addAutoReleasedObject(new QmlJsEditingSettingsPage); connect(EditorManager::instance(), &EditorManager::currentEditorChanged, this, &QmlJSEditorPlugin::currentEditorChanged); + connect(EditorManager::instance(), &Core::EditorManager::aboutToSave, + this, &QmlJSEditorPlugin::autoFormatOnSave); + return true; } @@ -234,9 +239,25 @@ void QmlJSEditorPlugin::renameUsages() void QmlJSEditorPlugin::reformatFile() { if (m_currentDocument) { - QTC_ASSERT(!m_currentDocument->isSemanticInfoOutdated(), return); + QmlJS::Document::Ptr document = m_currentDocument->semanticInfo().document; + QmlJS::Snapshot snapshot = QmlJS::ModelManagerInterface::instance()->snapshot(); - const QString &newText = QmlJS::reformat(m_currentDocument->semanticInfo().document); + if (m_currentDocument->isSemanticInfoOutdated()) { + QmlJS::Document::MutablePtr latestDocument; + + const QString fileName = m_currentDocument->filePath().toString(); + latestDocument = snapshot.documentFromSource(QString::fromUtf8(m_currentDocument->contents()), + fileName, + QmlJS::ModelManagerInterface::guessLanguageOfFile(fileName)); + latestDocument->parseQml(); + snapshot.insert(latestDocument); + document = latestDocument; + } + + if (!document->isParsedCorrectly()) + return; + + const QString &newText = QmlJS::reformat(document); QTextCursor tc(m_currentDocument->document()); tc.movePosition(QTextCursor::Start); tc.movePosition(QTextCursor::End, QTextCursor::KeepAnchor); @@ -296,4 +317,25 @@ void QmlJSEditorPlugin::checkCurrentEditorSemanticInfoUpToDate() m_reformatFileAction->setEnabled(semanticInfoUpToDate); } +void QmlJSEditorPlugin::autoFormatOnSave(Core::IDocument *document) +{ + if (!QmlJsEditingSettings::get().autoFormatOnSave()) + return; + + // Check that we are dealing with a QML/JS editor + if (document->id() != Constants::C_QMLJSEDITOR_ID) + return; + + // Check if file is contained in the current project (if wished) + if (QmlJsEditingSettings::get().autoFormatOnlyCurrentProject()) { + const ProjectExplorer::Project *pro = ProjectExplorer::ProjectTree::currentProject(); + if (!pro || !pro->files(ProjectExplorer::Project::SourceFiles).contains( + document->filePath().toString())) { + return; + } + } + + reformatFile(); +} + } // namespace QmlJSEditor diff --git a/src/plugins/qmljseditor/qmljseditorplugin.h b/src/plugins/qmljseditor/qmljseditorplugin.h index a85f16b3894..b176866d950 100644 --- a/src/plugins/qmljseditor/qmljseditorplugin.h +++ b/src/plugins/qmljseditor/qmljseditorplugin.h @@ -38,6 +38,7 @@ namespace Utils { class JsonSchemaManager; } namespace Core { class Command; class ActionContainer; +class IDocument; class IEditor; } @@ -82,6 +83,7 @@ private: void currentEditorChanged(Core::IEditor *editor); void runSemanticScan(); void checkCurrentEditorSemanticInfoUpToDate(); + void autoFormatOnSave(Core::IDocument *document); Core::Command *addToolAction(QAction *a, Core::Context &context, Core::Id id, Core::ActionContainer *c1, const QString &keySequence); diff --git a/src/plugins/qmljseditor/quicktoolbar.cpp b/src/plugins/qmljseditor/quicktoolbar.cpp index 863b778c178..9bc5b69855b 100644 --- a/src/plugins/qmljseditor/quicktoolbar.cpp +++ b/src/plugins/qmljseditor/quicktoolbar.cpp @@ -24,7 +24,7 @@ ****************************************************************************/ #include "quicktoolbar.h" -#include "quicktoolbarsettingspage.h" +#include "qmljseditingsettingspage.h" #include #include @@ -114,7 +114,7 @@ QuickToolBar::~QuickToolBar() void QuickToolBar::apply(TextEditor::TextEditorWidget *editorWidget, Document::Ptr document, const ScopeChain *scopeChain, Node *node, bool update, bool force) { - if (!QuickToolBarSettings::get().enableContextPane && !force && !update) { + if (!QmlJsEditingSettings::get().enableContextPane() && !force && !update) { contextWidget()->hide(); return; } @@ -219,10 +219,10 @@ void QuickToolBar::apply(TextEditor::TextEditorWidget *editorWidget, Document::P if (!update) contextWidget()->setType(m_prototypes); if (!update) - contextWidget()->activate(p3 , p1, p2, QuickToolBarSettings::get().pinContextPane); + contextWidget()->activate(p3 , p1, p2, QmlJsEditingSettings::get().pinContextPane()); else - contextWidget()->rePosition(p3 , p1, p2, QuickToolBarSettings::get().pinContextPane); - contextWidget()->setOptions(QuickToolBarSettings::get().enableContextPane, QuickToolBarSettings::get().pinContextPane); + contextWidget()->rePosition(p3 , p1, p2, QmlJsEditingSettings::get().pinContextPane()); + contextWidget()->setOptions(QmlJsEditingSettings::get().enableContextPane(), QmlJsEditingSettings::get().pinContextPane()); contextWidget()->setPath(document->path()); contextWidget()->setProperties(&propertyReader); m_doc = document; @@ -404,16 +404,16 @@ void QuickToolBar::onPropertyRemovedAndChange(const QString &remove, const QStri void QuickToolBar::onPinnedChanged(bool b) { - QuickToolBarSettings settings = QuickToolBarSettings::get(); - settings.pinContextPane = b; + QmlJsEditingSettings settings = QmlJsEditingSettings::get(); + settings.setPinContextPane(b); settings.set(); } void QuickToolBar::onEnabledChanged(bool b) { - QuickToolBarSettings settings = QuickToolBarSettings::get(); - settings.pinContextPane = b; - settings.enableContextPane = b; + QmlJsEditingSettings settings = QmlJsEditingSettings::get(); + settings.setPinContextPane(b); + settings.setEnableContextPane(b); settings.set(); } diff --git a/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp b/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp deleted file mode 100644 index c98124499e5..00000000000 --- a/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp +++ /dev/null @@ -1,133 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt Creator. -** -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -****************************************************************************/ - -#include "quicktoolbarsettingspage.h" -#include "qmljseditorconstants.h" - -#include -#include - -#include -#include -#include - - -using namespace QmlJSEditor; -using namespace QmlJSEditor::Internal; - -QuickToolBarSettings::QuickToolBarSettings() - : enableContextPane(false), - pinContextPane(false) -{} - -void QuickToolBarSettings::set() -{ - if (get() != *this) - toSettings(Core::ICore::settings()); -} - -void QuickToolBarSettings::fromSettings(QSettings *settings) -{ - settings->beginGroup(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML)); - enableContextPane = settings->value( - QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANE_KEY), QVariant(false)).toBool(); - pinContextPane = settings->value( - QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANEPIN_KEY), QVariant(false)).toBool(); - settings->endGroup(); -} - -void QuickToolBarSettings::toSettings(QSettings *settings) const -{ - settings->beginGroup(QLatin1String(QmlJSEditor::Constants::SETTINGS_CATEGORY_QML)); - settings->setValue(QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANE_KEY), enableContextPane); - settings->setValue(QLatin1String(QmlJSEditor::Constants::QML_CONTEXTPANEPIN_KEY), pinContextPane); - settings->endGroup(); -} - -bool QuickToolBarSettings::equals(const QuickToolBarSettings &other) const -{ - return enableContextPane == other.enableContextPane - && pinContextPane == other.pinContextPane; -} - - -QuickToolBarSettingsPageWidget::QuickToolBarSettingsPageWidget(QWidget *parent) : - QWidget(parent) -{ - m_ui.setupUi(this); -} - -QuickToolBarSettings QuickToolBarSettingsPageWidget::settings() const -{ - QuickToolBarSettings ds; - ds.enableContextPane = m_ui.textEditHelperCheckBox->isChecked(); - ds.pinContextPane = m_ui.textEditHelperCheckBoxPin->isChecked(); - return ds; -} - -void QuickToolBarSettingsPageWidget::setSettings(const QuickToolBarSettings &s) -{ - m_ui.textEditHelperCheckBox->setChecked(s.enableContextPane); - m_ui.textEditHelperCheckBoxPin->setChecked(s.pinContextPane); -} - -QuickToolBarSettings QuickToolBarSettings::get() -{ - QuickToolBarSettings settings; - settings.fromSettings(Core::ICore::settings()); - return settings; -} - -QuickToolBarSettingsPage::QuickToolBarSettingsPage() : - m_widget(0) -{ - setId("C.QmlToolbar"); - setDisplayName(tr("Qt Quick ToolBar")); - setCategory(Constants::SETTINGS_CATEGORY_QML); - setDisplayCategory(QCoreApplication::translate("QmlJSEditor", - QmlJSEditor::Constants::SETTINGS_TR_CATEGORY_QML)); - setCategoryIcon(Utils::Icon(QmlJSTools::Constants::SETTINGS_CATEGORY_QML_ICON)); -} - -QWidget *QuickToolBarSettingsPage::widget() -{ - if (!m_widget) { - m_widget = new QuickToolBarSettingsPageWidget; - m_widget->setSettings(QuickToolBarSettings::get()); - } - return m_widget; -} - -void QuickToolBarSettingsPage::apply() -{ - if (!m_widget) // page was never shown - return; - m_widget->settings().set(); -} - -void QuickToolBarSettingsPage::finish() -{ - delete m_widget; -}