diff options
author | Jarek Kobus <[email protected]> | 2011-05-25 08:50:01 +0200 |
---|---|---|
committer | Christian Kamm <[email protected]> | 2011-05-25 09:41:35 +0200 |
commit | 934a8238d4937f5bcf1dd22692c07d455af34506 (patch) | |
tree | 02d5719b6bb7955e69756714bceb6a753a49420c /src/plugins | |
parent | f950b8d7c7812c7a5916676fbd5f9c2edf61118f (diff) |
Implement qml tab settings
Change-Id: I0b7365b5b3d7538f2b4a8c5eaff3420f448dd5be
Reviewed-on: http://codereview.qt.nokia.com/99
Reviewed-by: Qt Sanity Bot <[email protected]>
Reviewed-by: Christian Kamm <[email protected]>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/qmljstools/qmljscodestylesettingsfactory.cpp | 41 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljscodestylesettingsfactory.h | 24 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljscodestylesettingspage.cpp | 76 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljscodestylesettingspage.h | 11 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstools-lib.pri | 4 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstoolsplugin.cpp | 10 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstoolsplugin.h | 4 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstoolssettings.cpp | 66 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljstoolssettings.h | 77 |
9 files changed, 270 insertions, 43 deletions
diff --git a/src/plugins/qmljstools/qmljscodestylesettingsfactory.cpp b/src/plugins/qmljstools/qmljscodestylesettingsfactory.cpp new file mode 100644 index 00000000000..ab6d556488d --- /dev/null +++ b/src/plugins/qmljstools/qmljscodestylesettingsfactory.cpp @@ -0,0 +1,41 @@ +#include "qmljscodestylesettingsfactory.h" +#include "qmljscodestylesettingspage.h" +#include "qmljstoolsconstants.h" +#include <texteditor/tabpreferences.h> +#include <texteditor/tabsettings.h> +#include <QtGui/QLayout> + +using namespace QmlJSTools; + +QmlJSCodeStylePreferencesFactory::QmlJSCodeStylePreferencesFactory() +{ +} + +QString QmlJSCodeStylePreferencesFactory::languageId() +{ + return Constants::QML_JS_SETTINGS_ID; +} + +QString QmlJSCodeStylePreferencesFactory::displayName() +{ + return Constants::QML_JS_SETTINGS_NAME; +} + +TextEditor::IFallbackPreferences *QmlJSCodeStylePreferencesFactory::createPreferences( + const QList<TextEditor::IFallbackPreferences *> &fallbacks) const +{ + return 0; +} + +QWidget *QmlJSCodeStylePreferencesFactory::createEditor(TextEditor::IFallbackPreferences *preferences, + TextEditor::TabPreferences *tabPreferences, + QWidget *parent) const +{ + Q_UNUSED(preferences) + + Internal::QmlJSCodeStylePreferencesWidget *widget = new Internal::QmlJSCodeStylePreferencesWidget(parent); + widget->layout()->setMargin(0); + widget->setTabPreferences(tabPreferences); + return widget; +} + diff --git a/src/plugins/qmljstools/qmljscodestylesettingsfactory.h b/src/plugins/qmljstools/qmljscodestylesettingsfactory.h new file mode 100644 index 00000000000..321f564e92f --- /dev/null +++ b/src/plugins/qmljstools/qmljscodestylesettingsfactory.h @@ -0,0 +1,24 @@ +#ifndef QMLJSCODESTYLESETTINGSFACTORY_H +#define QMLJSCODESTYLESETTINGSFACTORY_H + +#include <texteditor/icodestylepreferencesfactory.h> + +namespace QmlJSTools { + +class QmlJSCodeStylePreferencesFactory : public TextEditor::ICodeStylePreferencesFactory +{ +public: + QmlJSCodeStylePreferencesFactory(); + + virtual QString languageId(); + virtual QString displayName(); + virtual TextEditor::IFallbackPreferences *createPreferences(const QList<TextEditor::IFallbackPreferences *> &fallbacks) const; + virtual QWidget *createEditor(TextEditor::IFallbackPreferences *settings, + TextEditor::TabPreferences *tabSettings, + QWidget *parent) const; + +}; + +} // namespace QmlJSTools + +#endif // QMLJSCODESTYLESETTINGSFACTORY_H diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp index 01968e4bdb0..31afdbabac4 100644 --- a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp +++ b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp @@ -1,6 +1,7 @@ #include "qmljscodestylesettingspage.h" #include "ui_qmljscodestylesettingspage.h" #include "qmljstoolsconstants.h" +#include "qmljstoolssettings.h" #include "qmljsindenter.h" #include "qmljsqtstylecodeformatter.h" @@ -24,7 +25,7 @@ namespace Internal { // ------------------ CppCodeStyleSettingsWidget -QmlJSCodeStyleSettingsWidget::QmlJSCodeStyleSettingsWidget(QWidget *parent) : +QmlJSCodeStylePreferencesWidget::QmlJSCodeStylePreferencesWidget(QWidget *parent) : QWidget(parent), m_tabPreferences(0), m_ui(new ::Ui::QmlJSCodeStyleSettingsPage) @@ -49,22 +50,22 @@ QmlJSCodeStyleSettingsWidget::QmlJSCodeStyleSettingsWidget(QWidget *parent) : updatePreview(); } -QmlJSCodeStyleSettingsWidget::~QmlJSCodeStyleSettingsWidget() +QmlJSCodeStylePreferencesWidget::~QmlJSCodeStylePreferencesWidget() { delete m_ui; } -void QmlJSCodeStyleSettingsWidget::setTabPreferences(TextEditor::TabPreferences *tabPreferences) +void QmlJSCodeStylePreferencesWidget::setTabPreferences(TextEditor::TabPreferences *tabPreferences) { m_tabPreferences = tabPreferences; m_ui->tabPreferencesWidget->setTabPreferences(tabPreferences); connect(m_tabPreferences, SIGNAL(currentSettingsChanged(TextEditor::TabSettings)), - this, SLOT(slotTabSettingsChanged())); + this, SLOT(slotSettingsChanged())); updatePreview(); } -QString QmlJSCodeStyleSettingsWidget::searchKeywords() const +QString QmlJSCodeStylePreferencesWidget::searchKeywords() const { QString rc; QLatin1Char sep(' '); @@ -75,29 +76,30 @@ QString QmlJSCodeStyleSettingsWidget::searchKeywords() const return rc; } -void QmlJSCodeStyleSettingsWidget::setFontSettings(const TextEditor::FontSettings &fontSettings) +void QmlJSCodeStylePreferencesWidget::setFontSettings(const TextEditor::FontSettings &fontSettings) { m_ui->previewTextEdit->setFont(fontSettings.font()); } -void QmlJSCodeStyleSettingsWidget::setVisualizeWhitespace(bool on) +void QmlJSCodeStylePreferencesWidget::setVisualizeWhitespace(bool on) { DisplaySettings displaySettings = m_ui->previewTextEdit->displaySettings(); displaySettings.m_visualizeWhitespace = on; m_ui->previewTextEdit->setDisplaySettings(displaySettings); } -void QmlJSCodeStyleSettingsWidget::slotTabSettingsChanged() +void QmlJSCodeStylePreferencesWidget::slotSettingsChanged() { updatePreview(); } -void QmlJSCodeStyleSettingsWidget::updatePreview() +void QmlJSCodeStylePreferencesWidget::updatePreview() { QTextDocument *doc = m_ui->previewTextEdit->document(); const TextEditor::TabSettings &ts = m_tabPreferences - ? m_tabPreferences->currentSettings() : TextEditorSettings::instance()->tabPreferences()->settings(); + ? m_tabPreferences->currentSettings() + : TextEditorSettings::instance()->tabPreferences()->settings(); m_ui->previewTextEdit->setTabSettings(ts); QtStyleCodeFormatter formatter(ts); formatter.invalidateCache(doc); @@ -119,17 +121,9 @@ void QmlJSCodeStyleSettingsWidget::updatePreview() QmlJSCodeStyleSettingsPage::QmlJSCodeStyleSettingsPage(/*QSharedPointer<CppFileSettings> &settings,*/ QWidget *parent) : - Core::IOptionsPage(parent)/*, - m_settings(settings)*/ -{ - if (const QSettings *s = Core::ICore::instance()->settings()) { - TextEditor::TabSettings tabSettings; - // read it from old global settings for the first time? - tabSettings.fromSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); -// TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance(); -// textEditorSettings->setTabSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, -// tabSettings); - } + Core::IOptionsPage(parent), + m_pageTabPreferences(0) +{ } QmlJSCodeStyleSettingsPage::~QmlJSCodeStyleSettingsPage() @@ -163,10 +157,14 @@ QIcon QmlJSCodeStyleSettingsPage::categoryIcon() const QWidget *QmlJSCodeStyleSettingsPage::createPage(QWidget *parent) { - m_widget = new QmlJSCodeStyleSettingsWidget(parent); - m_widget->setTabPreferences( - TextEditorSettings::instance()->tabPreferences( - QmlJSTools::Constants::QML_JS_SETTINGS_ID)); + m_widget = new QmlJSCodeStylePreferencesWidget(parent); + + TextEditor::TabPreferences *originalTabPreferences + = QmlJSToolsSettings::instance()->tabPreferences(); + m_pageTabPreferences = new TextEditor::TabPreferences(originalTabPreferences->fallbacks(), m_widget); + m_pageTabPreferences->setSettings(originalTabPreferences->settings()); + m_pageTabPreferences->setCurrentFallback(originalTabPreferences->currentFallback()); + m_widget->setTabPreferences(m_pageTabPreferences); if (m_searchKeywords.isEmpty()) m_searchKeywords = m_widget->searchKeywords(); @@ -175,17 +173,21 @@ QWidget *QmlJSCodeStyleSettingsPage::createPage(QWidget *parent) void QmlJSCodeStyleSettingsPage::apply() { -// if (m_widget) { -// const TabSettings newTabSettings = m_widget->tabSettings(); -// TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance(); -// if (newTabSettings != textEditorSettings->tabSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID)) { -// textEditorSettings->setTabSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, -// newTabSettings); -// if (QSettings *s = Core::ICore::instance()->settings()) { -// newTabSettings.toSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); -// } -// } -// } + if (m_widget) { + QSettings *s = Core::ICore::instance()->settings(); + + TextEditor::TabPreferences *originalTabPreferences = QmlJSToolsSettings::instance()->tabPreferences(); + if (originalTabPreferences->settings() != m_pageTabPreferences->settings()) { + originalTabPreferences->setSettings(m_pageTabPreferences->settings()); + if (s) + originalTabPreferences->toSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); + } + if (originalTabPreferences->currentFallback() != m_pageTabPreferences->currentFallback()) { + originalTabPreferences->setCurrentFallback(m_pageTabPreferences->currentFallback()); + if (s) + originalTabPreferences->toSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); + } + } } bool QmlJSCodeStyleSettingsPage::matches(const QString &s) const @@ -194,4 +196,4 @@ bool QmlJSCodeStyleSettingsPage::matches(const QString &s) const } } // namespace Internal -} // namespace CppTools +} // namespace QmlJSTools diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.h b/src/plugins/qmljstools/qmljscodestylesettingspage.h index c7574e30e37..e24619177f6 100644 --- a/src/plugins/qmljstools/qmljscodestylesettingspage.h +++ b/src/plugins/qmljstools/qmljscodestylesettingspage.h @@ -21,13 +21,13 @@ namespace TextEditor { namespace QmlJSTools { namespace Internal { -class QmlJSCodeStyleSettingsWidget : public QWidget +class QmlJSCodeStylePreferencesWidget : public QWidget { Q_OBJECT public: - explicit QmlJSCodeStyleSettingsWidget(QWidget *parent = 0); - virtual ~QmlJSCodeStyleSettingsWidget(); + explicit QmlJSCodeStylePreferencesWidget(QWidget *parent = 0); + virtual ~QmlJSCodeStylePreferencesWidget(); void setTabPreferences(TextEditor::TabPreferences *tabPreferences); @@ -36,7 +36,7 @@ public: private slots: void setFontSettings(const TextEditor::FontSettings &fontSettings); void setVisualizeWhitespace(bool on); - void slotTabSettingsChanged(); + void slotSettingsChanged(); void updatePreview(); private: @@ -68,7 +68,8 @@ public: private: QString m_searchKeywords; - QPointer<QmlJSCodeStyleSettingsWidget> m_widget; + TextEditor::TabPreferences *m_pageTabPreferences; + QPointer<QmlJSCodeStylePreferencesWidget> m_widget; }; } // namespace Internal diff --git a/src/plugins/qmljstools/qmljstools-lib.pri b/src/plugins/qmljstools/qmljstools-lib.pri index 607830d55cd..2d5cad5b231 100644 --- a/src/plugins/qmljstools/qmljstools-lib.pri +++ b/src/plugins/qmljstools/qmljstools-lib.pri @@ -8,6 +8,8 @@ HEADERS += \ $$PWD/qmljstools_global.h \ $$PWD/qmljstoolsplugin.h \ $$PWD/qmljstoolsconstants.h \ + $$PWD/qmljstoolssettings.h \ + $$PWD/qmljscodestylesettingsfactory.h \ $$PWD/qmljsmodelmanager.h \ $$PWD/qmljsqtstylecodeformatter.h \ $$PWD/qmljsrefactoringchanges.h \ @@ -19,6 +21,8 @@ HEADERS += \ SOURCES += \ $$PWD/qmljstoolsplugin.cpp \ + $$PWD/qmljstoolssettings.cpp \ + $$PWD/qmljscodestylesettingsfactory.cpp \ $$PWD/qmljsmodelmanager.cpp \ $$PWD/qmljsqtstylecodeformatter.cpp \ $$PWD/qmljsrefactoringchanges.cpp \ diff --git a/src/plugins/qmljstools/qmljstoolsplugin.cpp b/src/plugins/qmljstools/qmljstoolsplugin.cpp index 322070c93ef..5e750bc8e8e 100644 --- a/src/plugins/qmljstools/qmljstoolsplugin.cpp +++ b/src/plugins/qmljstools/qmljstoolsplugin.cpp @@ -36,9 +36,12 @@ #include "qmljslocatordata.h" #include "qmljscodestylesettingspage.h" #include "qmljstoolsconstants.h" +#include "qmljstoolssettings.h" +#include "qmljscodestylesettingsfactory.h" #include <texteditor/texteditorsettings.h> #include <texteditor/tabsettings.h> +#include <texteditor/codestylepreferencesmanager.h> #include <extensionsystem/pluginmanager.h> @@ -74,6 +77,8 @@ bool QmlJSToolsPlugin::initialize(const QStringList &arguments, QString *error) Q_UNUSED(error) // Core::ICore *core = Core::ICore::instance(); + m_settings = new QmlJSToolsSettings(this); // force registration of qmljstools settings + // Objects m_modelManager = new ModelManager(this); // Core::VCSManager *vcsManager = core->vcsManager(); @@ -87,7 +92,10 @@ bool QmlJSToolsPlugin::initialize(const QStringList &arguments, QString *error) LocatorData *locatorData = new LocatorData; addAutoReleasedObject(locatorData); addAutoReleasedObject(new FunctionFilter(locatorData)); -// addAutoReleasedObject(new QmlJSCodeStyleSettingsPage); + addAutoReleasedObject(new QmlJSCodeStyleSettingsPage); + + TextEditor::CodeStylePreferencesManager::instance()->registerFactory( + new QmlJSTools::QmlJSCodeStylePreferencesFactory()); return true; } diff --git a/src/plugins/qmljstools/qmljstoolsplugin.h b/src/plugins/qmljstools/qmljstoolsplugin.h index 3c4e8796aa0..c6019e42f43 100644 --- a/src/plugins/qmljstools/qmljstoolsplugin.h +++ b/src/plugins/qmljstools/qmljstoolsplugin.h @@ -45,6 +45,9 @@ class QDir; QT_END_NAMESPACE namespace QmlJSTools { + +class QmlJSToolsSettings; + namespace Internal { class ModelManager; @@ -66,6 +69,7 @@ public: private: ModelManager *m_modelManager; + QmlJSToolsSettings *m_settings; static QmlJSToolsPlugin *m_instance; }; diff --git a/src/plugins/qmljstools/qmljstoolssettings.cpp b/src/plugins/qmljstools/qmljstoolssettings.cpp new file mode 100644 index 00000000000..503f8f03f5c --- /dev/null +++ b/src/plugins/qmljstools/qmljstoolssettings.cpp @@ -0,0 +1,66 @@ +#include "qmljstoolssettings.h" +#include "qmljstoolsconstants.h" + +#include <texteditor/texteditorsettings.h> +#include <texteditor/tabpreferences.h> + +#include <utils/qtcassert.h> +#include <coreplugin/icore.h> +#include <QtCore/QSettings> + +static const char *idKey = "QmlJSGlobal"; + +using namespace QmlJSTools; + +namespace QmlJSTools { +namespace Internal { + +class QmlJSToolsSettingsPrivate +{ +public: + TextEditor::TabPreferences *m_tabPreferences; +}; + +} // namespace Internal +} // namespace QmlJSTools + +QmlJSToolsSettings *QmlJSToolsSettings::m_instance = 0; + +QmlJSToolsSettings::QmlJSToolsSettings(QObject *parent) + : QObject(parent) + , m_d(new Internal::QmlJSToolsSettingsPrivate) +{ + QTC_ASSERT(!m_instance, return); + m_instance = this; + + if (const QSettings *s = Core::ICore::instance()->settings()) { + TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance(); + m_d->m_tabPreferences + = new TextEditor::TabPreferences(QList<TextEditor::IFallbackPreferences *>() + << textEditorSettings->tabPreferences(), this); + m_d->m_tabPreferences->setCurrentFallback(textEditorSettings->tabPreferences()); + m_d->m_tabPreferences->fromSettings(QmlJSTools::Constants::QML_JS_SETTINGS_ID, s); + m_d->m_tabPreferences->setDisplayName(tr("global QML")); + m_d->m_tabPreferences->setId(idKey); + textEditorSettings->registerLanguageTabPreferences(QmlJSTools::Constants::QML_JS_SETTINGS_ID, m_d->m_tabPreferences); + } +} + +QmlJSToolsSettings::~QmlJSToolsSettings() +{ + delete m_d; + + m_instance = 0; +} + +QmlJSToolsSettings *QmlJSToolsSettings::instance() +{ + return m_instance; +} + +TextEditor::TabPreferences *QmlJSToolsSettings::tabPreferences() const +{ + return m_d->m_tabPreferences; +} + + diff --git a/src/plugins/qmljstools/qmljstoolssettings.h b/src/plugins/qmljstools/qmljstoolssettings.h new file mode 100644 index 00000000000..9eb8b657c5c --- /dev/null +++ b/src/plugins/qmljstools/qmljstoolssettings.h @@ -0,0 +1,77 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation ([email protected]) +** +** No Commercial Usage +** +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at [email protected]. +** +**************************************************************************/ + +#ifndef QMLJSTOOLSSETTINGS_H +#define QMLJSTOOLSSETTINGS_H + +#include "qmljstools_global.h" + +#include <QtCore/QObject> + +namespace TextEditor +{ +class TabPreferences; +} + +namespace QmlJSTools +{ + +namespace Internal +{ +class QmlJSToolsSettingsPrivate; +} + +/** + * This class provides a central place for cpp tools settings. + */ +class QMLJSTOOLS_EXPORT QmlJSToolsSettings : public QObject +{ + Q_OBJECT + +public: + explicit QmlJSToolsSettings(QObject *parent); + ~QmlJSToolsSettings(); + + static QmlJSToolsSettings *instance(); + + TextEditor::TabPreferences *tabPreferences() const; + +private: + Internal::QmlJSToolsSettingsPrivate *m_d; + + static QmlJSToolsSettings *m_instance; +}; + +} // namespace QmlJSTools + +#endif // QMLJSTOOLSSETTINGS_H |