Files
fmviewer3/project/fm_viewer/core/rm_language.h
2026-02-21 17:11:31 +09:00

135 lines
3.2 KiB
C++

#ifndef RM_LANGUAGE_H
#define RM_LANGUAGE_H
#if(LIVE_LANGUAGE_CHANGE)
#include <QObject>
#include <QList>
#include <QHash>
// 등록(append)하여 자동으로 변경되는 타입(Button,Label)과
// signal/slot 방식으로 처리 (TableWidget Header.. etc)
class RMLanguage : public QObject
{
Q_OBJECT
public:
typedef enum
{
LANGUAGE_JP = 1 << 0, // 1
LANGUAGE_EN = 1 << 1, // 2
#if (RC_LANGUAGE == 0x0412)
LANGUAGE_KR = 1 << 2, // 4
#endif
} LANGUAGE_TYPE;
typedef enum
{
TITLE_TEXT = 1 << 8,
TOOLTIP_TEXT = 1 << 9,
} TEXT_TYPE;
explicit RMLanguage(QObject *parent = NULL);
static RMLanguage* instance()
{
static RMLanguage * _instance = NULL;
if ( _instance == 0 ) {
_instance = new RMLanguage();
}
return _instance;
}
static RMLanguage::LANGUAGE_TYPE systemLanguage();
static bool isAuto;
#if !(REMOVE_OLD_C)
static bool isJP() // 제거예정
{
#if (FIXED_ENGLISH)
return false;
#else
return (RMLanguage::instance()->language() == RMLanguage::LANGUAGE_JP);
#endif
}
#endif // #if !(REMOVE_OLD_C)
static QString languageTag()
{
#if (LANGUAGE_REMOVE_ENG)
return "";
#else // LANGUAGE_REMOVE_ENG
#if (FIXED_ENGLISH)
return "_en";
#else // FIXED_ENGLISH
#if (SUB_MODEL_BV5000 == 1 || RM_MODEL == 16 || SUPPORT_MULTI_LANGUAGE)
switch(RMLanguage::instance()->language()) {
case RMLanguage::LANGUAGE_EN:
return "_en";
case RMLanguage::LANGUAGE_JP:
return "_jp";
case RMLanguage::LANGUAGE_KR:
return "";
}
#else
return (RMLanguage::instance()->language() == RMLanguage::LANGUAGE_EN) ? "_en" : "";
#endif //SUB_MODEL_BV5000
#endif // FIXED_ENGLISH
#endif // LANGUAGE_REMOVE_ENG
return "";
}
#if (LIVE_LANGUAGE2)
void append(const char* key,RMLanguage::TEXT_TYPE type,QObject* control);
#else // LIVE_LANGUAGE2
void append(RMLanguage::LANGUAGE_TYPE language,RMLanguage::TEXT_TYPE type, QObject* control,QString str);
void appendENGToolTip(QObject* control,QString str)
{
#if (LANGUAGE_REMOVE_ENG)
Q_UNUSED(control)
Q_UNUSED(str)
#else
append(RMLanguage::LANGUAGE_EN,RMLanguage::TOOLTIP_TEXT,control,str);
#endif
}
#endif // LIVE_LANGUAGE2
void remove(QObject* control);
void setLanguage(RMLanguage::LANGUAGE_TYPE language);
RMLanguage::LANGUAGE_TYPE language()
{
#if (FIXED_ENGLISH)
return RMLanguage::LANGUAGE_EN;
#else
return _currentLanguage;
#endif
}
// 0:자동, 1:일본어, 2:영어, 3:한국어
int languageIndex() {
if(RMLanguage::isAuto) {
return 0;
}
switch (_currentLanguage) {
case LANGUAGE_JP:
return 2;
case LANGUAGE_EN:
return 3;
#if (RC_LANGUAGE == 0x0412)
case LANGUAGE_KR:
return 1;
#endif
}
return 0;
}
void refresh();
private:
RMLanguage::LANGUAGE_TYPE _currentLanguage;
QHash<qint64,QHash<int,QString>*>* _list;
signals:
void languageChange(RMLanguage::LANGUAGE_TYPE language);
};
#endif // LIVE_LANGUAGE_CHANGE
#endif // RM_LANGUAGE_H