diff --git a/src/plugins/quickopen/quickopenplugin.cpp b/src/plugins/quickopen/quickopenplugin.cpp index 529cd26894e643b9d998e98694ff7887bd3599cb..9640e8f08ec97f50e4cbe3fe2b56e8a81801ea2a 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())); } diff --git a/src/plugins/quickopen/quickopenplugin.h b/src/plugins/quickopen/quickopenplugin.h index fc62cb84ca031524d7384cea3996319466d4ae22..e2898333b5b60eab2f94a9532f2be2a875c92eff 100644 --- a/src/plugins/quickopen/quickopenplugin.h +++ b/src/plugins/quickopen/quickopenplugin.h @@ -86,6 +86,9 @@ private: OpenDocumentsFilter *m_openDocumentsFilter; FileSystemFilter *m_fileSystemFilter; QFutureWatcher<void> m_loadWatcher; + + template <typename S> + friend void loadSettingsHelper(QuickOpenPlugin *p, S *settings); }; } // namespace Internal