Don't store the current locale ourselves. QLocale() does the job

This also seperates UI from the core.
After calling QLocale::setDefault(), the empty QLocale constructor
returns the current default locale.
This is now used instead of XcaApplication::language()
This commit is contained in:
Christian Hohnstaedt 2021-05-20 20:48:44 +02:00 committed by Christian Hohnstädt
parent f5f6b57df4
commit cfe788d362
4 changed files with 11 additions and 14 deletions

View File

@ -10,13 +10,13 @@
#include "base.h"
#include "func.h"
#include "exception.h"
#include "widgets/XcaApplication.h"
#include "asn1time.h"
#include <openssl/x509.h>
#include <openssl/err.h>
#include <openssl/opensslv.h>
#include <QObject>
#include <QLocale>
/* As defined in rfc-5280 4.1.2.5 */
#define UNDEFINED_DATE "99991231235959Z"
@ -157,13 +157,13 @@ QString a1time::toString(QString fmt, Qt::TimeSpec spec) const
return QObject::tr("Undefined");
if (!isValid())
return QObject::tr("Broken / Invalid");
return XcaApplication::language().toString(
return QLocale().toString(
spec == Qt::UTC ? toUTC() : toLocalTime(), fmt);
}
QString a1time::toPretty() const
{
QString fmt = XcaApplication::language().dateTimeFormat();
QString fmt = QLocale().dateTimeFormat();
return toString(fmt, Qt::LocalTime);
}
@ -217,7 +217,7 @@ QString a1time::toFancy() const
fmt = future ? QObject::tr("in %1 hours") :
QObject::tr("%1 hours ago");
} else {
return XcaApplication::language().toString(date(),
return QLocale().toString(date(),
QLocale::ShortFormat);
}
return fmt.arg(diff);

View File

@ -53,7 +53,7 @@ static QAction *languageMenuEntry(const QStringList &sl)
a->setDisabled(!XcaApplication::languageAvailable(locale));
a->setCheckable(true);
if (locale == XcaApplication::language())
if (locale == QLocale())
a->setChecked(true);
return a;
}

View File

@ -17,7 +17,6 @@
#include <QFile>
#include <QAction>
QLocale XcaApplication::lang = QLocale::system();
QFont XcaApplication::tableFont;
QList<QLocale> XcaApplication::langAvail;
@ -26,7 +25,7 @@ void XcaApplication::setMainwin(MainWindow *m)
mainw = m;
}
bool XcaApplication::languageAvailable(QLocale l)
bool XcaApplication::languageAvailable(const QLocale &l)
{
return langAvail.contains(l);
}
@ -39,6 +38,7 @@ static QString defaultlang()
XcaApplication::XcaApplication(int &argc, char *argv[])
:QApplication(argc, argv)
{
QLocale lang;
qtTr = NULL;
xcaTr = NULL;
mainw = NULL;
@ -77,11 +77,10 @@ XcaApplication::XcaApplication(int &argc, char *argv[])
setWindowIcon(QIcon(QPixmap(":appIcon")));
}
void XcaApplication::setupLanguage(QLocale l)
void XcaApplication::setupLanguage(const QLocale &lang)
{
QStringList dirs;
lang = l;
if (qtTr) {
removeTranslator(qtTr);
delete qtTr;
@ -111,7 +110,7 @@ void XcaApplication::setupLanguage(QLocale l)
}
}
xcaTr->load(lang, "xca", getI18nDir());
QLocale::setDefault(l);
QLocale::setDefault(lang);
installTranslator(qtTr);
installTranslator(xcaTr);
if (mainw)

View File

@ -36,17 +36,15 @@ private:
MainWindow *mainw;
XcaTranslator *qtTr;
XcaTranslator *xcaTr;
static QLocale lang;
static QList<QLocale> langAvail;
public:
XcaApplication(int &argc, char *argv[]);
virtual ~XcaApplication();
void setMainwin(MainWindow *m);
void setupLanguage(QLocale lang);
static QLocale language() { return lang; }
void setupLanguage(const QLocale &lang);
static QFont tableFont;
static bool languageAvailable(QLocale l);
static bool languageAvailable(const QLocale &l);
bool eventFilter(QObject *watched, QEvent *ev);
bool notify(QObject* receiver, QEvent* event);