From 178947c5e58a388660d101b8f354cdb3eae0cf02 Mon Sep 17 00:00:00 2001 From: Andrea Diamantini Date: Sat, 30 Nov 2013 01:15:57 +0100 Subject: Added option for global zoom settings :) BUG: 307477 --- src/rekonq.kcfg | 3 +++ src/settings/appearancewidget.cpp | 48 ++++++++++++++++++++++++++++++++----- src/settings/appearancewidget.h | 1 + src/settings/settings_appearance.ui | 34 ++++++++++++++++++++++++++ src/webtab/webpage.cpp | 7 +++--- src/webtab/webtab.cpp | 18 ++++++++------ 6 files changed, 94 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/rekonq.kcfg b/src/rekonq.kcfg index 0dc2f3df..8bd8b2ad 100644 --- a/src/rekonq.kcfg +++ b/src/rekonq.kcfg @@ -166,6 +166,9 @@ + + 10 + diff --git a/src/settings/appearancewidget.cpp b/src/settings/appearancewidget.cpp index 42c9db14..89918ac7 100644 --- a/src/settings/appearancewidget.cpp +++ b/src/settings/appearancewidget.cpp @@ -35,6 +35,11 @@ #include #include + +int zoomFactorList[13] = {5, 6, 7, 8, 9, 10, 11, 13, 15, 20, 25, 30}; + + + AppearanceWidget::AppearanceWidget(QWidget *parent) : QWidget(parent) , _changed(false) @@ -58,6 +63,7 @@ AppearanceWidget::AppearanceWidget(QWidget *parent) connect(fantasyFontChooser, SIGNAL(currentFontChanged(QFont)), this, SLOT(hasChanged())); populateEncodingMenu(); + populateZoomMenu(); } @@ -69,6 +75,11 @@ void AppearanceWidget::save() ReKonfig::setSansSerifFontFamily(sansSerifFontChooser->currentFont().family()); ReKonfig::setCursiveFontFamily(cursiveFontChooser->currentFont().family()); ReKonfig::setFantasyFontFamily(fantasyFontChooser->currentFont().family()); + + // zoom + int index = zoomCombo->currentIndex(); + int zoomFactor = zoomFactorList[index]; + ReKonfig::setDefaultZoom(zoomFactor); } @@ -87,11 +98,9 @@ void AppearanceWidget::hasChanged() bool AppearanceWidget::isDefault() { - bool def = true; - // TODO: implement me!! - return def; + return !_changed; } @@ -104,12 +113,39 @@ void AppearanceWidget::populateEncodingMenu() encodingCombo->setWhatsThis(i18n("Select the default encoding to be used; normally, you will be fine with 'Use language encoding' " "and should not have to change this.")); - connect(encodingCombo, SIGNAL(activated(QString)), this, SLOT(setEncoding(QString))); - connect(encodingCombo, SIGNAL(activated(QString)), this, SLOT(hasChanged())); - QString enc = ReKonfig::defaultEncoding(); int indexOfEnc = encodings.indexOf(enc); encodingCombo->setCurrentIndex(indexOfEnc); + + connect(encodingCombo, SIGNAL(activated(QString)), this, SLOT(setEncoding(QString))); + connect(encodingCombo, SIGNAL(activated(QString)), this, SLOT(hasChanged())); +} + + +void AppearanceWidget::populateZoomMenu() +{ + zoomCombo->setEditable(false); + QStringList availableZooms; + + int actualZoom = 0; + int defZoom = ReKonfig::defaultZoom(); + + for (int i = 0; i < 13; i++) + { + int zoomFactor = zoomFactorList[i]; + QString zoomString = QString::number(zoomFactor*10) + QL1S("%"); + availableZooms << zoomString; + + if (zoomFactor == defZoom) + { + actualZoom = i; + } + } + + zoomCombo->addItems(availableZooms); + zoomCombo->setCurrentIndex(actualZoom); + + connect(zoomCombo, SIGNAL(activated(QString)), this, SLOT(hasChanged())); } diff --git a/src/settings/appearancewidget.h b/src/settings/appearancewidget.h index 2154df81..39dafbaf 100644 --- a/src/settings/appearancewidget.h +++ b/src/settings/appearancewidget.h @@ -58,6 +58,7 @@ private Q_SLOTS: private: void populateEncodingMenu(); + void populateZoomMenu(); bool _changed; }; diff --git a/src/settings/settings_appearance.ui b/src/settings/settings_appearance.ui index 525881b5..4246a92c 100644 --- a/src/settings/settings_appearance.ui +++ b/src/settings/settings_appearance.ui @@ -236,6 +236,40 @@ + + + + Zoom + + + + + + + 0 + 0 + + + + + 200 + 0 + + + + Default page zoom + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + diff --git a/src/webtab/webpage.cpp b/src/webtab/webpage.cpp index c488ee9b..e4ff22d5 100644 --- a/src/webtab/webpage.cpp +++ b/src/webtab/webpage.cpp @@ -579,14 +579,13 @@ void WebPage::handleUnsupportedContent(QNetworkReply *reply) void WebPage::loadStarted() { // set zoom factor - QString val; KSharedConfig::Ptr config = KGlobal::config(); KConfigGroup group(config, "Zoom"); - val = group.readEntry(_loadingUrl.host(), QString("10")); + QString stringValue = group.readEntry(_loadingUrl.host(), QString::number(ReKonfig::defaultZoom())); - int value = val.toInt(); + int value = stringValue.toInt(); if (value != 10) - mainFrame()->setZoomFactor(QVariant(value).toReal() / 10); // Don't allox max +1 values + mainFrame()->setZoomFactor(value / 10.0); // Don't allox max +1 values } diff --git a/src/webtab/webtab.cpp b/src/webtab/webtab.cpp index 93d1b38c..eb887304 100644 --- a/src/webtab/webtab.cpp +++ b/src/webtab/webtab.cpp @@ -76,7 +76,7 @@ WebTab::WebTab(QWidget *parent, bool isPrivateBrowsing) , m_webView(0) , m_progress(0) , m_part(0) - , m_zoomFactor(10) + , m_zoomFactor(ReKonfig::defaultZoom()) , m_isPrivateBrowsing(isPrivateBrowsing) , m_isWebApp(false) , m_splitter(new QSplitter(this)) @@ -435,7 +435,7 @@ void WebTab::zoomIn() else m_zoomFactor++; - view()->setZoomFactor(QVariant(m_zoomFactor).toReal() / 10); + view()->setZoomFactor(m_zoomFactor / 10.0); setZoom(m_zoomFactor); } @@ -449,8 +449,12 @@ void WebTab::zoomOut() return; } - m_zoomFactor--; - view()->setZoomFactor(QVariant(m_zoomFactor).toReal() / 10); + if (m_zoomFactor > 20) + m_zoomFactor -= 5; + else + m_zoomFactor--; + + view()->setZoomFactor(m_zoomFactor / 10.0); setZoom(m_zoomFactor); } @@ -458,8 +462,8 @@ void WebTab::zoomOut() void WebTab::zoomDefault() { - m_zoomFactor = 10; - view()->setZoomFactor(QVariant(m_zoomFactor).toReal() / 10); + m_zoomFactor = ReKonfig::defaultZoom(); + view()->setZoomFactor(m_zoomFactor / 10.0); setZoom(m_zoomFactor); } @@ -475,7 +479,7 @@ void WebTab::setZoom(int zoomFactor) KConfigGroup group(config, "Zoom"); group.writeEntry(url().host(), m_zoomFactor); - if (m_zoomFactor == 10) + if (m_zoomFactor == ReKonfig::defaultZoom()) emit infoToShow(i18n("Default zoom: %1%", QString::number(m_zoomFactor * 10))); else emit infoToShow(i18n("Zooming: %1%", QString::number(m_zoomFactor * 10))); -- cgit v1.2.1