Small refactor

Change-Id: I2988ce1c2a73798abccf690a3ed5d4e3a92c91a2
Reviewed-on: http://codereview.qt.nokia.com/517
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Leandro T. C. Melo <leandro.melo@nokia.com>
This commit is contained in:
Jarek Kobus
2011-06-20 16:23:40 +02:00
committed by Jarek Kobus
parent dcf7345931
commit c61652d065
8 changed files with 58 additions and 32 deletions

View File

@@ -91,9 +91,10 @@ struct EditorConfigurationPrivate
EditorConfiguration::EditorConfiguration() : m_d(new EditorConfigurationPrivate) EditorConfiguration::EditorConfiguration() : m_d(new EditorConfigurationPrivate)
{ {
QList<IFallbackPreferences *> fallbacks; TextEditor::TextEditorSettings *textEditorSettings = TextEditor::TextEditorSettings::instance();
fallbacks << TextEditorSettings::instance()->tabPreferences(); QList<TabPreferences *> tabFallbacks;
m_d->m_tabPreferences = new TabPreferences(fallbacks, this); tabFallbacks << textEditorSettings->tabPreferences();
m_d->m_tabPreferences = new TabPreferences(tabFallbacks, this);
m_d->m_tabPreferences->setDisplayName(tr("Project", "Settings")); m_d->m_tabPreferences->setDisplayName(tr("Project", "Settings"));
m_d->m_tabPreferences->setId(kId); m_d->m_tabPreferences->setId(kId);

View File

@@ -38,6 +38,7 @@
#include "extraencodingsettings.h" #include "extraencodingsettings.h"
#include "ui_behaviorsettingspage.h" #include "ui_behaviorsettingspage.h"
#include "tabpreferences.h" #include "tabpreferences.h"
#include "texteditorconstants.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/coreconstants.h> #include <coreplugin/coreconstants.h>
@@ -46,8 +47,6 @@
#include <QtCore/QSettings> #include <QtCore/QSettings>
#include <QtCore/QTextCodec> #include <QtCore/QTextCodec>
static const char *idKey = "Global";
using namespace TextEditor; using namespace TextEditor;
struct BehaviorSettingsPage::BehaviorSettingsPagePrivate struct BehaviorSettingsPage::BehaviorSettingsPagePrivate
@@ -77,9 +76,7 @@ BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate
void BehaviorSettingsPage::BehaviorSettingsPagePrivate::init() void BehaviorSettingsPage::BehaviorSettingsPagePrivate::init()
{ {
if (const QSettings *s = Core::ICore::instance()->settings()) { if (const QSettings *s = Core::ICore::instance()->settings()) {
TabSettings ts; m_tabPreferences->fromSettings(m_parameters.settingsPrefix, s);
ts.fromSettings(m_parameters.settingsPrefix, s);
m_tabPreferences->setSettings(ts);
m_storageSettings.fromSettings(m_parameters.settingsPrefix, s); m_storageSettings.fromSettings(m_parameters.settingsPrefix, s);
m_behaviorSettings.fromSettings(m_parameters.settingsPrefix, s); m_behaviorSettings.fromSettings(m_parameters.settingsPrefix, s);
m_extraEncodingSettings.fromSettings(m_parameters.settingsPrefix, s); m_extraEncodingSettings.fromSettings(m_parameters.settingsPrefix, s);
@@ -93,7 +90,7 @@ BehaviorSettingsPage::BehaviorSettingsPage(const BehaviorSettingsPageParameters
{ {
m_d->m_tabPreferences = new TabPreferences(QList<IFallbackPreferences *>(), this); m_d->m_tabPreferences = new TabPreferences(QList<IFallbackPreferences *>(), this);
m_d->m_tabPreferences->setDisplayName(tr("Global", "Settings")); m_d->m_tabPreferences->setDisplayName(tr("Global", "Settings"));
m_d->m_tabPreferences->setId(idKey); m_d->m_tabPreferences->setId(Constants::GLOBAL_SETTINGS_ID);
m_d->init(); m_d->init();
} }
@@ -117,7 +114,9 @@ QWidget *BehaviorSettingsPage::createPage(QWidget *parent)
QWidget *w = new QWidget(parent); QWidget *w = new QWidget(parent);
m_d->m_page = new Ui::BehaviorSettingsPage; m_d->m_page = new Ui::BehaviorSettingsPage;
m_d->m_page->setupUi(w); m_d->m_page->setupUi(w);
m_d->m_pageTabPreferences = new TabPreferences(QList<IFallbackPreferences *>(), w); m_d->m_pageTabPreferences = new TabPreferences(m_d->m_tabPreferences->fallbacks(), w);
m_d->m_pageTabPreferences->setSettings(m_d->m_tabPreferences->settings());
m_d->m_pageTabPreferences->setCurrentFallback(m_d->m_tabPreferences->currentFallback());
m_d->m_page->behaviorWidget->setTabPreferences(m_d->m_pageTabPreferences); m_d->m_page->behaviorWidget->setTabPreferences(m_d->m_pageTabPreferences);
settingsToUI(); settingsToUI();
@@ -133,20 +132,25 @@ void BehaviorSettingsPage::apply()
if (!m_d->m_page) // page was never shown if (!m_d->m_page) // page was never shown
return; return;
TabSettings newTabSettings;
StorageSettings newStorageSettings; StorageSettings newStorageSettings;
BehaviorSettings newBehaviorSettings; BehaviorSettings newBehaviorSettings;
ExtraEncodingSettings newExtraEncodingSettings; ExtraEncodingSettings newExtraEncodingSettings;
settingsFromUI(&newTabSettings, &newStorageSettings, &newBehaviorSettings, settingsFromUI(&newStorageSettings, &newBehaviorSettings,
&newExtraEncodingSettings); &newExtraEncodingSettings);
QSettings *s = Core::ICore::instance()->settings(); QSettings *s = Core::ICore::instance()->settings();
if (newTabSettings != m_d->m_tabPreferences->settings()) { if (m_d->m_tabPreferences->settings() != m_d->m_pageTabPreferences->settings()) {
m_d->m_tabPreferences->setSettings(newTabSettings); m_d->m_tabPreferences->setSettings(m_d->m_pageTabPreferences->settings());
if (s) if (s)
m_d->m_tabPreferences->settings().toSettings(m_d->m_parameters.settingsPrefix, s); m_d->m_tabPreferences->toSettings(m_d->m_parameters.settingsPrefix, s);
}
if (m_d->m_tabPreferences->currentFallback() != m_d->m_pageTabPreferences->currentFallback()) {
m_d->m_tabPreferences->setCurrentFallback(m_d->m_pageTabPreferences->currentFallback());
if (s)
m_d->m_tabPreferences->toSettings(m_d->m_parameters.settingsPrefix, s);
} }
if (newStorageSettings != m_d->m_storageSettings) { if (newStorageSettings != m_d->m_storageSettings) {
@@ -179,12 +183,10 @@ void BehaviorSettingsPage::apply()
} }
} }
void BehaviorSettingsPage::settingsFromUI(TabSettings *tabSettings, void BehaviorSettingsPage::settingsFromUI(StorageSettings *storageSettings,
StorageSettings *storageSettings,
BehaviorSettings *behaviorSettings, BehaviorSettings *behaviorSettings,
ExtraEncodingSettings *extraEncodingSettings) const ExtraEncodingSettings *extraEncodingSettings) const
{ {
*tabSettings = m_d->m_pageTabPreferences->settings();
m_d->m_page->behaviorWidget->assignedStorageSettings(storageSettings); m_d->m_page->behaviorWidget->assignedStorageSettings(storageSettings);
m_d->m_page->behaviorWidget->assignedBehaviorSettings(behaviorSettings); m_d->m_page->behaviorWidget->assignedBehaviorSettings(behaviorSettings);
m_d->m_page->behaviorWidget->assignedExtraEncodingSettings(extraEncodingSettings); m_d->m_page->behaviorWidget->assignedExtraEncodingSettings(extraEncodingSettings);
@@ -192,7 +194,6 @@ void BehaviorSettingsPage::settingsFromUI(TabSettings *tabSettings,
void BehaviorSettingsPage::settingsToUI() void BehaviorSettingsPage::settingsToUI()
{ {
m_d->m_pageTabPreferences->setSettings(m_d->m_tabPreferences->settings());
m_d->m_page->behaviorWidget->setAssignedStorageSettings(m_d->m_storageSettings); m_d->m_page->behaviorWidget->setAssignedStorageSettings(m_d->m_storageSettings);
m_d->m_page->behaviorWidget->setAssignedBehaviorSettings(m_d->m_behaviorSettings); m_d->m_page->behaviorWidget->setAssignedBehaviorSettings(m_d->m_behaviorSettings);
m_d->m_page->behaviorWidget->setAssignedExtraEncodingSettings(m_d->m_extraEncodingSettings); m_d->m_page->behaviorWidget->setAssignedExtraEncodingSettings(m_d->m_extraEncodingSettings);

View File

@@ -83,8 +83,7 @@ signals:
void extraEncodingSettingsChanged(const TextEditor::ExtraEncodingSettings &); void extraEncodingSettingsChanged(const TextEditor::ExtraEncodingSettings &);
private: private:
void settingsFromUI(TabSettings *tabSettings, void settingsFromUI(StorageSettings *storageSettings,
StorageSettings *storageSettings,
BehaviorSettings *behaviorSettings, BehaviorSettings *behaviorSettings,
ExtraEncodingSettings *extraEncodingSettings) const; ExtraEncodingSettings *extraEncodingSettings) const;
void settingsToUI(); void settingsToUI();

View File

@@ -24,7 +24,7 @@ class TEXTEDITOR_EXPORT FallbackSelectorWidget : public QWidget
public: public:
explicit FallbackSelectorWidget(QWidget *parent = 0); explicit FallbackSelectorWidget(QWidget *parent = 0);
void setFallbackPreferences(TextEditor::IFallbackPreferences *tabPreferences); void setFallbackPreferences(TextEditor::IFallbackPreferences *fallbackPreferences);
QString searchKeywords() const; QString searchKeywords() const;
void setFallbacksVisible(bool on); void setFallbacksVisible(bool on);

View File

@@ -1,5 +1,6 @@
#include "tabpreferences.h" #include "tabpreferences.h"
#include "tabsettings.h" #include "tabsettings.h"
#include "texteditorconstants.h"
using namespace TextEditor; using namespace TextEditor;
@@ -7,6 +8,15 @@ static const char *settingsSuffixKey = "TabPreferences";
static const char *currentFallbackKey = "CurrentFallback"; static const char *currentFallbackKey = "CurrentFallback";
static QList<IFallbackPreferences *> toFallbackList(
const QList<TabPreferences *> &fallbacks)
{
QList<IFallbackPreferences *> fallbackList;
for (int i = 0; i < fallbacks.count(); i++)
fallbackList << fallbacks.at(i);
return fallbackList;
}
TabPreferences::TabPreferences( TabPreferences::TabPreferences(
const QList<IFallbackPreferences *> &fallbacks, QObject *parent) const QList<IFallbackPreferences *> &fallbacks, QObject *parent)
: IFallbackPreferences(fallbacks, parent) : IFallbackPreferences(fallbacks, parent)
@@ -15,6 +25,14 @@ TabPreferences::TabPreferences(
this, SLOT(slotCurrentValueChanged(QVariant))); this, SLOT(slotCurrentValueChanged(QVariant)));
} }
TabPreferences::TabPreferences(
const QList<TabPreferences *> &fallbacks, QObject *parent)
: IFallbackPreferences(toFallbackList(fallbacks), parent)
{
connect(this, SIGNAL(currentValueChanged(QVariant)),
this, SLOT(slotCurrentValueChanged(QVariant)));
}
QVariant TabPreferences::value() const QVariant TabPreferences::value() const
{ {
QVariant v; QVariant v;
@@ -83,6 +101,6 @@ void TabPreferences::toMap(const QString &prefix, QVariantMap *map) const
void TabPreferences::fromMap(const QString &prefix, const QVariantMap &map) void TabPreferences::fromMap(const QString &prefix, const QVariantMap &map)
{ {
m_data.fromMap(prefix, map); m_data.fromMap(prefix, map);
setCurrentFallback(map.value(prefix + QLatin1String(currentFallbackKey), QLatin1String("Global")).toString()); setCurrentFallback(map.value(prefix + QLatin1String(currentFallbackKey), Constants::GLOBAL_SETTINGS_ID).toString());
} }

View File

@@ -14,12 +14,16 @@ public:
const QList<IFallbackPreferences *> &fallbacks, const QList<IFallbackPreferences *> &fallbacks,
QObject *parentObject = 0); QObject *parentObject = 0);
explicit TabPreferences(
const QList<TabPreferences *> &fallbacks,
QObject *parentObject = 0);
virtual QVariant value() const; virtual QVariant value() const;
virtual void setValue(const QVariant &); virtual void setValue(const QVariant &);
TabSettings settings() const; TabSettings settings() const;
// tracks parent hierarchy until currentParentSettings is null // tracks parent fallbacks until null and extracts settings from it
TabSettings currentSettings() const; TabSettings currentSettings() const;
virtual void toMap(const QString &prefix, QVariantMap *map) const; virtual void toMap(const QString &prefix, QVariantMap *map) const;

View File

@@ -27,12 +27,13 @@ void TabPreferencesWidget::setTabPreferences(TabPreferences *tabPreferences)
// cleanup old // cleanup old
if (m_tabPreferences) { if (m_tabPreferences) {
disconnect(m_tabPreferences, SIGNAL(settingsChanged(TabSettings)), disconnect(m_tabPreferences, SIGNAL(currentSettingsChanged(TextEditor::TabSettings)),
m_ui->tabSettingsWidget, SLOT(setSettings(TabSettings))); m_ui->tabSettingsWidget, SLOT(setSettings(TextEditor::TabSettings)));
disconnect(m_tabPreferences, SIGNAL(currentFallbackChanged(IFallbackPreferences*)), disconnect(m_tabPreferences, SIGNAL(currentFallbackChanged(TextEditor::IFallbackPreferences*)),
this, SLOT(slotCurrentFallbackChanged(IFallbackPreferences*))); this, SLOT(slotCurrentFallbackChanged(TextEditor::IFallbackPreferences*)));
disconnect(m_ui->tabSettingsWidget, SIGNAL(settingsChanged(TabSettings)), disconnect(m_ui->tabSettingsWidget, SIGNAL(settingsChanged(TextEditor::TabSettings)),
m_tabPreferences, SLOT(setSettings(TabSettings))); m_tabPreferences, SLOT(setSettings(TextEditor::TabSettings)));
m_ui->tabSettingsWidget->setEnabled(true); m_ui->tabSettingsWidget->setEnabled(true);
} }
m_tabPreferences = tabPreferences; m_tabPreferences = tabPreferences;
@@ -41,14 +42,14 @@ void TabPreferencesWidget::setTabPreferences(TabPreferences *tabPreferences)
if (m_tabPreferences) { if (m_tabPreferences) {
slotCurrentFallbackChanged(m_tabPreferences->currentFallback()); slotCurrentFallbackChanged(m_tabPreferences->currentFallback());
connect(m_tabPreferences, SIGNAL(settingsChanged(TextEditor::TabSettings)), connect(m_tabPreferences, SIGNAL(currentSettingsChanged(TextEditor::TabSettings)),
m_ui->tabSettingsWidget, SLOT(setSettings(TextEditor::TabSettings))); m_ui->tabSettingsWidget, SLOT(setSettings(TextEditor::TabSettings)));
connect(m_tabPreferences, SIGNAL(currentFallbackChanged(TextEditor::IFallbackPreferences*)), connect(m_tabPreferences, SIGNAL(currentFallbackChanged(TextEditor::IFallbackPreferences*)),
this, SLOT(slotCurrentFallbackChanged(TextEditor::IFallbackPreferences*))); this, SLOT(slotCurrentFallbackChanged(TextEditor::IFallbackPreferences*)));
connect(m_ui->tabSettingsWidget, SIGNAL(settingsChanged(TextEditor::TabSettings)), connect(m_ui->tabSettingsWidget, SIGNAL(settingsChanged(TextEditor::TabSettings)),
m_tabPreferences, SLOT(setSettings(TextEditor::TabSettings))); m_tabPreferences, SLOT(setSettings(TextEditor::TabSettings)));
m_ui->tabSettingsWidget->setSettings(m_tabPreferences->settings()); m_ui->tabSettingsWidget->setSettings(m_tabPreferences->currentSettings());
} }
} }

View File

@@ -148,6 +148,8 @@ const char * const TEXT_EDITOR_SNIPPETS_SETTINGS = "F.SnippetsSettings";
const char * const SNIPPET_EDITOR_ID = "TextEditor.SnippetEditor"; const char * const SNIPPET_EDITOR_ID = "TextEditor.SnippetEditor";
const char * const TEXT_SNIPPET_GROUP_ID = "Text"; const char * const TEXT_SNIPPET_GROUP_ID = "Text";
const char * const GLOBAL_SETTINGS_ID = "Global";
} // namespace Constants } // namespace Constants
} // namespace TextEditor } // namespace TextEditor