From 3cd98b33871046fc7917619ccb1231cc8310fa5d Mon Sep 17 00:00:00 2001 From: kh1 <qt-info@nokia.com> Date: Tue, 16 Mar 2010 14:47:27 +0100 Subject: [PATCH] Make use of the core engine in the general settings page. Reviewed-by: ck --- src/plugins/help/generalsettingspage.cpp | 130 ++++++++++++----------- src/plugins/help/generalsettingspage.h | 32 +++--- src/plugins/help/helpplugin.cpp | 16 ++- src/plugins/help/helpplugin.h | 3 + 4 files changed, 94 insertions(+), 87 deletions(-) diff --git a/src/plugins/help/generalsettingspage.cpp b/src/plugins/help/generalsettingspage.cpp index 6750e941842..658d2a085a7 100644 --- a/src/plugins/help/generalsettingspage.cpp +++ b/src/plugins/help/generalsettingspage.cpp @@ -28,41 +28,39 @@ **************************************************************************/ #include "generalsettingspage.h" -#include "helpconstants.h" #include "bookmarkmanager.h" #include "centralwidget.h" +#include "helpconstants.h" +#include "helpmanager.h" #include "helpviewer.h" #include "xbelsupport.h" +#include <coreplugin/coreconstants.h> + +#include <QtCore/QCoreApplication> +#include <QtCore/QTextStream> + #if defined(QT_NO_WEBKIT) #include <QtGui/QApplication> #else #include <QtWebKit/QWebSettings> #endif - -#include <QtCore/QCoreApplication> -#include <QtCore/QDebug> #include <QtGui/QFileDialog> -#include <QtHelp/QHelpEngine> -#include <coreplugin/coreconstants.h> +#include <QtHelp/QHelpEngineCore> using namespace Help::Internal; -GeneralSettingsPage::GeneralSettingsPage(QHelpEngine *helpEngine, - CentralWidget *centralWidget, BookmarkManager *bookmarkManager) - : m_currentPage(0) - , m_helpEngine(helpEngine) - , m_centralWidget(centralWidget) - , m_bookmarkManager(bookmarkManager) +GeneralSettingsPage::GeneralSettingsPage(BookmarkManager *bookmarkManager) + : m_bookmarkManager(bookmarkManager) { #if !defined(QT_NO_WEBKIT) QWebSettings* webSettings = QWebSettings::globalSettings(); - font.setFamily(webSettings->fontFamily(QWebSettings::StandardFont)); - font.setPointSize(webSettings->fontSize(QWebSettings::DefaultFontSize)); + m_font.setFamily(webSettings->fontFamily(QWebSettings::StandardFont)); + m_font.setPointSize(webSettings->fontSize(QWebSettings::DefaultFontSize)); #else - font = qApp->font(); + m_font = qApp->font(); #endif } @@ -88,40 +86,37 @@ QString GeneralSettingsPage::displayCategory() const QWidget *GeneralSettingsPage::createPage(QWidget *parent) { - m_currentPage = new QWidget(parent); + QWidget *widget = new QWidget(parent); - m_ui.setupUi(m_currentPage); + m_ui.setupUi(widget); m_ui.sizeComboBox->setEditable(false); m_ui.styleComboBox->setEditable(false); - font = qVariantValue<QFont>(m_helpEngine->customValue(QLatin1String("font"), - font)); + const QHelpEngineCore &engine = HelpManager::helpEngineCore(); + m_font = qVariantValue<QFont>(engine.customValue(QLatin1String("font"), m_font)); updateFontSize(); updateFontStyle(); updateFontFamily(); - QString homePage = m_helpEngine->customValue(QLatin1String("HomePage"), - QString()).toString(); - - if (homePage.isEmpty()) { - homePage = m_helpEngine->customValue(QLatin1String("DefaultHomePage"), + m_homePage = engine.customValue(QLatin1String("HomePage"), QString()).toString(); + if (m_homePage.isEmpty()) { + m_homePage = engine.customValue(QLatin1String("DefaultHomePage"), QLatin1String("about:blank")).toString(); } - m_ui.homePageLineEdit->setText(homePage); + m_ui.homePageLineEdit->setText(m_homePage); - int index = m_helpEngine->customValue(QLatin1String("StartOption"), 2).toInt(); - m_ui.helpStartComboBox->setCurrentIndex(index); - - index = m_helpEngine->customValue(QLatin1String("ContextHelpOption"), 0).toInt(); - m_ui.contextHelpComboBox->setCurrentIndex(index); + m_startOption = engine.customValue(QLatin1String("StartOption"), 2).toInt(); + m_ui.helpStartComboBox->setCurrentIndex(m_startOption); + m_helpOption = engine.customValue(QLatin1String("ContextHelpOption"), 0).toInt(); + m_ui.contextHelpComboBox->setCurrentIndex(m_helpOption); 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 = m_centralWidget->currentHelpViewer(); + HelpViewer *viewer = CentralWidget::instance()->currentHelpViewer(); if (viewer == 0) m_ui.currentPageButton->setEnabled(false); @@ -135,42 +130,50 @@ QWidget *GeneralSettingsPage::createPage(QWidget *parent) << ' ' << m_ui.bookmarkGroupBox->title(); m_searchKeywords.remove(QLatin1Char('&')); } - return m_currentPage; + return widget; } void GeneralSettingsPage::apply() { + emit dialogAccepted(); +} + +bool GeneralSettingsPage::applyChanges() +{ + QFont newFont; const QString &family = m_ui.familyComboBox->currentFont().family(); - font.setFamily(family); + newFont.setFamily(family); int fontSize = 14; int currentIndex = m_ui.sizeComboBox->currentIndex(); if (currentIndex != -1) fontSize = m_ui.sizeComboBox->itemData(currentIndex).toInt(); - font.setPointSize(fontSize); + newFont.setPointSize(fontSize); QString fontStyle = QLatin1String("Normal"); currentIndex = m_ui.styleComboBox->currentIndex(); if (currentIndex != -1) fontStyle = m_ui.styleComboBox->itemText(currentIndex); - font.setBold(fontDatabase.bold(family, fontStyle)); + newFont.setBold(m_fontDatabase.bold(family, fontStyle)); if (fontStyle.contains(QLatin1String("Italic"))) - font.setStyle(QFont::StyleItalic); + newFont.setStyle(QFont::StyleItalic); else if (fontStyle.contains(QLatin1String("Oblique"))) - font.setStyle(QFont::StyleOblique); + newFont.setStyle(QFont::StyleOblique); else - font.setStyle(QFont::StyleNormal); + newFont.setStyle(QFont::StyleNormal); - const int weight = fontDatabase.weight(family, fontStyle); + const int weight = m_fontDatabase.weight(family, fontStyle); if (weight >= 0) // Weight < 0 asserts... - font.setWeight(weight); + newFont.setWeight(weight); - m_helpEngine->setCustomValue(QLatin1String("font"), font); + QHelpEngineCore *engine = &HelpManager::helpEngineCore(); + engine->setCustomValue(QLatin1String("font"), newFont); + bool needsUpdate = newFont != m_font; #if !defined(QT_NO_WEBKIT) QWebSettings* webSettings = QWebSettings::globalSettings(); - webSettings->setFontFamily(QWebSettings::StandardFont, font.family()); - webSettings->setFontSize(QWebSettings::DefaultFontSize, font.pointSize()); + webSettings->setFontFamily(QWebSettings::StandardFont, m_font.family()); + webSettings->setFontSize(QWebSettings::DefaultFontSize, m_font.pointSize()); #else emit fontChanged(); #endif @@ -178,23 +181,23 @@ void GeneralSettingsPage::apply() QString homePage = m_ui.homePageLineEdit->text(); if (homePage.isEmpty()) homePage = QLatin1String("about:blank"); - m_helpEngine->setCustomValue(QLatin1String("HomePage"), homePage); + engine->setCustomValue(QLatin1String("HomePage"), homePage); + needsUpdate |= homePage != m_homePage; - int startOption = m_ui.helpStartComboBox->currentIndex(); - m_helpEngine->setCustomValue(QLatin1String("StartOption"), startOption); + const int startOption = m_ui.helpStartComboBox->currentIndex(); + engine->setCustomValue(QLatin1String("StartOption"), startOption); + needsUpdate |= startOption != m_startOption; - int contextHelpOption = m_ui.contextHelpComboBox->currentIndex(); - m_helpEngine->setCustomValue(QLatin1String("ContextHelpOption"), contextHelpOption); -} + const int helpOption = m_ui.contextHelpComboBox->currentIndex(); + engine->setCustomValue(QLatin1String("ContextHelpOption"), helpOption); + needsUpdate |= helpOption != m_helpOption; -void GeneralSettingsPage::finish() -{ - // Hmm, what to do here? + return needsUpdate; } void GeneralSettingsPage::setCurrentPage() { - HelpViewer *viewer = m_centralWidget->currentHelpViewer(); + HelpViewer *viewer = CentralWidget::instance()->currentHelpViewer(); if (viewer) m_ui.homePageLineEdit->setText(viewer->source().toString()); } @@ -206,10 +209,9 @@ void GeneralSettingsPage::setBlankPage() void GeneralSettingsPage::setDefaultPage() { - const QString &homePage = - m_helpEngine->customValue(QLatin1String("DefaultHomePage"), - QString()).toString(); - m_ui.homePageLineEdit->setText(homePage); + const QString &defaultHomePage = HelpManager::helpEngineCore() + .customValue(QLatin1String("DefaultHomePage"), QString()).toString(); + m_ui.homePageLineEdit->setText(defaultHomePage); } void GeneralSettingsPage::importBookmarks() @@ -254,10 +256,10 @@ void GeneralSettingsPage::exportBookmarks() void GeneralSettingsPage::updateFontSize() { - const QString &family = font.family(); - const QString &fontStyle = fontDatabase.styleString(font); + const QString &family = m_font.family(); + const QString &fontStyle = m_fontDatabase.styleString(m_font); - QList<int> pointSizes = fontDatabase.pointSizes(family, fontStyle); + QList<int> pointSizes = m_fontDatabase.pointSizes(family, fontStyle); if (pointSizes.empty()) pointSizes = QFontDatabase::standardSizes(); @@ -270,7 +272,7 @@ void GeneralSettingsPage::updateFontSize() QString n; foreach (int pointSize, pointSizes) m_ui.sizeComboBox->addItem(n.setNum(pointSize), QVariant(pointSize)); - const int closestIndex = closestPointSizeIndex(font.pointSize()); + const int closestIndex = closestPointSizeIndex(m_font.pointSize()); if (closestIndex != -1) m_ui.sizeComboBox->setCurrentIndex(closestIndex); } @@ -278,8 +280,8 @@ void GeneralSettingsPage::updateFontSize() void GeneralSettingsPage::updateFontStyle() { - const QString &fontStyle = fontDatabase.styleString(font); - const QStringList &styles = fontDatabase.styles(font.family()); + const QString &fontStyle = m_fontDatabase.styleString(m_font); + const QStringList &styles = m_fontDatabase.styles(m_font.family()); m_ui.styleComboBox->clear(); m_ui.styleComboBox->setCurrentIndex(-1); @@ -306,7 +308,7 @@ void GeneralSettingsPage::updateFontStyle() void GeneralSettingsPage::updateFontFamily() { - m_ui.familyComboBox->setCurrentFont(font); + m_ui.familyComboBox->setCurrentFont(m_font); } int GeneralSettingsPage::closestPointSizeIndex(int desiredPointSize) const diff --git a/src/plugins/help/generalsettingspage.h b/src/plugins/help/generalsettingspage.h index c2d0775478c..16a0e71f0ad 100644 --- a/src/plugins/help/generalsettingspage.h +++ b/src/plugins/help/generalsettingspage.h @@ -30,18 +30,11 @@ #ifndef GENERALSETTINGSPAGE_H #define GENERALSETTINGSPAGE_H -#include <QtGui/QWidget> -#include <QtGui/QFontDatabase> - -#include <coreplugin/dialogs/ioptionspage.h> - #include "ui_generalsettingspage.h" +#include <coreplugin/dialogs/ioptionspage.h> class BookmarkManager; -QT_FORWARD_DECLARE_CLASS(QFont) -QT_FORWARD_DECLARE_CLASS(QHelpEngine) - namespace Help { namespace Internal { @@ -52,8 +45,7 @@ class GeneralSettingsPage : public Core::IOptionsPage Q_OBJECT public: - GeneralSettingsPage(QHelpEngine *helpEngine, CentralWidget *centralWidget, - BookmarkManager *bookmarkManager); + GeneralSettingsPage(BookmarkManager *bookmarkManager); QString id() const; virtual QString displayName() const; @@ -62,11 +54,14 @@ public: QWidget *createPage(QWidget *parent); void apply(); - void finish(); + void finish() {} virtual bool matches(const QString &s) const; + bool applyChanges(); + signals: void fontChanged(); + void dialogAccepted(); private slots: void setCurrentPage(); @@ -82,16 +77,17 @@ private: int closestPointSizeIndex(int desiredPointSize) const; private: - QWidget *m_currentPage; - QHelpEngine *m_helpEngine; - CentralWidget *m_centralWidget; - BookmarkManager *m_bookmarkManager; + QFont m_font; + QFontDatabase m_fontDatabase; - QFont font; - QFontDatabase fontDatabase; + int m_helpOption; + int m_startOption; + QString m_homePage; - Ui::GeneralSettingsPage m_ui; QString m_searchKeywords; + Ui::GeneralSettingsPage m_ui; + + BookmarkManager *m_bookmarkManager; }; } // Internal diff --git a/src/plugins/help/helpplugin.cpp b/src/plugins/help/helpplugin.cpp index 2377cce8735..29b7e428eda 100644 --- a/src/plugins/help/helpplugin.cpp +++ b/src/plugins/help/helpplugin.cpp @@ -400,11 +400,11 @@ bool HelpPlugin::initialize(const QStringList &arguments, QString *error) advancedMenu->addAction(cmd, Core::Constants::G_EDIT_FONT); } - GeneralSettingsPage *generalSettings = new GeneralSettingsPage(m_helpEngine, - m_centralWidget, m_bookmarkManager); - addAutoReleasedObject(generalSettings); - connect(generalSettings, SIGNAL(fontChanged()), this, SLOT(fontChanged())); - + generalSettingsPage = new GeneralSettingsPage(m_bookmarkManager); + addAutoReleasedObject(generalSettingsPage); + connect(generalSettingsPage, SIGNAL(fontChanged()), this, SLOT(fontChanged())); + connect(generalSettingsPage, SIGNAL(dialogAccepted()), this, + SLOT(checkForGeneralChanges())); return true; } @@ -980,6 +980,12 @@ void HelpPlugin::checkForHelpChanges() m_helpEngine->setupData(); } +void HelpPlugin::checkForGeneralChanges() +{ + if (generalSettingsPage->applyChanges()) + m_helpEngine->setupData(); +} + void HelpPlugin::filterDocumentation(const QString &customFilter) { m_helpEngine->setCurrentFilter(customFilter); diff --git a/src/plugins/help/helpplugin.h b/src/plugins/help/helpplugin.h index 335cf185d98..02f02348a31 100644 --- a/src/plugins/help/helpplugin.h +++ b/src/plugins/help/helpplugin.h @@ -73,6 +73,7 @@ class CentralWidget; class DocSettingsPage; class FilterSettingsPage; class HelpMode; +class GeneralSettingsPage; class SearchWidget; class HelpPlugin : public ExtensionSystem::IPlugin @@ -106,6 +107,7 @@ private slots: void activateContents(); void activateSearch(); void checkForHelpChanges(); + void checkForGeneralChanges(); void updateFilterComboBox(); void filterDocumentation(const QString &customFilter); void addBookmark(); @@ -159,6 +161,7 @@ private: DocSettingsPage *m_docSettingsPage; FilterSettingsPage *m_filterSettingsPage; + GeneralSettingsPage *generalSettingsPage; QComboBox *m_documentsCombo; QComboBox *m_filterComboBox; -- GitLab