diff options
author | con <qtc-committer@nokia.com> | 2010-12-02 18:28:16 +0100 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2010-12-06 11:18:58 +0100 |
commit | 773343f396adb765e3b1837b3d961045e2a10056 (patch) | |
tree | f0708f1718a47185e9da54f649d42d568a08944b /src/plugins/texteditor/behaviorsettingspage.cpp | |
parent | 5c99316624d59463d24096ff5ffadd1e58e4d12e (diff) | |
download | qt-creator-773343f396adb765e3b1837b3d961045e2a10056.tar.gz |
Delay widget creation of options pages till their category is shown
Also add the alternative way: IOptionsPageProvider, which states
a category, and is asked for a list of options pages for that
category when it is shown.
Task-number: QTCREATORBUG-3131
Diffstat (limited to 'src/plugins/texteditor/behaviorsettingspage.cpp')
-rw-r--r-- | src/plugins/texteditor/behaviorsettingspage.cpp | 135 |
1 files changed, 73 insertions, 62 deletions
diff --git a/src/plugins/texteditor/behaviorsettingspage.cpp b/src/plugins/texteditor/behaviorsettingspage.cpp index 3c44039d8e..874d5a6cc7 100644 --- a/src/plugins/texteditor/behaviorsettingspage.cpp +++ b/src/plugins/texteditor/behaviorsettingspage.cpp @@ -49,7 +49,7 @@ struct BehaviorSettingsPage::BehaviorSettingsPagePrivate explicit BehaviorSettingsPagePrivate(const BehaviorSettingsPageParameters &p); const BehaviorSettingsPageParameters m_parameters; - Ui::BehaviorSettingsPage m_page; + Ui::BehaviorSettingsPage *m_page; TabSettings m_tabSettings; StorageSettings m_storageSettings; @@ -60,7 +60,7 @@ struct BehaviorSettingsPage::BehaviorSettingsPagePrivate BehaviorSettingsPage::BehaviorSettingsPagePrivate::BehaviorSettingsPagePrivate (const BehaviorSettingsPageParameters &p) - : m_parameters(p) + : m_parameters(p), m_page(0) { if (const QSettings *s = Core::ICore::instance()->settings()) { m_tabSettings.fromSettings(m_parameters.settingsPrefix, s); @@ -94,30 +94,31 @@ QString BehaviorSettingsPage::displayName() const QWidget *BehaviorSettingsPage::createPage(QWidget *parent) { QWidget *w = new QWidget(parent); - m_d->m_page.setupUi(w); + m_d->m_page = new Ui::BehaviorSettingsPage; + m_d->m_page->setupUi(w); settingsToUI(); if (m_d->m_searchKeywords.isEmpty()) { QLatin1Char sep(' '); QTextStream(&m_d->m_searchKeywords) - << m_d->m_page.insertSpaces->text() - << sep << m_d->m_page.autoInsertSpaces->text() - << sep << m_d->m_page.autoIndent->text() - << sep << m_d->m_page.smartBackspace->text() - << sep << m_d->m_page.indentBlocksLabel->text() - << sep << m_d->m_page.continuationAlignLabel->text() - << sep << m_d->m_page.tabKeyIndentLabel->text() - << sep << m_d->m_page.cleanWhitespace->text() - << sep << m_d->m_page.inEntireDocument->text() - << sep << m_d->m_page.cleanIndentation->text() - << sep << m_d->m_page.addFinalNewLine->text() - << sep << m_d->m_page.encodingLabel->text() - << sep << m_d->m_page.utf8BomLabel->text() - << sep << m_d->m_page.mouseNavigation->text() - << sep << m_d->m_page.scrollWheelZooming->text() - << sep << m_d->m_page.groupBoxTabAndIndentSettings->title() - << sep << m_d->m_page.groupBoxStorageSettings->title() - << sep << m_d->m_page.groupBoxEncodings->title() - << sep << m_d->m_page.groupBoxMouse->title(); + << m_d->m_page->insertSpaces->text() + << sep << m_d->m_page->autoInsertSpaces->text() + << sep << m_d->m_page->autoIndent->text() + << sep << m_d->m_page->smartBackspace->text() + << sep << m_d->m_page->indentBlocksLabel->text() + << sep << m_d->m_page->continuationAlignLabel->text() + << sep << m_d->m_page->tabKeyIndentLabel->text() + << sep << m_d->m_page->cleanWhitespace->text() + << sep << m_d->m_page->inEntireDocument->text() + << sep << m_d->m_page->cleanIndentation->text() + << sep << m_d->m_page->addFinalNewLine->text() + << sep << m_d->m_page->encodingLabel->text() + << sep << m_d->m_page->utf8BomLabel->text() + << sep << m_d->m_page->mouseNavigation->text() + << sep << m_d->m_page->scrollWheelZooming->text() + << sep << m_d->m_page->groupBoxTabAndIndentSettings->title() + << sep << m_d->m_page->groupBoxStorageSettings->title() + << sep << m_d->m_page->groupBoxEncodings->title() + << sep << m_d->m_page->groupBoxMouse->title(); m_d->m_searchKeywords.remove(QLatin1Char('&')); } @@ -143,18 +144,20 @@ QWidget *BehaviorSettingsPage::createPage(QWidget *parent) name += QLatin1String(" / "); name += QString::fromLatin1(alias); } - m_d->m_page.encodingBox->addItem(name); + m_d->m_page->encodingBox->addItem(name); if (defaultTextCodec == codec) - m_d->m_page.encodingBox->setCurrentIndex(i); + m_d->m_page->encodingBox->setCurrentIndex(i); } - m_d->m_page.utf8BomBox->setCurrentIndex(Core::EditorManager::instance()->utf8BomSetting()); + m_d->m_page->utf8BomBox->setCurrentIndex(Core::EditorManager::instance()->utf8BomSetting()); return w; } void BehaviorSettingsPage::apply() { + if (!m_d->m_page) // page was never shown + return; TabSettings newTabSettings; StorageSettings newStorageSettings; BehaviorSettings newBehaviorSettings; @@ -190,61 +193,69 @@ void BehaviorSettingsPage::apply() QSettings* settings = Core::ICore::instance()->settings(); settings->setValue(QLatin1String(Core::Constants::SETTINGS_DEFAULTTEXTENCODING), - m_codecs.at(m_d->m_page.encodingBox->currentIndex())->name()); + m_codecs.at(m_d->m_page->encodingBox->currentIndex())->name()); Core::EditorManager::instance()->setUtf8BomSetting( - Core::IFile::Utf8BomSetting(m_d->m_page.utf8BomBox->currentIndex())); + Core::IFile::Utf8BomSetting(m_d->m_page->utf8BomBox->currentIndex())); +} + +void BehaviorSettingsPage::finish() +{ + if (!m_d->m_page) // page was never shown + return; + delete m_d->m_page; + m_d->m_page = 0; } void BehaviorSettingsPage::settingsFromUI(TabSettings &tabSettings, StorageSettings &storageSettings, BehaviorSettings &behaviorSettings) const { - tabSettings.m_spacesForTabs = m_d->m_page.insertSpaces->isChecked(); - tabSettings.m_autoSpacesForTabs = m_d->m_page.autoInsertSpaces->isChecked(); - tabSettings.m_autoIndent = m_d->m_page.autoIndent->isChecked(); - tabSettings.m_smartBackspace = m_d->m_page.smartBackspace->isChecked(); - tabSettings.m_tabSize = m_d->m_page.tabSize->value(); - tabSettings.m_indentSize = m_d->m_page.indentSize->value(); - tabSettings.m_indentBraces = m_d->m_page.indentBlocksBehavior->currentIndex() >= 1; - tabSettings.m_doubleIndentBlocks = m_d->m_page.indentBlocksBehavior->currentIndex() >= 2; - - tabSettings.m_tabKeyBehavior = (TabSettings::TabKeyBehavior)m_d->m_page.tabKeyBehavior->currentIndex(); - tabSettings.m_continuationAlignBehavior = (TabSettings::ContinuationAlignBehavior)m_d->m_page.continuationAlignBehavior->currentIndex(); - - storageSettings.m_cleanWhitespace = m_d->m_page.cleanWhitespace->isChecked(); - storageSettings.m_inEntireDocument = m_d->m_page.inEntireDocument->isChecked(); - storageSettings.m_cleanIndentation = m_d->m_page.cleanIndentation->isChecked(); - storageSettings.m_addFinalNewLine = m_d->m_page.addFinalNewLine->isChecked(); - - behaviorSettings.m_mouseNavigation = m_d->m_page.mouseNavigation->isChecked(); - behaviorSettings.m_scrollWheelZooming = m_d->m_page.scrollWheelZooming->isChecked(); + tabSettings.m_spacesForTabs = m_d->m_page->insertSpaces->isChecked(); + tabSettings.m_autoSpacesForTabs = m_d->m_page->autoInsertSpaces->isChecked(); + tabSettings.m_autoIndent = m_d->m_page->autoIndent->isChecked(); + tabSettings.m_smartBackspace = m_d->m_page->smartBackspace->isChecked(); + tabSettings.m_tabSize = m_d->m_page->tabSize->value(); + tabSettings.m_indentSize = m_d->m_page->indentSize->value(); + tabSettings.m_indentBraces = m_d->m_page->indentBlocksBehavior->currentIndex() >= 1; + tabSettings.m_doubleIndentBlocks = m_d->m_page->indentBlocksBehavior->currentIndex() >= 2; + + tabSettings.m_tabKeyBehavior = (TabSettings::TabKeyBehavior)m_d->m_page->tabKeyBehavior->currentIndex(); + tabSettings.m_continuationAlignBehavior = (TabSettings::ContinuationAlignBehavior)m_d->m_page->continuationAlignBehavior->currentIndex(); + + storageSettings.m_cleanWhitespace = m_d->m_page->cleanWhitespace->isChecked(); + storageSettings.m_inEntireDocument = m_d->m_page->inEntireDocument->isChecked(); + storageSettings.m_cleanIndentation = m_d->m_page->cleanIndentation->isChecked(); + storageSettings.m_addFinalNewLine = m_d->m_page->addFinalNewLine->isChecked(); + + behaviorSettings.m_mouseNavigation = m_d->m_page->mouseNavigation->isChecked(); + behaviorSettings.m_scrollWheelZooming = m_d->m_page->scrollWheelZooming->isChecked(); } void BehaviorSettingsPage::settingsToUI() { const TabSettings &tabSettings = m_d->m_tabSettings; - m_d->m_page.insertSpaces->setChecked(tabSettings.m_spacesForTabs); - m_d->m_page.autoInsertSpaces->setChecked(tabSettings.m_autoSpacesForTabs); - m_d->m_page.autoIndent->setChecked(tabSettings.m_autoIndent); - m_d->m_page.smartBackspace->setChecked(tabSettings.m_smartBackspace); - m_d->m_page.tabSize->setValue(tabSettings.m_tabSize); - m_d->m_page.indentSize->setValue(tabSettings.m_indentSize); - m_d->m_page.indentBlocksBehavior->setCurrentIndex(tabSettings.m_indentBraces ? + m_d->m_page->insertSpaces->setChecked(tabSettings.m_spacesForTabs); + m_d->m_page->autoInsertSpaces->setChecked(tabSettings.m_autoSpacesForTabs); + m_d->m_page->autoIndent->setChecked(tabSettings.m_autoIndent); + m_d->m_page->smartBackspace->setChecked(tabSettings.m_smartBackspace); + m_d->m_page->tabSize->setValue(tabSettings.m_tabSize); + m_d->m_page->indentSize->setValue(tabSettings.m_indentSize); + m_d->m_page->indentBlocksBehavior->setCurrentIndex(tabSettings.m_indentBraces ? (tabSettings.m_doubleIndentBlocks ? 2 : 1) : 0); - m_d->m_page.tabKeyBehavior->setCurrentIndex(tabSettings.m_tabKeyBehavior); - m_d->m_page.continuationAlignBehavior->setCurrentIndex(tabSettings.m_continuationAlignBehavior); + m_d->m_page->tabKeyBehavior->setCurrentIndex(tabSettings.m_tabKeyBehavior); + m_d->m_page->continuationAlignBehavior->setCurrentIndex(tabSettings.m_continuationAlignBehavior); const StorageSettings &storageSettings = m_d->m_storageSettings; - m_d->m_page.cleanWhitespace->setChecked(storageSettings.m_cleanWhitespace); - m_d->m_page.inEntireDocument->setChecked(storageSettings.m_inEntireDocument); - m_d->m_page.cleanIndentation->setChecked(storageSettings.m_cleanIndentation); - m_d->m_page.addFinalNewLine->setChecked(storageSettings.m_addFinalNewLine); + m_d->m_page->cleanWhitespace->setChecked(storageSettings.m_cleanWhitespace); + m_d->m_page->inEntireDocument->setChecked(storageSettings.m_inEntireDocument); + m_d->m_page->cleanIndentation->setChecked(storageSettings.m_cleanIndentation); + m_d->m_page->addFinalNewLine->setChecked(storageSettings.m_addFinalNewLine); const BehaviorSettings &behaviorSettings = m_d->m_behaviorSettings; - m_d->m_page.mouseNavigation->setChecked(behaviorSettings.m_mouseNavigation); - m_d->m_page.scrollWheelZooming->setChecked(behaviorSettings.m_scrollWheelZooming); + m_d->m_page->mouseNavigation->setChecked(behaviorSettings.m_mouseNavigation); + m_d->m_page->scrollWheelZooming->setChecked(behaviorSettings.m_scrollWheelZooming); } const TabSettings &BehaviorSettingsPage::tabSettings() const @@ -264,5 +275,5 @@ const BehaviorSettings &BehaviorSettingsPage::behaviorSettings() const bool BehaviorSettingsPage::matches(const QString &s) const { - return m_d->m_searchKeywords.contains(s, Qt::CaseInsensitive); + return m_d->m_searchKeywords.contains(s, Qt::CaseInsensitive); } |