Files
harbour-hermes/src/main.cpp
T
kaneda db75d5fea1 fix(settings): le impostazioni ora persistono davvero dal launcher (v0.5.3)
Causa (il "solito" problema dei progetti Sailfish): QSettings di default
scrive in ~/.config/harbour/hermes.conf, FUORI dalla directory che la
sandbox SailJail rende persistente (~/.config/harbour/hermes/). Dal
launcher le modifiche finivano in una vista effimera e sparivano a ogni
riavvio; da terminale invece restavano (da qui l'effetto "a volte si' a
volte no"). Stesso problema gia' risolto in harbour-calibreweb e
harbour-quill con il percorso esplicito.

- Settings: QSettings(configPath(), IniFormat) con configPath() =
  AppConfigLocation + "/hermes.conf" (mkpath della directory)
- store(): ogni setter fa setValue + sync immediato (nessuna modifica
  persa se il sistema termina l'app)
- migrateIfNeeded(): al primo avvio importa i valori rimasti nel vecchio
  percorso di default (~/.config/harbour/hermes.conf, piu' i path legacy
  nemo/defaultuser)
- diagnostica: log del file impostazioni e dei valori letti all'avvio
- core-test: test di persistenza (scrittura con una istanza, rilettura
  con una SECONDA istanza: prova che passa dal file su disco)
2026-09-13 13:53:17 +02:00

62 lines
2.4 KiB
C++

#include <QGuiApplication>
#include <QLocale>
#include <QQmlContext>
#include <QQuickView>
#include <QDebug>
#include <QTranslator>
#include <sailfishapp.h>
#include "apiclient.h"
#include "chatmodel.h"
#include "player.h"
#include "recorder.h"
#include "settings.h"
#include "voicerecorder.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/hermes (zona persistente della sandbox).
app->setOrganizationName(QStringLiteral("harbour"));
app->setApplicationName(QStringLiteral("hermes"));
app->setApplicationVersion(QStringLiteral("0.5.3"));
qDebug() << "harbour-hermes v0.5.3 build" << __DATE__ << __TIME__;
// Traduzioni: it/fr/de da /usr/share/harbour-hermes/translations, in base
// alla lingua di sistema (l'inglese e' la lingua sorgente: nessun .qm).
QTranslator translator;
if (translator.load(QLocale(), QStringLiteral("harbour-hermes"),
QStringLiteral("-"),
QStringLiteral("/usr/share/harbour-hermes/translations")))
app->installTranslator(&translator);
Settings settings;
ApiClient api(&settings);
ChatModel chat(&api);
Recorder recorder;
Player player;
VoiceRecorder voiceRec(&settings);
// Flusso voce: registrazione -> trascrizione; TTS pronto -> riproduzione.
QObject::connect(&recorder, &Recorder::finished, &api, &ApiClient::transcribeFile);
QObject::connect(&api, &ApiClient::ttsReady, &player, &Player::play);
QQuickView *view = SailfishApp::createView();
view->rootContext()->setContextProperty(QStringLiteral("appSettings"), &settings);
view->rootContext()->setContextProperty(QStringLiteral("api"), &api);
view->rootContext()->setContextProperty(QStringLiteral("chat"), &chat);
view->rootContext()->setContextProperty(QStringLiteral("recorder"), &recorder);
view->rootContext()->setContextProperty(QStringLiteral("player"), &player);
view->rootContext()->setContextProperty(QStringLiteral("voiceRec"), &voiceRec);
view->rootContext()->setContextProperty(QStringLiteral("appVersion"),
QCoreApplication::applicationVersion());
view->setSource(SailfishApp::pathTo(QStringLiteral("qml/harbour-hermes.qml")));
view->show();
return app->exec();
}