Selettore lingua (System/EN/IT) nelle impostazioni con QTranslator in main.cpp (pattern quill); fix 'Close book' con pop fino alla prima pagina
This commit is contained in:
+25
-1
@@ -2,6 +2,7 @@
|
||||
#include <QGuiApplication>
|
||||
#include <QQuickView>
|
||||
#include <QQmlContext>
|
||||
#include <QTranslator>
|
||||
#include <sailfishapp.h>
|
||||
|
||||
#include "apiclient.h"
|
||||
@@ -12,13 +13,36 @@
|
||||
Q_DECL_EXPORT int main(int argc, char *argv[])
|
||||
{
|
||||
QGuiApplication *app = SailfishApp::application(argc, argv);
|
||||
|
||||
Settings settings;
|
||||
|
||||
// User-chosen language (Settings -> Language). "system" = Sailfish UI
|
||||
// language (libsailfishapp already installed its translator). "en" =
|
||||
// force English (remove all translators). "it" = force Italian.
|
||||
const QString lang = settings.language();
|
||||
if (lang == "en" || lang == "it") {
|
||||
const QList<QTranslator *> trs = app->findChildren<QTranslator *>();
|
||||
foreach (QTranslator *t, trs) {
|
||||
app->removeTranslator(t);
|
||||
t->deleteLater();
|
||||
}
|
||||
if (lang == "it") {
|
||||
QTranslator *translator = new QTranslator(app);
|
||||
if (translator->load(QStringLiteral("harbour-calibreweb_it"),
|
||||
QStringLiteral("/usr/share/translations"))) {
|
||||
app->installTranslator(translator);
|
||||
} else {
|
||||
qWarning() << "harbour-calibreweb: cannot load harbour-calibreweb_it.qm";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QQuickView *view = SailfishApp::createView();
|
||||
|
||||
qDebug() << "harbour-calibreweb v0.2.0 build" << __DATE__ << __TIME__;
|
||||
|
||||
qmlRegisterType<EpubBook>("harbour.calibreweb", 1, 0, "EpubBook");
|
||||
|
||||
Settings settings;
|
||||
ApiClient apiClient(&settings);
|
||||
Downloader downloader(&settings);
|
||||
|
||||
|
||||
@@ -152,6 +152,20 @@ void Settings::setReaderMarginV(int value)
|
||||
emit readerMarginVChanged();
|
||||
}
|
||||
|
||||
QString Settings::language() const
|
||||
{
|
||||
return m_settings.value(QStringLiteral("language"), QStringLiteral("system")).toString();
|
||||
}
|
||||
|
||||
void Settings::setLanguage(const QString &value)
|
||||
{
|
||||
if (value == language())
|
||||
return;
|
||||
m_settings.setValue(QStringLiteral("language"), value);
|
||||
m_settings.sync();
|
||||
emit languageChanged();
|
||||
}
|
||||
|
||||
QString Settings::downloadDir() const
|
||||
{
|
||||
QString dir = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
|
||||
|
||||
@@ -14,6 +14,8 @@ class Settings : public QObject
|
||||
Q_PROPERTY(bool ignoreSslErrors READ ignoreSslErrors WRITE setIgnoreSslErrors NOTIFY ignoreSslErrorsChanged)
|
||||
Q_PROPERTY(int readerMargin READ readerMargin WRITE setReaderMargin NOTIFY readerMarginChanged)
|
||||
Q_PROPERTY(int readerMarginV READ readerMarginV WRITE setReaderMarginV NOTIFY readerMarginVChanged)
|
||||
// lingua scelta dall'utente: "system" (predefinita, lingua UI Sailfish), "en", "it"
|
||||
Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged)
|
||||
Q_PROPERTY(QString downloadDir READ downloadDir CONSTANT)
|
||||
// derivata da serverUrl (senza slash finale): accesso QML come appSettings.baseUrl
|
||||
Q_PROPERTY(QString baseUrl READ baseUrl NOTIFY baseUrlChanged)
|
||||
@@ -41,6 +43,10 @@ public:
|
||||
int readerMarginV() const;
|
||||
void setReaderMarginV(int value);
|
||||
|
||||
// lingua dell'interfaccia: "system" (default) | "en" | "it"
|
||||
QString language() const;
|
||||
void setLanguage(const QString &value);
|
||||
|
||||
QString downloadDir() const;
|
||||
|
||||
// Header "Authorization: Basic ..." pronto da usare, vuoto se utente non impostato
|
||||
@@ -63,6 +69,7 @@ signals:
|
||||
void ignoreSslErrorsChanged();
|
||||
void readerMarginChanged();
|
||||
void readerMarginVChanged();
|
||||
void languageChanged();
|
||||
void baseUrlChanged();
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user