forked from qt-creator/qt-creator
Modified IOptionsPage interface for Apply button
The previous interface wasn't sufficient to properly support the Apply button, since it didn't separate applying the changes from the cleanup phase. Designer settings pages still need some fixing. Fixes Apply button causing problems for certain plugins, for example the QuickOpen.
This commit is contained in:
@@ -76,8 +76,7 @@ QuickOpenPlugin::~QuickOpenPlugin()
|
||||
delete m_openDocumentsFilter;
|
||||
delete m_fileSystemFilter;
|
||||
delete m_settingsPage;
|
||||
foreach (IQuickOpenFilter *filter, m_customFilter)
|
||||
delete filter;
|
||||
qDeleteAll(m_customFilters);
|
||||
}
|
||||
|
||||
bool QuickOpenPlugin::initialize(const QStringList &, QString *)
|
||||
@@ -125,8 +124,8 @@ void QuickOpenPlugin::openQuickOpen()
|
||||
|
||||
void QuickOpenPlugin::extensionsInitialized()
|
||||
{
|
||||
m_filter = ExtensionSystem::PluginManager::instance()->getObjects<IQuickOpenFilter>();
|
||||
qSort(m_filter.begin(), m_filter.end(), filterLessThan);
|
||||
m_filters = ExtensionSystem::PluginManager::instance()->getObjects<IQuickOpenFilter>();
|
||||
qSort(m_filters.begin(), m_filters.end(), filterLessThan);
|
||||
}
|
||||
|
||||
void QuickOpenPlugin::startSettingsLoad()
|
||||
@@ -141,7 +140,7 @@ void QuickOpenPlugin::loadSettings()
|
||||
QSettings settings;
|
||||
settings.beginGroup("QuickOpen");
|
||||
m_refreshTimer.setInterval(settings.value("RefreshInterval", 60).toInt()*60000);
|
||||
foreach (IQuickOpenFilter *filter, m_filter) {
|
||||
foreach (IQuickOpenFilter *filter, m_filters) {
|
||||
if (settings.contains(filter->name())) {
|
||||
const QByteArray state = settings.value(filter->name()).toByteArray();
|
||||
if (!state.isEmpty())
|
||||
@@ -153,10 +152,10 @@ void QuickOpenPlugin::loadSettings()
|
||||
foreach (const QString &key, settings.childKeys()) {
|
||||
IQuickOpenFilter *filter = new DirectoryFilter(core);
|
||||
filter->restoreState(settings.value(key).toByteArray());
|
||||
m_filter.append(filter);
|
||||
m_filters.append(filter);
|
||||
customFilters.append(filter);
|
||||
}
|
||||
setCustomFilter(customFilters);
|
||||
setCustomFilters(customFilters);
|
||||
settings.endGroup();
|
||||
settings.endGroup();
|
||||
}
|
||||
@@ -176,14 +175,14 @@ void QuickOpenPlugin::saveSettings()
|
||||
s->beginGroup("QuickOpen");
|
||||
s->setValue("Interval", m_refreshTimer.interval()/60000);
|
||||
s->remove("");
|
||||
foreach (IQuickOpenFilter *filter, m_filter) {
|
||||
if (!m_customFilter.contains(filter)) {
|
||||
foreach (IQuickOpenFilter *filter, m_filters) {
|
||||
if (!m_customFilters.contains(filter)) {
|
||||
s->setValue(filter->name(), filter->saveState());
|
||||
}
|
||||
}
|
||||
s->beginGroup("CustomFilters");
|
||||
int i = 0;
|
||||
foreach (IQuickOpenFilter *filter, m_customFilter) {
|
||||
foreach (IQuickOpenFilter *filter, m_customFilters) {
|
||||
s->setValue(QString("directory%1").arg(i), filter->saveState());
|
||||
++i;
|
||||
}
|
||||
@@ -197,9 +196,9 @@ void QuickOpenPlugin::saveSettings()
|
||||
|
||||
Return all filters, including the ones created by the user.
|
||||
*/
|
||||
QList<IQuickOpenFilter*> QuickOpenPlugin::filter()
|
||||
QList<IQuickOpenFilter*> QuickOpenPlugin::filters()
|
||||
{
|
||||
return m_filter;
|
||||
return m_filters;
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -208,20 +207,20 @@ QList<IQuickOpenFilter*> QuickOpenPlugin::filter()
|
||||
This returns a subset of all the filters, that contains only the filters that
|
||||
have been created by the user at some point (maybe in a previous session).
|
||||
*/
|
||||
QList<IQuickOpenFilter*> QuickOpenPlugin::customFilter()
|
||||
QList<IQuickOpenFilter*> QuickOpenPlugin::customFilters()
|
||||
{
|
||||
return m_customFilter;
|
||||
return m_customFilters;
|
||||
}
|
||||
|
||||
void QuickOpenPlugin::setFilter(QList<IQuickOpenFilter*> f)
|
||||
void QuickOpenPlugin::setFilters(QList<IQuickOpenFilter*> f)
|
||||
{
|
||||
m_filter = f;
|
||||
m_filters = f;
|
||||
m_quickOpenToolWindow->updateFilterList();
|
||||
}
|
||||
|
||||
void QuickOpenPlugin::setCustomFilter(QList<IQuickOpenFilter *> filter)
|
||||
void QuickOpenPlugin::setCustomFilters(QList<IQuickOpenFilter *> filters)
|
||||
{
|
||||
m_customFilter = filter;
|
||||
m_customFilters = filters;
|
||||
}
|
||||
|
||||
int QuickOpenPlugin::refreshInterval()
|
||||
@@ -243,7 +242,7 @@ void QuickOpenPlugin::setRefreshInterval(int interval)
|
||||
void QuickOpenPlugin::refresh(QList<IQuickOpenFilter*> filters)
|
||||
{
|
||||
if (filters.isEmpty())
|
||||
filters = m_filter;
|
||||
filters = m_filters;
|
||||
QFuture<void> task = QtConcurrent::run(&IQuickOpenFilter::refresh, filters);
|
||||
Core::FutureProgress *progress = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>()
|
||||
->progressManager()->addTask(task, tr("Indexing"), Constants::TASK_INDEX, Core::ProgressManager::CloseOnSuccess);
|
||||
|
||||
Reference in New Issue
Block a user