harbour-maree 0.1.0: motore armonico 7 costituenti, 16 porti, ricerca libera (Nominatim+locale), grafico 24/48/72h, EN/IT, preferenze (lingua, porto, unità, intervallo), icone harbour
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
#include <QCoreApplication>
|
||||
#include <QGuiApplication>
|
||||
#include <QLocale>
|
||||
#include <QQuickView>
|
||||
#include <QQmlContext>
|
||||
#include <QTranslator>
|
||||
#include <sailfishapp.h>
|
||||
|
||||
#include "settings.h"
|
||||
|
||||
Q_DECL_EXPORT int main(int argc, char *argv[])
|
||||
{
|
||||
QGuiApplication *app = SailfishApp::application(argc, argv);
|
||||
|
||||
// Identita' allineata al profilo X-Sailjail del desktop file:
|
||||
// AppConfigLocation = ~/.config/harbour/maree (zona persistente della sandbox).
|
||||
app->setOrganizationName(QStringLiteral("harbour"));
|
||||
app->setApplicationName(QStringLiteral("maree"));
|
||||
app->setApplicationVersion(QStringLiteral("0.1.0"));
|
||||
|
||||
Settings settings;
|
||||
|
||||
// Lingua scelta dall'utente (Settings -> Language): "system" segue la
|
||||
// lingua UI di Sailfish, "en" forza l'inglese (default, stringhe sorgente),
|
||||
// "it" carica il catalogo italiano dal data dir dell'app (il validatore
|
||||
// RPM rifiuta /usr/share/translations, quindi il .qm sta in
|
||||
// /usr/share/harbour-maree/translations e libsailfishapp non lo carica).
|
||||
QString lang = settings.language();
|
||||
if (lang == QLatin1String("system")) {
|
||||
const QString sys = QLocale::system().name();
|
||||
lang = sys.startsWith(QLatin1String("it")) ? QStringLiteral("it")
|
||||
: QStringLiteral("en");
|
||||
}
|
||||
if (lang == QLatin1String("it")) {
|
||||
const QList<QTranslator *> trs = app->findChildren<QTranslator *>();
|
||||
foreach (QTranslator *t, trs) {
|
||||
app->removeTranslator(t);
|
||||
t->deleteLater();
|
||||
}
|
||||
QTranslator *translator = new QTranslator(app);
|
||||
if (translator->load(QStringLiteral("harbour-maree_it"),
|
||||
QStringLiteral("/usr/share/harbour-maree/translations"))) {
|
||||
app->installTranslator(translator);
|
||||
} else {
|
||||
qWarning("harbour-maree: cannot load harbour-maree_it.qm");
|
||||
}
|
||||
}
|
||||
|
||||
QQuickView *view = SailfishApp::createView();
|
||||
|
||||
qDebug() << "harbour-maree v0.1.0 build" << __DATE__ << __TIME__;
|
||||
|
||||
view->rootContext()->setContextProperty(QStringLiteral("appSettings"), &settings);
|
||||
view->rootContext()->setContextProperty(QStringLiteral("appVersion"),
|
||||
QCoreApplication::applicationVersion());
|
||||
|
||||
view->setSource(SailfishApp::pathTo(QStringLiteral("qml/harbour-maree.qml")));
|
||||
view->show();
|
||||
|
||||
return app->exec();
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
#include "settings.h"
|
||||
|
||||
Settings::Settings(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_settings(QStringLiteral("harbour"), QStringLiteral("maree"))
|
||||
{
|
||||
}
|
||||
|
||||
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);
|
||||
emit languageChanged();
|
||||
}
|
||||
|
||||
QString Settings::preferredPort() const
|
||||
{
|
||||
return m_settings.value(QStringLiteral("preferredPort"), QString()).toString();
|
||||
}
|
||||
|
||||
void Settings::setPreferredPort(const QString &value)
|
||||
{
|
||||
if (value == preferredPort())
|
||||
return;
|
||||
m_settings.setValue(QStringLiteral("preferredPort"), value);
|
||||
emit preferredPortChanged();
|
||||
}
|
||||
|
||||
QString Settings::unit() const
|
||||
{
|
||||
return m_settings.value(QStringLiteral("unit"), QStringLiteral("m")).toString();
|
||||
}
|
||||
|
||||
void Settings::setUnit(const QString &value)
|
||||
{
|
||||
if (value == unit())
|
||||
return;
|
||||
m_settings.setValue(QStringLiteral("unit"), value);
|
||||
emit unitChanged();
|
||||
}
|
||||
|
||||
int Settings::days() const
|
||||
{
|
||||
return m_settings.value(QStringLiteral("days"), 1).toInt();
|
||||
}
|
||||
|
||||
void Settings::setDays(int value)
|
||||
{
|
||||
if (value == days())
|
||||
return;
|
||||
m_settings.setValue(QStringLiteral("days"), value);
|
||||
emit daysChanged();
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QSettings>
|
||||
|
||||
// Preferenze dell'app, persistite in QSettings ("harbour", "maree"):
|
||||
// language "system" (segue la lingua UI Sailfish) | "en" | "it"
|
||||
// preferredPort nome del porto preferito (vuoto = nessuno)
|
||||
// unit "m" | "ft"
|
||||
// days 1 | 2 | 3 (intervallo del grafico)
|
||||
class Settings : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(QString language READ language WRITE setLanguage NOTIFY languageChanged)
|
||||
Q_PROPERTY(QString preferredPort READ preferredPort WRITE setPreferredPort NOTIFY preferredPortChanged)
|
||||
Q_PROPERTY(QString unit READ unit WRITE setUnit NOTIFY unitChanged)
|
||||
Q_PROPERTY(int days READ days WRITE setDays NOTIFY daysChanged)
|
||||
|
||||
public:
|
||||
explicit Settings(QObject *parent = 0);
|
||||
|
||||
QString language() const;
|
||||
void setLanguage(const QString &value);
|
||||
|
||||
QString preferredPort() const;
|
||||
void setPreferredPort(const QString &value);
|
||||
|
||||
QString unit() const;
|
||||
void setUnit(const QString &value);
|
||||
|
||||
int days() const;
|
||||
void setDays(int value);
|
||||
|
||||
signals:
|
||||
void languageChanged();
|
||||
void preferredPortChanged();
|
||||
void unitChanged();
|
||||
void daysChanged();
|
||||
|
||||
private:
|
||||
QSettings m_settings;
|
||||
};
|
||||
|
||||
#endif // SETTINGS_H
|
||||
Reference in New Issue
Block a user