static sclboolean set_language_enabled(const sclchar *name, sclboolean enabled);
static sclboolean set_language_enabled_temporarily(const sclchar *name, sclboolean enabled_temporarily);
- static sclboolean set_enabled_languages(const std::vector<std::string> &languages, sclboolean enabled);
+ /* if languages num is 0, enable default language, othewise enable languages assigned */
+ static sclboolean set_enabled_languages(const std::vector<std::string> &languages);
static sclboolean set_all_languages_enabled(sclboolean enabled);
static const sclchar* get_current_language();
static LANGUAGE_INFO* get_language_info(int index);
static const sclchar* get_resource_file_path();
+private:
+ /* enable languages, if languages num is 0, return false */
+ static sclboolean enable_languages(const std::vector<std::string> &languages);
+ /* enable default language, regards the 1st language in the language_vector is the default language*/
+ static sclboolean enable_default_language();
protected:
static std::vector<LANGUAGE_INFO> language_vector;
if (gSCLUI && g_ise_common) {
read_ise_config_values();
- ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages, TRUE);
+
+ ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages);
/* Reset input mode if the input context value has changed */
if (ic != g_keyboard_state.ic) {
}
read_ise_config_values();
- ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages, TRUE);
+ ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages);
+
ISELanguageManager::select_language(g_config_values.selected_language.c_str());
}
std::string ISELanguageManager::temporary_language;
std::string ISELanguageManager::default_resource_file;
+sclboolean
+ISELanguageManager::set_all_languages_enabled(sclboolean enabled)
+{
+ sclboolean ret = TRUE;
+
+ std::vector<LANGUAGE_INFO>::iterator iter;
+ for (iter = language_vector.begin(); iter != language_vector.end(); ++iter) {
+ iter->enabled = enabled;
+ iter->enabled_temporarily = FALSE;
+ }
+
+ return ret;
+}
+
/* Each language-specific source files should put their callback information in the following vectors */
sclboolean ISELanguageManager::add_language(LANGUAGE_INFO language)
{
return ret;
}
-sclboolean ISELanguageManager::set_enabled_languages(const std::vector<std::string> &languages, sclboolean enabled)
+sclboolean ISELanguageManager::enable_languages(const std::vector<std::string> &vec_language_id)
{
sclboolean ret = FALSE;
- if (languages.size() == 0) {
- /* If there is NO language currently enabled, just enable ALL of them */
- set_all_languages_enabled(TRUE);
- } else {
- /* Otherwise, disable all languages and enable only those described in the config file */
- set_all_languages_enabled(FALSE);
+ if (vec_language_id.size() != 0) {
+ ret = set_all_languages_enabled(FALSE);
+
+ if (ret == FALSE) return ret;
std::vector<std::string>::const_iterator citer;
- for (citer = languages.begin();
- citer != languages.end(); citer++) {
- set_language_enabled(citer->c_str(), enabled);
+ for (citer = vec_language_id.begin(); citer != vec_language_id.end(); ++citer) {
+ ret = set_language_enabled(citer->c_str(), TRUE);
+ if (ret == FALSE) return FALSE;
}
}
return ret;
}
-sclboolean ISELanguageManager::set_all_languages_enabled(sclboolean enabled)
-{
- sclboolean ret = TRUE;
+/* FIXME A temporaty way for enable default language */
+sclboolean ISELanguageManager::enable_default_language() {
+ if (language_vector.size()) {
+ LANGUAGE_INFO &default_language = language_vector.at(0);
+ default_language.enabled = TRUE;
+ default_language.enabled_temporarily = FALSE;
+ return TRUE;
+ }
- for (std::vector<LANGUAGE_INFO>::iterator iter = language_vector.begin();
- iter != language_vector.end();std::advance(iter, 1)) {
- iter->enabled = enabled;
- iter->enabled_temporarily = FALSE;
+ return FALSE;
+}
+
+sclboolean ISELanguageManager::set_enabled_languages(const std::vector<std::string> &vec_language_id) {
+ sclboolean ret = FALSE;
+
+ if (vec_language_id.size() == 0 || FALSE == enable_languages(vec_language_id)) {
+ ret = enable_default_language();
}
return ret;
{
if (ISELanguageManager::get_enabled_languages_num() == 0) {
read_ise_config_values();
- ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages, TRUE);
+ ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages);
}
std::string languages = compose_selected_languages_string();
strncpy(main_itemdata[SETTING_ITEM_ID_LANGUAGE].sub_text, languages.c_str(), ITEM_DATA_STRING_LEN - 1);
read_ise_config_values();
/* To make sure there is no temporary language in the enabled language list */
- ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages, TRUE);
+ ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages);
set_option_values();
read_ise_config_values();
- ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages, TRUE);
+ ISELanguageManager::set_enabled_languages(g_config_values.enabled_languages);
+
ISELanguageManager::select_language(g_config_values.selected_language.c_str());
}
}