Commit 934a8238 authored by Jarek Kobus's avatar Jarek Kobus Committed by Christian Kamm

Implement qml tab settings

Change-Id: I0b7365b5b3d7538f2b4a8c5eaff3420f448dd5be
Reviewed-on: http://codereview.qt.nokia.com/99Reviewed-by: default avatarQt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: default avatarChristian Kamm <christian.d.kamm@nokia.com>
parent f950b8d7
#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;
}
#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
#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
......@@ -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
......
......@@ -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 \
......
......@@ -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;
}
......
......@@ -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;
};
......
#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;
}
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** 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 qt-info@nokia.com.
**
**************************************************************************/
#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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment