summaryrefslogtreecommitdiff
path: root/src/plugins/texteditor/behaviorsettingspage.cpp
diff options
context:
space:
mode:
authorcon <qtc-committer@nokia.com>2010-12-02 18:28:16 +0100
committercon <qtc-committer@nokia.com>2010-12-06 11:18:58 +0100
commit773343f396adb765e3b1837b3d961045e2a10056 (patch)
treef0708f1718a47185e9da54f649d42d568a08944b /src/plugins/texteditor/behaviorsettingspage.cpp
parent5c99316624d59463d24096ff5ffadd1e58e4d12e (diff)
downloadqt-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.cpp135
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);
}