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
* Support video fullscreen mode
* Support the default zoom level setting
* Support zoom level per zim
kiwix-desktop rc3
=================

View File

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

View File

@ -5,7 +5,7 @@ SettingsManager::SettingsManager(QObject *parent)
m_settings("Kiwix", "Kiwix-desktop"),
m_settingsViewDisplayed(false)
{
setSettings();
initSettings();
}
SettingsManagerView* SettingsManager::getView()
@ -18,6 +18,36 @@ SettingsManagerView* SettingsManager::getView()
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)
{
m_kiwixServerPort = port;
@ -31,7 +61,7 @@ void SettingsManager::setZoomFactor(qreal zoomFactor)
m_settings.setValue("view/zoomFactor", zoomFactor);
}
void SettingsManager::setSettings()
void SettingsManager::initSettings()
{
m_kiwixServerPort = m_settings.value("localKiwixServer/port", 8181).toInt();
m_zoomFactor = m_settings.value("view/zoomFactor", 1).toDouble();

View File

@ -17,6 +17,11 @@ public:
SettingsManagerView* getView();
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:
void setKiwixServerPort(int port);
@ -25,7 +30,7 @@ public slots:
qreal getZoomFactor() { return m_zoomFactor; };
private:
void setSettings();
void initSettings();
signals:
void portChanged(int port);

View File

@ -46,6 +46,8 @@ TabBar::TabBar(QWidget *parent) :
zoomFactor += 0.1;
zoomFactor = max(min(zoomFactor, 5.0), 0.25);
current->setZoomFactor(zoomFactor);
auto key = this->currentZimId() + "/zoomFactor";
KiwixApp::instance()->getSettingsManager()->setSettings(key, zoomFactor);
});
connect(app->getAction(KiwixApp::ZoomOutAction), &QAction::triggered,
this, [=]() {
@ -55,12 +57,17 @@ TabBar::TabBar(QWidget *parent) :
zoomFactor -= 0.1;
zoomFactor = max(min(zoomFactor, 5.0), 0.25);
current->setZoomFactor(zoomFactor);
auto key = this->currentZimId() + "/zoomFactor";
KiwixApp::instance()->getSettingsManager()->setSettings(key, zoomFactor);
});
connect(app->getAction(KiwixApp::ZoomResetAction), &QAction::triggered,
this, [=]() {
auto current = this->currentWidget();
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,
this, [=]() {
@ -170,8 +177,6 @@ void TabBar::openUrl(const QUrl& url, bool newTab)
}
QUITIFNULL(webView);
webView->setUrl(url);
auto zoomFactor = KiwixApp::instance()->getSettingsManager()->getZoomFactor();
webView->setZoomFactor(zoomFactor);
}
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());
m_icon = QIcon(pixmap);
emit iconChanged(m_icon);
auto zoomFactor = app->getSettingsManager()->getZoomFactorByZimId(zimId);
this->setZoomFactor(zoomFactor);
}
}