64 lines
1.7 KiB
C++
Raw Normal View History

2024-11-25 17:15:44 +08:00
#include "languagemanager.h"
#include <QSettings>
#include <QDir>
#include <QApplication>
LanguageManager *LanguageManager::m_languageManager = NULL;
LanguageManager::LanguageManager(QObject *parent)
: QObject{parent}
{
m_translator = new QTranslator(this);
getConfigLanguage();
}
LanguageManager *LanguageManager::getInstance()
{
if(!m_languageManager)
m_languageManager = new LanguageManager();
return m_languageManager;
}
void LanguageManager::setCurrentLanguage(E_LANGUAGE language)
{
switch(language)
{
case English_E:
if(m_translator->load("./UpLowLimp_EN.qm"))
qApp->installTranslator(m_translator);
break;
case Chinese_E:
if(m_translator->load("./UpLowLimp_CN.qm"))
qApp->installTranslator(m_translator);
break;
}
m_language = language;
// emit signalLanguageChanged(m_language);
QString dirPath = QApplication::applicationDirPath() + "/conf/";
QDir confdir(dirPath);
if(!confdir.exists())
confdir.mkdir(dirPath);
QString confFile(dirPath + "IDconf.ini");
QSettings iniSetting(confFile, QSettings::IniFormat);
iniSetting.setValue("language",language);
}
E_LANGUAGE LanguageManager::getCurrentLanguage()
{
return m_language;
}
E_LANGUAGE LanguageManager::getConfigLanguage()
{
QString dirPath = QApplication::applicationDirPath() + "/conf/";
QDir confdir(dirPath);
if(!confdir.exists())
confdir.mkdir(dirPath);
QString confFile(dirPath + "IDconf.ini");
QSettings iniSetting(confFile, QSettings::IniFormat);
int value = iniSetting.value("language").toUInt();
m_language = E_LANGUAGE(value);
return m_language;
}