Files
harbour-calibreweb/src/settings.cpp
T

132 lines
3.5 KiB
C++

#include "settings.h"
#include <QDir>
#include <QStandardPaths>
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);
}