forked from qt-creator/qt-creator
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.
This commit is contained in:
@@ -37,6 +37,7 @@
|
|||||||
#include "directoryfilter.h"
|
#include "directoryfilter.h"
|
||||||
#include "settingspage.h"
|
#include "settingspage.h"
|
||||||
|
|
||||||
|
#include <QtCore/QSettings>
|
||||||
#include <QtCore/QtPlugin>
|
#include <QtCore/QtPlugin>
|
||||||
#include <QtCore/QFuture>
|
#include <QtCore/QFuture>
|
||||||
#include <QtCore/QFutureWatcher>
|
#include <QtCore/QFutureWatcher>
|
||||||
@@ -143,12 +144,16 @@ void QuickOpenPlugin::startSettingsLoad()
|
|||||||
connect(&m_loadWatcher, SIGNAL(finished()), this, SLOT(settingsLoaded()));
|
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");
|
settings->beginGroup("QuickOpen");
|
||||||
m_refreshTimer.setInterval(settings->value("RefreshInterval", 60).toInt() * 60000);
|
p->m_refreshTimer.setInterval(settings->value("RefreshInterval", 60).toInt() * 60000);
|
||||||
foreach (IQuickOpenFilter *filter, m_filters) {
|
|
||||||
|
foreach (IQuickOpenFilter *filter, p->m_filters) {
|
||||||
if (settings->contains(filter->name())) {
|
if (settings->contains(filter->name())) {
|
||||||
const QByteArray state = settings->value(filter->name()).toByteArray();
|
const QByteArray state = settings->value(filter->name()).toByteArray();
|
||||||
if (!state.isEmpty())
|
if (!state.isEmpty())
|
||||||
@@ -160,19 +165,39 @@ void QuickOpenPlugin::loadSettings()
|
|||||||
foreach (const QString &key, settings->childKeys()) {
|
foreach (const QString &key, settings->childKeys()) {
|
||||||
IQuickOpenFilter *filter = new DirectoryFilter;
|
IQuickOpenFilter *filter = new DirectoryFilter;
|
||||||
filter->restoreState(settings->value(key).toByteArray());
|
filter->restoreState(settings->value(key).toByteArray());
|
||||||
m_filters.append(filter);
|
p->m_filters.append(filter);
|
||||||
customFilters.append(filter);
|
customFilters.append(filter);
|
||||||
}
|
}
|
||||||
setCustomFilters(customFilters);
|
p->setCustomFilters(customFilters);
|
||||||
settings->endGroup();
|
settings->endGroup();
|
||||||
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()
|
void QuickOpenPlugin::settingsLoaded()
|
||||||
{
|
{
|
||||||
m_quickOpenToolWindow->updateFilterList();
|
m_quickOpenToolWindow->updateFilterList();
|
||||||
m_quickOpenToolWindow->setEnabled(true);
|
m_quickOpenToolWindow->setEnabled(true);
|
||||||
m_refreshTimer.start();
|
if (m_refreshTimer.interval() > 0)
|
||||||
|
m_refreshTimer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QuickOpenPlugin::saveSettings()
|
void QuickOpenPlugin::saveSettings()
|
||||||
@@ -181,7 +206,7 @@ void QuickOpenPlugin::saveSettings()
|
|||||||
if (core && core->settingsDatabase()) {
|
if (core && core->settingsDatabase()) {
|
||||||
Core::SettingsDatabase *s = core->settingsDatabase();
|
Core::SettingsDatabase *s = core->settingsDatabase();
|
||||||
s->beginGroup("QuickOpen");
|
s->beginGroup("QuickOpen");
|
||||||
s->setValue("Interval", m_refreshTimer.interval() / 60000);
|
s->setValue("RefreshInterval", refreshInterval());
|
||||||
s->remove("");
|
s->remove("");
|
||||||
foreach (IQuickOpenFilter *filter, m_filters) {
|
foreach (IQuickOpenFilter *filter, m_filters) {
|
||||||
if (!m_customFilters.contains(filter))
|
if (!m_customFilters.contains(filter))
|
||||||
@@ -232,7 +257,7 @@ void QuickOpenPlugin::setCustomFilters(QList<IQuickOpenFilter *> filters)
|
|||||||
|
|
||||||
int QuickOpenPlugin::refreshInterval()
|
int QuickOpenPlugin::refreshInterval()
|
||||||
{
|
{
|
||||||
return m_refreshTimer.interval()/60000;
|
return m_refreshTimer.interval() / 60000;
|
||||||
}
|
}
|
||||||
|
|
||||||
void QuickOpenPlugin::setRefreshInterval(int interval)
|
void QuickOpenPlugin::setRefreshInterval(int interval)
|
||||||
@@ -242,7 +267,7 @@ void QuickOpenPlugin::setRefreshInterval(int interval)
|
|||||||
m_refreshTimer.setInterval(0);
|
m_refreshTimer.setInterval(0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_refreshTimer.setInterval(interval*60000);
|
m_refreshTimer.setInterval(interval * 60000);
|
||||||
m_refreshTimer.start();
|
m_refreshTimer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,7 +277,9 @@ void QuickOpenPlugin::refresh(QList<IQuickOpenFilter*> filters)
|
|||||||
filters = m_filters;
|
filters = m_filters;
|
||||||
QFuture<void> task = QtConcurrent::run(&IQuickOpenFilter::refresh, filters);
|
QFuture<void> task = QtConcurrent::run(&IQuickOpenFilter::refresh, filters);
|
||||||
Core::FutureProgress *progress = Core::ICore::instance()
|
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()));
|
connect(progress, SIGNAL(finished()), this, SLOT(saveSettings()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -86,6 +86,9 @@ private:
|
|||||||
OpenDocumentsFilter *m_openDocumentsFilter;
|
OpenDocumentsFilter *m_openDocumentsFilter;
|
||||||
FileSystemFilter *m_fileSystemFilter;
|
FileSystemFilter *m_fileSystemFilter;
|
||||||
QFutureWatcher<void> m_loadWatcher;
|
QFutureWatcher<void> m_loadWatcher;
|
||||||
|
|
||||||
|
template <typename S>
|
||||||
|
friend void loadSettingsHelper(QuickOpenPlugin *p, S *settings);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
Reference in New Issue
Block a user