#include "settings.h" #include #include Settings::Settings(QObject *parent) : QObject(parent) , m_settings(QStringLiteral("harbour"), QStringLiteral("calibreweb")) { // diagnostica: path reale del file di configurazione e valori letti all'avvio qDebug() << "Settings file:" << m_settings.fileName(); qDebug() << "Settings read: serverUrl=[" << serverUrl() << "] user=[" << username() << "] ssl=" << ignoreSslErrors() << "margin=" << readerMargin(); } QString Settings::serverUrl() const { return m_settings.value(QStringLiteral("serverUrl")).toString(); } void Settings::setServerUrl(const QString &value) { if (value == serverUrl()) return; m_settings.setValue(QStringLiteral("serverUrl"), value); m_settings.sync(); // scrivi subito su disco: l'app può crashare alla chiusura (WebView) emit serverUrlChanged(); emit baseUrlChanged(); } QString Settings::username() const { return m_settings.value(QStringLiteral("username")).toString(); } void Settings::setUsername(const QString &value) { if (value == username()) return; m_settings.setValue(QStringLiteral("username"), value); m_settings.sync(); emit usernameChanged(); } QString Settings::password() const { return m_settings.value(QStringLiteral("password")).toString(); } void Settings::setPassword(const QString &value) { if (value == password()) return; m_settings.setValue(QStringLiteral("password"), value); m_settings.sync(); emit passwordChanged(); } bool Settings::ignoreSslErrors() const { return m_settings.value(QStringLiteral("ignoreSslErrors"), false).toBool(); } void Settings::setIgnoreSslErrors(bool value) { if (value == ignoreSslErrors()) return; m_settings.setValue(QStringLiteral("ignoreSslErrors"), value); m_settings.sync(); emit ignoreSslErrorsChanged(); } int Settings::readerMargin() const { return m_settings.value(QStringLiteral("readerMargin"), 24).toInt(); } void Settings::setReaderMargin(int value) { if (value == readerMargin()) return; m_settings.setValue(QStringLiteral("readerMargin"), value); m_settings.sync(); emit readerMarginChanged(); } QString Settings::downloadDir() const { QString dir = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation); if (dir.isEmpty()) dir = QStringLiteral("/home/nemo/Downloads"); QDir().mkpath(dir); return dir; } QString Settings::authHeader() const { const QString user = username(); if (user.isEmpty()) return QString(); const QString credentials = user + QLatin1Char(':') + password(); return QStringLiteral("Basic ") + QString::fromLatin1(credentials.toUtf8().toBase64()); } QString Settings::baseUrl() const { QString url = serverUrl().trimmed(); while (url.endsWith(QLatin1Char('/'))) url.chop(1); return url; } QString Settings::bookmarkKey(int bookId, const QString &format) const { return m_settings.value(QStringLiteral("bookmarks/%1/%2").arg(bookId).arg(format)) .toString(); } void Settings::setBookmarkKey(int bookId, const QString &format, const QString &key) { m_settings.setValue(QStringLiteral("bookmarks/%1/%2").arg(bookId).arg(format), key); m_settings.sync(); } QString Settings::bookFilePath(int bookId, const QString &format) const { const QString dir = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QStringLiteral("/books"); QDir().mkpath(dir); return dir + QStringLiteral("/%1.%2").arg(bookId).arg(format); }