Code Refactoring: Language Class

This commit is contained in:
zilmar 2012-11-19 22:05:30 +11:00
parent a59c7ee634
commit 1014e1106a
2 changed files with 18 additions and 13 deletions

View File

@ -2,8 +2,9 @@
CLanguage * _Lang = NULL; CLanguage * _Lang = NULL;
void CLanguage::LoadDefaultStrings (void) { void CLanguage::LoadDefaultStrings (void)
#define DEF_STR(ID,str) DefaultStrings.insert(LANG_STRINGS::value_type(ID,str)) {
#define DEF_STR(ID,str) m_DefaultStrings.insert(LANG_STRINGS::value_type(ID,str))
DEF_STR(EMPTY_STRING, "" ); DEF_STR(EMPTY_STRING, "" );
DEF_STR(INI_CURRENT_LANG, "Current Language" ); DEF_STR(INI_CURRENT_LANG, "Current Language" );
@ -465,7 +466,7 @@ void CLanguage::LoadCurrentStrings ( bool ShowSelectDialog )
stdstr Filename; stdstr Filename;
//clear all the current strings loaded //clear all the current strings loaded
CurrentStrings.clear(); m_CurrentStrings.clear();
//Find the file name of the current language //Find the file name of the current language
for (LanguageList::iterator Language = LangList.begin(); Language != LangList.end(); Language++) { for (LanguageList::iterator Language = LangList.begin(); Language != LangList.end(); Language++) {
@ -494,7 +495,7 @@ void CLanguage::LoadCurrentStrings ( bool ShowSelectDialog )
//String; //String;
while(!feof(file)) while(!feof(file))
{ {
CurrentStrings.insert(GetNextLangString(file)); m_CurrentStrings.insert(GetNextLangString(file));
} }
fclose(file); fclose(file);
} }
@ -844,14 +845,15 @@ LanguageList & CLanguage::GetLangList (void)
return m_LanguageList; return m_LanguageList;
} }
const stdstr &CLanguage::GetString (LanguageStringID StringID) { const stdstr &CLanguage::GetString (LanguageStringID StringID)
LANG_STRINGS::iterator CurrentString = CurrentStrings.find(StringID); {
if (CurrentString != CurrentStrings.end()) { LANG_STRINGS::iterator CurrentString = m_CurrentStrings.find(StringID);
if (CurrentString != m_CurrentStrings.end()) {
return CurrentString->second; return CurrentString->second;
} }
LANG_STRINGS::iterator DefString = DefaultStrings.find(StringID); LANG_STRINGS::iterator DefString = m_DefaultStrings.find(StringID);
if (DefString != DefaultStrings.end()) { if (DefString != m_DefaultStrings.end()) {
return DefString->second; return DefString->second;
} }
#ifdef _DEBUG #ifdef _DEBUG
@ -860,7 +862,8 @@ const stdstr &CLanguage::GetString (LanguageStringID StringID) {
return m_emptyString; return m_emptyString;
} }
stdstr CLanguage::GetLangString ( const char * FileName, LanguageStringID ID ) { stdstr CLanguage::GetLangString ( const char * FileName, LanguageStringID ID )
{
FILE *file = fopen(FileName, "rb"); FILE *file = fopen(FileName, "rb");
if (file == NULL) { return stdstr(""); } if (file == NULL) { return stdstr(""); }
@ -877,7 +880,8 @@ stdstr CLanguage::GetLangString ( const char * FileName, LanguageStringID ID )
return stdstr(""); return stdstr("");
} }
LANG_STR CLanguage::GetNextLangString (void * OpenFile) { LANG_STR CLanguage::GetNextLangString (void * OpenFile)
{
enum { MAX_STRING_LEN = 400 }; enum { MAX_STRING_LEN = 400 };
int StringID; int StringID;
char szString[MAX_STRING_LEN]; //temp store the string from the file char szString[MAX_STRING_LEN]; //temp store the string from the file

View File

@ -15,7 +15,8 @@ typedef struct {
typedef std::list<LanguageFile> LanguageList; typedef std::list<LanguageFile> LanguageList;
class CLanguage { class CLanguage
{
public: public:
CLanguage ( ); CLanguage ( );
const stdstr & GetString ( LanguageStringID StringID ); const stdstr & GetString ( LanguageStringID StringID );
@ -31,7 +32,7 @@ private:
stdstr m_SelectedLanguage; stdstr m_SelectedLanguage;
const stdstr m_emptyString; const stdstr m_emptyString;
LANG_STRINGS CurrentStrings, DefaultStrings; LANG_STRINGS m_CurrentStrings, m_DefaultStrings;
LanguageList m_LanguageList; LanguageList m_LanguageList;
stdstr GetLangString ( const char * FileName, LanguageStringID ID ); stdstr GetLangString ( const char * FileName, LanguageStringID ID );