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:
2026-08-24 13:30:31 +02:00
commit 18c6147d22
21 changed files with 1535 additions and 0 deletions
+61
View File
@@ -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();
}
+59
View File
@@ -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();
}
+46
View File
@@ -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