diff --git a/src/plugins/android/androidsettingspage.cpp b/src/plugins/android/androidsettingspage.cpp index 95cb4af425f..d99c4b94eba 100644 --- a/src/plugins/android/androidsettingspage.cpp +++ b/src/plugins/android/androidsettingspage.cpp @@ -52,16 +52,10 @@ AndroidSettingsPage::AndroidSettingsPage(QObject *parent) setCategoryIcon(QLatin1String(Constants::ANDROID_SETTINGS_CATEGORY_ICON)); } -bool AndroidSettingsPage::matches(const QString &searchKeyWord) const +QWidget *AndroidSettingsPage::widget() { - return m_keywords.contains(searchKeyWord, Qt::CaseInsensitive); -} - -QWidget *AndroidSettingsPage::createPage(QWidget *parent) -{ - m_widget = new AndroidSettingsWidget(parent); - if (m_keywords.isEmpty()) - m_keywords = m_widget->searchKeywords(); + if (!m_widget) + m_widget = new AndroidSettingsWidget; return m_widget; } @@ -97,6 +91,7 @@ void AndroidSettingsPage::apply() void AndroidSettingsPage::finish() { + delete m_widget; } } // namespace Internal diff --git a/src/plugins/android/androidsettingspage.h b/src/plugins/android/androidsettingspage.h index 2beb36c3cb2..a9e966317c3 100644 --- a/src/plugins/android/androidsettingspage.h +++ b/src/plugins/android/androidsettingspage.h @@ -32,6 +32,8 @@ #include +#include + namespace Android { namespace Internal { @@ -44,14 +46,12 @@ class AndroidSettingsPage : public Core::IOptionsPage public: explicit AndroidSettingsPage(QObject *parent = 0); - bool matches(const QString &searchKeyWord) const; - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); private: - QString m_keywords; - AndroidSettingsWidget *m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index 4ab8228d0b3..24ef4dd2a54 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -129,24 +129,6 @@ AndroidSettingsWidget::~AndroidSettingsWidget() delete m_ui; } -QString AndroidSettingsWidget::searchKeywords() const -{ - QString rc; - QTextStream(&rc) << m_ui->SDKLocationLabel->text() - << ' ' << m_ui->SDKLocationLineEdit->text() - << ' ' << m_ui->NDKLocationLabel->text() - << ' ' << m_ui->NDKLocationLineEdit->text() - << ' ' << m_ui->AntLocationLabel->text() - << ' ' << m_ui->AntLocationLineEdit->text() - << ' ' << m_ui->OpenJDKLocationLabel->text() - << ' ' << m_ui->OpenJDKLocationLineEdit->text() - << ' ' << m_ui->AVDManagerLabel->text() - << ' ' << m_ui->DataPartitionSizeLable->text() - << ' ' << m_ui->DataPartitionSizeSpinBox->text(); - rc.remove(QLatin1Char('&')); - return rc; -} - void AndroidSettingsWidget::initGui() { m_ui->setupUi(this); diff --git a/src/plugins/android/androidsettingswidget.h b/src/plugins/android/androidsettingswidget.h index 74e7fe6d433..bb72957a29b 100644 --- a/src/plugins/android/androidsettingswidget.h +++ b/src/plugins/android/androidsettingswidget.h @@ -66,11 +66,10 @@ class AndroidSettingsWidget : public QWidget Q_OBJECT public: // Todo: This would be so much simpler if it just used Utils::PathChooser!!! - AndroidSettingsWidget(QWidget *parent); + AndroidSettingsWidget(QWidget *parent = 0); ~AndroidSettingsWidget(); void saveSettings(bool saveNow = false); - QString searchKeywords() const; private slots: void sdkLocationEditingFinished(); diff --git a/src/plugins/bazaar/optionspage.cpp b/src/plugins/bazaar/optionspage.cpp index fba09e02a4c..bf35dc436c4 100644 --- a/src/plugins/bazaar/optionspage.cpp +++ b/src/plugins/bazaar/optionspage.cpp @@ -67,37 +67,17 @@ void OptionsPageWidget::setSettings(const BazaarSettings &s) m_ui.timeout->setValue(s.intValue(BazaarSettings::timeoutKey)); } -QString OptionsPageWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream(&rc) - << sep << m_ui.configGroupBox->title() - << sep << m_ui.commandLabel->text() - << sep << m_ui.userGroupBox->title() - << sep << m_ui.defaultUsernameLabel->text() - << sep << m_ui.defaultEmailLabel->text() - << sep << m_ui.miscGroupBox->title() - << sep << m_ui.showLogEntriesLabel->text() - << sep << m_ui.timeoutSecondsLabel->text() - ; - rc.remove(QLatin1Char('&')); - return rc; -} - OptionsPage::OptionsPage() { setId(VcsBase::Constants::VCS_ID_BAZAAR); setDisplayName(tr("Bazaar")); } -QWidget *OptionsPage::createPage(QWidget *parent) +QWidget *OptionsPage::widget() { if (!m_optionsPageWidget) - m_optionsPageWidget = new OptionsPageWidget(parent); + m_optionsPageWidget = new OptionsPageWidget; m_optionsPageWidget->setSettings(BazaarPlugin::instance()->settings()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_optionsPageWidget->searchKeywords(); return m_optionsPageWidget; } @@ -114,8 +94,3 @@ void OptionsPage::apply() emit settingsChanged(); } } - -bool OptionsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} diff --git a/src/plugins/bazaar/optionspage.h b/src/plugins/bazaar/optionspage.h index b8f7bf6260a..d3928eb6b1a 100644 --- a/src/plugins/bazaar/optionspage.h +++ b/src/plugins/bazaar/optionspage.h @@ -50,7 +50,6 @@ public: BazaarSettings settings() const; void setSettings(const BazaarSettings &s); - QString searchKeywords() const; private: Ui::OptionsPage m_ui; @@ -64,16 +63,14 @@ class OptionsPage : public VcsBase::VcsBaseOptionsPage public: OptionsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish() { } - bool matches(const QString &s) const; signals: void settingsChanged(); private: - QString m_searchKeywords; QPointer m_optionsPageWidget; }; diff --git a/src/plugins/clearcase/settingspage.cpp b/src/plugins/clearcase/settingspage.cpp index bf1a3ecef8f..e2816344b87 100644 --- a/src/plugins/clearcase/settingspage.cpp +++ b/src/plugins/clearcase/settingspage.cpp @@ -107,25 +107,6 @@ void SettingsPageWidget::setSettings(const ClearCaseSettings &s) m_ui.indexOnlyVOBsEdit->setText(s.indexOnlyVOBs); } -QString SettingsPageWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream(&rc) << m_ui.commandLabel->text() - << sep << m_ui.autoCheckOutCheckBox->text() - << sep << m_ui.externalDiffRadioButton->text() - << sep << m_ui.graphicalDiffRadioButton->text() - << sep << m_ui.diffArgsLabel->text() - << sep << m_ui.historyCountLabel->text() - << sep << m_ui.promptCheckBox->text() - << sep << m_ui.disableIndexerCheckBox->text() - << sep << m_ui.timeOutLabel->text() - << sep << m_ui.indexOnlyVOBsLabel->text() - ; - rc.remove(QLatin1Char('&')); - return rc; -} - SettingsPage::SettingsPage() : m_widget(0) { @@ -133,12 +114,11 @@ SettingsPage::SettingsPage() : setDisplayName(tr("ClearCase")); } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { - m_widget = new SettingsPageWidget(parent); + if (!m_widget) + m_widget = new SettingsPageWidget; m_widget->setSettings(ClearCasePlugin::instance()->settings()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); return m_widget; } @@ -146,8 +126,3 @@ void SettingsPage::apply() { ClearCasePlugin::instance()->setSettings(m_widget->settings()); } - -bool SettingsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} diff --git a/src/plugins/clearcase/settingspage.h b/src/plugins/clearcase/settingspage.h index 9b40545c075..0cdacf2164b 100644 --- a/src/plugins/clearcase/settingspage.h +++ b/src/plugins/clearcase/settingspage.h @@ -35,6 +35,8 @@ #include "ui_settingspage.h" +#include + namespace ClearCase { namespace Internal { @@ -50,8 +52,6 @@ public: ClearCaseSettings settings() const; void setSettings(const ClearCaseSettings &); - QString searchKeywords() const; - private: Ui::SettingsPage m_ui; }; @@ -64,14 +64,12 @@ class SettingsPage : public VcsBase::VcsBaseOptionsPage public: SettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish() { } - bool matches(const QString &) const; private: - QString m_searchKeywords; - SettingsPageWidget* m_widget; + QPointer m_widget; }; } // namespace ClearCase diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index fe0c2561d01..556a8d88dc9 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -291,22 +291,23 @@ QString CMakeSettingsPage::findCmakeExecutable() const return Utils::Environment::systemEnvironment().searchInPath(QLatin1String("cmake")); } -QWidget *CMakeSettingsPage::createPage(QWidget *parent) +QWidget *CMakeSettingsPage::widget() { - QWidget *outerWidget = new QWidget(parent); - QFormLayout *formLayout = new QFormLayout(outerWidget); - formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); - m_pathchooser = new Utils::PathChooser; - m_pathchooser->setExpectedKind(Utils::PathChooser::ExistingCommand); - formLayout->addRow(tr("Executable:"), m_pathchooser); - formLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding)); + if (!m_widget) { + m_widget = new QWidget; + QFormLayout *formLayout = new QFormLayout(m_widget); + formLayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); + m_pathchooser = new Utils::PathChooser; + m_pathchooser->setExpectedKind(Utils::PathChooser::ExistingCommand); + formLayout->addRow(tr("Executable:"), m_pathchooser); + formLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Ignored, QSizePolicy::MinimumExpanding)); + + m_preferNinja = new QCheckBox(tr("Prefer Ninja generator (CMake 2.8.9 or higher required)")); + formLayout->addRow(m_preferNinja); + } m_pathchooser->setPath(m_cmakeValidatorForUser.cmakeExecutable()); - - m_preferNinja = new QCheckBox(tr("Prefer Ninja generator (CMake 2.8.9 or higher required)")); m_preferNinja->setChecked(preferNinja()); - formLayout->addRow(m_preferNinja); - - return outerWidget; + return m_widget; } void CMakeSettingsPage::saveSettings() const @@ -329,7 +330,7 @@ void CMakeSettingsPage::apply() void CMakeSettingsPage::finish() { - + delete m_widget; } QString CMakeSettingsPage::cmakeExecutable() const diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h index 55e45071476..f99ed968f2f 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.h @@ -40,12 +40,13 @@ #include #include -#include -#include +#include #include #include +#include +#include +#include #include -#include #include "cmakevalidator.h" @@ -108,7 +109,7 @@ public: CMakeSettingsPage(); ~CMakeSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); @@ -125,6 +126,7 @@ private: void saveSettings() const; QString findCmakeExecutable() const; + QPointer m_widget; Utils::PathChooser *m_pathchooser; QCheckBox *m_preferNinja; CMakeValidator m_cmakeValidatorForUser; diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.cpp b/src/plugins/coreplugin/actionmanager/commandmappings.cpp index ee17ff370fa..59da19d70af 100644 --- a/src/plugins/coreplugin/actionmanager/commandmappings.cpp +++ b/src/plugins/coreplugin/actionmanager/commandmappings.cpp @@ -50,42 +50,43 @@ CommandMappings::CommandMappings(QObject *parent) // IOptionsPage -QWidget *CommandMappings::createPage(QWidget *parent) +QWidget *CommandMappings::widget() { - m_page = new Ui::CommandMappings(); - QWidget *w = new QWidget(parent); - m_page->setupUi(w); - m_page->targetEdit->setAutoHideButton(Utils::FancyLineEdit::Right, true); - m_page->targetEdit->setPlaceholderText(QString()); - m_page->targetEdit->installEventFilter(this); + if (!m_widget) { + m_page = new Ui::CommandMappings(); + m_widget = new QWidget; + m_page->setupUi(m_widget); + m_page->targetEdit->setAutoHideButton(Utils::FancyLineEdit::Right, true); + m_page->targetEdit->setPlaceholderText(QString()); + m_page->targetEdit->installEventFilter(this); - connect(m_page->targetEdit, SIGNAL(buttonClicked(Utils::FancyLineEdit::Side)), - this, SLOT(removeTargetIdentifier())); - connect(m_page->resetButton, SIGNAL(clicked()), - this, SLOT(resetTargetIdentifier())); - connect(m_page->exportButton, SIGNAL(clicked()), - this, SLOT(exportAction())); - connect(m_page->importButton, SIGNAL(clicked()), - this, SLOT(importAction())); - connect(m_page->defaultButton, SIGNAL(clicked()), - this, SLOT(defaultAction())); + connect(m_page->targetEdit, SIGNAL(buttonClicked(Utils::FancyLineEdit::Side)), + this, SLOT(removeTargetIdentifier())); + connect(m_page->resetButton, SIGNAL(clicked()), + this, SLOT(resetTargetIdentifier())); + connect(m_page->exportButton, SIGNAL(clicked()), + this, SLOT(exportAction())); + connect(m_page->importButton, SIGNAL(clicked()), + this, SLOT(importAction())); + connect(m_page->defaultButton, SIGNAL(clicked()), + this, SLOT(defaultAction())); - initialize(); + initialize(); - m_page->commandList->sortByColumn(0, Qt::AscendingOrder); + m_page->commandList->sortByColumn(0, Qt::AscendingOrder); - connect(m_page->filterEdit, SIGNAL(textChanged(QString)), - this, SLOT(filterChanged(QString))); - connect(m_page->commandList, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), - this, SLOT(commandChanged(QTreeWidgetItem*))); - connect(m_page->targetEdit, SIGNAL(textChanged(QString)), - this, SLOT(targetIdentifierChanged())); + connect(m_page->filterEdit, SIGNAL(textChanged(QString)), + this, SLOT(filterChanged(QString))); + connect(m_page->commandList, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), + this, SLOT(commandChanged(QTreeWidgetItem*))); + connect(m_page->targetEdit, SIGNAL(textChanged(QString)), + this, SLOT(targetIdentifierChanged())); - new Utils::HeaderViewStretcher(m_page->commandList->header(), 1); + new Utils::HeaderViewStretcher(m_page->commandList->header(), 1); - commandChanged(0); - - return w; + commandChanged(0); + } + return m_widget; } void CommandMappings::setImportExportEnabled(bool enabled) @@ -126,6 +127,7 @@ void CommandMappings::setTargetHeader(const QString &s) void CommandMappings::finish() { + delete m_widget; if (!m_page) // page was never shown return; delete m_page; diff --git a/src/plugins/coreplugin/actionmanager/commandmappings.h b/src/plugins/coreplugin/actionmanager/commandmappings.h index 42ed428d675..3b3c9731c9c 100644 --- a/src/plugins/coreplugin/actionmanager/commandmappings.h +++ b/src/plugins/coreplugin/actionmanager/commandmappings.h @@ -33,6 +33,7 @@ #include #include +#include QT_BEGIN_NAMESPACE class QLineEdit; @@ -60,7 +61,7 @@ protected slots: protected: // IOptionsPage - QWidget *createPage(QWidget *parent); + QWidget *widget(); virtual void apply() {} virtual void finish(); @@ -80,6 +81,7 @@ protected: virtual void markPossibleCollisions(QTreeWidgetItem *) {} virtual void resetCollisionMarkers() {} private: + QPointer m_widget; Internal::Ui::CommandMappings *m_page; }; diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.cpp b/src/plugins/coreplugin/dialogs/ioptionspage.cpp index 12ad324c7b6..c252bdf4777 100644 --- a/src/plugins/coreplugin/dialogs/ioptionspage.cpp +++ b/src/plugins/coreplugin/dialogs/ioptionspage.cpp @@ -29,6 +29,11 @@ #include "ioptionspage.h" +#include +#include +#include +#include + /*! \class Core::IOptionsPage \mainclass @@ -43,12 +48,58 @@ \li \c displayName() is the (translated) name for display \li \c category() is the unique id for the category that the page should be displayed in \li \c displayCategory() is the translated name of the category - \li \c createPage() is called to retrieve the widget to show in the - \gui Options dialog - The widget will be destroyed by the widget hierarchy when the dialog closes + \li \c widget() is called to retrieve the widget to show in the + \gui Options dialog. You should create a widget lazily here, and delete it again in the + finish() method. This method can be called multiple times, so you should only create a new + widget if the old one was deleted. \li \c apply() is called to store the settings. It should detect if any changes have been made and store those - \li \c finish() is called directly before the \gui Options dialog closes - \li \c matches() is used for the \gui Options dialog search filter + \li \c finish() is called directly before the \gui Options dialog closes. Here you should delete + the widget that was created in widget() to free resources. + \li \c matches() is used for the \gui Options dialog search filter. The default implementation + takes the widget() and searches for all labels, buttons, checkboxes and group boxes, + and matches on their texts/titles. You can implement your own matching algorithm, but + usually the default implementation will work fine. \endlist */ + + +Core::IOptionsPage::IOptionsPage(QObject *parent) + : QObject(parent), + m_keywordsInitialized(false) +{ + +} + +Core::IOptionsPage::~IOptionsPage() +{ +} + +bool Core::IOptionsPage::matches(const QString &searchKeyWord) const +{ + if (!m_keywordsInitialized) { + IOptionsPage *that = const_cast(this); + QWidget *widget = that->widget(); + if (!widget) + return false; + // find common subwidgets + foreach (const QLabel *label, widget->findChildren()) + m_keywords << label->text(); + foreach (const QCheckBox *checkbox, widget->findChildren()) + m_keywords << checkbox->text(); + foreach (const QPushButton *pushButton, widget->findChildren()) + m_keywords << pushButton->text(); + foreach (const QGroupBox *groupBox, widget->findChildren()) + m_keywords << groupBox->title(); + + // clean up accelerators + QMutableStringListIterator it(m_keywords); + while (it.hasNext()) + it.next().remove(QLatin1Char('&')); + m_keywordsInitialized = true; + } + foreach (const QString &keyword, m_keywords) + if (keyword.contains(searchKeyWord, Qt::CaseInsensitive)) + return true; + return false; +} diff --git a/src/plugins/coreplugin/dialogs/ioptionspage.h b/src/plugins/coreplugin/dialogs/ioptionspage.h index 1fa1e514479..e9feaed7b08 100644 --- a/src/plugins/coreplugin/dialogs/ioptionspage.h +++ b/src/plugins/coreplugin/dialogs/ioptionspage.h @@ -34,6 +34,7 @@ #include #include +#include namespace Core { @@ -42,7 +43,8 @@ class CORE_EXPORT IOptionsPage : public QObject Q_OBJECT public: - IOptionsPage(QObject *parent = 0) : QObject(parent) {} + IOptionsPage(QObject *parent = 0); + virtual ~IOptionsPage(); Id id() const { return m_id; } QString displayName() const { return m_displayName; } @@ -50,8 +52,8 @@ public: QString displayCategory() const { return m_displayCategory; } QIcon categoryIcon() const { return QIcon(m_categoryIcon); } - virtual bool matches(const QString & /* searchKeyWord*/) const { return false; } - virtual QWidget *createPage(QWidget *parent) = 0; + virtual bool matches(const QString &searchKeyWord) const; + virtual QWidget *widget() = 0; virtual void apply() = 0; virtual void finish() = 0; @@ -67,6 +69,9 @@ protected: QString m_displayName; QString m_displayCategory; QString m_categoryIcon; + + mutable bool m_keywordsInitialized; + mutable QStringList m_keywords; }; /* diff --git a/src/plugins/coreplugin/dialogs/settingsdialog.cpp b/src/plugins/coreplugin/dialogs/settingsdialog.cpp index c265adbba3a..ef0081b6750 100644 --- a/src/plugins/coreplugin/dialogs/settingsdialog.cpp +++ b/src/plugins/coreplugin/dialogs/settingsdialog.cpp @@ -440,7 +440,7 @@ void SettingsDialog::ensureCategoryWidget(Category *category) QTabWidget *tabWidget = new QTabWidget; for (int j = 0; j < category->pages.size(); ++j) { IOptionsPage *page = category->pages.at(j); - QWidget *widget = page->createPage(0); + QWidget *widget = page->widget(); tabWidget->addTab(widget, page->displayName()); } diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp index a774587f92c..eed6cdc4a9c 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.cpp +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.cpp @@ -61,12 +61,12 @@ ShortcutSettings::ShortcutSettings(QObject *parent) setCategoryIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON)); } -QWidget *ShortcutSettings::createPage(QWidget *parent) +QWidget *ShortcutSettings::widget() { m_initialized = true; m_keyNum = m_key[0] = m_key[1] = m_key[2] = m_key[3] = 0; - QWidget *w = CommandMappings::createPage(parent); + QWidget *w = CommandMappings::widget(); const QString pageTitle = tr("Keyboard Shortcuts"); const QString targetLabelText = tr("Key sequence:"); @@ -78,12 +78,6 @@ QWidget *ShortcutSettings::createPage(QWidget *parent) setTargetHeader(editTitle); targetEdit()->setPlaceholderText(tr("Type to set shortcut")); - if (m_searchKeywords.isEmpty()) { - QTextStream(&m_searchKeywords) << ' ' << pageTitle - << ' ' << targetLabelText - << ' ' << editTitle; - } - return w; } @@ -102,11 +96,6 @@ void ShortcutSettings::finish() m_initialized = false; } -bool ShortcutSettings::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - bool ShortcutSettings::eventFilter(QObject *o, QEvent *e) { Q_UNUSED(o) diff --git a/src/plugins/coreplugin/dialogs/shortcutsettings.h b/src/plugins/coreplugin/dialogs/shortcutsettings.h index 888e8deaccc..8511f8b994d 100644 --- a/src/plugins/coreplugin/dialogs/shortcutsettings.h +++ b/src/plugins/coreplugin/dialogs/shortcutsettings.h @@ -62,10 +62,9 @@ class ShortcutSettings : public Core::CommandMappings public: ShortcutSettings(QObject *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; protected: bool eventFilter(QObject *o, QEvent *e); @@ -94,7 +93,6 @@ private: QList m_scitems; int m_key[4], m_keyNum; - QString m_searchKeywords; bool m_initialized; }; diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp index 834879c172a..40cb62ec3b5 100644 --- a/src/plugins/coreplugin/generalsettings.cpp +++ b/src/plugins/coreplugin/generalsettings.cpp @@ -102,76 +102,61 @@ void GeneralSettings::fillLanguageBox() const } } -QWidget *GeneralSettings::createPage(QWidget *parent) +QWidget *GeneralSettings::widget() { - m_page = new Ui::GeneralSettings(); - m_widget = new QWidget(parent); - m_page->setupUi(m_widget); + if (!m_widget) { + m_page = new Ui::GeneralSettings(); + m_widget = new QWidget; + m_page->setupUi(m_widget); - fillLanguageBox(); + fillLanguageBox(); - m_page->colorButton->setColor(StyleHelper::requestedBaseColor()); - m_page->reloadBehavior->setCurrentIndex(EditorManager::reloadSetting()); - if (HostOsInfo::isAnyUnixHost()) { - QSettings *settings = Core::ICore::settings(); - const QStringList availableTerminals = ConsoleProcess::availableTerminalEmulators(); - const QString currentTerminal = ConsoleProcess::terminalEmulator(settings, false); - m_page->terminalComboBox->addItems(availableTerminals); - m_page->terminalComboBox->lineEdit()->setText(currentTerminal); - m_page->terminalComboBox->lineEdit()->setPlaceholderText(ConsoleProcess::defaultTerminalEmulator()); - } else { - m_page->terminalLabel->hide(); - m_page->terminalComboBox->hide(); - m_page->resetTerminalButton->hide(); - } + m_page->colorButton->setColor(StyleHelper::requestedBaseColor()); + m_page->reloadBehavior->setCurrentIndex(EditorManager::reloadSetting()); + if (HostOsInfo::isAnyUnixHost()) { + QSettings *settings = Core::ICore::settings(); + const QStringList availableTerminals = ConsoleProcess::availableTerminalEmulators(); + const QString currentTerminal = ConsoleProcess::terminalEmulator(settings, false); + m_page->terminalComboBox->addItems(availableTerminals); + m_page->terminalComboBox->lineEdit()->setText(currentTerminal); + m_page->terminalComboBox->lineEdit()->setPlaceholderText(ConsoleProcess::defaultTerminalEmulator()); + } else { + m_page->terminalLabel->hide(); + m_page->terminalComboBox->hide(); + m_page->resetTerminalButton->hide(); + } - if (HostOsInfo::isAnyUnixHost() && !HostOsInfo::isMacHost()) { - QSettings *settings = Core::ICore::settings(); - m_page->externalFileBrowserEdit->setText(UnixUtils::fileBrowser(settings)); - } else { - m_page->externalFileBrowserLabel->hide(); - m_page->externalFileBrowserEdit->hide(); - m_page->resetFileBrowserButton->hide(); - m_page->helpExternalFileBrowserButton->hide(); - } + if (HostOsInfo::isAnyUnixHost() && !HostOsInfo::isMacHost()) { + QSettings *settings = Core::ICore::settings(); + m_page->externalFileBrowserEdit->setText(UnixUtils::fileBrowser(settings)); + } else { + m_page->externalFileBrowserLabel->hide(); + m_page->externalFileBrowserEdit->hide(); + m_page->resetFileBrowserButton->hide(); + m_page->helpExternalFileBrowserButton->hide(); + } - m_page->autoSaveCheckBox->setChecked(EditorManager::autoSaveEnabled()); - m_page->autoSaveInterval->setValue(EditorManager::autoSaveInterval()); - m_page->resetWarningsButton->setEnabled(Core::InfoBar::anyGloballySuppressed() - || Utils::CheckableMessageBox::hasSuppressedQuestions(ICore::settings())); + m_page->autoSaveCheckBox->setChecked(EditorManager::autoSaveEnabled()); + m_page->autoSaveInterval->setValue(EditorManager::autoSaveInterval()); + m_page->resetWarningsButton->setEnabled(Core::InfoBar::anyGloballySuppressed() + || Utils::CheckableMessageBox::hasSuppressedQuestions(ICore::settings())); - connect(m_page->resetColorButton, SIGNAL(clicked()), - this, SLOT(resetInterfaceColor())); - connect(m_page->resetWarningsButton, SIGNAL(clicked()), - this, SLOT(resetWarnings())); - if (HostOsInfo::isAnyUnixHost()) { - connect(m_page->resetTerminalButton, SIGNAL(clicked()), this, SLOT(resetTerminal())); - if (!HostOsInfo::isMacHost()) { - connect(m_page->resetFileBrowserButton, SIGNAL(clicked()), this, SLOT(resetFileBrowser())); - connect(m_page->helpExternalFileBrowserButton, SIGNAL(clicked()), - this, SLOT(showHelpForFileBrowser())); + connect(m_page->resetColorButton, SIGNAL(clicked()), + this, SLOT(resetInterfaceColor())); + connect(m_page->resetWarningsButton, SIGNAL(clicked()), + this, SLOT(resetWarnings())); + if (HostOsInfo::isAnyUnixHost()) { + connect(m_page->resetTerminalButton, SIGNAL(clicked()), this, SLOT(resetTerminal())); + if (!HostOsInfo::isMacHost()) { + connect(m_page->resetFileBrowserButton, SIGNAL(clicked()), this, SLOT(resetFileBrowser())); + connect(m_page->helpExternalFileBrowserButton, SIGNAL(clicked()), + this, SLOT(showHelpForFileBrowser())); + } } } - - if (m_searchKeywords.isEmpty()) { - QLatin1Char sep(' '); - QTextStream(&m_searchKeywords) - << m_page->interfaceBox->title() << sep - << m_page->colorLabel->text() << sep - << m_page->languageLabel->text() << sep - << m_page->systemBox->title() << sep - << m_page->terminalLabel->text() << sep - << m_page->modifiedLabel->text(); - m_searchKeywords.remove(QLatin1Char('&')); - } return m_widget; } -bool GeneralSettings::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - void GeneralSettings::apply() { if (!m_page) // wasn't shown, can't be changed @@ -195,6 +180,7 @@ void GeneralSettings::apply() void GeneralSettings::finish() { + delete m_widget; if (!m_page) // page was never shown return; delete m_page; diff --git a/src/plugins/coreplugin/generalsettings.h b/src/plugins/coreplugin/generalsettings.h index c812ac45af8..ee13d5ad103 100644 --- a/src/plugins/coreplugin/generalsettings.h +++ b/src/plugins/coreplugin/generalsettings.h @@ -51,10 +51,9 @@ class GeneralSettings : public IOptionsPage public: GeneralSettings(); - QWidget* createPage(QWidget *parent); + QWidget* widget(); void apply(); void finish(); - virtual bool matches(const QString &) const; private slots: void resetInterfaceColor(); @@ -70,7 +69,6 @@ private: QString language() const; void setLanguage(const QString&); Ui::GeneralSettings *m_page; - QString m_searchKeywords; QPointer m_dialog; QPointer m_widget; }; diff --git a/src/plugins/coreplugin/mimetypesettings.cpp b/src/plugins/coreplugin/mimetypesettings.cpp index 07315c389b9..5185f554bc5 100644 --- a/src/plugins/coreplugin/mimetypesettings.cpp +++ b/src/plugins/coreplugin/mimetypesettings.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -239,7 +240,6 @@ private slots: public: static const QChar kSemiColon; - QString m_keywords; MimeTypeSettingsModel *m_model; QSortFilterProxyModel *m_filterModel; int m_mimeForPatternSync; @@ -249,6 +249,7 @@ public: QList m_modifiedMimeTypes; QString m_filterPattern; Ui::MimeTypeSettingsPage m_ui; + QPointer m_widget; }; const QChar MimeTypeSettingsPrivate::kSemiColon(QLatin1Char(';')); @@ -586,16 +587,13 @@ MimeTypeSettings::~MimeTypeSettings() delete d; } -bool MimeTypeSettings::matches(const QString &s) const +QWidget *MimeTypeSettings::widget() { - return d->m_keywords.contains(s, Qt::CaseInsensitive); -} - -QWidget *MimeTypeSettings::createPage(QWidget *parent) -{ - QWidget *w = new QWidget(parent); - d->configureUi(w); - return w; + if (!d->m_widget) { + d->m_widget = new QWidget; + d->configureUi(d->m_widget); + } + return d->m_widget; } void MimeTypeSettings::apply() @@ -625,6 +623,7 @@ void MimeTypeSettings::finish() d->updateMimeDatabase(); } d->resetState(); + delete d->m_widget; } } // Internal diff --git a/src/plugins/coreplugin/mimetypesettings.h b/src/plugins/coreplugin/mimetypesettings.h index 19908aeeb65..261ae93a745 100644 --- a/src/plugins/coreplugin/mimetypesettings.h +++ b/src/plugins/coreplugin/mimetypesettings.h @@ -45,8 +45,7 @@ public: MimeTypeSettings(QObject *parent = 0); virtual ~MimeTypeSettings(); - virtual bool matches(const QString &s) const; - virtual QWidget *createPage(QWidget *parent); + virtual QWidget *widget(); virtual void apply(); virtual void finish(); diff --git a/src/plugins/coreplugin/toolsettings.cpp b/src/plugins/coreplugin/toolsettings.cpp index 84b13024b35..be94b4dceb7 100644 --- a/src/plugins/coreplugin/toolsettings.cpp +++ b/src/plugins/coreplugin/toolsettings.cpp @@ -56,17 +56,12 @@ ToolSettings::ToolSettings(QObject *parent) : } -bool ToolSettings::matches(const QString & searchKeyWord) const +QWidget *ToolSettings::widget() { - return m_searchKeywords.contains(searchKeyWord, Qt::CaseInsensitive); -} - -QWidget *ToolSettings::createPage(QWidget *parent) -{ - m_widget = new ExternalToolConfig(parent); - m_widget->setTools(ExternalToolManager::toolsByCategory()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new ExternalToolConfig; + m_widget->setTools(ExternalToolManager::toolsByCategory()); + } return m_widget; } @@ -206,4 +201,5 @@ void ToolSettings::apply() void ToolSettings::finish() { + delete m_widget; } diff --git a/src/plugins/coreplugin/toolsettings.h b/src/plugins/coreplugin/toolsettings.h index c161436de98..038baf376d9 100644 --- a/src/plugins/coreplugin/toolsettings.h +++ b/src/plugins/coreplugin/toolsettings.h @@ -46,13 +46,11 @@ class ToolSettings : public IOptionsPage public: explicit ToolSettings(QObject *parent = 0); - bool matches(const QString & searchKeyWord) const; - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); private: - QString m_searchKeywords; QPointer m_widget; }; diff --git a/src/plugins/cpaster/fileshareprotocolsettingspage.cpp b/src/plugins/cpaster/fileshareprotocolsettingspage.cpp index 8a7c4c0496c..47ec8a9d55d 100644 --- a/src/plugins/cpaster/fileshareprotocolsettingspage.cpp +++ b/src/plugins/cpaster/fileshareprotocolsettingspage.cpp @@ -104,10 +104,12 @@ FileShareProtocolSettingsPage::FileShareProtocolSettingsPage(const QSharedPointe setDisplayCategory(QCoreApplication::translate("CodePaster", Constants::CPASTER_SETTINGS_TR_CATEGORY)); } -QWidget *FileShareProtocolSettingsPage::createPage(QWidget *parent) +QWidget *FileShareProtocolSettingsPage::widget() { - m_widget = new FileShareProtocolSettingsWidget(parent); - m_widget->setSettings(*m_settings); + if (!m_widget) { + m_widget = new FileShareProtocolSettingsWidget; + m_widget->setSettings(*m_settings); + } return m_widget; } diff --git a/src/plugins/cpaster/fileshareprotocolsettingspage.h b/src/plugins/cpaster/fileshareprotocolsettingspage.h index 91d1c996fe0..c6970aa6b9f 100644 --- a/src/plugins/cpaster/fileshareprotocolsettingspage.h +++ b/src/plugins/cpaster/fileshareprotocolsettingspage.h @@ -78,7 +78,7 @@ public: explicit FileShareProtocolSettingsPage(const QSharedPointer &s, QObject *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish() { } diff --git a/src/plugins/cpaster/settingspage.cpp b/src/plugins/cpaster/settingspage.cpp index 35060653eb9..6ea55f1f480 100644 --- a/src/plugins/cpaster/settingspage.cpp +++ b/src/plugins/cpaster/settingspage.cpp @@ -90,13 +90,12 @@ SettingsPage::~SettingsPage() { } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { - m_widget = new SettingsWidget(m_protocols, parent); - m_widget->setSettings(*m_settings); - - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new SettingsWidget(m_protocols); + m_widget->setSettings(*m_settings); + } return m_widget; } @@ -111,11 +110,6 @@ void SettingsPage::apply() } } -bool SettingsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - void SettingsPage::addProtocol(const QString &name) { m_protocols.append(name); diff --git a/src/plugins/cpaster/settingspage.h b/src/plugins/cpaster/settingspage.h index 9297da67cb4..e94348e231f 100644 --- a/src/plugins/cpaster/settingspage.h +++ b/src/plugins/cpaster/settingspage.h @@ -66,10 +66,9 @@ public: explicit SettingsPage(const QSharedPointer &settings); ~SettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish() { } - bool matches(const QString &) const; void addProtocol(const QString& name); @@ -78,7 +77,6 @@ private: QPointer m_widget; QStringList m_protocols; - QString m_searchKeywords; }; } // namespace CodePaster diff --git a/src/plugins/cpptools/completionsettingspage.cpp b/src/plugins/cpptools/completionsettingspage.cpp index 37ca2ed1727..c72d60c9d3c 100644 --- a/src/plugins/cpptools/completionsettingspage.cpp +++ b/src/plugins/cpptools/completionsettingspage.cpp @@ -56,67 +56,54 @@ CompletionSettingsPage::~CompletionSettingsPage() delete m_page; } -QWidget *CompletionSettingsPage::createPage(QWidget *parent) +QWidget *CompletionSettingsPage::widget() { - QWidget *w = new QWidget(parent); - m_page = new Ui::CompletionSettingsPage; - m_page->setupUi(w); + if (!m_widget) { + QWidget *m_widget = new QWidget; + m_page = new Ui::CompletionSettingsPage; + m_page->setupUi(m_widget); - const TextEditor::CompletionSettings &settings = - TextEditor::TextEditorSettings::completionSettings(); + const TextEditor::CompletionSettings &settings = + TextEditor::TextEditorSettings::completionSettings(); - int caseSensitivityIndex = 0; - switch (settings.m_caseSensitivity) { - case TextEditor::CaseSensitive: - caseSensitivityIndex = 0; - break; - case TextEditor::CaseInsensitive: - caseSensitivityIndex = 1; - break; - case TextEditor::FirstLetterCaseSensitive: - caseSensitivityIndex = 2; - break; + int caseSensitivityIndex = 0; + switch (settings.m_caseSensitivity) { + case TextEditor::CaseSensitive: + caseSensitivityIndex = 0; + break; + case TextEditor::CaseInsensitive: + caseSensitivityIndex = 1; + break; + case TextEditor::FirstLetterCaseSensitive: + caseSensitivityIndex = 2; + break; + } + + int completionTriggerIndex = 0; + switch (settings.m_completionTrigger) { + case TextEditor::ManualCompletion: + completionTriggerIndex = 0; + break; + case TextEditor::TriggeredCompletion: + completionTriggerIndex = 1; + break; + case TextEditor::AutomaticCompletion: + completionTriggerIndex = 2; + break; + } + + m_page->caseSensitivity->setCurrentIndex(caseSensitivityIndex); + m_page->completionTrigger->setCurrentIndex(completionTriggerIndex); + m_page->autoInsertBrackets->setChecked(settings.m_autoInsertBrackets); + m_page->surroundSelectedText->setChecked(settings.m_surroundingAutoBrackets); + m_page->partiallyComplete->setChecked(settings.m_partiallyComplete); + m_page->spaceAfterFunctionName->setChecked(settings.m_spaceAfterFunctionName); + m_page->enableDoxygenCheckBox->setChecked(m_commentsSettings.m_enableDoxygen); + m_page->generateBriefCheckBox->setChecked(m_commentsSettings.m_generateBrief); + m_page->leadingAsterisksCheckBox->setChecked(m_commentsSettings.m_leadingAsterisks); + m_page->generateBriefCheckBox->setEnabled(m_page->enableDoxygenCheckBox->isChecked()); } - - int completionTriggerIndex = 0; - switch (settings.m_completionTrigger) { - case TextEditor::ManualCompletion: - completionTriggerIndex = 0; - break; - case TextEditor::TriggeredCompletion: - completionTriggerIndex = 1; - break; - case TextEditor::AutomaticCompletion: - completionTriggerIndex = 2; - break; - } - - m_page->caseSensitivity->setCurrentIndex(caseSensitivityIndex); - m_page->completionTrigger->setCurrentIndex(completionTriggerIndex); - m_page->autoInsertBrackets->setChecked(settings.m_autoInsertBrackets); - m_page->surroundSelectedText->setChecked(settings.m_surroundingAutoBrackets); - m_page->partiallyComplete->setChecked(settings.m_partiallyComplete); - m_page->spaceAfterFunctionName->setChecked(settings.m_spaceAfterFunctionName); - m_page->enableDoxygenCheckBox->setChecked(m_commentsSettings.m_enableDoxygen); - m_page->generateBriefCheckBox->setChecked(m_commentsSettings.m_generateBrief); - m_page->leadingAsterisksCheckBox->setChecked(m_commentsSettings.m_leadingAsterisks); - - if (m_searchKeywords.isEmpty()) { - QTextStream(&m_searchKeywords) << m_page->caseSensitivityLabel->text() - << ' ' << m_page->autoInsertBrackets->text() - << ' ' << m_page->surroundSelectedText->text() - << ' ' << m_page->completionTriggerLabel->text() - << ' ' << m_page->partiallyComplete->text() - << ' ' << m_page->spaceAfterFunctionName->text() - << ' ' << m_page->enableDoxygenCheckBox->text() - << ' ' << m_page->generateBriefCheckBox->text() - << ' ' << m_page->leadingAsterisksCheckBox->text(); - m_searchKeywords.remove(QLatin1Char('&')); - } - - m_page->generateBriefCheckBox->setEnabled(m_page->enableDoxygenCheckBox->isChecked()); - - return w; + return m_widget; } void CompletionSettingsPage::apply() @@ -144,11 +131,6 @@ void CompletionSettingsPage::apply() emit commentsSettingsChanged(m_commentsSettings); } -bool CompletionSettingsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - TextEditor::CaseSensitivity CompletionSettingsPage::caseSensitivity() const { switch (m_page->caseSensitivity->currentIndex()) { @@ -175,6 +157,7 @@ TextEditor::CompletionTrigger CompletionSettingsPage::completionTrigger() const void CompletionSettingsPage::finish() { + delete m_widget; if (!m_page) // page was never shown return; delete m_page; diff --git a/src/plugins/cpptools/completionsettingspage.h b/src/plugins/cpptools/completionsettingspage.h index 0a9bdd4afb1..fc45922e3d7 100644 --- a/src/plugins/cpptools/completionsettingspage.h +++ b/src/plugins/cpptools/completionsettingspage.h @@ -35,6 +35,8 @@ #include #include +#include + namespace CppTools { namespace Internal { @@ -52,10 +54,9 @@ public: CompletionSettingsPage(QObject *parent); ~CompletionSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &) const; const CommentsSettings &commentsSettings() const; @@ -69,7 +70,7 @@ private: bool requireCommentsSettingsUpdate() const; Ui::CompletionSettingsPage *m_page; - QString m_searchKeywords; + QPointer m_widget; CommentsSettings m_commentsSettings; }; diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.cpp b/src/plugins/cpptools/cppcodemodelsettingspage.cpp index e5fd37824a6..7202ea28286 100644 --- a/src/plugins/cpptools/cppcodemodelsettingspage.cpp +++ b/src/plugins/cpptools/cppcodemodelsettingspage.cpp @@ -101,23 +101,6 @@ void CppCodeModelSettingsWidget::applyToSettings() const m_settings->toSettings(Core::ICore::settings()); } -QString CppCodeModelSettingsWidget::searchKeywords() const -{ - QString rc; - QTextStream ts(&rc); - ts << m_ui->theGroupBox->title() - << ' ' << m_ui->cLabel->text() - << ' ' << m_ui->cppLabel->text() - << ' ' << m_ui->objcLabel->text() - << ' ' << m_ui->objcppLabel->text() - << ' ' << m_ui->anotherGroupBox->title() - << ' ' << m_ui->ignorePCHCheckBox->text(); - foreach (const QString &mmsNames, m_settings->availableModelManagerSupportersByName().keys()) - ts << ' ' << mmsNames; - rc.remove(QLatin1Char('&')); - return rc; -} - bool CppCodeModelSettingsWidget::applyToSettings(QComboBox *chooser, const QString &mimeType) const { QString newId = chooser->itemData(chooser->currentIndex()).toString(); @@ -141,12 +124,12 @@ CppCodeModelSettingsPage::CppCodeModelSettingsPage(QSharedPointersetSettings(m_settings); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new CppCodeModelSettingsWidget; + m_widget->setSettings(m_settings); + } return m_widget; } @@ -156,7 +139,7 @@ void CppCodeModelSettingsPage::apply() m_widget->applyToSettings(); } -bool CppCodeModelSettingsPage::matches(const QString &s) const +void CppCodeModelSettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.h b/src/plugins/cpptools/cppcodemodelsettingspage.h index 310671e6be8..a40bfda4374 100644 --- a/src/plugins/cpptools/cppcodemodelsettingspage.h +++ b/src/plugins/cpptools/cppcodemodelsettingspage.h @@ -56,8 +56,6 @@ public: void setSettings(const QSharedPointer &s); void applyToSettings() const; - QString searchKeywords() const; - private: bool applyToSettings(QComboBox *chooser, const QString &mimeType) const; void applyToWidget(QComboBox *chooser, const QString &mimeType) const; @@ -73,15 +71,13 @@ public: explicit CppCodeModelSettingsPage(QSharedPointer &settings, QObject *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &s) const; + void finish(); private: const QSharedPointer m_settings; QPointer m_widget; - QString m_searchKeywords; }; } // Internal namespace diff --git a/src/plugins/cpptools/cppcodestylesettingspage.cpp b/src/plugins/cpptools/cppcodestylesettingspage.cpp index ca94a0ec573..1b731b6ac81 100644 --- a/src/plugins/cpptools/cppcodestylesettingspage.cpp +++ b/src/plugins/cpptools/cppcodestylesettingspage.cpp @@ -428,44 +428,6 @@ void CppCodeStylePreferencesWidget::slotCurrentPreferencesChanged(TextEditor::IC updatePreview(); } -QString CppCodeStylePreferencesWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream(&rc) - << sep << m_ui->tabSettingsWidget->searchKeywords() - << sep << m_ui->indentBlockBraces->text() - << sep << m_ui->indentBlockBody->text() - << sep << m_ui->indentClassBraces->text() - << sep << m_ui->indentEnumBraces->text() - << sep << m_ui->indentNamespaceBraces->text() - << sep << m_ui->indentNamespaceBody->text() - << sep << m_ui->indentAccessSpecifiers->text() - << sep << m_ui->indentDeclarationsRelativeToAccessSpecifiers->text() - << sep << m_ui->indentFunctionBody->text() - << sep << m_ui->indentFunctionBraces->text() - << sep << m_ui->indentSwitchLabels->text() - << sep << m_ui->indentCaseStatements->text() - << sep << m_ui->indentCaseBlocks->text() - << sep << m_ui->indentCaseBreak->text() - << sep << m_ui->bindStarToIdentifier->text() - << sep << m_ui->bindStarToTypeName->text() - << sep << m_ui->bindStarToLeftSpecifier->text() - << sep << m_ui->bindStarToRightSpecifier->text() - << sep << m_ui->contentGroupBox->title() - << sep << m_ui->bracesGroupBox->title() - << sep << m_ui->switchGroupBox->title() - << sep << m_ui->alignmentGroupBox->title() - << sep << m_ui->pointerReferencesGroupBox->title() - << sep << m_ui->extraPaddingConditions->text() - << sep << m_ui->alignAssignments->text() - ; - for (int i = 0; i < m_ui->categoryTab->count(); i++) - QTextStream(&rc) << sep << m_ui->categoryTab->tabText(i); - rc.remove(QLatin1Char('&')); - return rc; -} - void CppCodeStylePreferencesWidget::slotCodeStyleSettingsChanged() { if (m_blockUpdates) @@ -564,19 +526,20 @@ CppCodeStyleSettingsPage::CppCodeStyleSettingsPage(QWidget *parent) : setCategoryIcon(QLatin1String(Constants::SETTINGS_CATEGORY_CPP_ICON)); } -QWidget *CppCodeStyleSettingsPage::createPage(QWidget *parent) +QWidget *CppCodeStyleSettingsPage::widget() { - CppCodeStylePreferences *originalCodeStylePreferences - = CppToolsSettings::instance()->cppCodeStyle(); - m_pageCppCodeStylePreferences = new CppCodeStylePreferences(m_widget); - m_pageCppCodeStylePreferences->setDelegatingPool(originalCodeStylePreferences->delegatingPool()); - m_pageCppCodeStylePreferences->setCodeStyleSettings(originalCodeStylePreferences->codeStyleSettings()); - m_pageCppCodeStylePreferences->setCurrentDelegate(originalCodeStylePreferences->currentDelegate()); - // we set id so that it won't be possible to set delegate to the original prefs - m_pageCppCodeStylePreferences->setId(originalCodeStylePreferences->id()); - m_widget = new CodeStyleEditor(TextEditorSettings::codeStyleFactory(CppTools::Constants::CPP_SETTINGS_ID), - m_pageCppCodeStylePreferences, parent); - + if (!m_widget) { + CppCodeStylePreferences *originalCodeStylePreferences + = CppToolsSettings::instance()->cppCodeStyle(); + m_pageCppCodeStylePreferences = new CppCodeStylePreferences(m_widget); + m_pageCppCodeStylePreferences->setDelegatingPool(originalCodeStylePreferences->delegatingPool()); + m_pageCppCodeStylePreferences->setCodeStyleSettings(originalCodeStylePreferences->codeStyleSettings()); + m_pageCppCodeStylePreferences->setCurrentDelegate(originalCodeStylePreferences->currentDelegate()); + // we set id so that it won't be possible to set delegate to the original prefs + m_pageCppCodeStylePreferences->setId(originalCodeStylePreferences->id()); + m_widget = new CodeStyleEditor(TextEditorSettings::codeStyleFactory(CppTools::Constants::CPP_SETTINGS_ID), + m_pageCppCodeStylePreferences); + } return m_widget; } @@ -601,9 +564,9 @@ void CppCodeStyleSettingsPage::apply() } } -bool CppCodeStyleSettingsPage::matches(const QString &s) const +void CppCodeStyleSettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } } // namespace Internal diff --git a/src/plugins/cpptools/cppcodestylesettingspage.h b/src/plugins/cpptools/cppcodestylesettingspage.h index 8f83f3ef183..d42815eddec 100644 --- a/src/plugins/cpptools/cppcodestylesettingspage.h +++ b/src/plugins/cpptools/cppcodestylesettingspage.h @@ -66,8 +66,6 @@ public: void setCodeStyle(CppTools::CppCodeStylePreferences *codeStylePreferences); - QString searchKeywords() const; - private slots: void decorateEditors(const TextEditor::FontSettings &fontSettings); void setVisualizeWhitespace(bool on); @@ -95,13 +93,11 @@ class CppCodeStyleSettingsPage : public Core::IOptionsPage public: explicit CppCodeStyleSettingsPage(QWidget *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &) const; + void finish(); private: - QString m_searchKeywords; CppCodeStylePreferences *m_pageCppCodeStylePreferences; QPointer m_widget; }; diff --git a/src/plugins/cpptools/cppfilesettingspage.cpp b/src/plugins/cpptools/cppfilesettingspage.cpp index 1571e7ac220..48235be2d5c 100644 --- a/src/plugins/cpptools/cppfilesettingspage.cpp +++ b/src/plugins/cpptools/cppfilesettingspage.cpp @@ -293,21 +293,6 @@ CppFileSettings CppFileSettingsWidget::settings() const return rc; } -QString CppFileSettingsWidget::searchKeywords() const -{ - QString rc; - QTextStream(&rc) << m_ui->headersGroupBox->title() - << ' ' << m_ui->headerSuffixLabel->text() - << ' ' << m_ui->headerSearchPathsLabel->text() - << ' ' << m_ui->sourcesGroupBox->title() - << ' ' << m_ui->sourceSuffixLabel->text() - << ' ' << m_ui->sourceSearchPathsLabel->text() - << ' ' << m_ui->lowerCaseFileNamesCheckBox->text() - << ' ' << m_ui->licenseTemplateLabel->text(); - rc.remove(QLatin1Char('&')); - return rc; -} - static inline void setComboText(QComboBox *cb, const QString &text, int defaultIndex = 0) { const int index = cb->findText(text); @@ -355,13 +340,13 @@ CppFileSettingsPage::CppFileSettingsPage(QSharedPointer &settin setCategoryIcon(QLatin1String(Constants::SETTINGS_CATEGORY_CPP_ICON)); } -QWidget *CppFileSettingsPage::createPage(QWidget *parent) +QWidget *CppFileSettingsPage::widget() { - m_widget = new CppFileSettingsWidget(parent); - m_widget->setSettings(*m_settings); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new CppFileSettingsWidget; + m_widget->setSettings(*m_settings); + } return m_widget; } @@ -378,9 +363,9 @@ void CppFileSettingsPage::apply() } } -bool CppFileSettingsPage::matches(const QString &s) const +void CppFileSettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } } // namespace Internal diff --git a/src/plugins/cpptools/cppfilesettingspage.h b/src/plugins/cpptools/cppfilesettingspage.h index 6fcf0dbc171..273749b1e88 100644 --- a/src/plugins/cpptools/cppfilesettingspage.h +++ b/src/plugins/cpptools/cppfilesettingspage.h @@ -80,8 +80,6 @@ public: CppFileSettings settings() const; void setSettings(const CppFileSettings &s); - QString searchKeywords() const; - private slots: void slotEdit(); @@ -98,15 +96,13 @@ public: explicit CppFileSettingsPage(QSharedPointer &settings, QObject *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &) const; + void finish(); private: const QSharedPointer m_settings; QPointer m_widget; - QString m_searchKeywords; }; } // namespace Internal diff --git a/src/plugins/cvs/settingspage.cpp b/src/plugins/cvs/settingspage.cpp index 7c5a799fc82..baea514b4d7 100644 --- a/src/plugins/cvs/settingspage.cpp +++ b/src/plugins/cvs/settingspage.cpp @@ -74,36 +74,18 @@ void SettingsPageWidget::setSettings(const CvsSettings &s) m_ui.describeByCommitIdCheckBox->setChecked(s.boolValue(CvsSettings::describeByCommitIdKey)); } -QString SettingsPageWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream(&rc) - << sep << m_ui.configGroupBox->title() - << sep << m_ui.commandLabel->text() - << sep << m_ui.rootLabel->text() - << sep << m_ui.miscGroupBox->title() - << sep << m_ui.timeOutLabel->text() - << sep << m_ui.diffOptionsLabel->text() - << sep << m_ui.promptToSubmitCheckBox->text() - << sep << m_ui.describeByCommitIdCheckBox->text() - ; - rc.remove(QLatin1Char('&')); - return rc; -} - SettingsPage::SettingsPage() { setId(VcsBase::Constants::VCS_ID_CVS); setDisplayName(tr("CVS")); } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { - m_widget = new SettingsPageWidget(parent); - m_widget->setSettings(CvsPlugin::instance()->settings()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new SettingsPageWidget; + m_widget->setSettings(CvsPlugin::instance()->settings()); + } return m_widget; } @@ -112,7 +94,7 @@ void SettingsPage::apply() CvsPlugin::instance()->setSettings(m_widget->settings()); } -bool SettingsPage::matches(const QString &s) const +void SettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } diff --git a/src/plugins/cvs/settingspage.h b/src/plugins/cvs/settingspage.h index 7e7e52a5cc5..2e6832f8893 100644 --- a/src/plugins/cvs/settingspage.h +++ b/src/plugins/cvs/settingspage.h @@ -57,8 +57,6 @@ public: CvsSettings settings() const; void setSettings(const CvsSettings &); - QString searchKeywords() const; - private: Ui::SettingsPage m_ui; }; @@ -71,14 +69,12 @@ class SettingsPage : public VcsBase::VcsBaseOptionsPage public: SettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() {} - bool matches(const QString &) const; + void finish(); private: - QString m_searchKeywords; - SettingsPageWidget *m_widget; + QPointer m_widget; }; } // namespace Cvs diff --git a/src/plugins/debugger/cdb/cdboptionspage.cpp b/src/plugins/debugger/cdb/cdboptionspage.cpp index e3b6c4cd33f..5f9e4197378 100644 --- a/src/plugins/debugger/cdb/cdboptionspage.cpp +++ b/src/plugins/debugger/cdb/cdboptionspage.cpp @@ -198,22 +198,6 @@ QStringList CdbOptionsPageWidget::breakEvents() const return m_breakEventWidget->breakEvents(); } -static QString stripColon(QString s) -{ - const int lastColon = s.lastIndexOf(QLatin1Char(':')); - if (lastColon != -1) - s.truncate(lastColon); - return s; -} - -QString CdbOptionsPageWidget::searchKeywords() const -{ - QString rc; - QTextStream(&rc) << stripColon(m_ui.additionalArgumentsLabel->text()); - rc.remove(QLatin1Char('&')); - return rc; -} - // ---------- CdbOptionsPage CdbOptionsPage::CdbOptionsPage() @@ -230,11 +214,10 @@ CdbOptionsPage::~CdbOptionsPage() { } -QWidget *CdbOptionsPage::createPage(QWidget *parent) +QWidget *CdbOptionsPage::widget() { - m_widget = new CdbOptionsPageWidget(parent); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) + m_widget = new CdbOptionsPageWidget; return m_widget; } @@ -248,13 +231,10 @@ void CdbOptionsPage::apply() void CdbOptionsPage::finish() { - if (m_widget) + if (m_widget) { m_widget->group.finish(); -} - -bool CdbOptionsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; + } } // ---------- CdbPathsPage @@ -266,8 +246,6 @@ public: Utils::SavedActionSet group; // CdbPaths m_paths; - QString m_searchKeywords; - CdbSymbolPathListEditor *m_symbolPathListEditor; Utils::PathListEditor *m_sourcePathListEditor; @@ -280,7 +258,6 @@ CdbPathsPageWidget::CdbPathsPageWidget(QWidget *parent) : QVBoxLayout *layout = new QVBoxLayout(this); QString title = tr("Symbol Paths"); - m_searchKeywords.append(title); QGroupBox* gbSymbolPath = new QGroupBox(this); gbSymbolPath->setTitle(title); QVBoxLayout *gbSymbolPathLayout = new QVBoxLayout(gbSymbolPath); @@ -288,7 +265,6 @@ CdbPathsPageWidget::CdbPathsPageWidget(QWidget *parent) : gbSymbolPathLayout->addWidget(m_symbolPathListEditor); title = tr("Source Paths"); - m_searchKeywords.append(title); QGroupBox* gbSourcePath = new QGroupBox(this); gbSourcePath->setTitle(title); QVBoxLayout *gbSourcePathLayout = new QVBoxLayout(gbSourcePath); @@ -318,12 +294,10 @@ CdbPathsPage::~CdbPathsPage() { } -QWidget *CdbPathsPage::createPage(QWidget *parent) +QWidget *CdbPathsPage::widget() { if (!m_widget) - m_widget = new CdbPathsPageWidget(parent); - else - m_widget->setParent(parent); + m_widget = new CdbPathsPageWidget; return m_widget; } @@ -335,14 +309,10 @@ void CdbPathsPage::apply() void CdbPathsPage::finish() { - if (m_widget) + if (m_widget) { m_widget->group.finish(); -} - -bool CdbPathsPage::matches(const QString &searchKeyWord) const -{ - return m_widget && - m_widget->m_searchKeywords.contains(searchKeyWord, Qt::CaseInsensitive); + delete m_widget; + } } } // namespace Internal diff --git a/src/plugins/debugger/cdb/cdboptionspage.h b/src/plugins/debugger/cdb/cdboptionspage.h index a84a703c736..ac1e7155ee6 100644 --- a/src/plugins/debugger/cdb/cdboptionspage.h +++ b/src/plugins/debugger/cdb/cdboptionspage.h @@ -78,9 +78,8 @@ class CdbOptionsPageWidget : public QWidget Q_OBJECT public: - explicit CdbOptionsPageWidget(QWidget *parent); + explicit CdbOptionsPageWidget(QWidget *parent = 0); QStringList breakEvents() const; - QString searchKeywords() const; Utils::SavedActionSet group; @@ -103,17 +102,15 @@ public: virtual ~CdbOptionsPage(); // IOptionsPage - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &) const; static const char *crtDbgReport; private: Utils::SavedActionSet group; QPointer m_widget; - QString m_searchKeywords; }; class CdbPathsPage : public Core::IOptionsPage @@ -127,10 +124,9 @@ public: static CdbPathsPage *instance(); // IOptionsPage - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &searchKeyWord) const; private: QPointer m_widget; diff --git a/src/plugins/debugger/commonoptionspage.cpp b/src/plugins/debugger/commonoptionspage.cpp index 3aede9b0e56..ebf526c0f49 100644 --- a/src/plugins/debugger/commonoptionspage.cpp +++ b/src/plugins/debugger/commonoptionspage.cpp @@ -202,29 +202,6 @@ CommonOptionsPageWidget::CommonOptionsPageWidget } } -QString CommonOptionsPageWidget::searchKeyWords() const -{ - QString rc; - const QLatin1Char sep(' '); - QTextStream stream(&rc); - stream << sep << checkBoxUseAlternatingRowColors->text() - << sep << checkBoxFontSizeFollowsEditor->text() - << sep << checkBoxUseToolTipsInMainEditor->text() - << sep << checkBoxListSourceFiles->text() - << sep << checkBoxBreakpointsFullPath->text() - << sep << checkBoxCloseBuffersOnExit->text() - << sep << checkBoxSwitchModeOnExit->text() - << sep << labelMaximalStackDepth->text() - << sep << checkBoxBringToForegroundOnInterrrupt->text() - << sep << checkBoxShowQmlObjectTree->text() - << sep << checkBoxWarnOnReleaseBuilds->text(); - if (Utils::HostOsInfo::isWindowsHost()) - stream << sep << checkBoxRegisterForPostMortem->text(); - - rc.remove(QLatin1Char('&')); - return rc; -} - GlobalDebuggerOptions CommonOptionsPageWidget::globalOptions() const { GlobalDebuggerOptions o; @@ -274,22 +251,19 @@ void CommonOptionsPage::finish() { if (!m_group.isNull()) m_group->finish(); + delete m_widget; } -QWidget *CommonOptionsPage::createPage(QWidget *parent) +QWidget *CommonOptionsPage::widget() { if (m_group.isNull()) m_group = QSharedPointer(new Utils::SavedActionSet); - m_widget = new CommonOptionsPageWidget(m_group, parent); - m_widget->setGlobalOptions(*m_options); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeyWords(); - return m_widget; -} -bool CommonOptionsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + if (!m_widget) { + m_widget = new CommonOptionsPageWidget(m_group); + m_widget->setGlobalOptions(*m_options); + } + return m_widget; } QString CommonOptionsPage::msgSetBreakpointAtFunction(const char *function) @@ -334,57 +308,43 @@ void LocalsAndExpressionsOptionsPage::apply() void LocalsAndExpressionsOptionsPage::finish() { m_group.finish(); + delete m_widget; } -QWidget *LocalsAndExpressionsOptionsPage::createPage(QWidget *parent) +QWidget *LocalsAndExpressionsOptionsPage::widget() { - QWidget *w = new QWidget(parent); - m_ui.setupUi(w); + if (!m_widget) { + m_widget = new QWidget; + m_ui.setupUi(m_widget); - m_group.clear(); - DebuggerCore *dc = debuggerCore(); + m_group.clear(); + DebuggerCore *dc = debuggerCore(); - m_group.insert(dc->action(UseDebuggingHelpers), - m_ui.debuggingHelperGroupBox); + m_group.insert(dc->action(UseDebuggingHelpers), + m_ui.debuggingHelperGroupBox); - m_group.insert(dc->action(UseCodeModel), - m_ui.checkBoxUseCodeModel); - m_ui.checkBoxUseCodeModel->setToolTip(dc->action(UseCodeModel)->toolTip()); + m_group.insert(dc->action(UseCodeModel), + m_ui.checkBoxUseCodeModel); + m_ui.checkBoxUseCodeModel->setToolTip(dc->action(UseCodeModel)->toolTip()); - m_group.insert(dc->action(ShowThreadNames), - m_ui.checkBoxShowThreadNames); - m_group.insert(dc->action(ShowStdNamespace), m_ui.checkBoxShowStdNamespace); - m_group.insert(dc->action(ShowQtNamespace), m_ui.checkBoxShowQtNamespace); + m_group.insert(dc->action(ShowThreadNames), + m_ui.checkBoxShowThreadNames); + m_group.insert(dc->action(ShowStdNamespace), m_ui.checkBoxShowStdNamespace); + m_group.insert(dc->action(ShowQtNamespace), m_ui.checkBoxShowQtNamespace); #ifndef QT_DEBUG #if 0 - cmd = am->registerAction(m_dumpLogAction, - DUMP_LOG, globalcontext); - //cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+D,Ctrl+L"))); - cmd->setDefaultKeySequence(QKeySequence(QCoreApplication::translate("Debugger", "Ctrl+Shift+F11"))); - mdebug->addAction(cmd); + cmd = am->registerAction(m_dumpLogAction, + DUMP_LOG, globalcontext); + //cmd->setDefaultKeySequence(QKeySequence(tr("Ctrl+D,Ctrl+L"))); + cmd->setDefaultKeySequence(QKeySequence(QCoreApplication::translate("Debugger", "Ctrl+Shift+F11"))); + mdebug->addAction(cmd); #endif #endif - - if (m_searchKeywords.isEmpty()) { - QTextStream(&m_searchKeywords) - << ' ' << m_ui.debuggingHelperGroupBox->title() - << ' ' << m_ui.checkBoxUseCodeModel->text() - << ' ' << m_ui.checkBoxShowThreadNames->text() - << ' ' << m_ui.checkBoxShowStdNamespace->text() - << ' ' << m_ui.checkBoxShowQtNamespace->text(); - - m_searchKeywords.remove(QLatin1Char('&')); } - return w; + return m_widget; } -bool LocalsAndExpressionsOptionsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - - } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/commonoptionspage.h b/src/plugins/debugger/commonoptionspage.h index c09d1ccde45..bb5464abf3a 100644 --- a/src/plugins/debugger/commonoptionspage.h +++ b/src/plugins/debugger/commonoptionspage.h @@ -60,7 +60,6 @@ class CommonOptionsPageWidget : public QWidget public: explicit CommonOptionsPageWidget(const QSharedPointer &group, QWidget *parent = 0); - QString searchKeyWords() const; GlobalDebuggerOptions globalOptions() const; void setGlobalOptions(const GlobalDebuggerOptions &go); @@ -94,10 +93,9 @@ public: ~CommonOptionsPage(); // IOptionsPage - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; static QString msgSetBreakpointAtFunction(const char *function); static QString msgSetBreakpointAtFunctionToolTip(const char *function, @@ -106,7 +104,6 @@ public: private: const QSharedPointer m_options; QSharedPointer m_group; - QString m_searchKeywords; QPointer m_widget; }; @@ -123,15 +120,14 @@ public: LocalsAndExpressionsOptionsPage(); // IOptionsPage - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; private: + QPointer m_widget; Ui::DebuggingHelperOptionPage m_ui; Utils::SavedActionSet m_group; - QString m_searchKeywords; }; } // namespace Internal diff --git a/src/plugins/debugger/debuggeroptionspage.cpp b/src/plugins/debugger/debuggeroptionspage.cpp index bd0b8d29166..1bf57188729 100644 --- a/src/plugins/debugger/debuggeroptionspage.cpp +++ b/src/plugins/debugger/debuggeroptionspage.cpp @@ -217,63 +217,61 @@ DebuggerOptionsPage::DebuggerOptionsPage() setCategoryIcon(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON)); } -QWidget *DebuggerOptionsPage::createPage(QWidget *parent) +QWidget *DebuggerOptionsPage::widget() { - m_configWidget = new QWidget(parent); + if (!m_configWidget) { + m_configWidget = new QWidget; - m_addButton = new QPushButton(tr("Add"), m_configWidget); - m_cloneButton = new QPushButton(tr("Clone"), m_configWidget); - m_delButton = new QPushButton(tr("Remove"), m_configWidget); + m_addButton = new QPushButton(tr("Add"), m_configWidget); + m_cloneButton = new QPushButton(tr("Clone"), m_configWidget); + m_delButton = new QPushButton(tr("Remove"), m_configWidget); - m_container = new DetailsWidget(m_configWidget); - m_container->setState(DetailsWidget::NoSummary); - m_container->setVisible(false); + m_container = new DetailsWidget(m_configWidget); + m_container->setState(DetailsWidget::NoSummary); + m_container->setVisible(false); - m_model = new DebuggerItemModel(parent); + m_debuggerView = new QTreeView(m_configWidget); + m_model = new DebuggerItemModel(m_debuggerView); + m_debuggerView->setModel(m_model); + m_debuggerView->setUniformRowHeights(true); + m_debuggerView->setSelectionMode(QAbstractItemView::SingleSelection); + m_debuggerView->setSelectionBehavior(QAbstractItemView::SelectRows); + m_debuggerView->expandAll(); - m_debuggerView = new QTreeView(m_configWidget); - m_debuggerView->setModel(m_model); - m_debuggerView->setUniformRowHeights(true); - m_debuggerView->setSelectionMode(QAbstractItemView::SingleSelection); - m_debuggerView->setSelectionBehavior(QAbstractItemView::SelectRows); - m_debuggerView->expandAll(); + QHeaderView *header = m_debuggerView->header(); + header->setStretchLastSection(false); + header->setResizeMode(0, QHeaderView::ResizeToContents); + header->setResizeMode(1, QHeaderView::ResizeToContents); + header->setResizeMode(2, QHeaderView::Stretch); - QHeaderView *header = m_debuggerView->header(); - header->setStretchLastSection(false); - header->setResizeMode(0, QHeaderView::ResizeToContents); - header->setResizeMode(1, QHeaderView::ResizeToContents); - header->setResizeMode(2, QHeaderView::Stretch); + QVBoxLayout *buttonLayout = new QVBoxLayout(); + buttonLayout->setSpacing(6); + buttonLayout->setContentsMargins(0, 0, 0, 0); + buttonLayout->addWidget(m_addButton); + buttonLayout->addWidget(m_cloneButton); + buttonLayout->addWidget(m_delButton); + buttonLayout->addItem(new QSpacerItem(10, 40, QSizePolicy::Minimum, QSizePolicy::Expanding)); - QVBoxLayout *buttonLayout = new QVBoxLayout(); - buttonLayout->setSpacing(6); - buttonLayout->setContentsMargins(0, 0, 0, 0); - buttonLayout->addWidget(m_addButton); - buttonLayout->addWidget(m_cloneButton); - buttonLayout->addWidget(m_delButton); - buttonLayout->addItem(new QSpacerItem(10, 40, QSizePolicy::Minimum, QSizePolicy::Expanding)); + QVBoxLayout *verticalLayout = new QVBoxLayout(); + verticalLayout->addWidget(m_debuggerView); + verticalLayout->addWidget(m_container); - QVBoxLayout *verticalLayout = new QVBoxLayout(); - verticalLayout->addWidget(m_debuggerView); - verticalLayout->addWidget(m_container); + QHBoxLayout *horizontalLayout = new QHBoxLayout(m_configWidget); + horizontalLayout->addLayout(verticalLayout); + horizontalLayout->addLayout(buttonLayout); - QHBoxLayout *horizontalLayout = new QHBoxLayout(m_configWidget); - horizontalLayout->addLayout(verticalLayout); - horizontalLayout->addLayout(buttonLayout); + connect(m_debuggerView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + this, SLOT(debuggerSelectionChanged())); - connect(m_debuggerView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SLOT(debuggerSelectionChanged())); + connect(m_addButton, SIGNAL(clicked()), this, SLOT(addDebugger()), Qt::QueuedConnection); + connect(m_cloneButton, SIGNAL(clicked()), this, SLOT(cloneDebugger()), Qt::QueuedConnection); + connect(m_delButton, SIGNAL(clicked()), this, SLOT(removeDebugger()), Qt::QueuedConnection); - connect(m_addButton, SIGNAL(clicked()), this, SLOT(addDebugger()), Qt::QueuedConnection); - connect(m_cloneButton, SIGNAL(clicked()), this, SLOT(cloneDebugger()), Qt::QueuedConnection); - connect(m_delButton, SIGNAL(clicked()), this, SLOT(removeDebugger()), Qt::QueuedConnection); - - m_searchKeywords = tr("Debuggers"); - - m_itemConfigWidget = new DebuggerItemConfigWidget(m_model); - m_container->setWidget(m_itemConfigWidget); - - updateState(); + m_itemConfigWidget = new DebuggerItemConfigWidget(m_model); + m_container->setWidget(m_itemConfigWidget); + updateState(); + } return m_configWidget; } @@ -322,10 +320,10 @@ void DebuggerOptionsPage::removeDebugger() void DebuggerOptionsPage::finish() { - // Deleted by settingsdialog. - m_configWidget = 0; + delete m_configWidget; // Children of m_configWidget. + m_model = 0; m_container = 0; m_debuggerView = 0; m_addButton = 0; @@ -333,11 +331,6 @@ void DebuggerOptionsPage::finish() m_delButton = 0; } -bool DebuggerOptionsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - void DebuggerOptionsPage::debuggerSelectionChanged() { QTC_ASSERT(m_container, return); diff --git a/src/plugins/debugger/debuggeroptionspage.h b/src/plugins/debugger/debuggeroptionspage.h index 29089b4f528..683054b801d 100644 --- a/src/plugins/debugger/debuggeroptionspage.h +++ b/src/plugins/debugger/debuggeroptionspage.h @@ -34,6 +34,7 @@ #include +#include #include QT_BEGIN_NAMESPACE @@ -97,10 +98,9 @@ class DebuggerOptionsPage : public Core::IOptionsPage public: DebuggerOptionsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &) const; private slots: void debuggerSelectionChanged(); @@ -111,8 +111,7 @@ private slots: void removeDebugger(); private: - QWidget *m_configWidget; - QString m_searchKeywords; + QPointer m_configWidget; DebuggerItemModel *m_model; DebuggerItemConfigWidget *m_itemConfigWidget; diff --git a/src/plugins/debugger/gdb/gdboptionspage.cpp b/src/plugins/debugger/gdb/gdboptionspage.cpp index 6651f59a65a..8823face497 100644 --- a/src/plugins/debugger/gdb/gdboptionspage.cpp +++ b/src/plugins/debugger/gdb/gdboptionspage.cpp @@ -54,7 +54,7 @@ namespace Internal { class GdbOptionsPageWidget : public QWidget { public: - explicit GdbOptionsPageWidget(QWidget *parent); + explicit GdbOptionsPageWidget(QWidget *parent = 0); QGroupBox *groupBoxGeneral; QLabel *labelGdbWatchdogTimeout; @@ -83,7 +83,6 @@ public: //QLineEdit *lineEditSelectedPluginBreakpointsPattern; Utils::SavedActionSet group; - QString searchKeywords; }; GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent) @@ -297,19 +296,6 @@ GdbOptionsPageWidget::GdbOptionsPageWidget(QWidget *parent) // setEnabled(dc->action(SelectedPluginBreakpoints)->value().toBool()); //connect(radioButtonSelectedPluginBreakpoints, SIGNAL(toggled(bool)), // lineEditSelectedPluginBreakpointsPattern, SLOT(setEnabled(bool))); - - const QLatin1Char sep(' '); - QTextStream(&searchKeywords) - << sep << groupBoxGeneral->title() - << sep << checkBoxLoadGdbInit->text() - << sep << checkBoxLoadGdbDumpers->text() - << sep << checkBoxUseDynamicType->text() - << sep << labelGdbWatchdogTimeout->text() - << sep << checkBoxSkipKnownFrames->text() - << sep << checkBoxUseMessageBoxForSignals->text() - << sep << checkBoxAdjustBreakpointLocations->text(); - ; - searchKeywords.remove(QLatin1Char('&')); } GdbOptionsPage::GdbOptionsPage() @@ -325,9 +311,10 @@ GdbOptionsPage::~GdbOptionsPage() { } -QWidget *GdbOptionsPage::createPage(QWidget *parent) +QWidget *GdbOptionsPage::widget() { - m_widget = new GdbOptionsPageWidget(parent); + if (!m_widget) + m_widget = new GdbOptionsPageWidget; return m_widget; } @@ -339,13 +326,10 @@ void GdbOptionsPage::apply() void GdbOptionsPage::finish() { - if (m_widget) + if (m_widget) { m_widget->group.finish(); -} - -bool GdbOptionsPage::matches(const QString &s) const -{ - return m_widget && m_widget->searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; + } } ///////////////////////////////////////////////////////////////////////// @@ -357,7 +341,7 @@ bool GdbOptionsPage::matches(const QString &s) const class GdbOptionsPageWidget2 : public QWidget { public: - explicit GdbOptionsPageWidget2(QWidget *parent); + explicit GdbOptionsPageWidget2(QWidget *parent = 0); QGroupBox *groupBoxDangerous; QLabel *labelDangerous; @@ -371,7 +355,6 @@ public: QCheckBox *checkBoxMultiInferior; Utils::SavedActionSet group; - QString searchKeywords; }; GdbOptionsPageWidget2::GdbOptionsPageWidget2(QWidget *parent) @@ -460,16 +443,6 @@ GdbOptionsPageWidget2::GdbOptionsPageWidget2(QWidget *parent) group.insert(dc->action(AttemptQuickStart), checkBoxAttemptQuickStart); group.insert(dc->action(MultiInferior), checkBoxMultiInferior); group.insert(dc->action(EnableReverseDebugging), checkBoxEnableReverseDebugging); - - const QLatin1Char sep(' '); - QTextStream(&searchKeywords) - << sep << groupBoxDangerous->title() - << sep << checkBoxTargetAsync->text() - << sep << checkBoxEnableReverseDebugging->text() - << sep << checkBoxAttemptQuickStart->text() - << sep << checkBoxMultiInferior->text() - ; - searchKeywords.remove(QLatin1Char('&')); } GdbOptionsPage2::GdbOptionsPage2() @@ -485,9 +458,10 @@ GdbOptionsPage2::~GdbOptionsPage2() { } -QWidget *GdbOptionsPage2::createPage(QWidget *parent) +QWidget *GdbOptionsPage2::widget() { - m_widget = new GdbOptionsPageWidget2(parent); + if (!m_widget) + m_widget = new GdbOptionsPageWidget2; return m_widget; } @@ -499,13 +473,10 @@ void GdbOptionsPage2::apply() void GdbOptionsPage2::finish() { - if (m_widget) + if (m_widget) { m_widget->group.finish(); -} - -bool GdbOptionsPage2::matches(const QString &s) const -{ - return m_widget && m_widget->searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; + } } } // namespace Internal diff --git a/src/plugins/debugger/gdb/gdboptionspage.h b/src/plugins/debugger/gdb/gdboptionspage.h index 29387f82c2a..915834d1e97 100644 --- a/src/plugins/debugger/gdb/gdboptionspage.h +++ b/src/plugins/debugger/gdb/gdboptionspage.h @@ -46,10 +46,9 @@ class GdbOptionsPage : public Core::IOptionsPage public: GdbOptionsPage(); ~GdbOptionsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &) const; private: QPointer m_widget; @@ -63,10 +62,9 @@ class GdbOptionsPage2 : public Core::IOptionsPage public: GdbOptionsPage2(); ~GdbOptionsPage2(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &) const; private: QPointer m_widget; diff --git a/src/plugins/designer/cpp/cppsettingspage.cpp b/src/plugins/designer/cpp/cppsettingspage.cpp index cc24f2ca898..d9ce8aa8c71 100644 --- a/src/plugins/designer/cpp/cppsettingspage.cpp +++ b/src/plugins/designer/cpp/cppsettingspage.cpp @@ -89,18 +89,6 @@ void CppSettingsPageWidget::setUiEmbedding(int v) } } -QString CppSettingsPageWidget::searchKeywords() const -{ - QString rc; - QTextStream(&rc) << m_ui.ptrAggregationRadioButton->text() - << ' ' << m_ui.aggregationButton->text() - << ' ' << m_ui.multipleInheritanceButton->text() - << ' ' << m_ui.retranslateCheckBox->text() - << ' ' << m_ui.includeQtModuleCheckBox->text(); - rc.remove(QLatin1Char('&')); - return rc; -} - // ---------- CppSettingsPage CppSettingsPage::CppSettingsPage(QObject *parent) : Core::IOptionsPage(parent) { @@ -112,12 +100,12 @@ CppSettingsPage::CppSettingsPage(QObject *parent) : Core::IOptionsPage(parent) setCategoryIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON)); } -QWidget *CppSettingsPage::createPage(QWidget *parent) +QWidget *CppSettingsPage::widget() { - m_widget = new CppSettingsPageWidget(parent); - m_widget->setParameters(m_parameters); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new CppSettingsPageWidget; + m_widget->setParameters(m_parameters); + } return m_widget; } @@ -134,11 +122,7 @@ void CppSettingsPage::apply() void CppSettingsPage::finish() { -} - -bool CppSettingsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } } // namespace Internal diff --git a/src/plugins/designer/cpp/cppsettingspage.h b/src/plugins/designer/cpp/cppsettingspage.h index 647c7d7d19e..a5a9137bef1 100644 --- a/src/plugins/designer/cpp/cppsettingspage.h +++ b/src/plugins/designer/cpp/cppsettingspage.h @@ -49,8 +49,6 @@ public: FormClassWizardGenerationParameters parameters() const; void setParameters(const FormClassWizardGenerationParameters &p); - QString searchKeywords() const; - private: int uiEmbedding() const; void setUiEmbedding(int); @@ -63,15 +61,13 @@ class CppSettingsPage : public Core::IOptionsPage public: explicit CppSettingsPage(QObject *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; private: QPointer m_widget; FormClassWizardGenerationParameters m_parameters; - QString m_searchKeywords; }; } // namespace Internal diff --git a/src/plugins/designer/settingspage.cpp b/src/plugins/designer/settingspage.cpp index 7fe793f94cb..f6a49c7a278 100644 --- a/src/plugins/designer/settingspage.cpp +++ b/src/plugins/designer/settingspage.cpp @@ -51,10 +51,13 @@ SettingsPage::SettingsPage(QDesignerOptionsPageInterface *designerPage) : setCategoryIcon(QLatin1String(Designer::Constants::SETTINGS_CATEGORY_ICON)); } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { m_initialized = true; - return m_designerPage->createPage(parent); + if (!m_widget) + m_widget = m_designerPage->createPage(0); + return m_widget; + } void SettingsPage::apply() @@ -67,6 +70,7 @@ void SettingsPage::finish() { if (m_initialized) m_designerPage->finish(); + delete m_widget; } SettingsPageProvider::SettingsPageProvider(QObject *parent) diff --git a/src/plugins/designer/settingspage.h b/src/plugins/designer/settingspage.h index 3df347e5464..95c9eb2c5c3 100644 --- a/src/plugins/designer/settingspage.h +++ b/src/plugins/designer/settingspage.h @@ -32,6 +32,8 @@ #include +#include + QT_BEGIN_NAMESPACE class QDesignerOptionsPageInterface; QT_END_NAMESPACE @@ -48,13 +50,14 @@ class SettingsPage : public Core::IOptionsPage public: explicit SettingsPage(QDesignerOptionsPageInterface *designerPage); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); private: QDesignerOptionsPageInterface *m_designerPage; bool m_initialized; + QPointer m_widget; }; class SettingsPageProvider : public Core::IOptionsPageProvider diff --git a/src/plugins/fakevim/fakevimplugin.cpp b/src/plugins/fakevim/fakevimplugin.cpp index b94bfe697c6..7dddb529141 100644 --- a/src/plugins/fakevim/fakevimplugin.cpp +++ b/src/plugins/fakevim/fakevimplugin.cpp @@ -87,6 +87,7 @@ #include #include #include +#include #include #include #include @@ -234,10 +235,9 @@ public: setCategoryIcon(_(SETTINGS_CATEGORY_FAKEVIM_ICON)); } - QWidget *createPage(QWidget *parent); - void apply() { m_group.apply(ICore::settings()); } - void finish() { m_group.finish(); } - virtual bool matches(const QString &) const; + QWidget *widget(); + void apply(); + void finish(); private slots: void copyTextEditorSettings(); @@ -248,113 +248,98 @@ private slots: private: friend class DebuggerPlugin; + QPointer m_widget; Ui::FakeVimOptionPage m_ui; - QString m_searchKeywords; Utils::SavedActionSet m_group; }; -QWidget *FakeVimOptionPage::createPage(QWidget *parent) +QWidget *FakeVimOptionPage::widget() { - QWidget *w = new QWidget(parent); - m_ui.setupUi(w); - const QString vimrcDefault = Utils::HostOsInfo::isAnyUnixHost() ? - QLatin1String("$HOME/.vimrc") : QLatin1String("%USERPROFILE%\\_vimrc"); - m_ui.lineEditVimRcPath->setPlaceholderText(tr("Default: %1").arg(vimrcDefault)); + if (!m_widget) { + m_widget = new QWidget; + m_ui.setupUi(m_widget); + const QString vimrcDefault = Utils::HostOsInfo::isAnyUnixHost() ? + QLatin1String("$HOME/.vimrc") : QLatin1String("%USERPROFILE%\\_vimrc"); + m_ui.lineEditVimRcPath->setPlaceholderText(tr("Default: %1").arg(vimrcDefault)); - m_group.clear(); - m_group.insert(theFakeVimSetting(ConfigUseFakeVim), - m_ui.checkBoxUseFakeVim); - m_group.insert(theFakeVimSetting(ConfigReadVimRc), - m_ui.checkBoxReadVimRc); - m_group.insert(theFakeVimSetting(ConfigVimRcPath), - m_ui.lineEditVimRcPath); + m_group.clear(); + m_group.insert(theFakeVimSetting(ConfigUseFakeVim), + m_ui.checkBoxUseFakeVim); + m_group.insert(theFakeVimSetting(ConfigReadVimRc), + m_ui.checkBoxReadVimRc); + m_group.insert(theFakeVimSetting(ConfigVimRcPath), + m_ui.lineEditVimRcPath); - m_group.insert(theFakeVimSetting(ConfigExpandTab), - m_ui.checkBoxExpandTab); - m_group.insert(theFakeVimSetting(ConfigHlSearch), - m_ui.checkBoxHlSearch); - m_group.insert(theFakeVimSetting(ConfigShiftWidth), - m_ui.spinBoxShiftWidth); - m_group.insert(theFakeVimSetting(ConfigShowMarks), - m_ui.checkBoxShowMarks); + m_group.insert(theFakeVimSetting(ConfigExpandTab), + m_ui.checkBoxExpandTab); + m_group.insert(theFakeVimSetting(ConfigHlSearch), + m_ui.checkBoxHlSearch); + m_group.insert(theFakeVimSetting(ConfigShiftWidth), + m_ui.spinBoxShiftWidth); + m_group.insert(theFakeVimSetting(ConfigShowMarks), + m_ui.checkBoxShowMarks); - m_group.insert(theFakeVimSetting(ConfigSmartTab), - m_ui.checkBoxSmartTab); - m_group.insert(theFakeVimSetting(ConfigStartOfLine), - m_ui.checkBoxStartOfLine); - m_group.insert(theFakeVimSetting(ConfigPassKeys), - m_ui.checkBoxPassKeys); - m_group.insert(theFakeVimSetting(ConfigTabStop), - m_ui.spinBoxTabStop); - m_group.insert(theFakeVimSetting(ConfigScrollOff), - m_ui.spinBoxScrollOff); - m_group.insert(theFakeVimSetting(ConfigBackspace), - m_ui.lineEditBackspace); - m_group.insert(theFakeVimSetting(ConfigIsKeyword), - m_ui.lineEditIsKeyword); + m_group.insert(theFakeVimSetting(ConfigSmartTab), + m_ui.checkBoxSmartTab); + m_group.insert(theFakeVimSetting(ConfigStartOfLine), + m_ui.checkBoxStartOfLine); + m_group.insert(theFakeVimSetting(ConfigPassKeys), + m_ui.checkBoxPassKeys); + m_group.insert(theFakeVimSetting(ConfigTabStop), + m_ui.spinBoxTabStop); + m_group.insert(theFakeVimSetting(ConfigScrollOff), + m_ui.spinBoxScrollOff); + m_group.insert(theFakeVimSetting(ConfigBackspace), + m_ui.lineEditBackspace); + m_group.insert(theFakeVimSetting(ConfigIsKeyword), + m_ui.lineEditIsKeyword); - m_group.insert(theFakeVimSetting(ConfigPassControlKey), - m_ui.checkBoxPassControlKey); - m_group.insert(theFakeVimSetting(ConfigAutoIndent), - m_ui.checkBoxAutoIndent); - m_group.insert(theFakeVimSetting(ConfigSmartIndent), - m_ui.checkBoxSmartIndent); + m_group.insert(theFakeVimSetting(ConfigPassControlKey), + m_ui.checkBoxPassControlKey); + m_group.insert(theFakeVimSetting(ConfigAutoIndent), + m_ui.checkBoxAutoIndent); + m_group.insert(theFakeVimSetting(ConfigSmartIndent), + m_ui.checkBoxSmartIndent); - m_group.insert(theFakeVimSetting(ConfigIncSearch), - m_ui.checkBoxIncSearch); - m_group.insert(theFakeVimSetting(ConfigUseCoreSearch), - m_ui.checkBoxUseCoreSearch); - m_group.insert(theFakeVimSetting(ConfigSmartCase), - m_ui.checkBoxSmartCase); - m_group.insert(theFakeVimSetting(ConfigIgnoreCase), - m_ui.checkBoxIgnoreCase); - m_group.insert(theFakeVimSetting(ConfigWrapScan), - m_ui.checkBoxWrapScan); + m_group.insert(theFakeVimSetting(ConfigIncSearch), + m_ui.checkBoxIncSearch); + m_group.insert(theFakeVimSetting(ConfigUseCoreSearch), + m_ui.checkBoxUseCoreSearch); + m_group.insert(theFakeVimSetting(ConfigSmartCase), + m_ui.checkBoxSmartCase); + m_group.insert(theFakeVimSetting(ConfigIgnoreCase), + m_ui.checkBoxIgnoreCase); + m_group.insert(theFakeVimSetting(ConfigWrapScan), + m_ui.checkBoxWrapScan); - m_group.insert(theFakeVimSetting(ConfigShowCmd), - m_ui.checkBoxShowCmd); + m_group.insert(theFakeVimSetting(ConfigShowCmd), + m_ui.checkBoxShowCmd); - connect(m_ui.pushButtonCopyTextEditorSettings, SIGNAL(clicked()), - SLOT(copyTextEditorSettings())); - connect(m_ui.pushButtonSetQtStyle, SIGNAL(clicked()), - SLOT(setQtStyle())); - connect(m_ui.pushButtonSetPlainStyle, SIGNAL(clicked()), - SLOT(setPlainStyle())); - connect(m_ui.pushButtonVimRcPath, SIGNAL(clicked()), - SLOT(openVimRc())); - connect(m_ui.checkBoxReadVimRc, SIGNAL(stateChanged(int)), - SLOT(updateVimRcWidgets())); - updateVimRcWidgets(); + connect(m_ui.pushButtonCopyTextEditorSettings, SIGNAL(clicked()), + SLOT(copyTextEditorSettings())); + connect(m_ui.pushButtonSetQtStyle, SIGNAL(clicked()), + SLOT(setQtStyle())); + connect(m_ui.pushButtonSetPlainStyle, SIGNAL(clicked()), + SLOT(setPlainStyle())); + connect(m_ui.pushButtonVimRcPath, SIGNAL(clicked()), + SLOT(openVimRc())); + connect(m_ui.checkBoxReadVimRc, SIGNAL(stateChanged(int)), + SLOT(updateVimRcWidgets())); + updateVimRcWidgets(); - if (m_searchKeywords.isEmpty()) { - QLatin1Char sep(' '); - QTextStream(&m_searchKeywords) - << sep << m_ui.checkBoxUseFakeVim->text() - << sep << m_ui.checkBoxReadVimRc->text() - << sep << m_ui.checkBoxAutoIndent->text() - << sep << m_ui.checkBoxSmartIndent->text() - << sep << m_ui.checkBoxExpandTab->text() - << sep << m_ui.checkBoxSmartTab->text() - << sep << m_ui.checkBoxHlSearch->text() - << sep << m_ui.checkBoxIncSearch->text() - << sep << m_ui.checkBoxStartOfLine->text() - << sep << m_ui.checkBoxUseCoreSearch->text() - << sep << m_ui.checkBoxSmartCase->text() - << sep << m_ui.checkBoxShowMarks->text() - << sep << m_ui.checkBoxPassControlKey->text() - << sep << m_ui.checkBoxPassKeys->text() - << sep << m_ui.checkBoxIgnoreCase->text() - << sep << m_ui.checkBoxWrapScan->text() - << sep << m_ui.checkBoxShowCmd->text() - << sep << m_ui.labelShiftWidth->text() - << sep << m_ui.labelTabulator->text() - << sep << m_ui.labelBackspace->text() - << sep << m_ui.labelIsKeyword->text() - << sep << m_ui.labelScrollOff->text() - << sep << m_ui.lineEditVimRcPath->text(); - m_searchKeywords.remove(QLatin1Char('&')); } - return w; + return m_widget; +} + +void FakeVimOptionPage::apply() +{ + m_group.apply(ICore::settings()); +} + +void FakeVimOptionPage::finish() +{ + m_group.finish(); + delete m_widget; } void FakeVimOptionPage::copyTextEditorSettings() @@ -411,11 +396,6 @@ void FakeVimOptionPage::updateVimRcWidgets() m_ui.pushButtonVimRcPath->setEnabled(enabled); } -bool FakeVimOptionPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - //const char *FAKEVIM_CONTEXT = "FakeVim"; /////////////////////////////////////////////////////////////////////// @@ -441,7 +421,7 @@ public: setCategoryIcon(_(SETTINGS_CATEGORY_FAKEVIM_ICON)); } - QWidget *createPage(QWidget *parent); + QWidget *widget(); void initialize(); ExCommandMap &exCommandMap(); ExCommandMap &defaultExCommandMap(); @@ -457,9 +437,9 @@ private: FakeVimPluginPrivate *m_q; }; -QWidget *FakeVimExCommandsPage::createPage(QWidget *parent) +QWidget *FakeVimExCommandsPage::widget() { - QWidget *w = CommandMappings::createPage(parent); + QWidget *w = CommandMappings::widget(); setPageTitle(tr("Ex Command Mapping")); setTargetHeader(tr("Ex Trigger Expression")); setTargetLabelText(tr("Regular expression:")); @@ -666,37 +646,41 @@ public: void apply(); void finish() {} - QWidget *createPage(QWidget *parent); + QWidget *widget(); void initialize() {} UserCommandMap &userCommandMap(); UserCommandMap &defaultUserCommandMap(); private: FakeVimPluginPrivate *m_q; + QPointer m_widget; }; -QWidget *FakeVimUserCommandsPage::createPage(QWidget *parent) +QWidget *FakeVimUserCommandsPage::widget() { - QGroupBox *box = new QGroupBox(parent); + if (!m_widget) { + m_widget = new QGroupBox; - FakeVimUserCommandsModel *model = new FakeVimUserCommandsModel(m_q); - QTreeView *widget = new QTreeView; - widget->setModel(model); - widget->resizeColumnToContents(0); + FakeVimUserCommandsModel *model = new FakeVimUserCommandsModel(m_q); + QTreeView *widget = new QTreeView; + model->setParent(widget); + widget->setModel(model); + widget->resizeColumnToContents(0); - FakeVimUserCommandsDelegate *delegate = new FakeVimUserCommandsDelegate(widget); - widget->setItemDelegateForColumn(1, delegate); + FakeVimUserCommandsDelegate *delegate = new FakeVimUserCommandsDelegate(widget); + widget->setItemDelegateForColumn(1, delegate); - QGridLayout *layout = new QGridLayout(box); - layout->addWidget(widget, 0, 0); - box->setLayout(layout); - - return box; + QGridLayout *layout = new QGridLayout(m_widget); + layout->addWidget(widget, 0, 0); + m_widget->setLayout(layout); + } + return m_widget; } void FakeVimUserCommandsPage::apply() { //m_q->writeSettings(); + delete m_widget; } diff --git a/src/plugins/git/gerrit/gerritoptionspage.cpp b/src/plugins/git/gerrit/gerritoptionspage.cpp index 1bb77cbff0b..b457232982b 100644 --- a/src/plugins/git/gerrit/gerritoptionspage.cpp +++ b/src/plugins/git/gerrit/gerritoptionspage.cpp @@ -55,12 +55,13 @@ GerritOptionsPage::~GerritOptionsPage() delete m_widget; } -QWidget *GerritOptionsPage::createPage(QWidget *parent) +QWidget *GerritOptionsPage::widget() { - GerritOptionsWidget *gow = new GerritOptionsWidget(parent); - gow->setParameters(*m_parameters); - m_widget = gow; - return gow; + if (!m_widget) { + m_widget = new GerritOptionsWidget; + m_widget->setParameters(*m_parameters); + } + return m_widget; } void GerritOptionsPage::apply() @@ -78,9 +79,9 @@ void GerritOptionsPage::apply() } } -bool GerritOptionsPage::matches(const QString &s) const +void GerritOptionsPage::finish() { - return s.contains(QLatin1String("gerrit"), Qt::CaseInsensitive); + delete m_widget; } GerritOptionsWidget::GerritOptionsWidget(QWidget *parent) diff --git a/src/plugins/git/gerrit/gerritoptionspage.h b/src/plugins/git/gerrit/gerritoptionspage.h index 02a3131a1a5..5fd241ecb66 100644 --- a/src/plugins/git/gerrit/gerritoptionspage.h +++ b/src/plugins/git/gerrit/gerritoptionspage.h @@ -78,10 +78,9 @@ public: QObject *parent = 0); ~GerritOptionsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &) const; + void finish(); private: const QSharedPointer &m_parameters; diff --git a/src/plugins/git/settingspage.cpp b/src/plugins/git/settingspage.cpp index cb22d24e761..a2dd6caab13 100644 --- a/src/plugins/git/settingspage.cpp +++ b/src/plugins/git/settingspage.cpp @@ -91,25 +91,6 @@ void SettingsPageWidget::setSettings(const GitSettings &s) m_ui.repBrowserCommandPathChooser->setPath(s.stringValue(GitSettings::repositoryBrowserCmd)); } -QString SettingsPageWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream(&rc) - << sep << m_ui.pathlabel->text() - << sep << m_ui.winHomeCheckBox->text() - << sep << m_ui.groupBox->title() - << sep << m_ui.logCountLabel->text() - << sep << m_ui.timeoutLabel->text() - << sep << m_ui.gitkGroupBox->title() - << sep << m_ui.gitkOptionsLabel->text() - << sep << m_ui.repBrowserGroupBox->title() - << sep << m_ui.repBrowserCommandLabel->text() - ; - rc.remove(QLatin1Char('&')); - return rc; -} - // -------- SettingsPage SettingsPage::SettingsPage() : m_widget(0) @@ -118,12 +99,12 @@ SettingsPage::SettingsPage() : setDisplayName(tr("Git")); } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { - m_widget = new SettingsPageWidget(parent); - m_widget->setSettings(GitPlugin::instance()->settings()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new SettingsPageWidget; + m_widget->setSettings(GitPlugin::instance()->settings()); + } return m_widget; } @@ -142,9 +123,9 @@ void SettingsPage::apply() GitPlugin::instance()->setSettings(newSettings); } -bool SettingsPage::matches(const QString &s) const +void SettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } } diff --git a/src/plugins/git/settingspage.h b/src/plugins/git/settingspage.h index 18e70f473b9..d7fe845fad8 100644 --- a/src/plugins/git/settingspage.h +++ b/src/plugins/git/settingspage.h @@ -30,12 +30,13 @@ #ifndef SETTINGSPAGE_H #define SETTINGSPAGE_H -#include - #include #include "ui_settingspage.h" +#include +#include + QT_BEGIN_NAMESPACE class QSettings; QT_END_NAMESPACE @@ -53,8 +54,6 @@ public: GitSettings settings() const; void setSettings(const GitSettings &); - QString searchKeywords() const; - private: Ui::SettingsPage m_ui; }; @@ -66,14 +65,13 @@ class SettingsPage : public VcsBase::VcsBaseOptionsPage public: SettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &) const; + void finish(); private: QString m_searchKeywords; - SettingsPageWidget* m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/help/docsettingspage.cpp b/src/plugins/help/docsettingspage.cpp index 627aaab13fc..36fdda46b07 100644 --- a/src/plugins/help/docsettingspage.cpp +++ b/src/plugins/help/docsettingspage.cpp @@ -50,27 +50,26 @@ DocSettingsPage::DocSettingsPage() setCategoryIcon(QLatin1String(Help::Constants::HELP_CATEGORY_ICON)); } -QWidget *DocSettingsPage::createPage(QWidget *parent) +QWidget *DocSettingsPage::widget() { - QWidget *widget = new QWidget(parent); - m_ui.setupUi(widget); + if (!m_widget) { + m_widget = new QWidget; + m_ui.setupUi(m_widget); - connect(m_ui.addButton, SIGNAL(clicked()), this, SLOT(addDocumentation())); - connect(m_ui.removeButton, SIGNAL(clicked()), this, SLOT(removeDocumentation())); + connect(m_ui.addButton, SIGNAL(clicked()), this, SLOT(addDocumentation())); + connect(m_ui.removeButton, SIGNAL(clicked()), this, SLOT(removeDocumentation())); - m_ui.docsListWidget->installEventFilter(this); + m_ui.docsListWidget->installEventFilter(this); - const QStringList nameSpaces = HelpManager::registeredNamespaces(); - foreach (const QString &nameSpace, nameSpaces) { - addItem(nameSpace, HelpManager::fileFromNamespace(nameSpace)); - m_filesToRegister.insert(nameSpace, HelpManager::fileFromNamespace(nameSpace)); + const QStringList nameSpaces = HelpManager::registeredNamespaces(); + foreach (const QString &nameSpace, nameSpaces) { + addItem(nameSpace, HelpManager::fileFromNamespace(nameSpace)); + m_filesToRegister.insert(nameSpace, HelpManager::fileFromNamespace(nameSpace)); + } + + m_filesToUnregister.clear(); } - - m_filesToUnregister.clear(); - - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_ui.groupBox->title(); - return widget; + return m_widget; } void DocSettingsPage::addDocumentation() @@ -155,9 +154,9 @@ void DocSettingsPage::apply() m_filesToUnregister.clear(); } -bool DocSettingsPage::matches(const QString &s) const +void DocSettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } bool DocSettingsPage::eventFilter(QObject *object, QEvent *event) diff --git a/src/plugins/help/docsettingspage.h b/src/plugins/help/docsettingspage.h index 337db8f7b79..ed93f9ec7af 100644 --- a/src/plugins/help/docsettingspage.h +++ b/src/plugins/help/docsettingspage.h @@ -33,6 +33,8 @@ #include "ui_docsettingspage.h" #include +#include + namespace Help { namespace Internal { @@ -43,10 +45,9 @@ class DocSettingsPage : public Core::IOptionsPage public: DocSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() {} - bool matches(const QString &s) const; + void finish(); private slots: void addDocumentation(); @@ -59,8 +60,8 @@ private: private: Ui::DocSettingsPage m_ui; + QPointer m_widget; - QString m_searchKeywords; QString m_recentDialogPath; typedef QHash NameSpaceToPathHash; diff --git a/src/plugins/help/filtersettingspage.cpp b/src/plugins/help/filtersettingspage.cpp index f97cdfa879a..351ddd54538 100644 --- a/src/plugins/help/filtersettingspage.cpp +++ b/src/plugins/help/filtersettingspage.cpp @@ -51,29 +51,26 @@ FilterSettingsPage::FilterSettingsPage() setCategoryIcon(QLatin1String(Help::Constants::HELP_CATEGORY_ICON)); } -QWidget *FilterSettingsPage::createPage(QWidget *parent) +QWidget *FilterSettingsPage::widget() { - QWidget *widget = new QWidget(parent); - m_ui.setupUi(widget); + if (!m_widget) { + m_widget = new QWidget; + m_ui.setupUi(m_widget); - updateFilterPage(); + updateFilterPage(); - connect(m_ui.attributeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), - this, SLOT(updateFilterMap())); - connect(m_ui.filterWidget, - SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, - SLOT(updateAttributes(QListWidgetItem*))); - connect(m_ui.filterAddButton, SIGNAL(clicked()), this, SLOT(addFilter())); - connect(m_ui.filterRemoveButton, SIGNAL(clicked()), this, - SLOT(removeFilter())); - connect(HelpManager::instance(), SIGNAL(documentationChanged()), - this, SLOT(updateFilterPage())); - - if (m_searchKeywords.isEmpty()) { - m_searchKeywords = m_ui.filterGroupBox->title() + QLatin1Char(' ') - + m_ui.attributesGroupBox->title(); + connect(m_ui.attributeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), + this, SLOT(updateFilterMap())); + connect(m_ui.filterWidget, + SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, + SLOT(updateAttributes(QListWidgetItem*))); + connect(m_ui.filterAddButton, SIGNAL(clicked()), this, SLOT(addFilter())); + connect(m_ui.filterRemoveButton, SIGNAL(clicked()), this, + SLOT(removeFilter())); + connect(HelpManager::instance(), SIGNAL(documentationChanged()), + this, SLOT(updateFilterPage())); } - return widget; + return m_widget; } void FilterSettingsPage::updateFilterPage() @@ -230,11 +227,7 @@ void FilterSettingsPage::finish() { disconnect(HelpManager::instance(), SIGNAL(documentationChanged()), this, SLOT(updateFilterPage())); -} - -bool FilterSettingsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } QString FilterSettingsPage::msgFilterLabel(const QString &filter) const diff --git a/src/plugins/help/filtersettingspage.h b/src/plugins/help/filtersettingspage.h index 3d20d19521d..33634b0d257 100644 --- a/src/plugins/help/filtersettingspage.h +++ b/src/plugins/help/filtersettingspage.h @@ -33,6 +33,8 @@ #include "ui_filtersettingspage.h" #include +#include + namespace Help { namespace Internal { @@ -43,10 +45,9 @@ class FilterSettingsPage : public Core::IOptionsPage public: FilterSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; signals: void filtersChanged(); @@ -64,12 +65,12 @@ private: private: QString msgFilterLabel(const QString &filter) const; Ui::FilterSettingsPage m_ui; + QPointer m_widget; typedef QMap FilterMap; FilterMap m_filterMap; FilterMap m_filterMapBackup; - QString m_searchKeywords; QStringList m_removedFilters; }; diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp index 43ac9b1aed9..53848cff7c2 100644 --- a/src/plugins/help/generalsettingspage.cpp +++ b/src/plugins/help/generalsettingspage.cpp @@ -72,59 +72,54 @@ GeneralSettingsPage::GeneralSettingsPage() setCategoryIcon(QLatin1String(Help::Constants::HELP_CATEGORY_ICON)); } -QWidget *GeneralSettingsPage::createPage(QWidget *parent) +QWidget *GeneralSettingsPage::widget() { - QWidget *widget = new QWidget(parent); - m_ui = new Ui::GeneralSettingsPage; - m_ui->setupUi(widget); - m_ui->sizeComboBox->setEditable(false); - m_ui->styleComboBox->setEditable(false); + if (!m_widget) { + m_widget = new QWidget; + m_ui = new Ui::GeneralSettingsPage; + m_ui->setupUi(m_widget); + m_ui->sizeComboBox->setEditable(false); + m_ui->styleComboBox->setEditable(false); - m_font = qvariant_cast(HelpManager::customValue(QLatin1String("font"), m_font)); + m_font = qvariant_cast(HelpManager::customValue(QLatin1String("font"), m_font)); - updateFontSize(); - updateFontStyle(); - updateFontFamily(); + updateFontSize(); + updateFontStyle(); + updateFontFamily(); - m_homePage = HelpManager::customValue(QLatin1String("HomePage"), QString()) - .toString(); - if (m_homePage.isEmpty()) { - m_homePage = HelpManager::customValue(QLatin1String("DefaultHomePage"), - Help::Constants::AboutBlank).toString(); + m_homePage = HelpManager::customValue(QLatin1String("HomePage"), QString()) + .toString(); + if (m_homePage.isEmpty()) { + m_homePage = HelpManager::customValue(QLatin1String("DefaultHomePage"), + Help::Constants::AboutBlank).toString(); + } + m_ui->homePageLineEdit->setText(m_homePage); + + m_startOption = HelpManager::customValue(QLatin1String("StartOption"), + Help::Constants::ShowLastPages).toInt(); + m_ui->helpStartComboBox->setCurrentIndex(m_startOption); + + m_contextOption = HelpManager::customValue(QLatin1String("ContextHelpOption"), + Help::Constants::SideBySideIfPossible).toInt(); + m_ui->contextHelpComboBox->setCurrentIndex(m_contextOption); + + connect(m_ui->currentPageButton, SIGNAL(clicked()), this, SLOT(setCurrentPage())); + connect(m_ui->blankPageButton, SIGNAL(clicked()), this, SLOT(setBlankPage())); + connect(m_ui->defaultPageButton, SIGNAL(clicked()), this, SLOT(setDefaultPage())); + + HelpViewer *viewer = CentralWidget::instance()->currentHelpViewer(); + if (!viewer) + m_ui->currentPageButton->setEnabled(false); + + m_ui->errorLabel->setVisible(false); + connect(m_ui->importButton, SIGNAL(clicked()), this, SLOT(importBookmarks())); + connect(m_ui->exportButton, SIGNAL(clicked()), this, SLOT(exportBookmarks())); + + m_returnOnClose = HelpManager::customValue(QLatin1String("ReturnOnClose"), + false).toBool(); + m_ui->m_returnOnClose->setChecked(m_returnOnClose); } - m_ui->homePageLineEdit->setText(m_homePage); - - m_startOption = HelpManager::customValue(QLatin1String("StartOption"), - Help::Constants::ShowLastPages).toInt(); - m_ui->helpStartComboBox->setCurrentIndex(m_startOption); - - m_contextOption = HelpManager::customValue(QLatin1String("ContextHelpOption"), - Help::Constants::SideBySideIfPossible).toInt(); - m_ui->contextHelpComboBox->setCurrentIndex(m_contextOption); - - connect(m_ui->currentPageButton, SIGNAL(clicked()), this, SLOT(setCurrentPage())); - connect(m_ui->blankPageButton, SIGNAL(clicked()), this, SLOT(setBlankPage())); - connect(m_ui->defaultPageButton, SIGNAL(clicked()), this, SLOT(setDefaultPage())); - - HelpViewer *viewer = CentralWidget::instance()->currentHelpViewer(); - if (!viewer) - m_ui->currentPageButton->setEnabled(false); - - m_ui->errorLabel->setVisible(false); - connect(m_ui->importButton, SIGNAL(clicked()), this, SLOT(importBookmarks())); - connect(m_ui->exportButton, SIGNAL(clicked()), this, SLOT(exportBookmarks())); - - if (m_searchKeywords.isEmpty()) { - QTextStream(&m_searchKeywords) << ' ' << m_ui->contextHelpLabel->text() - << ' ' << m_ui->startPageLabel->text() << ' ' << m_ui->homePageLabel->text(); - m_searchKeywords.remove(QLatin1Char('&')); - } - - m_returnOnClose = HelpManager::customValue(QLatin1String("ReturnOnClose"), - false).toBool(); - m_ui->m_returnOnClose->setChecked(m_returnOnClose); - - return widget; + return m_widget; } void GeneralSettingsPage::apply() @@ -342,13 +337,9 @@ int GeneralSettingsPage::closestPointSizeIndex(int desiredPointSize) const return closestIndex; } -bool GeneralSettingsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - void GeneralSettingsPage::finish() { + delete m_widget; if (!m_ui) // page was never shown return; delete m_ui; diff --git a/src/plugins/help/generalsettingspage.h b/src/plugins/help/generalsettingspage.h index 70fb588b96d..06fdd45b9f5 100644 --- a/src/plugins/help/generalsettingspage.h +++ b/src/plugins/help/generalsettingspage.h @@ -33,6 +33,8 @@ #include "ui_generalsettingspage.h" #include +#include + namespace Help { namespace Internal { @@ -45,10 +47,9 @@ class GeneralSettingsPage : public Core::IOptionsPage public: GeneralSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; signals: void fontChanged(); @@ -79,7 +80,7 @@ private: int m_startOption; bool m_returnOnClose; - QString m_searchKeywords; + QPointer m_widget; Ui::GeneralSettingsPage *m_ui; }; diff --git a/src/plugins/ios/iossettingspage.cpp b/src/plugins/ios/iossettingspage.cpp index f1a61e7aeb3..de5766878e3 100644 --- a/src/plugins/ios/iossettingspage.cpp +++ b/src/plugins/ios/iossettingspage.cpp @@ -48,16 +48,10 @@ IosSettingsPage::IosSettingsPage(QObject *parent) setCategoryIcon(QLatin1String(Constants::IOS_SETTINGS_CATEGORY_ICON)); } -bool IosSettingsPage::matches(const QString &searchKeyWord) const +QWidget *IosSettingsPage::widget() { - return m_keywords.contains(searchKeyWord, Qt::CaseInsensitive); -} - -QWidget *IosSettingsPage::createPage(QWidget *parent) -{ - m_widget = new IosSettingsWidget(parent); - if (m_keywords.isEmpty()) - m_keywords = m_widget->searchKeywords(); + if (!m_widget) + m_widget = new IosSettingsWidget; return m_widget; } @@ -69,6 +63,7 @@ void IosSettingsPage::apply() void IosSettingsPage::finish() { + delete m_widget; } } // namespace Internal diff --git a/src/plugins/ios/iossettingspage.h b/src/plugins/ios/iossettingspage.h index 96ee1909055..6dbd5beaa43 100644 --- a/src/plugins/ios/iossettingspage.h +++ b/src/plugins/ios/iossettingspage.h @@ -31,6 +31,8 @@ #include +#include + namespace Ios { namespace Internal { @@ -43,14 +45,12 @@ class IosSettingsPage : public Core::IOptionsPage public: explicit IosSettingsPage(QObject *parent = 0); - bool matches(const QString &searchKeyWord) const; - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); private: - QString m_keywords; - IosSettingsWidget *m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/ios/iossettingswidget.cpp b/src/plugins/ios/iossettingswidget.cpp index b4e7e44eb39..87f0e805a82 100644 --- a/src/plugins/ios/iossettingswidget.cpp +++ b/src/plugins/ios/iossettingswidget.cpp @@ -65,14 +65,6 @@ IosSettingsWidget::~IosSettingsWidget() delete m_ui; } -QString IosSettingsWidget::searchKeywords() const -{ - QString rc; - QTextStream(&rc) << m_ui->deviceAskCheckBox->text(); - rc.remove(QLatin1Char('&')); - return rc; -} - void IosSettingsWidget::initGui() { m_ui->setupUi(this); diff --git a/src/plugins/ios/iossettingswidget.h b/src/plugins/ios/iossettingswidget.h index 58b8fc7c60c..7d22a645d6b 100644 --- a/src/plugins/ios/iossettingswidget.h +++ b/src/plugins/ios/iossettingswidget.h @@ -48,11 +48,10 @@ class IosSettingsWidget : public QWidget Q_OBJECT public: // Todo: This would be so much simpler if it just used Utils::PathChooser!!! - IosSettingsWidget(QWidget *parent); + IosSettingsWidget(QWidget *parent = 0); ~IosSettingsWidget(); void saveSettings(); - QString searchKeywords() const; private slots: diff --git a/src/plugins/locator/settingspage.cpp b/src/plugins/locator/settingspage.cpp index a12d3052d7e..86d84a5281e 100644 --- a/src/plugins/locator/settingspage.cpp +++ b/src/plugins/locator/settingspage.cpp @@ -45,7 +45,7 @@ using namespace Locator; using namespace Locator::Internal; SettingsPage::SettingsPage(LocatorPlugin *plugin) - : m_plugin(plugin), m_page(0) + : m_plugin(plugin), m_widget(0) { setId(Constants::FILTER_OPTIONS_PAGE); setDisplayName(QCoreApplication::translate("Locator", Locator::Constants::FILTER_OPTIONS_PAGE)); @@ -54,33 +54,30 @@ SettingsPage::SettingsPage(LocatorPlugin *plugin) setCategoryIcon(QLatin1String(Core::Constants::SETTINGS_CATEGORY_CORE_ICON)); } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { + if (!m_widget) { + m_widget = new QWidget; + m_ui.setupUi(m_widget); + m_ui.refreshInterval->setToolTip(m_ui.refreshIntervalLabel->toolTip()); + connect(m_ui.filterList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), + this, SLOT(updateButtonStates())); + connect(m_ui.filterList, SIGNAL(itemActivated(QListWidgetItem*)), + this, SLOT(configureFilter(QListWidgetItem*))); + connect(m_ui.editButton, SIGNAL(clicked()), + this, SLOT(configureFilter())); + connect(m_ui.addButton, SIGNAL(clicked()), + this, SLOT(addCustomFilter())); + connect(m_ui.removeButton, SIGNAL(clicked()), + this, SLOT(removeCustomFilter())); - m_page = new QWidget(parent); - m_ui.setupUi(m_page); - m_ui.refreshInterval->setToolTip(m_ui.refreshIntervalLabel->toolTip()); - connect(m_ui.filterList, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), - this, SLOT(updateButtonStates())); - connect(m_ui.filterList, SIGNAL(itemActivated(QListWidgetItem*)), - this, SLOT(configureFilter(QListWidgetItem*))); - connect(m_ui.editButton, SIGNAL(clicked()), - this, SLOT(configureFilter())); - connect(m_ui.addButton, SIGNAL(clicked()), - this, SLOT(addCustomFilter())); - connect(m_ui.removeButton, SIGNAL(clicked()), - this, SLOT(removeCustomFilter())); - - m_ui.refreshInterval->setValue(m_plugin->refreshInterval()); - m_filters = m_plugin->filters(); - m_customFilters = m_plugin->customFilters(); - saveFilterStates(); - updateFilterList(); - if (m_searchKeywords.isEmpty()) { - m_searchKeywords = m_ui.refreshIntervalLabel->text(); - m_searchKeywords.remove(QLatin1Char('&')); + m_ui.refreshInterval->setValue(m_plugin->refreshInterval()); + m_filters = m_plugin->filters(); + m_customFilters = m_plugin->customFilters(); + saveFilterStates(); + updateFilterList(); } - return m_page; + return m_widget; } void SettingsPage::apply() @@ -114,6 +111,7 @@ void SettingsPage::finish() m_filters.clear(); m_customFilters.clear(); m_refreshFilters.clear(); + delete m_widget; } void SettingsPage::requestRefresh() @@ -174,7 +172,7 @@ void SettingsPage::configureFilter(QListWidgetItem *item) if (!filter->isConfigurable()) return; bool needsRefresh = false; - filter->openConfigDialog(m_page, needsRefresh); + filter->openConfigDialog(m_widget, needsRefresh); if (needsRefresh && !m_refreshFilters.contains(filter)) m_refreshFilters.append(filter); updateFilterList(); @@ -184,7 +182,7 @@ void SettingsPage::addCustomFilter() { ILocatorFilter *filter = new DirectoryFilter; bool needsRefresh = false; - if (filter->openConfigDialog(m_page, needsRefresh)) { + if (filter->openConfigDialog(m_widget, needsRefresh)) { m_filters.append(filter); m_addedFilters.append(filter); m_customFilters.append(filter); @@ -210,8 +208,3 @@ void SettingsPage::removeCustomFilter() } updateFilterList(); } - -bool SettingsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} diff --git a/src/plugins/locator/settingspage.h b/src/plugins/locator/settingspage.h index 7cd2ec71eee..61d22eb85d4 100644 --- a/src/plugins/locator/settingspage.h +++ b/src/plugins/locator/settingspage.h @@ -32,10 +32,11 @@ #include "ui_settingspage.h" -#include - #include +#include +#include + QT_BEGIN_NAMESPACE class QListWidgetItem; QT_END_NAMESPACE @@ -55,10 +56,9 @@ class SettingsPage : public Core::IOptionsPage public: explicit SettingsPage(LocatorPlugin *plugin); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &) const; private slots: void updateButtonStates(); @@ -74,14 +74,13 @@ private: Ui::SettingsWidget m_ui; LocatorPlugin *m_plugin; - QWidget *m_page; + QPointer m_widget; QList m_filters; QList m_addedFilters; QList m_removedFilters; QList m_customFilters; QList m_refreshFilters; QHash m_filterStates; - QString m_searchKeywords; }; } // namespace Internal diff --git a/src/plugins/macros/macrooptionspage.cpp b/src/plugins/macros/macrooptionspage.cpp index 97220d054c4..754ede9bb40 100644 --- a/src/plugins/macros/macrooptionspage.cpp +++ b/src/plugins/macros/macrooptionspage.cpp @@ -53,9 +53,10 @@ MacroOptionsPage::MacroOptionsPage(QObject *parent) TextEditor::Constants::TEXT_EDITOR_SETTINGS_TR_CATEGORY)); } -QWidget *MacroOptionsPage::createPage(QWidget *parent) +QWidget *MacroOptionsPage::widget() { - m_widget = new MacroOptionsWidget(parent); + if (!m_widget) + m_widget = new MacroOptionsWidget; return m_widget; } @@ -67,5 +68,5 @@ void MacroOptionsPage::apply() void MacroOptionsPage::finish() { - // Nothing to do + delete m_widget; } diff --git a/src/plugins/macros/macrooptionspage.h b/src/plugins/macros/macrooptionspage.h index a1b3575744e..62819ab487a 100644 --- a/src/plugins/macros/macrooptionspage.h +++ b/src/plugins/macros/macrooptionspage.h @@ -32,6 +32,8 @@ #include +#include + namespace Macros { namespace Internal { @@ -45,12 +47,12 @@ public: MacroOptionsPage(QObject *parent = 0); // IOptionsPage implementation - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); private: - Internal::MacroOptionsWidget *m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/mercurial/optionspage.cpp b/src/plugins/mercurial/optionspage.cpp index 79e5ca41ad3..ca272b9e27c 100644 --- a/src/plugins/mercurial/optionspage.cpp +++ b/src/plugins/mercurial/optionspage.cpp @@ -68,37 +68,17 @@ void OptionsPageWidget::setSettings(const MercurialSettings &s) m_ui.timeout->setValue(s.intValue(MercurialSettings::timeoutKey)); } -QString OptionsPageWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream(&rc) - << sep << m_ui.configGroupBox->title() - << sep << m_ui.mercurialCommandLabel->text() - << sep << m_ui.userGroupBox->title() - << sep << m_ui.defaultUsernameLabel->text() - << sep << m_ui.defaultEmailLabel->text() - << sep << m_ui.miscGroupBox->title() - << sep << m_ui.showLogEntriesLabel->text() - << sep << m_ui.timeoutSecondsLabel->text() - ; - rc.remove(QLatin1Char('&')); - return rc; -} - OptionsPage::OptionsPage() { setId(VcsBase::Constants::VCS_ID_MERCURIAL); setDisplayName(tr("Mercurial")); } -QWidget *OptionsPage::createPage(QWidget *parent) +QWidget *OptionsPage::widget() { if (!optionsPageWidget) - optionsPageWidget = new OptionsPageWidget(parent); + optionsPageWidget = new OptionsPageWidget; optionsPageWidget->setSettings(MercurialPlugin::settings()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = optionsPageWidget->searchKeywords(); return optionsPageWidget; } @@ -115,7 +95,7 @@ void OptionsPage::apply() } } -bool OptionsPage::matches(const QString &s) const +void OptionsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete optionsPageWidget; } diff --git a/src/plugins/mercurial/optionspage.h b/src/plugins/mercurial/optionspage.h index ff55161a7c9..acad34a9e66 100644 --- a/src/plugins/mercurial/optionspage.h +++ b/src/plugins/mercurial/optionspage.h @@ -51,7 +51,6 @@ public: MercurialSettings settings() const; void setSettings(const MercurialSettings &s); - QString searchKeywords() const; private: Ui::OptionsPage m_ui; @@ -65,16 +64,14 @@ class OptionsPage : public VcsBase::VcsBaseOptionsPage public: OptionsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &s) const; + void finish(); signals: void settingsChanged(); private: - QString m_searchKeywords; QPointer optionsPageWidget; }; diff --git a/src/plugins/perforce/settingspage.cpp b/src/plugins/perforce/settingspage.cpp index 0fce54aaea0..e4a9a4f4dec 100644 --- a/src/plugins/perforce/settingspage.cpp +++ b/src/plugins/perforce/settingspage.cpp @@ -143,12 +143,12 @@ SettingsPage::SettingsPage() setDisplayName(tr("Perforce")); } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { - m_widget = new SettingsPageWidget(parent); - m_widget->setSettings(PerforcePlugin::settings()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new SettingsPageWidget; + m_widget->setSettings(PerforcePlugin::settings()); + } return m_widget; } @@ -157,7 +157,7 @@ void SettingsPage::apply() PerforcePlugin::setSettings(m_widget->settings()); } -bool SettingsPage::matches(const QString &s) const +void SettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } diff --git a/src/plugins/perforce/settingspage.h b/src/plugins/perforce/settingspage.h index bf12f865410..d4eba73bd33 100644 --- a/src/plugins/perforce/settingspage.h +++ b/src/plugins/perforce/settingspage.h @@ -49,7 +49,7 @@ class SettingsPageWidget : public QWidget Q_OBJECT public: - explicit SettingsPageWidget(QWidget *parent); + explicit SettingsPageWidget(QWidget *parent = 0); void setSettings(const PerforceSettings &); Settings settings() const; @@ -75,14 +75,12 @@ class SettingsPage : public VcsBase::VcsBaseOptionsPage public: SettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &) const; + void finish(); private: - QString m_searchKeywords; - SettingsPageWidget* m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp b/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp index 13aa949d8fd..b9f15fd5142 100644 --- a/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp +++ b/src/plugins/projectexplorer/devicesupport/devicesettingspage.cpp @@ -48,16 +48,10 @@ DeviceSettingsPage::DeviceSettingsPage(QObject *parent) setCategoryIcon(QLatin1String(":/projectexplorer/images/MaemoDevice.png")); } -bool DeviceSettingsPage::matches(const QString &searchKeyWord) const +QWidget *DeviceSettingsPage::widget() { - return m_keywords.contains(searchKeyWord, Qt::CaseInsensitive); -} - -QWidget *DeviceSettingsPage::createPage(QWidget *parent) -{ - m_widget = new DeviceSettingsWidget(parent); - if (m_keywords.isEmpty()) - m_keywords = m_widget->searchKeywords(); + if (!m_widget) + m_widget = new DeviceSettingsWidget; return m_widget; } @@ -68,6 +62,7 @@ void DeviceSettingsPage::apply() void DeviceSettingsPage::finish() { + delete m_widget; } } // namespace Internal diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingspage.h b/src/plugins/projectexplorer/devicesupport/devicesettingspage.h index 676b8e2b560..93f5957c4ff 100644 --- a/src/plugins/projectexplorer/devicesupport/devicesettingspage.h +++ b/src/plugins/projectexplorer/devicesupport/devicesettingspage.h @@ -31,6 +31,8 @@ #include +#include + namespace ProjectExplorer { namespace Internal { @@ -43,14 +45,12 @@ class DeviceSettingsPage : public Core::IOptionsPage public: DeviceSettingsPage(QObject *parent = 0); - bool matches(const QString &searchKeyWord) const; - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); private: - QString m_keywords; - DeviceSettingsWidget *m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.h b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.h index c953fb9a959..1a4d2b4b631 100644 --- a/src/plugins/projectexplorer/devicesupport/devicesettingswidget.h +++ b/src/plugins/projectexplorer/devicesupport/devicesettingswidget.h @@ -55,7 +55,7 @@ class DeviceSettingsWidget : public QWidget { Q_OBJECT public: - DeviceSettingsWidget(QWidget *parent); + DeviceSettingsWidget(QWidget *parent = 0); ~DeviceSettingsWidget(); void saveSettings(); diff --git a/src/plugins/projectexplorer/kitoptionspage.cpp b/src/plugins/projectexplorer/kitoptionspage.cpp index a39b5b70df4..51b3a913548 100644 --- a/src/plugins/projectexplorer/kitoptionspage.cpp +++ b/src/plugins/projectexplorer/kitoptionspage.cpp @@ -59,76 +59,75 @@ KitOptionsPage::KitOptionsPage() : setCategoryIcon(QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON)); } -QWidget *KitOptionsPage::createPage(QWidget *parent) +QWidget *KitOptionsPage::widget() { - m_configWidget = new QWidget(parent); + if (!m_configWidget) { + m_configWidget = new QWidget; - m_kitsView = new QTreeView(m_configWidget); - m_kitsView->setUniformRowHeights(true); - m_kitsView->header()->setStretchLastSection(true); - m_kitsView->setSizePolicy(m_kitsView->sizePolicy().horizontalPolicy(), + m_kitsView = new QTreeView(m_configWidget); + m_kitsView->setUniformRowHeights(true); + m_kitsView->header()->setStretchLastSection(true); + m_kitsView->setSizePolicy(m_kitsView->sizePolicy().horizontalPolicy(), QSizePolicy::Ignored); - m_addButton = new QPushButton(tr("Add"), m_configWidget); - m_cloneButton = new QPushButton(tr("Clone"), m_configWidget); - m_delButton = new QPushButton(tr("Remove"), m_configWidget); - m_makeDefaultButton = new QPushButton(tr("Make Default"), m_configWidget); + m_addButton = new QPushButton(tr("Add"), m_configWidget); + m_cloneButton = new QPushButton(tr("Clone"), m_configWidget); + m_delButton = new QPushButton(tr("Remove"), m_configWidget); + m_makeDefaultButton = new QPushButton(tr("Make Default"), m_configWidget); - QVBoxLayout *buttonLayout = new QVBoxLayout(); - buttonLayout->setSpacing(6); - buttonLayout->setContentsMargins(0, 0, 0, 0); - buttonLayout->addWidget(m_addButton); - buttonLayout->addWidget(m_cloneButton); - buttonLayout->addWidget(m_delButton); - buttonLayout->addWidget(m_makeDefaultButton); - buttonLayout->addStretch(); + QVBoxLayout *buttonLayout = new QVBoxLayout(); + buttonLayout->setSpacing(6); + buttonLayout->setContentsMargins(0, 0, 0, 0); + buttonLayout->addWidget(m_addButton); + buttonLayout->addWidget(m_cloneButton); + buttonLayout->addWidget(m_delButton); + buttonLayout->addWidget(m_makeDefaultButton); + buttonLayout->addStretch(); - QHBoxLayout *horizontalLayout = new QHBoxLayout(); - horizontalLayout->addWidget(m_kitsView); - horizontalLayout->addLayout(buttonLayout); + QHBoxLayout *horizontalLayout = new QHBoxLayout(); + horizontalLayout->addWidget(m_kitsView); + horizontalLayout->addLayout(buttonLayout); - QVBoxLayout *verticalLayout = new QVBoxLayout(m_configWidget); - verticalLayout->addLayout(horizontalLayout); + QVBoxLayout *verticalLayout = new QVBoxLayout(m_configWidget); + verticalLayout->addLayout(horizontalLayout); - m_model = new Internal::KitModel(verticalLayout); - connect(m_model, SIGNAL(kitStateChanged()), this, SLOT(updateState())); - verticalLayout->setStretch(0, 1); - verticalLayout->setStretch(1, 0); + m_model = new Internal::KitModel(verticalLayout); + connect(m_model, SIGNAL(kitStateChanged()), this, SLOT(updateState())); + verticalLayout->setStretch(0, 1); + verticalLayout->setStretch(1, 0); - m_kitsView->setModel(m_model); - m_kitsView->header()->setResizeMode(0, QHeaderView::Stretch); - m_kitsView->expandAll(); + m_kitsView->setModel(m_model); + m_kitsView->header()->setResizeMode(0, QHeaderView::Stretch); + m_kitsView->expandAll(); - m_selectionModel = m_kitsView->selectionModel(); - connect(m_selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SLOT(kitSelectionChanged())); - connect(KitManager::instance(), SIGNAL(kitAdded(ProjectExplorer::Kit*)), - this, SLOT(kitSelectionChanged())); - connect(KitManager::instance(), SIGNAL(kitRemoved(ProjectExplorer::Kit*)), - this, SLOT(kitSelectionChanged())); - connect(KitManager::instance(), SIGNAL(kitUpdated(ProjectExplorer::Kit*)), - this, SLOT(kitSelectionChanged())); + m_selectionModel = m_kitsView->selectionModel(); + connect(m_selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + this, SLOT(kitSelectionChanged())); + connect(KitManager::instance(), SIGNAL(kitAdded(ProjectExplorer::Kit*)), + this, SLOT(kitSelectionChanged())); + connect(KitManager::instance(), SIGNAL(kitRemoved(ProjectExplorer::Kit*)), + this, SLOT(kitSelectionChanged())); + connect(KitManager::instance(), SIGNAL(kitUpdated(ProjectExplorer::Kit*)), + this, SLOT(kitSelectionChanged())); - // Set up add menu: - connect(m_addButton, SIGNAL(clicked()), this, SLOT(addNewKit())); - connect(m_cloneButton, SIGNAL(clicked()), this, SLOT(cloneKit())); - connect(m_delButton, SIGNAL(clicked()), this, SLOT(removeKit())); - connect(m_makeDefaultButton, SIGNAL(clicked()), this, SLOT(makeDefaultKit())); + // Set up add menu: + connect(m_addButton, SIGNAL(clicked()), this, SLOT(addNewKit())); + connect(m_cloneButton, SIGNAL(clicked()), this, SLOT(cloneKit())); + connect(m_delButton, SIGNAL(clicked()), this, SLOT(removeKit())); + connect(m_makeDefaultButton, SIGNAL(clicked()), this, SLOT(makeDefaultKit())); - m_searchKeywords = tr("Kits"); + updateState(); - updateState(); - - if (m_toShow) { - QModelIndex index = m_model->indexOf(m_toShow); - m_selectionModel->select(index, - QItemSelectionModel::Clear - | QItemSelectionModel::SelectCurrent - | QItemSelectionModel::Rows); - m_kitsView->scrollTo(index); + if (m_toShow) { + QModelIndex index = m_model->indexOf(m_toShow); + m_selectionModel->select(index, + QItemSelectionModel::Clear + | QItemSelectionModel::SelectCurrent + | QItemSelectionModel::Rows); + m_kitsView->scrollTo(index); + } + m_toShow = 0; } - m_toShow = 0; - return m_configWidget; } @@ -145,18 +144,13 @@ void KitOptionsPage::finish() m_model = 0; } - m_configWidget = 0; // deleted by settingsdialog + delete m_configWidget; m_selectionModel = 0; // child of m_configWidget m_kitsView = 0; // child of m_configWidget m_currentWidget = 0; // deleted by the model m_toShow = 0; } -bool KitOptionsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - void KitOptionsPage::showKit(Kit *k) { m_toShow = k; diff --git a/src/plugins/projectexplorer/kitoptionspage.h b/src/plugins/projectexplorer/kitoptionspage.h index 8022f82b8a5..477a0e9c77a 100644 --- a/src/plugins/projectexplorer/kitoptionspage.h +++ b/src/plugins/projectexplorer/kitoptionspage.h @@ -35,6 +35,7 @@ #include #include +#include QT_BEGIN_NAMESPACE class QItemSelectionModel; @@ -59,10 +60,9 @@ class PROJECTEXPLORER_EXPORT KitOptionsPage : public Core::IOptionsPage public: KitOptionsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &) const; void showKit(Kit *k); @@ -83,8 +83,7 @@ private: QPushButton *m_delButton; QPushButton *m_makeDefaultButton; - QWidget *m_configWidget; - QString m_searchKeywords; + QPointer m_configWidget; Internal::KitModel *m_model; QItemSelectionModel *m_selectionModel; diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp index 6ad0591fed8..b43cb45db14 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp +++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp @@ -150,29 +150,6 @@ void ProjectExplorerSettingsWidget::updateResetButton() m_ui.resetButton->setEnabled(buildDirectory() != QLatin1String(Core::Constants::DEFAULT_BUILD_DIRECTORY)); } -QString ProjectExplorerSettingsWidget::searchKeywords() const -{ - if (m_searchKeywords.isEmpty()) { - QLatin1Char sep(' '); - m_searchKeywords = m_ui.directoryGroupBox->title() - + sep + m_ui.currentDirectoryRadioButton->text() - + sep + m_ui.directoryRadioButton->text() - + sep + m_ui.buildAndRunGroupBox->title() - + sep + m_ui.saveAllFilesCheckBox->text() - + sep + m_ui.buildProjectBeforeDeployCheckBox->text() - + sep + m_ui.deployProjectBeforeRunCheckBox->text() - + sep + m_ui.showCompileOutputCheckBox->text() - + sep + m_ui.cleanOldAppOutputCheckBox->text() - + sep + m_ui.mergeStdErrAndStdOutCheckBox->text() - + sep + m_ui.mergeStdErrAndStdOutCheckBox->toolTip() - + sep + m_ui.wrapAppOutputCheckBox->text() - + sep + m_ui.jomLabel->text() - ; - m_searchKeywords.remove(QLatin1Char('&')); - } - return m_searchKeywords; -} - // ------------------ ProjectExplorerSettingsPage ProjectExplorerSettingsPage::ProjectExplorerSettingsPage() { @@ -188,15 +165,15 @@ ProjectExplorerSettingsPage::~ProjectExplorerSettingsPage() { } -QWidget *ProjectExplorerSettingsPage::createPage(QWidget *parent) +QWidget *ProjectExplorerSettingsPage::widget() { - m_widget = new ProjectExplorerSettingsWidget(parent); - m_widget->setSettings(ProjectExplorerPlugin::projectExplorerSettings()); - m_widget->setProjectsDirectory(Core::DocumentManager::projectsDirectory()); - m_widget->setUseProjectsDirectory(Core::DocumentManager::useProjectsDirectory()); - m_widget->setBuildDirectory(Core::DocumentManager::buildDirectory()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new ProjectExplorerSettingsWidget; + m_widget->setSettings(ProjectExplorerPlugin::projectExplorerSettings()); + m_widget->setProjectsDirectory(Core::DocumentManager::projectsDirectory()); + m_widget->setUseProjectsDirectory(Core::DocumentManager::useProjectsDirectory()); + m_widget->setBuildDirectory(Core::DocumentManager::buildDirectory()); + } return m_widget; } @@ -212,12 +189,7 @@ void ProjectExplorerSettingsPage::apply() void ProjectExplorerSettingsPage::finish() { - // Nothing to do -} - -bool ProjectExplorerSettingsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } } // namespace Internal diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.h b/src/plugins/projectexplorer/projectexplorersettingspage.h index 38b99181f4b..2dbc211753d 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.h +++ b/src/plugins/projectexplorer/projectexplorersettingspage.h @@ -59,8 +59,6 @@ public: QString buildDirectory() const; void setBuildDirectory(const QString &bd); - QString searchKeywords() const; - private slots: void slotDirectoryButtonGroupChanged(); void resetDefaultBuildDirectory(); @@ -70,7 +68,6 @@ private: void setJomVisible(bool); Ui::ProjectExplorerSettingsPageUi m_ui; - mutable QString m_searchKeywords; QUuid m_environmentId; }; @@ -82,13 +79,11 @@ public: ProjectExplorerSettingsPage(); ~ProjectExplorerSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; private: - QString m_searchKeywords; QPointer m_widget; }; diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp index 44b1a821917..7222a3ae0c1 100644 --- a/src/plugins/projectexplorer/toolchainoptionspage.cpp +++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp @@ -450,92 +450,81 @@ ToolChainOptionsPage::ToolChainOptionsPage() : setCategoryIcon(QLatin1String(Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON)); } -QWidget *ToolChainOptionsPage::createPage(QWidget *parent) +QWidget *ToolChainOptionsPage::widget() { - // Actual page setup: - m_configWidget = new QWidget(parent); + if (!m_configWidget) { + // Actual page setup: + m_configWidget = new QWidget; - m_toolChainView = new QTreeView(m_configWidget); - m_toolChainView->setUniformRowHeights(true); - m_toolChainView->header()->setStretchLastSection(false); + m_toolChainView = new QTreeView(m_configWidget); + m_toolChainView->setUniformRowHeights(true); + m_toolChainView->header()->setStretchLastSection(false); - m_addButton = new QPushButton(tr("Add"), m_configWidget); - m_cloneButton = new QPushButton(tr("Clone"), m_configWidget); - m_delButton = new QPushButton(tr("Remove"), m_configWidget); + m_addButton = new QPushButton(tr("Add"), m_configWidget); + m_cloneButton = new QPushButton(tr("Clone"), m_configWidget); + m_delButton = new QPushButton(tr("Remove"), m_configWidget); - m_container = new Utils::DetailsWidget(m_configWidget); - m_container->setState(Utils::DetailsWidget::NoSummary); - m_container->setVisible(false); + m_container = new Utils::DetailsWidget(m_configWidget); + m_container->setState(Utils::DetailsWidget::NoSummary); + m_container->setVisible(false); - QVBoxLayout *buttonLayout = new QVBoxLayout(); - buttonLayout->setSpacing(6); - buttonLayout->setContentsMargins(0, 0, 0, 0); - buttonLayout->addWidget(m_addButton); - buttonLayout->addWidget(m_cloneButton); - buttonLayout->addWidget(m_delButton); - buttonLayout->addItem(new QSpacerItem(10, 40, QSizePolicy::Minimum, QSizePolicy::Expanding)); + QVBoxLayout *buttonLayout = new QVBoxLayout(); + buttonLayout->setSpacing(6); + buttonLayout->setContentsMargins(0, 0, 0, 0); + buttonLayout->addWidget(m_addButton); + buttonLayout->addWidget(m_cloneButton); + buttonLayout->addWidget(m_delButton); + buttonLayout->addItem(new QSpacerItem(10, 40, QSizePolicy::Minimum, QSizePolicy::Expanding)); - QVBoxLayout *verticalLayout = new QVBoxLayout(); - verticalLayout->addWidget(m_toolChainView); - verticalLayout->addWidget(m_container); + QVBoxLayout *verticalLayout = new QVBoxLayout(); + verticalLayout->addWidget(m_toolChainView); + verticalLayout->addWidget(m_container); - QHBoxLayout *horizontalLayout = new QHBoxLayout(m_configWidget); - horizontalLayout->addLayout(verticalLayout); - horizontalLayout->addLayout(buttonLayout); - Q_ASSERT(!m_model); - m_model = new ToolChainModel(m_configWidget); + QHBoxLayout *horizontalLayout = new QHBoxLayout(m_configWidget); + horizontalLayout->addLayout(verticalLayout); + horizontalLayout->addLayout(buttonLayout); + Q_ASSERT(!m_model); + m_model = new ToolChainModel(m_configWidget); - connect(m_model, SIGNAL(toolChainStateChanged()), this, SLOT(updateState())); + connect(m_model, SIGNAL(toolChainStateChanged()), this, SLOT(updateState())); - m_toolChainView->setModel(m_model); - m_toolChainView->header()->setResizeMode(0, QHeaderView::ResizeToContents); - m_toolChainView->header()->setResizeMode(1, QHeaderView::Stretch); - m_toolChainView->expandAll(); + m_toolChainView->setModel(m_model); + m_toolChainView->header()->setResizeMode(0, QHeaderView::ResizeToContents); + m_toolChainView->header()->setResizeMode(1, QHeaderView::Stretch); + m_toolChainView->expandAll(); - m_selectionModel = m_toolChainView->selectionModel(); - connect(m_selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), - this, SLOT(toolChainSelectionChanged())); - connect(ToolChainManager::instance(), SIGNAL(toolChainsChanged()), - this, SLOT(toolChainSelectionChanged())); + m_selectionModel = m_toolChainView->selectionModel(); + connect(m_selectionModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), + this, SLOT(toolChainSelectionChanged())); + connect(ToolChainManager::instance(), SIGNAL(toolChainsChanged()), + this, SLOT(toolChainSelectionChanged())); - // Get toolchainfactories: - m_factories = ExtensionSystem::PluginManager::getObjects(); + // Get toolchainfactories: + m_factories = ExtensionSystem::PluginManager::getObjects(); - // Set up add menu: - QMenu *addMenu = new QMenu(m_addButton); - QSignalMapper *mapper = new QSignalMapper(addMenu); - connect(mapper, SIGNAL(mapped(QObject*)), this, SLOT(createToolChain(QObject*))); + // Set up add menu: + QMenu *addMenu = new QMenu(m_addButton); + QSignalMapper *mapper = new QSignalMapper(addMenu); + connect(mapper, SIGNAL(mapped(QObject*)), this, SLOT(createToolChain(QObject*))); - foreach (ToolChainFactory *factory, m_factories) { - if (factory->canCreate()) { - QAction *action = new QAction(addMenu); - action->setText(factory->displayName()); - connect(action, SIGNAL(triggered()), mapper, SLOT(map())); - mapper->setMapping(action, static_cast(factory)); + foreach (ToolChainFactory *factory, m_factories) { + if (factory->canCreate()) { + QAction *action = new QAction(addMenu); + action->setText(factory->displayName()); + connect(action, SIGNAL(triggered()), mapper, SLOT(map())); + mapper->setMapping(action, static_cast(factory)); - addMenu->addAction(action); + addMenu->addAction(action); + } } + connect(m_cloneButton, SIGNAL(clicked()), mapper, SLOT(map())); + mapper->setMapping(m_cloneButton, static_cast(0)); + + m_addButton->setMenu(addMenu); + + connect(m_delButton, SIGNAL(clicked()), this, SLOT(removeToolChain())); + updateState(); } - connect(m_cloneButton, SIGNAL(clicked()), mapper, SLOT(map())); - mapper->setMapping(m_cloneButton, static_cast(0)); - - m_addButton->setMenu(addMenu); - - connect(m_delButton, SIGNAL(clicked()), this, SLOT(removeToolChain())); - - // setup keywords: - if (m_searchKeywords.isEmpty()) { - QLatin1Char sep(' '); - QTextStream stream(&m_searchKeywords); - stream << tr("Compilers"); - foreach (ToolChainFactory *f, m_factories) - stream << sep << f->displayName(); - - m_searchKeywords.remove(QLatin1Char('&')); - } - - updateState(); - return m_configWidget; } @@ -550,8 +539,7 @@ void ToolChainOptionsPage::finish() disconnect(ToolChainManager::instance(), SIGNAL(toolChainsChanged()), this, SLOT(toolChainSelectionChanged())); - // delete by settingsdialog; - m_configWidget = 0; + delete m_configWidget; // children of m_configWidget m_model = 0; @@ -563,11 +551,6 @@ void ToolChainOptionsPage::finish() m_delButton = 0; } -bool ToolChainOptionsPage::matches(const QString &s) const -{ - return m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - void ToolChainOptionsPage::toolChainSelectionChanged() { if (!m_container) diff --git a/src/plugins/projectexplorer/toolchainoptionspage.h b/src/plugins/projectexplorer/toolchainoptionspage.h index 19b365dca4f..4c3186c6751 100644 --- a/src/plugins/projectexplorer/toolchainoptionspage.h +++ b/src/plugins/projectexplorer/toolchainoptionspage.h @@ -33,6 +33,7 @@ #include #include +#include QT_BEGIN_NAMESPACE class QItemSelectionModel; @@ -117,10 +118,9 @@ class ToolChainOptionsPage : public Core::IOptionsPage public: ToolChainOptionsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &) const; private slots: void toolChainSelectionChanged(); @@ -131,8 +131,7 @@ private slots: private: QModelIndex currentIndex() const; - QWidget *m_configWidget; - QString m_searchKeywords; + QPointer m_configWidget; ToolChainModel *m_model; QList m_factories; diff --git a/src/plugins/qmldesigner/settingspage.cpp b/src/plugins/qmldesigner/settingspage.cpp index 3cf0e6cc0ec..4b25f9f207e 100644 --- a/src/plugins/qmldesigner/settingspage.cpp +++ b/src/plugins/qmldesigner/settingspage.cpp @@ -73,18 +73,6 @@ void SettingsPageWidget::setSettings(const DesignerSettings &designerSettings) m_ui.designerEnableDebuggerCheckBox->setChecked(designerSettings.enableDebugView); } -QString SettingsPageWidget::searchKeywords() const -{ - QString rc; - QTextStream(&rc) - << ' ' << m_ui.snapMarginLabel->text() - << ' ' << m_ui.itemSpacingLabel->text() - << ' ' << m_ui.canvasWidthLabel->text() - << ' ' << m_ui.canvasHeightLabel->text(); - rc.remove(QLatin1Char('&')); - return rc; -} - void SettingsPageWidget::debugViewEnabledToggled(bool b) { if (b && ! m_ui.designerShowDebuggerCheckBox->isChecked()) @@ -102,12 +90,12 @@ SettingsPage::SettingsPage() : setCategoryIcon(QLatin1String(Constants::SETTINGS_CATEGORY_QML_ICON)); } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { - m_widget = new SettingsPageWidget(parent); - m_widget->setSettings(QmlDesignerPlugin::instance()->settings()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new SettingsPageWidget; + m_widget->setSettings(QmlDesignerPlugin::instance()->settings()); + } return m_widget; } @@ -118,7 +106,7 @@ void SettingsPage::apply() QmlDesignerPlugin::instance()->setSettings(m_widget->settings()); } -bool SettingsPage::matches(const QString &s) const +void SettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } diff --git a/src/plugins/qmldesigner/settingspage.h b/src/plugins/qmldesigner/settingspage.h index 78a143a0689..2dc84177250 100644 --- a/src/plugins/qmldesigner/settingspage.h +++ b/src/plugins/qmldesigner/settingspage.h @@ -35,6 +35,7 @@ #include +#include #include QT_BEGIN_NAMESPACE @@ -57,8 +58,6 @@ public: DesignerSettings settings() const; void setSettings(const DesignerSettings &designerSettings); - QString searchKeywords() const; - public slots: void debugViewEnabledToggled(bool b); @@ -74,14 +73,12 @@ class SettingsPage : public Core::IOptionsPage public: SettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &) const; + void finish(); private: - QString m_searchKeywords; - SettingsPageWidget* m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp b/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp index 59d0b858ea0..c79be8a96fc 100644 --- a/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp +++ b/src/plugins/qmljseditor/quicktoolbarsettingspage.cpp @@ -101,16 +101,6 @@ void QuickToolBarSettingsPageWidget::setSettings(const QuickToolBarSettings &s) m_ui.textEditHelperCheckBoxPin->setChecked(s.pinContextPane); } -QString QuickToolBarSettingsPageWidget::searchKeywords() const -{ - QString rc; - QTextStream(&rc) - << ' ' << m_ui.textEditHelperCheckBox->text() - << ' ' << m_ui.textEditHelperCheckBoxPin->text(); - rc.remove(QLatin1Char('&')); - return rc; -} - QuickToolBarSettings QuickToolBarSettings::get() { QuickToolBarSettings settings; @@ -129,12 +119,12 @@ QuickToolBarSettingsPage::QuickToolBarSettingsPage() : setCategoryIcon(QLatin1String(QmlDesigner::Constants::SETTINGS_CATEGORY_QML_ICON)); } -QWidget *QuickToolBarSettingsPage::createPage(QWidget *parent) +QWidget *QuickToolBarSettingsPage::widget() { - m_widget = new QuickToolBarSettingsPageWidget(parent); - m_widget->setSettings(QuickToolBarSettings::get()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new QuickToolBarSettingsPageWidget; + m_widget->setSettings(QuickToolBarSettings::get()); + } return m_widget; } @@ -145,7 +135,7 @@ void QuickToolBarSettingsPage::apply() m_widget->settings().set(); } -bool QuickToolBarSettingsPage::matches(const QString &s) const +void QuickToolBarSettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } diff --git a/src/plugins/qmljseditor/quicktoolbarsettingspage.h b/src/plugins/qmljseditor/quicktoolbarsettingspage.h index db5ca870e9f..059b916e586 100644 --- a/src/plugins/qmljseditor/quicktoolbarsettingspage.h +++ b/src/plugins/qmljseditor/quicktoolbarsettingspage.h @@ -33,6 +33,7 @@ #include "ui_quicktoolbarsettingspage.h" #include +#include #include QT_BEGIN_NAMESPACE @@ -76,7 +77,6 @@ public: QuickToolBarSettings settings() const; void setSettings(const QuickToolBarSettings &); - QString searchKeywords() const; static QuickToolBarSettings get(); private: @@ -91,14 +91,12 @@ class QuickToolBarSettingsPage : public Core::IOptionsPage public: QuickToolBarSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &) const; + void finish(); private: - QString m_searchKeywords; - QuickToolBarSettingsPageWidget* m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp index b0dcc8a60d6..1ba76f43c72 100644 --- a/src/plugins/qmljstools/qmljscodestylesettingspage.cpp +++ b/src/plugins/qmljstools/qmljscodestylesettingspage.cpp @@ -95,17 +95,6 @@ void QmlJSCodeStylePreferencesWidget::setPreferences(TextEditor::ICodeStylePrefe } -QString QmlJSCodeStylePreferencesWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream(&rc) - << sep << m_ui->tabPreferencesWidget->searchKeywords() - ; - rc.remove(QLatin1Char('&')); - return rc; -} - void QmlJSCodeStylePreferencesWidget::decorateEditor(const TextEditor::FontSettings &fontSettings) { const ISnippetProvider *provider = 0; @@ -171,18 +160,19 @@ QmlJSCodeStyleSettingsPage::QmlJSCodeStyleSettingsPage(/*QSharedPointersetDelegatingPool(originalTabPreferences->delegatingPool()); - m_pageTabPreferences->setTabSettings(originalTabPreferences->tabSettings()); - m_pageTabPreferences->setCurrentDelegate(originalTabPreferences->currentDelegate()); - m_pageTabPreferences->setId(originalTabPreferences->id()); - m_widget = new CodeStyleEditor(TextEditorSettings::codeStyleFactory(QmlJSTools::Constants::QML_JS_SETTINGS_ID), - m_pageTabPreferences, parent); - + if (!m_widget) { + TextEditor::SimpleCodeStylePreferences *originalTabPreferences + = QmlJSToolsSettings::globalCodeStyle(); + m_pageTabPreferences = new TextEditor::SimpleCodeStylePreferences(m_widget); + m_pageTabPreferences->setDelegatingPool(originalTabPreferences->delegatingPool()); + m_pageTabPreferences->setTabSettings(originalTabPreferences->tabSettings()); + m_pageTabPreferences->setCurrentDelegate(originalTabPreferences->currentDelegate()); + m_pageTabPreferences->setId(originalTabPreferences->id()); + m_widget = new CodeStyleEditor(TextEditorSettings::codeStyleFactory(QmlJSTools::Constants::QML_JS_SETTINGS_ID), + m_pageTabPreferences); + } return m_widget; } @@ -203,9 +193,9 @@ void QmlJSCodeStyleSettingsPage::apply() } } -bool QmlJSCodeStyleSettingsPage::matches(const QString &s) const +void QmlJSCodeStyleSettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } } // namespace Internal diff --git a/src/plugins/qmljstools/qmljscodestylesettingspage.h b/src/plugins/qmljstools/qmljscodestylesettingspage.h index 7f95bd654a0..53b78e9cb2a 100644 --- a/src/plugins/qmljstools/qmljscodestylesettingspage.h +++ b/src/plugins/qmljstools/qmljscodestylesettingspage.h @@ -61,7 +61,6 @@ public: ~QmlJSCodeStylePreferencesWidget(); void setPreferences(TextEditor::ICodeStylePreferences *preferences); - QString searchKeywords() const; private slots: void decorateEditor(const TextEditor::FontSettings &fontSettings); @@ -82,13 +81,11 @@ class QmlJSCodeStyleSettingsPage : public Core::IOptionsPage public: explicit QmlJSCodeStyleSettingsPage(QWidget *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &) const; + void finish(); private: - QString m_searchKeywords; TextEditor::ICodeStylePreferences *m_pageTabPreferences; QPointer m_widget; }; diff --git a/src/plugins/qnx/blackberrykeyspage.cpp b/src/plugins/qnx/blackberrykeyspage.cpp index 39493bf5a00..37d5f7c2d06 100644 --- a/src/plugins/qnx/blackberrykeyspage.cpp +++ b/src/plugins/qnx/blackberrykeyspage.cpp @@ -51,9 +51,10 @@ BlackBerryKeysPage::BlackBerryKeysPage(QObject *parent) : Constants::QNX_BB_CATEGORY_TR)); } -QWidget *BlackBerryKeysPage::createPage(QWidget *parent) +QWidget *BlackBerryKeysPage::widget() { - m_widget = new BlackBerryKeysWidget(parent); + if (!m_widget) + m_widget = new BlackBerryKeysWidget; return m_widget; } @@ -63,6 +64,7 @@ void BlackBerryKeysPage::apply() void BlackBerryKeysPage::finish() { + delete m_widget; } } // namespace Internal diff --git a/src/plugins/qnx/blackberrykeyspage.h b/src/plugins/qnx/blackberrykeyspage.h index 27e4423305d..945ed46f9aa 100644 --- a/src/plugins/qnx/blackberrykeyspage.h +++ b/src/plugins/qnx/blackberrykeyspage.h @@ -34,6 +34,8 @@ #include +#include + namespace Qnx { namespace Internal { @@ -44,12 +46,12 @@ class BlackBerryKeysPage : public Core::IOptionsPage Q_OBJECT public: explicit BlackBerryKeysPage(QObject *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); private: - BlackBerryKeysWidget *m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/qnx/blackberryndksettingspage.cpp b/src/plugins/qnx/blackberryndksettingspage.cpp index 5a98414d722..d43758f6692 100644 --- a/src/plugins/qnx/blackberryndksettingspage.cpp +++ b/src/plugins/qnx/blackberryndksettingspage.cpp @@ -52,9 +52,10 @@ BlackBerryNDKSettingsPage::BlackBerryNDKSettingsPage(QObject *parent) : setCategoryIcon(QLatin1String(Constants::QNX_BB_CATEGORY_ICON)); } -QWidget *BlackBerryNDKSettingsPage::createPage(QWidget *parent) +QWidget *BlackBerryNDKSettingsPage::widget() { - m_widget = new BlackBerryNDKSettingsWidget(parent); + if (!m_widget) + m_widget = new BlackBerryNDKSettingsWidget; return m_widget; } @@ -73,6 +74,7 @@ void BlackBerryNDKSettingsPage::apply() void BlackBerryNDKSettingsPage::finish() { + delete m_widget; } } // namespace Internal diff --git a/src/plugins/qnx/blackberryndksettingspage.h b/src/plugins/qnx/blackberryndksettingspage.h index 4e2de119e10..0f82480f5aa 100644 --- a/src/plugins/qnx/blackberryndksettingspage.h +++ b/src/plugins/qnx/blackberryndksettingspage.h @@ -34,6 +34,8 @@ #include +#include + namespace Qnx { namespace Internal { @@ -44,12 +46,12 @@ class BlackBerryNDKSettingsPage : public Core::IOptionsPage Q_OBJECT public: explicit BlackBerryNDKSettingsPage(QObject *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); private: - BlackBerryNDKSettingsWidget *m_widget; + QPointer m_widget; }; } // namespace Internal diff --git a/src/plugins/qtsupport/qtoptionspage.cpp b/src/plugins/qtsupport/qtoptionspage.cpp index 8ac4570e4f9..e993f3c8fed 100644 --- a/src/plugins/qtsupport/qtoptionspage.cpp +++ b/src/plugins/qtsupport/qtoptionspage.cpp @@ -75,11 +75,10 @@ QtOptionsPage::QtOptionsPage() setCategoryIcon(QLatin1String(ProjectExplorer::Constants::PROJECTEXPLORER_SETTINGS_CATEGORY_ICON)); } -QWidget *QtOptionsPage::createPage(QWidget *parent) +QWidget *QtOptionsPage::widget() { - m_widget = new QtOptionsPageWidget(parent); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) + m_widget = new QtOptionsPageWidget; return m_widget; } @@ -92,9 +91,9 @@ void QtOptionsPage::apply() m_widget->apply(); } -bool QtOptionsPage::matches(const QString &s) const +void QtOptionsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } //----------------------------------------------------- @@ -1010,19 +1009,5 @@ QList QtOptionsPageWidget::versions() const return result; } -QString QtOptionsPageWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream ts(&rc); - ts << sep << m_versionUi->versionNameLabel->text() - << sep << m_versionUi->pathLabel->text() - << sep << m_debuggingHelperUi->gdbHelperLabel->text() - << sep << m_debuggingHelperUi->qmlDumpLabel->text(); - - rc.remove(QLatin1Char('&')); - return rc; -} - } // namespace Internal } // namespace QtSupport diff --git a/src/plugins/qtsupport/qtoptionspage.h b/src/plugins/qtsupport/qtoptionspage.h index 5d506c3bbe9..80a740a43db 100644 --- a/src/plugins/qtsupport/qtoptionspage.h +++ b/src/plugins/qtsupport/qtoptionspage.h @@ -33,8 +33,9 @@ #include "debugginghelperbuildtask.h" #include -#include #include +#include +#include QT_BEGIN_NAMESPACE class QTreeWidgetItem; @@ -63,12 +64,11 @@ class QtOptionsPageWidget : public QWidget Q_OBJECT public: - QtOptionsPageWidget(QWidget *parent); + QtOptionsPageWidget(QWidget *parent = 0); ~QtOptionsPageWidget(); QList versions() const; void finish(); void apply(); - QString searchKeywords() const; private: void updateDescriptionLabel(); @@ -141,14 +141,12 @@ class QtOptionsPage : public Core::IOptionsPage public: QtOptionsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() {} - bool matches(const QString &) const; + void finish(); private: - QtOptionsPageWidget *m_widget; - QString m_searchKeywords; + QPointer m_widget; }; } //namespace Internal diff --git a/src/plugins/subversion/settingspage.cpp b/src/plugins/subversion/settingspage.cpp index ea5d21f04d6..80a7f6cfdb1 100644 --- a/src/plugins/subversion/settingspage.cpp +++ b/src/plugins/subversion/settingspage.cpp @@ -82,26 +82,6 @@ void SettingsPageWidget::setSettings(const SubversionSettings &s) m_ui.logCountSpinBox->setValue(s.intValue(SubversionSettings::logCountKey)); } -QString SettingsPageWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream(&rc) - << sep << m_ui.generalGroupBox->title() - << sep << m_ui.commandLabel->text() - << sep << m_ui.userGroupBox->title() - << sep << m_ui.usernameLabel->text() - << sep << m_ui.passwordLabel->text() - << sep << m_ui.miscGroupBox->title() - << sep << m_ui.logCountLabel->text() - << sep << m_ui.timeOutLabel->text() - << sep << m_ui.promptToSubmitCheckBox->text() - << sep << m_ui.spaceIgnorantAnnotationCheckBox->text() - ; - rc.remove(QLatin1Char('&')); - return rc; -} - SettingsPage::SettingsPage() : m_widget(0) { @@ -109,12 +89,12 @@ SettingsPage::SettingsPage() : setDisplayName(tr("Subversion")); } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { - m_widget = new SettingsPageWidget(parent); - m_widget->setSettings(SubversionPlugin::instance()->settings()); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_widget->searchKeywords(); + if (!m_widget) { + m_widget = new SettingsPageWidget; + m_widget->setSettings(SubversionPlugin::instance()->settings()); + } return m_widget; } @@ -123,7 +103,7 @@ void SettingsPage::apply() SubversionPlugin::instance()->setSettings(m_widget->settings()); } -bool SettingsPage::matches(const QString &s) const +void SettingsPage::finish() { - return m_searchKeywords.contains(s, Qt::CaseInsensitive); + delete m_widget; } diff --git a/src/plugins/subversion/settingspage.h b/src/plugins/subversion/settingspage.h index 71438eea733..a902ccc34bb 100644 --- a/src/plugins/subversion/settingspage.h +++ b/src/plugins/subversion/settingspage.h @@ -57,8 +57,6 @@ public: SubversionSettings settings() const; void setSettings(const SubversionSettings &); - QString searchKeywords() const; - private: Ui::SettingsPage m_ui; }; @@ -71,14 +69,12 @@ class SettingsPage : public VcsBase::VcsBaseOptionsPage public: SettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &) const; + void finish(); private: - QString m_searchKeywords; - SettingsPageWidget* m_widget; + QPointer m_widget; }; } // namespace Subversion diff --git a/src/plugins/texteditor/behaviorsettingspage.cpp b/src/plugins/texteditor/behaviorsettingspage.cpp index a5a7001f0a9..b9a2bc1524b 100644 --- a/src/plugins/texteditor/behaviorsettingspage.cpp +++ b/src/plugins/texteditor/behaviorsettingspage.cpp @@ -49,6 +49,7 @@ #include #include +#include #include #include @@ -59,6 +60,7 @@ struct BehaviorSettingsPage::BehaviorSettingsPagePrivate explicit BehaviorSettingsPagePrivate(const BehaviorSettingsPageParameters &p); const BehaviorSettingsPageParameters m_parameters; + QPointer m_widget; Internal::Ui::BehaviorSettingsPage *m_page; void init(); @@ -70,8 +72,6 @@ struct BehaviorSettingsPage::BehaviorSettingsPagePrivate StorageSettings m_storageSettings; BehaviorSettings m_behaviorSettings; ExtraEncodingSettings m_extraEncodingSettings; - - QString m_searchKeywords; }; BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate @@ -114,30 +114,28 @@ BehaviorSettingsPage::~BehaviorSettingsPage() delete d; } -QWidget *BehaviorSettingsPage::createPage(QWidget *parent) +QWidget *BehaviorSettingsPage::widget() { - QWidget *w = new QWidget(parent); - d->m_page = new Internal::Ui::BehaviorSettingsPage; - d->m_page->setupUi(w); - if (Utils::HostOsInfo::isMacHost()) - d->m_page->gridLayout->setContentsMargins(-1, 0, -1, 0); // don't ask. - d->m_pageCodeStyle = new SimpleCodeStylePreferences(w); - d->m_pageCodeStyle->setDelegatingPool(d->m_codeStyle->delegatingPool()); - d->m_pageCodeStyle->setTabSettings(d->m_codeStyle->tabSettings()); - d->m_pageCodeStyle->setCurrentDelegate(d->m_codeStyle->currentDelegate()); - d->m_page->behaviorWidget->setCodeStyle(d->m_pageCodeStyle); + if (!d->m_widget) { + d->m_widget = new QWidget; + d->m_page = new Internal::Ui::BehaviorSettingsPage; + d->m_page->setupUi(d->m_widget); + if (Utils::HostOsInfo::isMacHost()) + d->m_page->gridLayout->setContentsMargins(-1, 0, -1, 0); // don't ask. + d->m_pageCodeStyle = new SimpleCodeStylePreferences(d->m_widget); + d->m_pageCodeStyle->setDelegatingPool(d->m_codeStyle->delegatingPool()); + d->m_pageCodeStyle->setTabSettings(d->m_codeStyle->tabSettings()); + d->m_pageCodeStyle->setCurrentDelegate(d->m_codeStyle->currentDelegate()); + d->m_page->behaviorWidget->setCodeStyle(d->m_pageCodeStyle); - TabSettingsWidget *tabSettingsWidget = d->m_page->behaviorWidget->tabSettingsWidget(); - tabSettingsWidget->setCodingStyleWarningVisible(true); - connect(tabSettingsWidget, SIGNAL(codingStyleLinkClicked(TextEditor::TabSettingsWidget::CodingStyleLink)), - this, SLOT(openCodingStylePreferences(TextEditor::TabSettingsWidget::CodingStyleLink))); + TabSettingsWidget *tabSettingsWidget = d->m_page->behaviorWidget->tabSettingsWidget(); + tabSettingsWidget->setCodingStyleWarningVisible(true); + connect(tabSettingsWidget, SIGNAL(codingStyleLinkClicked(TextEditor::TabSettingsWidget::CodingStyleLink)), + this, SLOT(openCodingStylePreferences(TextEditor::TabSettingsWidget::CodingStyleLink))); - settingsToUI(); - - if (d->m_searchKeywords.isEmpty()) - d->m_searchKeywords = d->m_page->behaviorWidget->collectUiKeywords(); - - return w; + settingsToUI(); + } + return d->m_widget; } void BehaviorSettingsPage::apply() @@ -227,6 +225,7 @@ void BehaviorSettingsPage::settingsToUI() void BehaviorSettingsPage::finish() { + delete d->m_widget; if (!d->m_page) // page was never shown return; delete d->m_page; @@ -263,11 +262,6 @@ const ExtraEncodingSettings &BehaviorSettingsPage::extraEncodingSettings() const return d->m_extraEncodingSettings; } -bool BehaviorSettingsPage::matches(const QString &s) const -{ - return d->m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - void BehaviorSettingsPage::openCodingStylePreferences(TabSettingsWidget::CodingStyleLink link) { diff --git a/src/plugins/texteditor/behaviorsettingspage.h b/src/plugins/texteditor/behaviorsettingspage.h index ccaaaa34ef0..042c9640dcd 100644 --- a/src/plugins/texteditor/behaviorsettingspage.h +++ b/src/plugins/texteditor/behaviorsettingspage.h @@ -62,10 +62,9 @@ public: ~BehaviorSettingsPage(); // IOptionsPage - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; ICodeStylePreferences *codeStyle() const; CodeStylePool *codeStylePool() const; diff --git a/src/plugins/texteditor/behaviorsettingswidget.cpp b/src/plugins/texteditor/behaviorsettingswidget.cpp index 044b2a328db..83571a06c3e 100644 --- a/src/plugins/texteditor/behaviorsettingswidget.cpp +++ b/src/plugins/texteditor/behaviorsettingswidget.cpp @@ -223,35 +223,6 @@ void BehaviorSettingsWidget::assignedExtraEncodingSettings( (ExtraEncodingSettings::Utf8BomSetting)d->m_ui.utf8BomBox->currentIndex(); } -QString BehaviorSettingsWidget::collectUiKeywords() const -{ - static const QLatin1Char sep(' '); - QString keywords; - QTextStream(&keywords) - << sep << d->m_ui.tabPreferencesWidget->searchKeywords() - << sep << d->m_ui.autoIndent->text() - << sep << d->m_ui.smartBackspaceLabel->text() - << sep << d->m_ui.tabKeyBehaviorLabel->text() - << sep << d->m_ui.cleanWhitespace->text() - << sep << d->m_ui.inEntireDocument->text() - << sep << d->m_ui.cleanIndentation->text() - << sep << d->m_ui.addFinalNewLine->text() - << sep << d->m_ui.encodingLabel->text() - << sep << d->m_ui.utf8BomLabel->text() - << sep << d->m_ui.mouseNavigation->text() - << sep << d->m_ui.scrollWheelZooming->text() - << sep << d->m_ui.helpTooltipsLabel->text() - << sep << d->m_ui.constrainTooltipsBox->itemText(0) - << sep << d->m_ui.constrainTooltipsBox->itemText(1) - << sep << d->m_ui.camelCaseNavigation->text() - << sep << d->m_ui.keyboardTooltips->text() - << sep << d->m_ui.groupBoxStorageSettings->title() - << sep << d->m_ui.groupBoxEncodings->title() - << sep << d->m_ui.groupBoxMouse->title(); - keywords.remove(QLatin1Char('&')); - return keywords; -} - TabSettingsWidget *BehaviorSettingsWidget::tabSettingsWidget() const { return d->m_ui.tabPreferencesWidget->tabSettingsWidget(); diff --git a/src/plugins/texteditor/behaviorsettingswidget.h b/src/plugins/texteditor/behaviorsettingswidget.h index 7fe303da225..50420bfaca2 100644 --- a/src/plugins/texteditor/behaviorsettingswidget.h +++ b/src/plugins/texteditor/behaviorsettingswidget.h @@ -76,8 +76,6 @@ public: void setAssignedExtraEncodingSettings(const ExtraEncodingSettings &encodingSettings); void assignedExtraEncodingSettings(ExtraEncodingSettings *encodingSettings) const; - QString collectUiKeywords() const; - TabSettingsWidget *tabSettingsWidget() const; signals: diff --git a/src/plugins/texteditor/displaysettingspage.cpp b/src/plugins/texteditor/displaysettingspage.cpp index b5470e8ea08..010c4f9c9ee 100644 --- a/src/plugins/texteditor/displaysettingspage.cpp +++ b/src/plugins/texteditor/displaysettingspage.cpp @@ -33,6 +33,7 @@ #include +#include #include using namespace TextEditor; @@ -42,9 +43,9 @@ struct DisplaySettingsPage::DisplaySettingsPagePrivate explicit DisplaySettingsPagePrivate(const DisplaySettingsPageParameters &p); const DisplaySettingsPageParameters m_parameters; + QPointer m_widget; Internal::Ui::DisplaySettingsPage *m_page; DisplaySettings m_displaySettings; - QString m_searchKeywords; }; DisplaySettingsPage::DisplaySettingsPagePrivate::DisplaySettingsPagePrivate @@ -68,28 +69,15 @@ DisplaySettingsPage::~DisplaySettingsPage() delete d; } -QWidget *DisplaySettingsPage::createPage(QWidget *parent) +QWidget *DisplaySettingsPage::widget() { - QWidget *w = new QWidget(parent); - d->m_page = new Internal::Ui::DisplaySettingsPage; - d->m_page->setupUi(w); - settingsToUI(); - if (d->m_searchKeywords.isEmpty()) { - QTextStream(&d->m_searchKeywords) << d->m_page->displayLineNumbers->text() - << ' ' << d->m_page->highlightCurrentLine->text() - << ' ' << d->m_page->displayFoldingMarkers->text() - << ' ' << d->m_page->highlightBlocks->text() - << ' ' << d->m_page->visualizeWhitespace->text() - << ' ' << d->m_page->animateMatchingParentheses->text() - << ' ' << d->m_page->highlightMatchingParentheses->text() - << ' ' << d->m_page->enableTextWrapping->text() - << ' ' << d->m_page->autoFoldFirstComment->text() - << ' ' << d->m_page->centerOnScroll->text() - << ' ' << d->m_page->openLinksInNextSplit->text() - << ' ' << d->m_page->displayFileEncoding->text(); - d->m_searchKeywords.remove(QLatin1Char('&')); + if (!d->m_widget) { + d->m_widget = new QWidget; + d->m_page = new Internal::Ui::DisplaySettingsPage; + d->m_page->setupUi(d->m_widget); + settingsToUI(); } - return w; + return d->m_widget; } void DisplaySettingsPage::apply() @@ -104,6 +92,7 @@ void DisplaySettingsPage::apply() void DisplaySettingsPage::finish() { + delete d->m_widget; if (!d->m_page) // page was never shown return; delete d->m_page; @@ -163,8 +152,3 @@ void DisplaySettingsPage::setDisplaySettings(const DisplaySettings &newDisplaySe emit displaySettingsChanged(newDisplaySettings); } } - -bool DisplaySettingsPage::matches(const QString &s) const -{ - return d->m_searchKeywords.contains(s, Qt::CaseInsensitive); -} diff --git a/src/plugins/texteditor/displaysettingspage.h b/src/plugins/texteditor/displaysettingspage.h index 802e303277d..54f08259e3f 100644 --- a/src/plugins/texteditor/displaysettingspage.h +++ b/src/plugins/texteditor/displaysettingspage.h @@ -55,10 +55,9 @@ public: ~DisplaySettingsPage(); // IOptionsPage - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; const DisplaySettings &displaySettings() const; diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index e3cd7e496aa..a5bd1463164 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -36,14 +36,15 @@ #include #include -#include -#include -#include #include #include #include #include #include +#include +#include +#include +#include namespace TextEditor { namespace Internal { @@ -122,10 +123,10 @@ public: TextEditor::FormatDescriptions m_descriptions; FontSettings m_value; FontSettings m_lastValue; + QPointer m_widget; Ui::FontSettingsPage *m_ui; SchemeListModel *m_schemeListModel; bool m_refreshingSchemeList; - QString m_searchKeywords; }; } // namespace Internal @@ -326,49 +327,40 @@ FontSettingsPage::~FontSettingsPage() delete d_ptr; } -QWidget *FontSettingsPage::createPage(QWidget *parent) +QWidget *FontSettingsPage::widget() { - QWidget *w = new QWidget(parent); - d_ptr->m_ui = new Ui::FontSettingsPage; - d_ptr->m_ui->setupUi(w); - d_ptr->m_ui->schemeComboBox->setModel(d_ptr->m_schemeListModel); + if (!d_ptr->m_widget){ + d_ptr->m_widget = new QWidget; + d_ptr->m_ui = new Ui::FontSettingsPage; + d_ptr->m_ui->setupUi(d_ptr->m_widget); + d_ptr->m_ui->schemeComboBox->setModel(d_ptr->m_schemeListModel); - QFontDatabase db; - const QStringList families = db.families(); - d_ptr->m_ui->familyComboBox->addItems(families); - const int idx = families.indexOf(d_ptr->m_value.family()); - d_ptr->m_ui->familyComboBox->setCurrentIndex(idx); + QFontDatabase db; + const QStringList families = db.families(); + d_ptr->m_ui->familyComboBox->addItems(families); + const int idx = families.indexOf(d_ptr->m_value.family()); + d_ptr->m_ui->familyComboBox->setCurrentIndex(idx); - d_ptr->m_ui->antialias->setChecked(d_ptr->m_value.antialias()); - d_ptr->m_ui->zoomSpinBox->setValue(d_ptr->m_value.fontZoom()); + d_ptr->m_ui->antialias->setChecked(d_ptr->m_value.antialias()); + d_ptr->m_ui->zoomSpinBox->setValue(d_ptr->m_value.fontZoom()); - d_ptr->m_ui->schemeEdit->setFormatDescriptions(d_ptr->m_descriptions); - d_ptr->m_ui->schemeEdit->setBaseFont(d_ptr->m_value.font()); - d_ptr->m_ui->schemeEdit->setColorScheme(d_ptr->m_value.colorScheme()); + d_ptr->m_ui->schemeEdit->setFormatDescriptions(d_ptr->m_descriptions); + d_ptr->m_ui->schemeEdit->setBaseFont(d_ptr->m_value.font()); + d_ptr->m_ui->schemeEdit->setColorScheme(d_ptr->m_value.colorScheme()); - connect(d_ptr->m_ui->familyComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontFamilySelected(QString))); - connect(d_ptr->m_ui->sizeComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontSizeSelected(QString))); - connect(d_ptr->m_ui->zoomSpinBox, SIGNAL(valueChanged(int)), this, SLOT(fontZoomChanged())); - connect(d_ptr->m_ui->schemeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(colorSchemeSelected(int))); - connect(d_ptr->m_ui->copyButton, SIGNAL(clicked()), this, SLOT(copyColorScheme())); - connect(d_ptr->m_ui->deleteButton, SIGNAL(clicked()), this, SLOT(confirmDeleteColorScheme())); + connect(d_ptr->m_ui->familyComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontFamilySelected(QString))); + connect(d_ptr->m_ui->sizeComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontSizeSelected(QString))); + connect(d_ptr->m_ui->zoomSpinBox, SIGNAL(valueChanged(int)), this, SLOT(fontZoomChanged())); + connect(d_ptr->m_ui->schemeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(colorSchemeSelected(int))); + connect(d_ptr->m_ui->copyButton, SIGNAL(clicked()), this, SLOT(copyColorScheme())); + connect(d_ptr->m_ui->deleteButton, SIGNAL(clicked()), this, SLOT(confirmDeleteColorScheme())); - updatePointSizes(); - refreshColorSchemeList(); - d_ptr->m_lastValue = d_ptr->m_value; - if (d_ptr->m_searchKeywords.isEmpty()) { - QLatin1Char sep(' '); - d_ptr->m_searchKeywords = - d_ptr->m_ui->fontGroupBox->title() + sep - + d_ptr->m_ui->familyLabel->text() + sep - + d_ptr->m_ui->sizeLabel->text() + sep - + d_ptr->m_ui->zoomLabel->text() + sep - + d_ptr->m_ui->antialias->text() + sep - + d_ptr->m_ui->colorSchemeGroupBox->title(); - d_ptr->m_searchKeywords.remove(QLatin1Char('&')); + updatePointSizes(); + refreshColorSchemeList(); + d_ptr->m_lastValue = d_ptr->m_value; } - return w; + return d_ptr->m_widget; } void FontSettingsPage::fontFamilySelected(const QString &family) @@ -630,6 +622,7 @@ void FontSettingsPage::saveSettings() void FontSettingsPage::finish() { + delete d_ptr->m_widget; if (!d_ptr->m_ui) // page was never shown return; // If changes were applied, these are equal. Otherwise restores last value. @@ -642,8 +635,3 @@ const FontSettings &FontSettingsPage::fontSettings() const { return d_ptr->m_value; } - -bool FontSettingsPage::matches(const QString &s) const -{ - return d_ptr->m_searchKeywords.contains(s, Qt::CaseInsensitive); -} diff --git a/src/plugins/texteditor/fontsettingspage.h b/src/plugins/texteditor/fontsettingspage.h index 3870904cd27..a5b9f6057f1 100644 --- a/src/plugins/texteditor/fontsettingspage.h +++ b/src/plugins/texteditor/fontsettingspage.h @@ -92,10 +92,9 @@ public: ~FontSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &) const; void saveSettings(); diff --git a/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp b/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp index 637a580434a..3aba87e3ad7 100644 --- a/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp +++ b/src/plugins/texteditor/generichighlighter/highlightersettingspage.cpp @@ -36,6 +36,7 @@ #include #include +#include using namespace TextEditor; using namespace Internal; @@ -50,10 +51,9 @@ struct HighlighterSettingsPage::HighlighterSettingsPagePrivate const QString m_displayName; const QString m_settingsPrefix; - QString m_searchKeywords; - HighlighterSettings m_settings; + QPointer m_widget; Ui::HighlighterSettingsPage *m_page; }; @@ -88,36 +88,30 @@ HighlighterSettingsPage::~HighlighterSettingsPage() delete m_d; } -QWidget *HighlighterSettingsPage::createPage(QWidget *parent) +QWidget *HighlighterSettingsPage::widget() { - QWidget *w = new QWidget(parent); - m_d->m_page = new Ui::HighlighterSettingsPage; - m_d->m_page->setupUi(w); - m_d->m_page->definitionFilesPath->setExpectedKind(Utils::PathChooser::ExistingDirectory); - m_d->m_page->definitionFilesPath->setHistoryCompleter(QLatin1String("TextEditor.Highlighter.History")); - m_d->m_page->definitionFilesPath->addButton(tr("Download Definitions..."), this, - SLOT(requestAvailableDefinitionsMetaData())); - m_d->m_page->fallbackDefinitionFilesPath->setExpectedKind(Utils::PathChooser::ExistingDirectory); - m_d->m_page->fallbackDefinitionFilesPath->setHistoryCompleter(QLatin1String("TextEditor.Highlighter.History")); - m_d->m_page->fallbackDefinitionFilesPath->addButton(tr("Autodetect"), this, - SLOT(resetDefinitionsLocation())); + if (!m_d->m_widget) { + m_d->m_widget = new QWidget; + m_d->m_page = new Ui::HighlighterSettingsPage; + m_d->m_page->setupUi(m_d->m_widget); + m_d->m_page->definitionFilesPath->setExpectedKind(Utils::PathChooser::ExistingDirectory); + m_d->m_page->definitionFilesPath->setHistoryCompleter(QLatin1String("TextEditor.Highlighter.History")); + m_d->m_page->definitionFilesPath->addButton(tr("Download Definitions..."), this, + SLOT(requestAvailableDefinitionsMetaData())); + m_d->m_page->fallbackDefinitionFilesPath->setExpectedKind(Utils::PathChooser::ExistingDirectory); + m_d->m_page->fallbackDefinitionFilesPath->setHistoryCompleter(QLatin1String("TextEditor.Highlighter.History")); + m_d->m_page->fallbackDefinitionFilesPath->addButton(tr("Autodetect"), this, + SLOT(resetDefinitionsLocation())); - settingsToUI(); + settingsToUI(); - if (m_d->m_searchKeywords.isEmpty()) { - QTextStream(&m_d->m_searchKeywords) << m_d->m_page->definitionFilesGroupBox->title() - << m_d->m_page->locationLabel->text() - << m_d->m_page->useFallbackLocation->text() - << m_d->m_page->ignoreLabel->text(); + connect(m_d->m_page->useFallbackLocation, SIGNAL(clicked(bool)), + this, SLOT(setFallbackLocationState(bool))); + connect(m_d->m_page->definitionFilesPath, SIGNAL(validChanged(bool)), + this, SLOT(setDownloadDefinitionsState(bool))); + connect(m_d->m_widget, SIGNAL(destroyed()), this, SLOT(ignoreDownloadReply())); } - - connect(m_d->m_page->useFallbackLocation, SIGNAL(clicked(bool)), - this, SLOT(setFallbackLocationState(bool))); - connect(m_d->m_page->definitionFilesPath, SIGNAL(validChanged(bool)), - this, SLOT(setDownloadDefinitionsState(bool))); - connect(w, SIGNAL(destroyed()), this, SLOT(ignoreDownloadReply())); - - return w; + return m_d->m_widget; } void HighlighterSettingsPage::apply() @@ -135,17 +129,13 @@ void HighlighterSettingsPage::apply() void HighlighterSettingsPage::finish() { + delete m_d->m_widget; if (!m_d->m_page) // page was not shown return; delete m_d->m_page; m_d->m_page = 0; } -bool HighlighterSettingsPage::matches(const QString &s) const -{ - return m_d->m_searchKeywords.contains(s, Qt::CaseInsensitive); -} - const HighlighterSettings &HighlighterSettingsPage::highlighterSettings() const { m_d->ensureInitialized(); diff --git a/src/plugins/texteditor/generichighlighter/highlightersettingspage.h b/src/plugins/texteditor/generichighlighter/highlightersettingspage.h index 770ef4c4cf1..ef72878b48f 100644 --- a/src/plugins/texteditor/generichighlighter/highlightersettingspage.h +++ b/src/plugins/texteditor/generichighlighter/highlightersettingspage.h @@ -52,10 +52,9 @@ public: HighlighterSettingsPage(Core::Id id, QObject *parent); ~HighlighterSettingsPage(); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &s) const; const HighlighterSettings &highlighterSettings() const; diff --git a/src/plugins/texteditor/simplecodestylepreferenceswidget.cpp b/src/plugins/texteditor/simplecodestylepreferenceswidget.cpp index 072a8a25f4b..f143c249d43 100644 --- a/src/plugins/texteditor/simplecodestylepreferenceswidget.cpp +++ b/src/plugins/texteditor/simplecodestylepreferenceswidget.cpp @@ -94,11 +94,6 @@ void SimpleCodeStylePreferencesWidget::slotTabSettingsChanged(const TextEditor:: current->setTabSettings(settings); } -QString SimpleCodeStylePreferencesWidget::searchKeywords() const -{ - return m_tabSettingsWidget->searchKeywords(); -} - void SimpleCodeStylePreferencesWidget::setFlat(bool on) { m_tabSettingsWidget->setFlat(on); diff --git a/src/plugins/texteditor/simplecodestylepreferenceswidget.h b/src/plugins/texteditor/simplecodestylepreferenceswidget.h index 2ba5a38d36c..776da7a75be 100644 --- a/src/plugins/texteditor/simplecodestylepreferenceswidget.h +++ b/src/plugins/texteditor/simplecodestylepreferenceswidget.h @@ -52,7 +52,6 @@ public: explicit SimpleCodeStylePreferencesWidget(QWidget *parent = 0); void setPreferences(ICodeStylePreferences *tabPreferences); - QString searchKeywords() const; void setFlat(bool on); TabSettingsWidget *tabSettingsWidget() const; diff --git a/src/plugins/texteditor/snippets/snippetssettingspage.cpp b/src/plugins/texteditor/snippets/snippetssettingspage.cpp index c59d510f325..88bb429c3eb 100644 --- a/src/plugins/texteditor/snippets/snippetssettingspage.cpp +++ b/src/plugins/texteditor/snippets/snippetssettingspage.cpp @@ -39,11 +39,12 @@ #include #include -#include #include #include -#include #include +#include +#include +#include namespace TextEditor { namespace Internal { @@ -269,12 +270,13 @@ public: Core::Id id() const { return m_id; } const QString &displayName() const { return m_displayName; } - bool isKeyword(const QString &s) const { return m_keywords.contains(s, Qt::CaseInsensitive); } void configureUi(QWidget *parent); void apply(); void finish(); + QPointer m_widget; + private slots: void loadSnippetGroup(int index); void markSnippetsCollection(); @@ -302,7 +304,6 @@ private: const QString m_settingsPrefix; SnippetsTableModel *m_model; bool m_snippetsCollectionChanged; - QString m_keywords; SnippetsSettings m_settings; Ui::SnippetsSettingsPage m_ui; }; @@ -350,8 +351,6 @@ void SnippetsSettingsPagePrivate::configureUi(QWidget *w) m_ui.revertButton->setEnabled(false); - QTextStream(&m_keywords) << m_displayName; - loadSettings(); loadSnippetGroup(m_ui.groupCombo->currentIndex()); @@ -566,16 +565,13 @@ SnippetsSettingsPage::~SnippetsSettingsPage() delete d; } -bool SnippetsSettingsPage::matches(const QString &s) const +QWidget *SnippetsSettingsPage::widget() { - return d->isKeyword(s); -} - -QWidget *SnippetsSettingsPage::createPage(QWidget *parent) -{ - QWidget *w = new QWidget(parent); - d->configureUi(w); - return w; + if (!d->m_widget) { + d->m_widget = new QWidget; + d->configureUi(d->m_widget); + } + return d->m_widget; } void SnippetsSettingsPage::apply() @@ -586,6 +582,7 @@ void SnippetsSettingsPage::apply() void SnippetsSettingsPage::finish() { d->finish(); + delete d->m_widget; } } // Internal diff --git a/src/plugins/texteditor/snippets/snippetssettingspage.h b/src/plugins/texteditor/snippets/snippetssettingspage.h index 04737b71d3b..154dbd670ce 100644 --- a/src/plugins/texteditor/snippets/snippetssettingspage.h +++ b/src/plugins/texteditor/snippets/snippetssettingspage.h @@ -45,8 +45,7 @@ public: SnippetsSettingsPage(Core::Id id, QObject *parent); ~SnippetsSettingsPage(); - bool matches(const QString &s) const; - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); diff --git a/src/plugins/texteditor/tabsettingswidget.cpp b/src/plugins/texteditor/tabsettingswidget.cpp index 2ce5756437e..3f36eef3757 100644 --- a/src/plugins/texteditor/tabsettingswidget.cpp +++ b/src/plugins/texteditor/tabsettingswidget.cpp @@ -101,21 +101,6 @@ void TabSettingsWidget::setFlat(bool on) ui->tabsAndIndentationGroupBox->layout()->setContentsMargins(margin, -1, margin, margin); } -QString TabSettingsWidget::searchKeywords() const -{ - QString rc; - QLatin1Char sep(' '); - QTextStream(&rc) - << sep << ui->tabsAndIndentationGroupBox->title() - << sep << ui->tabPolicyLabel->text() - << sep << ui->tabSizeLabel->text() - << sep << ui->indentSizeLabel->text() - << sep << ui->continuationAlignBehaviorLabel->text() - ; - rc.remove(QLatin1Char('&')); - return rc; -} - void TabSettingsWidget::setCodingStyleWarningVisible(bool visible) { ui->codingStyleWarning->setVisible(visible); diff --git a/src/plugins/texteditor/tabsettingswidget.h b/src/plugins/texteditor/tabsettingswidget.h index 802a7933ca9..41a490f7831 100644 --- a/src/plugins/texteditor/tabsettingswidget.h +++ b/src/plugins/texteditor/tabsettingswidget.h @@ -56,7 +56,6 @@ public: TabSettings tabSettings() const; void setFlat(bool on); - QString searchKeywords() const; void setCodingStyleWarningVisible(bool visible); public slots: diff --git a/src/plugins/todo/optionspage.cpp b/src/plugins/todo/optionspage.cpp index 5200853756d..d1b0da3dabe 100644 --- a/src/plugins/todo/optionspage.cpp +++ b/src/plugins/todo/optionspage.cpp @@ -45,7 +45,7 @@ namespace Internal { OptionsPage::OptionsPage(const Settings &settings, QObject *parent) : IOptionsPage(parent), - m_dialog(0) + m_widget(0) { setSettings(settings); @@ -61,16 +61,18 @@ void OptionsPage::setSettings(const Settings &settings) m_settings = settings; } -QWidget *OptionsPage::createPage(QWidget *parent) +QWidget *OptionsPage::widget() { - m_dialog = new OptionsDialog(parent); - m_dialog->setSettings(m_settings); - return m_dialog; + if (!m_widget) { + m_widget = new OptionsDialog; + m_widget->setSettings(m_settings); + } + return m_widget; } void OptionsPage::apply() { - Settings newSettings = m_dialog->settings(); + Settings newSettings = m_widget->settings(); if (newSettings != m_settings) { m_settings = newSettings; @@ -80,11 +82,7 @@ void OptionsPage::apply() void OptionsPage::finish() { -} - -bool OptionsPage::matches(const QString &searchKeyWord) const -{ - return searchKeyWord == QLatin1String("todo"); + delete m_widget; } } // namespace Internal diff --git a/src/plugins/todo/optionspage.h b/src/plugins/todo/optionspage.h index 601a15642ad..a4d989ab6ad 100644 --- a/src/plugins/todo/optionspage.h +++ b/src/plugins/todo/optionspage.h @@ -35,6 +35,8 @@ #include +#include + namespace Todo { namespace Internal { @@ -49,16 +51,15 @@ public: void setSettings(const Settings &settings); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &searchKeyWord) const; signals: void settingsChanged(const Settings &settings); private: - OptionsDialog *m_dialog; + QPointer m_widget; Settings m_settings; }; diff --git a/src/plugins/updateinfo/settingspage.cpp b/src/plugins/updateinfo/settingspage.cpp index 2125baad617..b6d0de60c54 100644 --- a/src/plugins/updateinfo/settingspage.cpp +++ b/src/plugins/updateinfo/settingspage.cpp @@ -36,7 +36,7 @@ using namespace UpdateInfo; using namespace UpdateInfo::Internal; SettingsPage::SettingsPage(UpdateInfoPlugin *plugin) - : m_page(0) + : m_widget(0) , m_plugin(plugin) { setId(Constants::FILTER_OPTIONS_PAGE); @@ -46,15 +46,15 @@ SettingsPage::SettingsPage(UpdateInfoPlugin *plugin) setDisplayCategory(QCoreApplication::translate("Core", Core::Constants::SETTINGS_TR_CATEGORY_CORE)); } -QWidget *SettingsPage::createPage(QWidget *parent) +QWidget *SettingsPage::widget() { - m_page = new QWidget(parent); - m_ui.setupUi(m_page); - if (m_searchKeywords.isEmpty()) - m_searchKeywords = m_ui.m_info->text(); - m_ui.m_timeTable->setItemText(m_ui.m_timeTable->currentIndex(), QTime(m_plugin->scheduledUpdateTime()) - .toString(QLatin1String("hh:mm"))); - return m_page; + if (!m_widget) { + m_widget = new QWidget; + m_ui.setupUi(m_widget); + m_ui.m_timeTable->setItemText(m_ui.m_timeTable->currentIndex(), QTime(m_plugin->scheduledUpdateTime()) + .toString(QLatin1String("hh:mm"))); + } + return m_widget; } void SettingsPage::apply() @@ -66,9 +66,5 @@ void SettingsPage::apply() void SettingsPage::finish() { -} - -bool SettingsPage::matches(const QString &searchKey) const -{ - return m_searchKeywords.contains(searchKey, Qt::CaseInsensitive); + delete m_widget; } diff --git a/src/plugins/updateinfo/settingspage.h b/src/plugins/updateinfo/settingspage.h index 9806eafb431..dc8ded50b29 100644 --- a/src/plugins/updateinfo/settingspage.h +++ b/src/plugins/updateinfo/settingspage.h @@ -34,6 +34,8 @@ #include +#include + namespace UpdateInfo { namespace Internal { @@ -46,15 +48,13 @@ class SettingsPage : public Core::IOptionsPage public: explicit SettingsPage(UpdateInfoPlugin *plugin); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); void finish(); - bool matches(const QString &searchKey) const; private: - QWidget *m_page; + QPointer m_widget; Ui::SettingsWidget m_ui; - QString m_searchKeywords; UpdateInfoPlugin *m_plugin; }; diff --git a/src/plugins/valgrind/valgrindplugin.cpp b/src/plugins/valgrind/valgrindplugin.cpp index 3cef9593ea4..90b4694f2b6 100644 --- a/src/plugins/valgrind/valgrindplugin.cpp +++ b/src/plugins/valgrind/valgrindplugin.cpp @@ -52,6 +52,7 @@ #include #include +#include using namespace Analyzer; @@ -72,14 +73,25 @@ public: setCategoryIcon(QLatin1String(":/images/analyzer_category.png")); } - QWidget *createPage(QWidget *parent) { - return new ValgrindConfigWidget(theGlobalSettings, parent, true); + QWidget *widget() + { + if (!m_widget) + m_widget = new ValgrindConfigWidget(theGlobalSettings, 0, true); + return m_widget; } - void apply() { + void apply() + { theGlobalSettings->writeSettings(); } - void finish() {} + + void finish() + { + delete m_widget; + } + +private: + QPointer m_widget; }; class ValgrindAction : public AnalyzerAction diff --git a/src/plugins/vcsbase/commonsettingspage.cpp b/src/plugins/vcsbase/commonsettingspage.cpp index aeffd6e7da5..e280ed53005 100644 --- a/src/plugins/vcsbase/commonsettingspage.cpp +++ b/src/plugins/vcsbase/commonsettingspage.cpp @@ -115,12 +115,12 @@ CommonOptionsPage::CommonOptionsPage(QObject *parent) : setDisplayName(QCoreApplication::translate("VcsBase", Constants::VCS_COMMON_SETTINGS_NAME)); } -QWidget *CommonOptionsPage::createPage(QWidget *parent) +QWidget *CommonOptionsPage::widget() { - m_widget = new CommonSettingsWidget(parent); - m_widget->setSettings(m_settings); - if (m_searchKeyWords.isEmpty()) - m_searchKeyWords = m_widget->searchKeyWordMatchString(); + if (!m_widget) { + m_widget = new CommonSettingsWidget; + m_widget->setSettings(m_settings); + } return m_widget; } @@ -136,9 +136,9 @@ void CommonOptionsPage::apply() } } -bool CommonOptionsPage::matches(const QString &key) const +void CommonOptionsPage::finish() { - return m_searchKeyWords.contains(key, Qt::CaseInsensitive); + delete m_widget; } } // namespace Internal diff --git a/src/plugins/vcsbase/commonsettingspage.h b/src/plugins/vcsbase/commonsettingspage.h index e0d0b1e45bd..7fa0768c8b4 100644 --- a/src/plugins/vcsbase/commonsettingspage.h +++ b/src/plugins/vcsbase/commonsettingspage.h @@ -34,6 +34,7 @@ #include "vcsbaseoptionspage.h" +#include #include namespace VcsBase { @@ -65,10 +66,9 @@ class CommonOptionsPage : public VcsBaseOptionsPage public: explicit CommonOptionsPage(QObject *parent = 0); - QWidget *createPage(QWidget *parent); + QWidget *widget(); void apply(); - void finish() { } - bool matches(const QString &key) const; + void finish(); CommonVcsSettings settings() const { return m_settings; } @@ -76,9 +76,8 @@ signals: void settingsChanged(const VcsBase::Internal::CommonVcsSettings &s); private: - CommonSettingsWidget *m_widget; + QPointer m_widget; CommonVcsSettings m_settings; - QString m_searchKeyWords; }; } // namespace Internal