diff options
author | Thorbjørn Lindeijer <thorbjorn.lindeijer@nokia.com> | 2009-05-20 16:53:25 +0200 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn.lindeijer@nokia.com> | 2009-05-25 15:30:19 +0200 |
commit | 93e61533aa87b1b2ef0f080490c89fb4d19eb97c (patch) | |
tree | 906552c6d1ed622b795deb51f84ee396128502d5 /src/plugins/quickopen/quickopenplugin.cpp | |
parent | 94aa58a6b5bcaac4c946dcd9ba7e1642611af84b (diff) | |
download | qt-creator-93e61533aa87b1b2ef0f080490c89fb4d19eb97c.tar.gz |
Implemented backwards compatibility to old QuickOpen settings
Also fixed the restoring of the refresh interval, which was broken due
to different keys being used for saving and restoring.
Diffstat (limited to 'src/plugins/quickopen/quickopenplugin.cpp')
-rw-r--r-- | src/plugins/quickopen/quickopenplugin.cpp | 49 |
1 files changed, 38 insertions, 11 deletions
diff --git a/src/plugins/quickopen/quickopenplugin.cpp b/src/plugins/quickopen/quickopenplugin.cpp index 529cd26894..9640e8f08e 100644 --- a/src/plugins/quickopen/quickopenplugin.cpp +++ b/src/plugins/quickopen/quickopenplugin.cpp @@ -37,6 +37,7 @@ #include "directoryfilter.h" #include "settingspage.h" +#include <QtCore/QSettings> #include <QtCore/QtPlugin> #include <QtCore/QFuture> #include <QtCore/QFutureWatcher> @@ -143,12 +144,16 @@ void QuickOpenPlugin::startSettingsLoad() connect(&m_loadWatcher, SIGNAL(finished()), this, SLOT(settingsLoaded())); } -void QuickOpenPlugin::loadSettings() +namespace QuickOpen { +namespace Internal { + +template <typename S> +static void loadSettingsHelper(QuickOpenPlugin *p, S *settings) { - Core::SettingsDatabase *settings = Core::ICore::instance()->settingsDatabase(); settings->beginGroup("QuickOpen"); - m_refreshTimer.setInterval(settings->value("RefreshInterval", 60).toInt() * 60000); - foreach (IQuickOpenFilter *filter, m_filters) { + p->m_refreshTimer.setInterval(settings->value("RefreshInterval", 60).toInt() * 60000); + + foreach (IQuickOpenFilter *filter, p->m_filters) { if (settings->contains(filter->name())) { const QByteArray state = settings->value(filter->name()).toByteArray(); if (!state.isEmpty()) @@ -160,19 +165,39 @@ void QuickOpenPlugin::loadSettings() foreach (const QString &key, settings->childKeys()) { IQuickOpenFilter *filter = new DirectoryFilter; filter->restoreState(settings->value(key).toByteArray()); - m_filters.append(filter); + p->m_filters.append(filter); customFilters.append(filter); } - setCustomFilters(customFilters); + p->setCustomFilters(customFilters); settings->endGroup(); settings->endGroup(); } +} // namespace Internal +} // namespace QuickOpen + +void QuickOpenPlugin::loadSettings() +{ + Core::ICore *core = Core::ICore::instance(); + QSettings *qs = core->settings(); + + // Backwards compatibility to old settings location + if (qs->contains("QuickOpen/FiltersFilter")) { + loadSettingsHelper(this, qs); + } else { + Core::SettingsDatabase *settings = core->settingsDatabase(); + loadSettingsHelper(this, settings); + } + + qs->remove("QuickOpen"); +} + void QuickOpenPlugin::settingsLoaded() { m_quickOpenToolWindow->updateFilterList(); m_quickOpenToolWindow->setEnabled(true); - m_refreshTimer.start(); + if (m_refreshTimer.interval() > 0) + m_refreshTimer.start(); } void QuickOpenPlugin::saveSettings() @@ -181,7 +206,7 @@ void QuickOpenPlugin::saveSettings() if (core && core->settingsDatabase()) { Core::SettingsDatabase *s = core->settingsDatabase(); s->beginGroup("QuickOpen"); - s->setValue("Interval", m_refreshTimer.interval() / 60000); + s->setValue("RefreshInterval", refreshInterval()); s->remove(""); foreach (IQuickOpenFilter *filter, m_filters) { if (!m_customFilters.contains(filter)) @@ -232,7 +257,7 @@ void QuickOpenPlugin::setCustomFilters(QList<IQuickOpenFilter *> filters) int QuickOpenPlugin::refreshInterval() { - return m_refreshTimer.interval()/60000; + return m_refreshTimer.interval() / 60000; } void QuickOpenPlugin::setRefreshInterval(int interval) @@ -242,7 +267,7 @@ void QuickOpenPlugin::setRefreshInterval(int interval) m_refreshTimer.setInterval(0); return; } - m_refreshTimer.setInterval(interval*60000); + m_refreshTimer.setInterval(interval * 60000); m_refreshTimer.start(); } @@ -252,7 +277,9 @@ void QuickOpenPlugin::refresh(QList<IQuickOpenFilter*> filters) filters = m_filters; QFuture<void> task = QtConcurrent::run(&IQuickOpenFilter::refresh, filters); Core::FutureProgress *progress = Core::ICore::instance() - ->progressManager()->addTask(task, tr("Indexing"), QuickOpen::Constants::TASK_INDEX, Core::ProgressManager::CloseOnSuccess); + ->progressManager()->addTask(task, tr("Indexing"), + QuickOpen::Constants::TASK_INDEX, + Core::ProgressManager::CloseOnSuccess); connect(progress, SIGNAL(finished()), this, SLOT(saveSettings())); } |