Merge branch 'master' of git@scm.dev.nokia.troll.no:creator/mainline

This commit is contained in:
hjk
2009-01-13 16:38:31 +01:00
40 changed files with 152 additions and 125 deletions

View File

@@ -2,7 +2,7 @@ unix {
QDOC = SRCDIR=$$PWD OUTDIR=$$OUT_PWD/doc/html $$(QTDIR)/tools/qdoc3/qdoc3 QDOC = SRCDIR=$$PWD OUTDIR=$$OUT_PWD/doc/html $$(QTDIR)/tools/qdoc3/qdoc3
HELPGENERATOR = $$(QTDIR)/bin/qhelpgenerator HELPGENERATOR = $$(QTDIR)/bin/qhelpgenerator
} else { } else {
QDOC = $$(QTDIR)\tools\qdoc3\release\qdoc3.exe QDOC = set SRCDIR=$$PWD&& set OUTDIR=$$OUT_PWD/doc/html&& $$(QTDIR)\tools\qdoc3\release\qdoc3.exe
HELPGENERATOR = $$(QTDIR)\bin\qhelpgenerator.exe HELPGENERATOR = $$(QTDIR)\bin\qhelpgenerator.exe
} }

View File

@@ -57,6 +57,7 @@
#include "AST.h" #include "AST.h"
#include "Literals.h" #include "Literals.h"
#include <cstdlib> #include <cstdlib>
#include <cstring>
#include <cassert> #include <cassert>
CPLUSPLUS_BEGIN_NAMESPACE CPLUSPLUS_BEGIN_NAMESPACE

View File

@@ -425,6 +425,12 @@ bool ResolveExpression::visit(UnaryExpressionAST *ast)
return false; return false;
} }
bool ResolveExpression::visit(CompoundLiteralAST *ast)
{
accept(ast->type_id);
return false;
}
bool ResolveExpression::visit(QualifiedNameAST *ast) bool ResolveExpression::visit(QualifiedNameAST *ast)
{ {
ResolveClass resolveClass; ResolveClass resolveClass;

View File

@@ -105,6 +105,7 @@ protected:
virtual bool visit(ThrowExpressionAST *ast); virtual bool visit(ThrowExpressionAST *ast);
virtual bool visit(TypeIdAST *ast); virtual bool visit(TypeIdAST *ast);
virtual bool visit(UnaryExpressionAST *ast); virtual bool visit(UnaryExpressionAST *ast);
virtual bool visit(CompoundLiteralAST *ast);
//names //names
virtual bool visit(QualifiedNameAST *ast); virtual bool visit(QualifiedNameAST *ast);

View File

@@ -54,7 +54,8 @@ public:
virtual QString trCategory() const = 0; virtual QString trCategory() const = 0;
virtual QWidget *createPage(QWidget *parent) = 0; virtual QWidget *createPage(QWidget *parent) = 0;
virtual void finished(bool accepted) = 0; virtual void apply() = 0;
virtual void finish() = 0;
}; };
} // namespace Core } // namespace Core

View File

@@ -126,20 +126,22 @@ void SettingsDialog::pageSelected(QTreeWidgetItem *)
void SettingsDialog::accept() void SettingsDialog::accept()
{ {
foreach (IOptionsPage *page, m_pages) foreach (IOptionsPage *page, m_pages) {
page->finished(true); page->apply();
page->finish();
}
done(QDialog::Accepted); done(QDialog::Accepted);
} }
void SettingsDialog::reject() void SettingsDialog::reject()
{ {
foreach (IOptionsPage *page, m_pages) foreach (IOptionsPage *page, m_pages)
page->finished(false); page->finish();
done(QDialog::Rejected); done(QDialog::Rejected);
} }
void SettingsDialog::apply() void SettingsDialog::apply()
{ {
foreach (IOptionsPage *page, m_pages) foreach (IOptionsPage *page, m_pages)
page->finished(true); page->apply();
} }

View File

@@ -120,14 +120,14 @@ QWidget *ShortcutSettings::createPage(QWidget *parent)
return w; return w;
} }
void ShortcutSettings::finished(bool accepted) void ShortcutSettings::apply()
{ {
if (accepted) { foreach (ShortcutItem *item, m_scitems)
foreach (ShortcutItem *item, m_scitems) { item->m_cmd->setKeySequence(item->m_key);
item->m_cmd->setKeySequence(item->m_key); }
}
}
void ShortcutSettings::finish()
{
qDeleteAll(m_scitems); qDeleteAll(m_scitems);
m_scitems.clear(); m_scitems.clear();
} }

View File

@@ -77,7 +77,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish();
protected: protected:
bool eventFilter(QObject *o, QEvent *e); bool eventFilter(QObject *o, QEvent *e);

View File

@@ -81,11 +81,8 @@ QWidget *GeneralSettings::createPage(QWidget *parent)
return w; return w;
} }
void GeneralSettings::finished(bool accepted) void GeneralSettings::apply()
{ {
if (!accepted)
return;
// Apply the new base color if accepted // Apply the new base color if accepted
StyleHelper::setBaseColor(m_page->colorButton->color()); StyleHelper::setBaseColor(m_page->colorButton->color());
EditorManager::instance()->setExternalEditor(m_page->externalEditorEdit->text()); EditorManager::instance()->setExternalEditor(m_page->externalEditorEdit->text());

View File

@@ -55,7 +55,8 @@ public:
QString category() const; QString category() const;
QString trCategory() const; QString trCategory() const;
QWidget* createPage(QWidget *parent); QWidget* createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
private slots: private slots:
void resetInterfaceColor(); void resetInterfaceColor();

View File

@@ -86,11 +86,8 @@ QWidget *SettingsPage::createPage(QWidget *parent)
return w; return w;
} }
void SettingsPage::finished(bool accepted) void SettingsPage::apply()
{ {
if (!accepted)
return;
m_username = m_ui.userEdit->text(); m_username = m_ui.userEdit->text();
m_server = QUrl(m_ui.serverEdit->text()); m_server = QUrl(m_ui.serverEdit->text());
m_copy = m_ui.clipboardBox->isChecked(); m_copy = m_ui.clipboardBox->isChecked();

View File

@@ -59,7 +59,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
QString username() const; QString username() const;
QUrl serverUrl() const; QUrl serverUrl() const;

View File

@@ -78,11 +78,8 @@ QWidget *CompletionSettingsPage::createPage(QWidget *parent)
return w; return w;
} }
void CompletionSettingsPage::finished(bool accepted) void CompletionSettingsPage::apply()
{ {
if (!accepted)
return;
m_completion->setCaseSensitivity( m_completion->setCaseSensitivity(
m_page->caseSensitive->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive); m_page->caseSensitive->isChecked() ? Qt::CaseSensitive : Qt::CaseInsensitive);
m_completion->setAutoInsertBraces(m_page->autoInsertBraces->isChecked()); m_completion->setAutoInsertBraces(m_page->autoInsertBraces->isChecked());

View File

@@ -56,7 +56,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
private: private:
CppCodeCompletion *m_completion; CppCodeCompletion *m_completion;

View File

@@ -122,11 +122,8 @@ void GdbOptionPage::onScriptFileChanged()
m_settings->m_scriptFile = m_ui.scriptFileChooser->path(); m_settings->m_scriptFile = m_ui.scriptFileChooser->path();
} }
void GdbOptionPage::finished(bool accepted) void GdbOptionPage::apply()
{ {
if (!accepted)
return;
m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path(); m_settings->m_gdbCmd = m_ui.gdbLocationChooser->path();
m_settings->m_gdbEnv = m_ui.environmentEdit->text(); m_settings->m_gdbEnv = m_ui.environmentEdit->text();
m_settings->m_autoRun = m_ui.autoStartBox->isChecked(); m_settings->m_autoRun = m_ui.autoStartBox->isChecked();

View File

@@ -59,7 +59,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
public slots: public slots:
void onGdbLocationChanged(); void onGdbLocationChanged();

View File

@@ -39,7 +39,8 @@
using namespace Designer::Internal; using namespace Designer::Internal;
SettingsPage::SettingsPage(QDesignerOptionsPageInterface *designerPage) : SettingsPage::SettingsPage(QDesignerOptionsPageInterface *designerPage) :
m_designerPage(designerPage) m_designerPage(designerPage),
m_applyOnFinish(false)
{ {
} }
@@ -64,10 +65,17 @@ QString SettingsPage::trCategory() const
QWidget *SettingsPage::createPage(QWidget *parent) QWidget *SettingsPage::createPage(QWidget *parent)
{ {
m_applyOnFinish = false;
return m_designerPage->createPage(parent); return m_designerPage->createPage(parent);
} }
void SettingsPage::finished(bool accepted) void SettingsPage::apply()
{ {
m_designerPage->finish(accepted); // FIXME: Since no cleanup should be done here, we can't call finish(true)
m_applyOnFinish = true;
}
void SettingsPage::finish()
{
m_designerPage->finish(m_applyOnFinish);
} }

View File

@@ -59,10 +59,12 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish();
private: private:
QDesignerOptionsPageInterface *m_designerPage; QDesignerOptionsPageInterface *m_designerPage;
bool m_applyOnFinish;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -95,11 +95,10 @@ QWidget *SettingsPage::createPage(QWidget *parent)
return m_widget; return m_widget;
} }
void SettingsPage::finished(bool accepted) void SettingsPage::apply()
{ {
if (!accepted || !m_widget) if (!m_widget)
return; return;
GitPlugin::instance()->setSettings(m_widget->settings()); GitPlugin::instance()->setSettings(m_widget->settings());
} }

View File

@@ -77,7 +77,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
private: private:
QPointer<SettingsPageWidget> m_widget; QPointer<SettingsPageWidget> m_widget;

View File

@@ -38,7 +38,7 @@
#include <QtHelp/QHelpEngine> #include <QtHelp/QHelpEngine>
using namespace Help::Internal; using namespace Help::Internal;
DocSettingsPage::DocSettingsPage(QHelpEngine *helpEngine) DocSettingsPage::DocSettingsPage(QHelpEngine *helpEngine)
: m_helpEngine(helpEngine), : m_helpEngine(helpEngine),
m_registeredDocs(false) m_registeredDocs(false)
@@ -64,16 +64,16 @@ QWidget *DocSettingsPage::createPage(QWidget *parent)
{ {
QWidget *w = new QWidget(parent); QWidget *w = new QWidget(parent);
m_ui.setupUi(w); m_ui.setupUi(w);
connect(m_ui.addButton, SIGNAL(clicked()), connect(m_ui.addButton, SIGNAL(clicked()),
this, SLOT(addDocumentation())); this, SLOT(addDocumentation()));
connect(m_ui.removeButton, SIGNAL(clicked()), connect(m_ui.removeButton, SIGNAL(clicked()),
this, SLOT(removeDocumentation())); this, SLOT(removeDocumentation()));
m_ui.docsListWidget->addItems(m_helpEngine->registeredDocumentations()); m_ui.docsListWidget->addItems(m_helpEngine->registeredDocumentations());
m_registeredDocs = false; m_registeredDocs = false;
m_removeDocs.clear(); m_removeDocs.clear();
return w; return w;
} }
@@ -82,7 +82,7 @@ void DocSettingsPage::addDocumentation()
QStringList files = QFileDialog::getOpenFileNames(m_ui.addButton->parentWidget(), QStringList files = QFileDialog::getOpenFileNames(m_ui.addButton->parentWidget(),
tr("Add Documentation"), tr("Add Documentation"),
QString(), tr("Qt Help Files (*.qch)")); QString(), tr("Qt Help Files (*.qch)"));
if (files.isEmpty()) if (files.isEmpty())
return; return;
@@ -107,23 +107,20 @@ void DocSettingsPage::removeDocumentation()
QListWidgetItem *item = m_ui.docsListWidget->currentItem(); QListWidgetItem *item = m_ui.docsListWidget->currentItem();
if (!item) if (!item)
return; return;
m_removeDocs.append(item->text()); m_removeDocs.append(item->text());
int row = m_ui.docsListWidget->currentRow(); int row = m_ui.docsListWidget->currentRow();
m_ui.docsListWidget->takeItem(row); m_ui.docsListWidget->takeItem(row);
if (row > 0) if (row > 0)
--row; --row;
if (m_ui.docsListWidget->count()) if (m_ui.docsListWidget->count())
m_ui.docsListWidget->setCurrentRow(row); m_ui.docsListWidget->setCurrentRow(row);
delete item; delete item;
} }
void DocSettingsPage::finished(bool accepted) void DocSettingsPage::apply()
{ {
if (!accepted)
return;
emit dialogAccepted(); emit dialogAccepted();
} }

View File

@@ -57,7 +57,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
bool applyChanges(); bool applyChanges();

View File

@@ -173,8 +173,10 @@ void FilterSettingsPage::removeFilter()
m_ui.filterWidget->setCurrentRow(0); m_ui.filterWidget->setCurrentRow(0);
} }
void FilterSettingsPage::finished(bool) void FilterSettingsPage::apply()
{ {
// This is handled via HelpPlugin::checkForHelpChanges, which is connected
// to DocSettingsPage::apply.
} }
bool FilterSettingsPage::applyChanges() bool FilterSettingsPage::applyChanges()

View File

@@ -56,7 +56,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
bool applyChanges(); bool applyChanges();

View File

@@ -96,9 +96,9 @@ QWidget *SettingsPage::createPage(QWidget *parent)
return m_widget; return m_widget;
} }
void SettingsPage::finished(bool accepted) void SettingsPage::apply()
{ {
if (!accepted || !m_widget) if (!m_widget)
return; return;
PerforcePlugin::perforcePluginInstance()->setSettings(m_widget->settings()); PerforcePlugin::perforcePluginInstance()->setSettings(m_widget->settings());

View File

@@ -70,7 +70,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
private: private:
QPointer<SettingsPageWidget> m_widget; QPointer<SettingsPageWidget> m_widget;

View File

@@ -162,11 +162,8 @@ void QtVersionManager::updateUniqueIdToIndexMap()
m_uniqueIdToIndex.insert(m_versions.at(i)->uniqueId(), i); m_uniqueIdToIndex.insert(m_versions.at(i)->uniqueId(), i);
} }
void QtVersionManager::finished(bool accepted) void QtVersionManager::apply()
{ {
if (!accepted)
return;
m_widget->finish(); m_widget->finish();
QList<QtVersion*> newVersions = m_widget->versions(); QList<QtVersion*> newVersions = m_widget->versions();
bool versionPathsChanged = m_versions.size() != newVersions.size(); bool versionPathsChanged = m_versions.size() != newVersions.size();

View File

@@ -172,7 +172,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
void writeVersionsIntoSettings(); void writeVersionsIntoSettings();

View File

@@ -71,7 +71,7 @@ QList<FilterEntry> QuickOpenFiltersFilter::matchesFor(const QString &entry)
{ {
QList<FilterEntry> entries; QList<FilterEntry> entries;
if (entry.isEmpty()) { if (entry.isEmpty()) {
foreach (IQuickOpenFilter *filter, m_plugin->filter()) { foreach (IQuickOpenFilter *filter, m_plugin->filters()) {
if (!filter->shortcutString().isEmpty() && !filter->isHidden()) { if (!filter->shortcutString().isEmpty() && !filter->isHidden()) {
FilterEntry entry(this, FilterEntry entry(this,
filter->shortcutString(), filter->shortcutString(),

View File

@@ -76,8 +76,7 @@ QuickOpenPlugin::~QuickOpenPlugin()
delete m_openDocumentsFilter; delete m_openDocumentsFilter;
delete m_fileSystemFilter; delete m_fileSystemFilter;
delete m_settingsPage; delete m_settingsPage;
foreach (IQuickOpenFilter *filter, m_customFilter) qDeleteAll(m_customFilters);
delete filter;
} }
bool QuickOpenPlugin::initialize(const QStringList &, QString *) bool QuickOpenPlugin::initialize(const QStringList &, QString *)
@@ -125,8 +124,8 @@ void QuickOpenPlugin::openQuickOpen()
void QuickOpenPlugin::extensionsInitialized() void QuickOpenPlugin::extensionsInitialized()
{ {
m_filter = ExtensionSystem::PluginManager::instance()->getObjects<IQuickOpenFilter>(); m_filters = ExtensionSystem::PluginManager::instance()->getObjects<IQuickOpenFilter>();
qSort(m_filter.begin(), m_filter.end(), filterLessThan); qSort(m_filters.begin(), m_filters.end(), filterLessThan);
} }
void QuickOpenPlugin::startSettingsLoad() void QuickOpenPlugin::startSettingsLoad()
@@ -141,7 +140,7 @@ void QuickOpenPlugin::loadSettings()
QSettings settings; QSettings settings;
settings.beginGroup("QuickOpen"); settings.beginGroup("QuickOpen");
m_refreshTimer.setInterval(settings.value("RefreshInterval", 60).toInt()*60000); m_refreshTimer.setInterval(settings.value("RefreshInterval", 60).toInt()*60000);
foreach (IQuickOpenFilter *filter, m_filter) { foreach (IQuickOpenFilter *filter, 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())
@@ -153,10 +152,10 @@ void QuickOpenPlugin::loadSettings()
foreach (const QString &key, settings.childKeys()) { foreach (const QString &key, settings.childKeys()) {
IQuickOpenFilter *filter = new DirectoryFilter(core); IQuickOpenFilter *filter = new DirectoryFilter(core);
filter->restoreState(settings.value(key).toByteArray()); filter->restoreState(settings.value(key).toByteArray());
m_filter.append(filter); m_filters.append(filter);
customFilters.append(filter); customFilters.append(filter);
} }
setCustomFilter(customFilters); setCustomFilters(customFilters);
settings.endGroup(); settings.endGroup();
settings.endGroup(); settings.endGroup();
} }
@@ -176,14 +175,14 @@ void QuickOpenPlugin::saveSettings()
s->beginGroup("QuickOpen"); s->beginGroup("QuickOpen");
s->setValue("Interval", m_refreshTimer.interval()/60000); s->setValue("Interval", m_refreshTimer.interval()/60000);
s->remove(""); s->remove("");
foreach (IQuickOpenFilter *filter, m_filter) { foreach (IQuickOpenFilter *filter, m_filters) {
if (!m_customFilter.contains(filter)) { if (!m_customFilters.contains(filter)) {
s->setValue(filter->name(), filter->saveState()); s->setValue(filter->name(), filter->saveState());
} }
} }
s->beginGroup("CustomFilters"); s->beginGroup("CustomFilters");
int i = 0; int i = 0;
foreach (IQuickOpenFilter *filter, m_customFilter) { foreach (IQuickOpenFilter *filter, m_customFilters) {
s->setValue(QString("directory%1").arg(i), filter->saveState()); s->setValue(QString("directory%1").arg(i), filter->saveState());
++i; ++i;
} }
@@ -197,9 +196,9 @@ void QuickOpenPlugin::saveSettings()
Return all filters, including the ones created by the user. 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 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). 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(); m_quickOpenToolWindow->updateFilterList();
} }
void QuickOpenPlugin::setCustomFilter(QList<IQuickOpenFilter *> filter) void QuickOpenPlugin::setCustomFilters(QList<IQuickOpenFilter *> filters)
{ {
m_customFilter = filter; m_customFilters = filters;
} }
int QuickOpenPlugin::refreshInterval() int QuickOpenPlugin::refreshInterval()
@@ -243,7 +242,7 @@ void QuickOpenPlugin::setRefreshInterval(int interval)
void QuickOpenPlugin::refresh(QList<IQuickOpenFilter*> filters) void QuickOpenPlugin::refresh(QList<IQuickOpenFilter*> filters)
{ {
if (filters.isEmpty()) if (filters.isEmpty())
filters = m_filter; filters = m_filters;
QFuture<void> task = QtConcurrent::run(&IQuickOpenFilter::refresh, filters); QFuture<void> task = QtConcurrent::run(&IQuickOpenFilter::refresh, filters);
Core::FutureProgress *progress = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>() Core::FutureProgress *progress = ExtensionSystem::PluginManager::instance()->getObject<Core::ICore>()
->progressManager()->addTask(task, tr("Indexing"), Constants::TASK_INDEX, Core::ProgressManager::CloseOnSuccess); ->progressManager()->addTask(task, tr("Indexing"), Constants::TASK_INDEX, Core::ProgressManager::CloseOnSuccess);

View File

@@ -61,10 +61,10 @@ public:
bool initialize(const QStringList &arguments, QString *error_message); bool initialize(const QStringList &arguments, QString *error_message);
void extensionsInitialized(); void extensionsInitialized();
QList<IQuickOpenFilter*> filter(); QList<IQuickOpenFilter*> filters();
QList<IQuickOpenFilter*> customFilter(); QList<IQuickOpenFilter*> customFilters();
void setFilter(QList<IQuickOpenFilter*> f); void setFilters(QList<IQuickOpenFilter*> f);
void setCustomFilter(QList<IQuickOpenFilter*> f); void setCustomFilters(QList<IQuickOpenFilter*> f);
int refreshInterval(); int refreshInterval();
void setRefreshInterval(int interval); void setRefreshInterval(int interval);
@@ -83,8 +83,8 @@ private:
QuickOpenToolWindow *m_quickOpenToolWindow; QuickOpenToolWindow *m_quickOpenToolWindow;
SettingsPage *m_settingsPage; SettingsPage *m_settingsPage;
QList<IQuickOpenFilter*> m_filter; QList<IQuickOpenFilter*> m_filters;
QList<IQuickOpenFilter*> m_customFilter; QList<IQuickOpenFilter*> m_customFilters;
int m_refreshInterval; int m_refreshInterval;
QTimer m_refreshTimer; QTimer m_refreshTimer;
OpenDocumentsFilter *m_openDocumentsFilter; OpenDocumentsFilter *m_openDocumentsFilter;

View File

@@ -313,7 +313,7 @@ bool QuickOpenToolWindow::isShowingTypeHereMessage() const
void QuickOpenToolWindow::updateFilterList() void QuickOpenToolWindow::updateFilterList()
{ {
m_filterMenu->clear(); m_filterMenu->clear();
foreach (IQuickOpenFilter *filter, m_quickOpenPlugin->filter()) { foreach (IQuickOpenFilter *filter, m_quickOpenPlugin->filters()) {
if (!filter->shortcutString().isEmpty() && !filter->isHidden()) { if (!filter->shortcutString().isEmpty() && !filter->isHidden()) {
QAction *action = m_filterMenu->addAction(filter->trName(), this, SLOT(filterSelected())); QAction *action = m_filterMenu->addAction(filter->trName(), this, SLOT(filterSelected()));
action->setData(qVariantFromValue(filter)); action->setData(qVariantFromValue(filter));
@@ -379,7 +379,7 @@ void QuickOpenToolWindow::textEdited(const QString &text)
QList<IQuickOpenFilter*> QuickOpenToolWindow::filtersFor(const QString &text, QString &searchText) QList<IQuickOpenFilter*> QuickOpenToolWindow::filtersFor(const QString &text, QString &searchText)
{ {
QList<IQuickOpenFilter*> filters = m_quickOpenPlugin->filter(); QList<IQuickOpenFilter*> filters = m_quickOpenPlugin->filters();
int whiteSpace = text.indexOf(" "); int whiteSpace = text.indexOf(" ");
QString prefix; QString prefix;
if (whiteSpace >= 0) if (whiteSpace >= 0)
@@ -460,7 +460,7 @@ void QuickOpenToolWindow::filterSelected()
// add shortcut string at front or replace existing shortcut string // add shortcut string at front or replace existing shortcut string
if (!currentText.isEmpty()) { if (!currentText.isEmpty()) {
searchText = currentText; searchText = currentText;
foreach (IQuickOpenFilter *otherfilter, m_quickOpenPlugin->filter()) { foreach (IQuickOpenFilter *otherfilter, m_quickOpenPlugin->filters()) {
if (currentText.startsWith(otherfilter->shortcutString() + " ")) { if (currentText.startsWith(otherfilter->shortcutString() + " ")) {
searchText = currentText.mid(otherfilter->shortcutString().length()+1); searchText = currentText.mid(otherfilter->shortcutString().length()+1);
break; break;

View File

@@ -67,30 +67,41 @@ QWidget *SettingsPage::createPage(QWidget *parent)
this, SLOT(removeCustomFilter())); this, SLOT(removeCustomFilter()));
} }
m_ui.refreshInterval->setValue(m_plugin->refreshInterval()); m_ui.refreshInterval->setValue(m_plugin->refreshInterval());
m_filters = m_plugin->filter(); m_filters = m_plugin->filters();
m_customFilters = m_plugin->customFilter(); m_customFilters = m_plugin->customFilters();
saveFilterStates(); saveFilterStates();
updateFilterList(); updateFilterList();
return m_page; return m_page;
} }
void SettingsPage::finished(bool accepted) void SettingsPage::apply()
{ {
if (!accepted) { // Delete removed filters and clear added filters
restoreFilterStates(); qDeleteAll(m_removedFilters);
foreach (IQuickOpenFilter *filter, m_addedFilters) m_removedFilters.clear();
delete filter; m_addedFilters.clear();
} else {
foreach (IQuickOpenFilter *filter, m_removedFilters) // Pass the new configuration on to the plugin
delete filter; m_plugin->setFilters(m_filters);
m_plugin->setFilter(m_filters); m_plugin->setCustomFilters(m_customFilters);
m_plugin->setCustomFilter(m_customFilters); m_plugin->setRefreshInterval(m_ui.refreshInterval->value());
m_plugin->setRefreshInterval(m_ui.refreshInterval->value()); requestRefresh();
requestRefresh(); m_plugin->saveSettings();
m_plugin->saveSettings(); saveFilterStates();
} }
void SettingsPage::finish()
{
// If settings were applied, this shouldn't change anything. Otherwise it
// makes sure the filter states aren't changed permanently.
restoreFilterStates();
// Delete added filters and clear removed filters
qDeleteAll(m_addedFilters);
m_addedFilters.clear(); m_addedFilters.clear();
m_removedFilters.clear(); m_removedFilters.clear();
// Further cleanup
m_filters.clear(); m_filters.clear();
m_customFilters.clear(); m_customFilters.clear();
m_refreshFilters.clear(); m_refreshFilters.clear();

View File

@@ -66,7 +66,8 @@ public:
QString trCategory() const { return tr(Constants::QUICKOPEN_CATEGORY); } QString trCategory() const { return tr(Constants::QUICKOPEN_CATEGORY); }
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish();
private slots: private slots:
void updateButtonStates(); void updateButtonStates();

View File

@@ -100,9 +100,9 @@ QWidget *SettingsPage::createPage(QWidget *parent)
return m_widget; return m_widget;
} }
void SettingsPage::finished(bool accepted) void SettingsPage::apply()
{ {
if (!accepted || !m_widget) if (!m_widget)
return; return;
SubversionPlugin::subversionPluginInstance()->setSettings(m_widget->settings()); SubversionPlugin::subversionPluginInstance()->setSettings(m_widget->settings());
} }

View File

@@ -76,7 +76,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
private: private:
QPointer<SettingsPageWidget> m_widget; QPointer<SettingsPageWidget> m_widget;

View File

@@ -435,13 +435,8 @@ void FontSettingsPage::delayedChange()
emit changed(d_ptr->m_value); emit changed(d_ptr->m_value);
} }
void FontSettingsPage::finished(bool accepted) void FontSettingsPage::apply()
{ {
if (!accepted) {
d_ptr->m_value = d_ptr->m_lastValue;
return;
}
d_ptr->m_value.setFamily(d_ptr->ui.familyComboBox->currentText()); d_ptr->m_value.setFamily(d_ptr->ui.familyComboBox->currentText());
bool ok = true; bool ok = true;
@@ -460,6 +455,12 @@ void FontSettingsPage::finished(bool accepted)
} }
} }
void FontSettingsPage::finish()
{
// If changes were applied, these are equal. Otherwise restores last value.
d_ptr->m_value = d_ptr->m_lastValue;
}
const FontSettings &FontSettingsPage::fontSettings() const const FontSettings &FontSettingsPage::fontSettings() const
{ {
return d_ptr->m_value; return d_ptr->m_value;

View File

@@ -99,7 +99,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish();
const FontSettings &fontSettings() const; const FontSettings &fontSettings() const;

View File

@@ -105,14 +105,12 @@ QWidget *GeneralSettingsPage::createPage(QWidget *parent)
return w; return w;
} }
void GeneralSettingsPage::finished(bool accepted) void GeneralSettingsPage::apply()
{ {
if (!accepted)
return;
TabSettings newTabSettings; TabSettings newTabSettings;
StorageSettings newStorageSettings; StorageSettings newStorageSettings;
DisplaySettings newDisplaySettings; DisplaySettings newDisplaySettings;
settingsFromUI(newTabSettings, newStorageSettings, newDisplaySettings); settingsFromUI(newTabSettings, newStorageSettings, newDisplaySettings);
if (newTabSettings != m_d->m_tabSettings) { if (newTabSettings != m_d->m_tabSettings) {

View File

@@ -72,7 +72,8 @@ public:
QString trCategory() const; QString trCategory() const;
QWidget *createPage(QWidget *parent); QWidget *createPage(QWidget *parent);
void finished(bool accepted); void apply();
void finish() { }
TabSettings tabSettings() const; TabSettings tabSettings() const;
StorageSettings storageSettings() const; StorageSettings storageSettings() const;