save zoom factor per zim

Each time the zoom of a zim is changed, it is saved in the QSettings.

The SettingsManager class has new methods that wrap QSettings method :
- void setSettings(const QString &key, const QVariant &value);
- void deleteSettings(const QString &key);
- bool settingsExists(const QString &key);
- QVariant getSettings(const QString &key);
This commit is contained in:
luddens 2019-11-05 15:28:43 +02:00
parent 0289709771
commit c3172c058b
6 changed files with 50 additions and 6 deletions

View File

@ -6,6 +6,7 @@ kiwix-desktop rc4
* Fix Reading list with bookmarks from missing books * Fix Reading list with bookmarks from missing books
* Support video fullscreen mode * Support video fullscreen mode
* Support the default zoom level setting * Support the default zoom level setting
* Support zoom level per zim
kiwix-desktop rc3 kiwix-desktop rc3
================= =================

View File

@ -241,6 +241,7 @@ void ContentManager::eraseBook(const QString& id)
} else { } else {
emit(oneBookChanged(id)); emit(oneBookChanged(id));
} }
KiwixApp::instance()->getSettingsManager()->deleteSettings(id);
} }
void ContentManager::pauseBook(const QString& id) void ContentManager::pauseBook(const QString& id)

View File

@ -5,7 +5,7 @@ SettingsManager::SettingsManager(QObject *parent)
m_settings("Kiwix", "Kiwix-desktop"), m_settings("Kiwix", "Kiwix-desktop"),
m_settingsViewDisplayed(false) m_settingsViewDisplayed(false)
{ {
setSettings(); initSettings();
} }
SettingsManagerView* SettingsManager::getView() SettingsManagerView* SettingsManager::getView()
@ -18,6 +18,36 @@ SettingsManagerView* SettingsManager::getView()
return view; return view;
} }
void SettingsManager::setSettings(const QString &key, const QVariant &value)
{
m_settings.setValue(key, value);
}
void SettingsManager::deleteSettings(const QString &key)
{
m_settings.remove(key);
}
bool SettingsManager::settingsExists(const QString &key)
{
return m_settings.contains(key);
}
QVariant SettingsManager::getSettings(const QString &key)
{
return m_settings.value(key);
}
qreal SettingsManager::getZoomFactorByZimId(const QString &id)
{
auto zoomFactor = m_zoomFactor;
QString key = id + "/zoomFactor";
if (settingsExists(key)) {
zoomFactor = getSettings(key).toDouble();
}
return zoomFactor;
}
void SettingsManager::setKiwixServerPort(int port) void SettingsManager::setKiwixServerPort(int port)
{ {
m_kiwixServerPort = port; m_kiwixServerPort = port;
@ -31,7 +61,7 @@ void SettingsManager::setZoomFactor(qreal zoomFactor)
m_settings.setValue("view/zoomFactor", zoomFactor); m_settings.setValue("view/zoomFactor", zoomFactor);
} }
void SettingsManager::setSettings() void SettingsManager::initSettings()
{ {
m_kiwixServerPort = m_settings.value("localKiwixServer/port", 8181).toInt(); m_kiwixServerPort = m_settings.value("localKiwixServer/port", 8181).toInt();
m_zoomFactor = m_settings.value("view/zoomFactor", 1).toDouble(); m_zoomFactor = m_settings.value("view/zoomFactor", 1).toDouble();

View File

@ -17,6 +17,11 @@ public:
SettingsManagerView* getView(); SettingsManagerView* getView();
bool isSettingsViewdisplayed() { return m_settingsViewDisplayed; }; bool isSettingsViewdisplayed() { return m_settingsViewDisplayed; };
void setSettings(const QString &key, const QVariant &value);
void deleteSettings(const QString &key);
bool settingsExists(const QString &key);
QVariant getSettings(const QString &key);
qreal getZoomFactorByZimId(const QString &id);
public slots: public slots:
void setKiwixServerPort(int port); void setKiwixServerPort(int port);
@ -25,7 +30,7 @@ public slots:
qreal getZoomFactor() { return m_zoomFactor; }; qreal getZoomFactor() { return m_zoomFactor; };
private: private:
void setSettings(); void initSettings();
signals: signals:
void portChanged(int port); void portChanged(int port);

View File

@ -46,6 +46,8 @@ TabBar::TabBar(QWidget *parent) :
zoomFactor += 0.1; zoomFactor += 0.1;
zoomFactor = max(min(zoomFactor, 5.0), 0.25); zoomFactor = max(min(zoomFactor, 5.0), 0.25);
current->setZoomFactor(zoomFactor); current->setZoomFactor(zoomFactor);
auto key = this->currentZimId() + "/zoomFactor";
KiwixApp::instance()->getSettingsManager()->setSettings(key, zoomFactor);
}); });
connect(app->getAction(KiwixApp::ZoomOutAction), &QAction::triggered, connect(app->getAction(KiwixApp::ZoomOutAction), &QAction::triggered,
this, [=]() { this, [=]() {
@ -55,12 +57,17 @@ TabBar::TabBar(QWidget *parent) :
zoomFactor -= 0.1; zoomFactor -= 0.1;
zoomFactor = max(min(zoomFactor, 5.0), 0.25); zoomFactor = max(min(zoomFactor, 5.0), 0.25);
current->setZoomFactor(zoomFactor); current->setZoomFactor(zoomFactor);
auto key = this->currentZimId() + "/zoomFactor";
KiwixApp::instance()->getSettingsManager()->setSettings(key, zoomFactor);
}); });
connect(app->getAction(KiwixApp::ZoomResetAction), &QAction::triggered, connect(app->getAction(KiwixApp::ZoomResetAction), &QAction::triggered,
this, [=]() { this, [=]() {
auto current = this->currentWidget(); auto current = this->currentWidget();
QUITIFNULL(current); QUITIFNULL(current);
current->setZoomFactor(1.0); auto settingsManager = KiwixApp::instance()->getSettingsManager();
current->setZoomFactor(settingsManager->getZoomFactor());
auto key = this->currentZimId() + "/zoomFactor";
settingsManager->deleteSettings(key);
}); });
connect(app->getAction(KiwixApp::OpenHomePageAction), &QAction::triggered, connect(app->getAction(KiwixApp::OpenHomePageAction), &QAction::triggered,
this, [=]() { this, [=]() {
@ -170,8 +177,6 @@ void TabBar::openUrl(const QUrl& url, bool newTab)
} }
QUITIFNULL(webView); QUITIFNULL(webView);
webView->setUrl(url); webView->setUrl(url);
auto zoomFactor = KiwixApp::instance()->getSettingsManager()->getZoomFactor();
webView->setZoomFactor(zoomFactor);
} }
void TabBar::setTitleOf(const QString& title, WebView* webView) void TabBar::setTitleOf(const QString& title, WebView* webView)

View File

@ -54,6 +54,8 @@ void WebView::onUrlChanged(const QUrl& url) {
pixmap.loadFromData((const uchar*)favicon.data(), favicon.size()); pixmap.loadFromData((const uchar*)favicon.data(), favicon.size());
m_icon = QIcon(pixmap); m_icon = QIcon(pixmap);
emit iconChanged(m_icon); emit iconChanged(m_icon);
auto zoomFactor = app->getSettingsManager()->getZoomFactorByZimId(zimId);
this->setZoomFactor(zoomFactor);
} }
} }