Set locale for date formatting to French as the rest of the app.

This commit is contained in:
Christophe Deschamps 2024-10-15 11:19:02 +00:00
parent e1b8befde4
commit 804af1bdbb
8 changed files with 37 additions and 11 deletions

View file

@ -37,6 +37,7 @@
#include <QQuickWindow>
#include <QSystemTrayIcon>
#include <QTimer>
#include <QTranslator>
#include "core/account/AccountCore.hpp"
#include "core/account/AccountDeviceGui.hpp"
@ -479,6 +480,7 @@ void App::initCore() {
setQuitOnLastWindowClosed(mSettings->getExitOnClose());
connect(mSettings.get(), &SettingsCore::exitOnCloseChanged, this, &App::onExitOnCloseChanged,
Qt::UniqueConnection);
setLocale(settings->getConfigLocale());
const QUrl url(u"qrc:/Linphone/view/Page/Window/Main/MainWindow.qml"_qs);
QObject::connect(
@ -510,6 +512,10 @@ void App::initCore() {
mustBeInMainThread(log().arg(Q_FUNC_INFO));
setAutoStart(mSettings->getAutoStart());
});
QObject::connect(mSettings.get(), &SettingsCore::configLocaleChanged, [this]() {
mustBeInMainThread(log().arg(Q_FUNC_INFO));
setLocale(mSettings->getConfigLocale());
});
mEngine->load(url);
});
// coreModel.reset();
@ -948,3 +954,15 @@ void App::setSysTrayIcon() {
if (!mSystemTrayIcon) mSystemTrayIcon = systemTrayIcon;
if (!QSystemTrayIcon::isSystemTrayAvailable()) qInfo() << "System tray is not available";
}
//-----------------------------------------------------------
// Locale TODO - App only in French now.
//-----------------------------------------------------------
void App::setLocale(QString configLocale) {
mLocale = QLocale(QLocale::French);
}
QLocale App::getLocale() {
return mLocale;
}

View file

@ -108,6 +108,7 @@ public:
void restart();
bool autoStartEnabled();
void setSysTrayIcon();
QLocale getLocale();
void onLoggerInitialized();
void sendCommand();
@ -145,6 +146,7 @@ signals:
private:
void createCommandParser();
void setAutoStart(bool enabled);
void setLocale(QString configLocale);
QCommandLineParser *mParser = nullptr;
Thread *mLinphoneThread = nullptr;
@ -158,6 +160,7 @@ private:
QSharedPointer<SafeConnection<App, CoreModel>> mCoreModelConnection;
QSharedPointer<SafeConnection<App, CliModel>> mCliModelConnection;
bool mAutoStart = false;
QLocale mLocale = QLocale::system();
DECLARE_ABSTRACT_OBJECT
};

View file

@ -97,6 +97,7 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
INIT_CORE_MEMBER(ExitOnClose, settingsModel)
INIT_CORE_MEMBER(SyncLdapContacts, settingsModel)
INIT_CORE_MEMBER(Ipv6Enabled, settingsModel)
INIT_CORE_MEMBER(ConfigLocale, settingsModel)
}
SettingsCore::~SettingsCore() {
@ -345,6 +346,8 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
syncLdapContacts, SyncLdapContacts)
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, bool, ipv6Enabled,
Ipv6Enabled)
DEFINE_CORE_GETSET_CONNECT(mSettingsModelConnection, SettingsCore, SettingsModel, settingsModel, QString,
configLocale, ConfigLocale)
auto coreModelConnection = QSharedPointer<SafeConnection<SettingsCore, CoreModel>>(
new SafeConnection<SettingsCore, CoreModel>(me, CoreModel::getInstance()), &QObject::deleteLater);
@ -516,3 +519,7 @@ bool SettingsCore::getExitOnClose() const {
bool SettingsCore::getSyncLdapContacts() const {
return mSyncLdapContacts;
}
QString SettingsCore::getConfigLocale() const {
return mConfigLocale;
}

View file

@ -167,6 +167,7 @@ public:
DECLARE_CORE_GETSET_MEMBER(bool, ipv6Enabled, Ipv6Enabled)
DECLARE_CORE_GETSET_MEMBER(QVariantList, audioCodecs, AudioCodecs)
DECLARE_CORE_GETSET_MEMBER(QVariantList, videoCodecs, VideoCodecs)
DECLARE_CORE_GETSET(QString, configLocale, ConfigLocale)
signals:

View file

@ -55,16 +55,6 @@ int main(int argc, char *argv[]) {
auto app = QSharedPointer<App>::create(argc, argv);
QTranslator translator;
const QStringList uiLanguages = QLocale::system().uiLanguages();
for (const QString &locale : uiLanguages) {
const QString baseName = "Linphone_" + QLocale(locale).name();
if (translator.load(":/i18n/" + baseName)) {
app->installTranslator(&translator);
break;
}
}
#ifdef ACCESSBILITY_WORKAROUND
QAccessible::installUpdateHandler(DummyUpdateHandler);
QAccessible::installRootObjectHandler(DummyRootObjectHandler);

View file

@ -582,6 +582,7 @@ void SettingsModel::notifyConfigReady(){
DEFINE_NOTIFY_CONFIG_READY(autoStart, AutoStart)
DEFINE_NOTIFY_CONFIG_READY(exitOnClose, ExitOnClose)
DEFINE_NOTIFY_CONFIG_READY(syncLdapContacts, SyncLdapContacts)
DEFINE_NOTIFY_CONFIG_READY(configLocale, ConfigLocale)
}
DEFINE_GETSET_CONFIG(SettingsModel, bool, Bool, disableChatFeature, DisableChatFeature, "disable_chat_feature", true)
@ -679,4 +680,9 @@ DEFINE_GETSET_CONFIG(SettingsModel,
SyncLdapContacts,
"sync_ldap_contacts",
false)
DEFINE_GETSET_CONFIG_STRING(SettingsModel,
configLocale,
ConfigLocale,
"locale",
"")
// clang-format on

View file

@ -154,6 +154,7 @@ public:
DECLARE_GETSET(bool, exitOnClose, ExitOnClose)
DECLARE_GETSET(bool, syncLdapContacts, SyncLdapContacts)
DECLARE_GETSET(bool, ipv6Enabled, Ipv6Enabled)
DECLARE_GETSET(QString, configLocale, ConfigLocale)
signals:

View file

@ -264,7 +264,7 @@ QString Utils::formatDate(const QDateTime &date, bool includeTime) {
else if (date.date() == QDate::currentDate().addDays(-1)) dateDay = tr("Hier");
else {
QString format = date.date().year() == QDateTime::currentDateTime().date().year() ? "dd MMMM" : "dd MMMM yyyy";
dateDay = tr(date.date().toString(format).toLocal8Bit().data());
dateDay = App::getInstance()->getLocale().toString(date.date(), format);
}
if (!includeTime) return dateDay;