forked from qt-creator/qt-creator
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
This commit is contained in:
@@ -43,14 +43,14 @@ struct DisplaySettingsPage::DisplaySettingsPagePrivate
|
||||
explicit DisplaySettingsPagePrivate(const DisplaySettingsPageParameters &p);
|
||||
|
||||
const DisplaySettingsPageParameters m_parameters;
|
||||
Ui::DisplaySettingsPage m_page;
|
||||
Ui::DisplaySettingsPage *m_page;
|
||||
DisplaySettings m_displaySettings;
|
||||
QString m_searchKeywords;
|
||||
};
|
||||
|
||||
DisplaySettingsPage::DisplaySettingsPagePrivate::DisplaySettingsPagePrivate
|
||||
(const DisplaySettingsPageParameters &p)
|
||||
: m_parameters(p)
|
||||
: m_parameters(p), m_page(0)
|
||||
{
|
||||
if (const QSettings *s = Core::ICore::instance()->settings()) {
|
||||
m_displaySettings.fromSettings(m_parameters.settingsPrefix, s);
|
||||
@@ -82,18 +82,19 @@ QString DisplaySettingsPage::displayName() const
|
||||
QWidget *DisplaySettingsPage::createPage(QWidget *parent)
|
||||
{
|
||||
QWidget *w = new QWidget(parent);
|
||||
m_d->m_page.setupUi(w);
|
||||
m_d->m_page = new Ui::DisplaySettingsPage;
|
||||
m_d->m_page->setupUi(w);
|
||||
settingsToUI();
|
||||
if (m_d->m_searchKeywords.isEmpty()) {
|
||||
QTextStream(&m_d->m_searchKeywords) << m_d->m_page.displayLineNumbers->text()
|
||||
<< ' ' << m_d->m_page.highlightCurrentLine->text()
|
||||
<< ' ' << m_d->m_page.displayFoldingMarkers->text()
|
||||
<< ' ' << m_d->m_page.highlightBlocks->text()
|
||||
<< ' ' << m_d->m_page.visualizeWhitespace->text()
|
||||
<< ' ' << m_d->m_page.animateMatchingParentheses->text()
|
||||
<< ' ' << m_d->m_page.enableTextWrapping->text()
|
||||
<< ' ' << m_d->m_page.autoFoldFirstComment->text()
|
||||
<< ' ' << m_d->m_page.centerOnScroll->text();
|
||||
QTextStream(&m_d->m_searchKeywords) << m_d->m_page->displayLineNumbers->text()
|
||||
<< ' ' << m_d->m_page->highlightCurrentLine->text()
|
||||
<< ' ' << m_d->m_page->displayFoldingMarkers->text()
|
||||
<< ' ' << m_d->m_page->highlightBlocks->text()
|
||||
<< ' ' << m_d->m_page->visualizeWhitespace->text()
|
||||
<< ' ' << m_d->m_page->animateMatchingParentheses->text()
|
||||
<< ' ' << m_d->m_page->enableTextWrapping->text()
|
||||
<< ' ' << m_d->m_page->autoFoldFirstComment->text()
|
||||
<< ' ' << m_d->m_page->centerOnScroll->text();
|
||||
m_d->m_searchKeywords.remove(QLatin1Char('&'));
|
||||
}
|
||||
return w;
|
||||
@@ -101,43 +102,53 @@ QWidget *DisplaySettingsPage::createPage(QWidget *parent)
|
||||
|
||||
void DisplaySettingsPage::apply()
|
||||
{
|
||||
if (!m_d->m_page) // page was never shown
|
||||
return;
|
||||
DisplaySettings newDisplaySettings;
|
||||
|
||||
settingsFromUI(newDisplaySettings);
|
||||
setDisplaySettings(newDisplaySettings);
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::finish()
|
||||
{
|
||||
if (!m_d->m_page) // page was never shown
|
||||
return;
|
||||
delete m_d->m_page;
|
||||
m_d->m_page = 0;
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::settingsFromUI(DisplaySettings &displaySettings) const
|
||||
{
|
||||
displaySettings.m_displayLineNumbers = m_d->m_page.displayLineNumbers->isChecked();
|
||||
displaySettings.m_textWrapping = m_d->m_page.enableTextWrapping->isChecked();
|
||||
displaySettings.m_showWrapColumn = m_d->m_page.showWrapColumn->isChecked();
|
||||
displaySettings.m_wrapColumn = m_d->m_page.wrapColumn->value();
|
||||
displaySettings.m_visualizeWhitespace = m_d->m_page.visualizeWhitespace->isChecked();
|
||||
displaySettings.m_displayFoldingMarkers = m_d->m_page.displayFoldingMarkers->isChecked();
|
||||
displaySettings.m_highlightCurrentLine = m_d->m_page.highlightCurrentLine->isChecked();
|
||||
displaySettings.m_highlightBlocks = m_d->m_page.highlightBlocks->isChecked();
|
||||
displaySettings.m_animateMatchingParentheses = m_d->m_page.animateMatchingParentheses->isChecked();
|
||||
displaySettings.m_markTextChanges = m_d->m_page.markTextChanges->isChecked();
|
||||
displaySettings.m_autoFoldFirstComment = m_d->m_page.autoFoldFirstComment->isChecked();
|
||||
displaySettings.m_centerCursorOnScroll = m_d->m_page.centerOnScroll->isChecked();
|
||||
displaySettings.m_displayLineNumbers = m_d->m_page->displayLineNumbers->isChecked();
|
||||
displaySettings.m_textWrapping = m_d->m_page->enableTextWrapping->isChecked();
|
||||
displaySettings.m_showWrapColumn = m_d->m_page->showWrapColumn->isChecked();
|
||||
displaySettings.m_wrapColumn = m_d->m_page->wrapColumn->value();
|
||||
displaySettings.m_visualizeWhitespace = m_d->m_page->visualizeWhitespace->isChecked();
|
||||
displaySettings.m_displayFoldingMarkers = m_d->m_page->displayFoldingMarkers->isChecked();
|
||||
displaySettings.m_highlightCurrentLine = m_d->m_page->highlightCurrentLine->isChecked();
|
||||
displaySettings.m_highlightBlocks = m_d->m_page->highlightBlocks->isChecked();
|
||||
displaySettings.m_animateMatchingParentheses = m_d->m_page->animateMatchingParentheses->isChecked();
|
||||
displaySettings.m_markTextChanges = m_d->m_page->markTextChanges->isChecked();
|
||||
displaySettings.m_autoFoldFirstComment = m_d->m_page->autoFoldFirstComment->isChecked();
|
||||
displaySettings.m_centerCursorOnScroll = m_d->m_page->centerOnScroll->isChecked();
|
||||
}
|
||||
|
||||
void DisplaySettingsPage::settingsToUI()
|
||||
{
|
||||
const DisplaySettings &displaySettings = m_d->m_displaySettings;
|
||||
m_d->m_page.displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
||||
m_d->m_page.enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
||||
m_d->m_page.showWrapColumn->setChecked(displaySettings.m_showWrapColumn);
|
||||
m_d->m_page.wrapColumn->setValue(displaySettings.m_wrapColumn);
|
||||
m_d->m_page.visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
||||
m_d->m_page.displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
||||
m_d->m_page.highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
||||
m_d->m_page.highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
||||
m_d->m_page.animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
||||
m_d->m_page.markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
||||
m_d->m_page.autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
||||
m_d->m_page.centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
||||
m_d->m_page->displayLineNumbers->setChecked(displaySettings.m_displayLineNumbers);
|
||||
m_d->m_page->enableTextWrapping->setChecked(displaySettings.m_textWrapping);
|
||||
m_d->m_page->showWrapColumn->setChecked(displaySettings.m_showWrapColumn);
|
||||
m_d->m_page->wrapColumn->setValue(displaySettings.m_wrapColumn);
|
||||
m_d->m_page->visualizeWhitespace->setChecked(displaySettings.m_visualizeWhitespace);
|
||||
m_d->m_page->displayFoldingMarkers->setChecked(displaySettings.m_displayFoldingMarkers);
|
||||
m_d->m_page->highlightCurrentLine->setChecked(displaySettings.m_highlightCurrentLine);
|
||||
m_d->m_page->highlightBlocks->setChecked(displaySettings.m_highlightBlocks);
|
||||
m_d->m_page->animateMatchingParentheses->setChecked(displaySettings.m_animateMatchingParentheses);
|
||||
m_d->m_page->markTextChanges->setChecked(displaySettings.m_markTextChanges);
|
||||
m_d->m_page->autoFoldFirstComment->setChecked(displaySettings.m_autoFoldFirstComment);
|
||||
m_d->m_page->centerOnScroll->setChecked(displaySettings.m_centerCursorOnScroll);
|
||||
}
|
||||
|
||||
const DisplaySettings &DisplaySettingsPage::displaySettings() const
|
||||
|
||||
Reference in New Issue
Block a user