summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2014-04-29 11:02:20 +0800
committerPeng Wu <alexepico@gmail.com>2014-04-29 11:02:20 +0800
commitad0e422ceaafe4fcddfc579d2061d93a6e711ab0 (patch)
tree5e7645948a7cdd1846d144dbac8efef39cbac044
parentf3b0fa4f04a06036c5cc177969a58c73e8e7c5b5 (diff)
downloadibus-libpinyin-ad0e422ceaafe4fcddfc579d2061d93a6e711ab0.tar.gz
ibus-libpinyin-ad0e422ceaafe4fcddfc579d2061d93a6e711ab0.tar.xz
ibus-libpinyin-ad0e422ceaafe4fcddfc579d2061d93a6e711ab0.zip
improves m_double_pinyin_schema read
-rw-r--r--src/PYConfig.cc2
-rw-r--r--src/PYConfig.h4
-rw-r--r--src/PYLibPinyin.cc23
-rw-r--r--src/PYPConfig.cc43
4 files changed, 37 insertions, 35 deletions
diff --git a/src/PYConfig.cc b/src/PYConfig.cc
index 554a13a..35e74e2 100644
--- a/src/PYConfig.cc
+++ b/src/PYConfig.cc
@@ -53,7 +53,7 @@ Config::initDefaultValues (void)
m_auto_commit = FALSE;
m_double_pinyin = FALSE;
- m_double_pinyin_schema = 0;
+ m_double_pinyin_schema = DOUBLE_PINYIN_DEFAULT;
m_double_pinyin_show_raw = FALSE;
m_init_chinese = TRUE;
diff --git a/src/PYConfig.h b/src/PYConfig.h
index dfb86db..a0cdb17 100644
--- a/src/PYConfig.h
+++ b/src/PYConfig.h
@@ -51,7 +51,7 @@ public:
gboolean commaPeriodPage (void) const { return m_comma_period_page; }
gboolean autoCommit (void) const { return m_auto_commit; }
gboolean doublePinyin (void) const { return m_double_pinyin; }
- gint doublePinyinSchema (void) const { return m_double_pinyin_schema; }
+ DoublePinyinScheme doublePinyinSchema (void) const { return m_double_pinyin_schema; }
gboolean doublePinyinShowRaw (void) const { return m_double_pinyin_show_raw; }
gboolean initChinese (void) const { return m_init_chinese; }
gboolean initFull (void) const { return m_init_full; }
@@ -97,7 +97,7 @@ protected:
gboolean m_auto_commit;
gboolean m_double_pinyin;
- gint m_double_pinyin_schema;
+ DoublePinyinScheme m_double_pinyin_schema;
gboolean m_double_pinyin_show_raw;
gboolean m_init_chinese;
diff --git a/src/PYLibPinyin.cc b/src/PYLibPinyin.cc
index 99b11bd..78299d5 100644
--- a/src/PYLibPinyin.cc
+++ b/src/PYLibPinyin.cc
@@ -162,33 +162,14 @@ LibPinyinBackEnd::finalize (void) {
m_instance.reset ();
}
-/* Here are the double pinyin keyboard scheme mapping table. */
-static const struct{
- gint double_pinyin_keyboard;
- DoublePinyinScheme scheme;
-} double_pinyin_options [] = {
- {0, DOUBLE_PINYIN_MS},
- {1, DOUBLE_PINYIN_ZRM},
- {2, DOUBLE_PINYIN_ABC},
- {3, DOUBLE_PINYIN_ZIGUANG},
- {4, DOUBLE_PINYIN_PYJJ},
- {5, DOUBLE_PINYIN_XHE}
-};
-
gboolean
LibPinyinBackEnd::setPinyinOptions (Config *config)
{
if (NULL == m_pinyin_context)
return FALSE;
- const gint map = config->doublePinyinSchema ();
- for (guint i = 0; i < G_N_ELEMENTS (double_pinyin_options); i++) {
- if (map == double_pinyin_options[i].double_pinyin_keyboard) {
- /* set double pinyin scheme. */
- DoublePinyinScheme scheme = double_pinyin_options[i].scheme;
- pinyin_set_double_pinyin_scheme (m_pinyin_context, scheme);
- }
- }
+ DoublePinyinScheme scheme = config->doublePinyinSchema ();
+ pinyin_set_double_pinyin_scheme (m_pinyin_context, scheme);
pinyin_option_t options = config->option()
| USE_RESPLIT_TABLE | USE_DIVIDED_TABLE;
diff --git a/src/PYPConfig.cc b/src/PYPConfig.cc
index 8b6d17c..fb42cdd 100644
--- a/src/PYPConfig.cc
+++ b/src/PYPConfig.cc
@@ -93,7 +93,7 @@ LibPinyinConfig::initDefaultValues (void)
m_auto_commit = FALSE;
m_double_pinyin = FALSE;
- m_double_pinyin_schema = 0;
+ m_double_pinyin_schema = DOUBLE_PINYIN_DEFAULT;
m_double_pinyin_show_raw = FALSE;
m_init_chinese = TRUE;
@@ -273,6 +273,19 @@ static const struct {
{ "CorrectPinyin_ON_ONG", PINYIN_CORRECT_ON_ONG },
};
+/* Here are the double pinyin keyboard scheme mapping table. */
+static const struct{
+ gint double_pinyin_keyboard;
+ DoublePinyinScheme scheme;
+} double_pinyin_schemes [] = {
+ {0, DOUBLE_PINYIN_MS},
+ {1, DOUBLE_PINYIN_ZRM},
+ {2, DOUBLE_PINYIN_ABC},
+ {3, DOUBLE_PINYIN_ZIGUANG},
+ {4, DOUBLE_PINYIN_PYJJ},
+ {5, DOUBLE_PINYIN_XHE}
+};
+
LibPinyinPinyinConfig::LibPinyinPinyinConfig (Bus & bus)
: LibPinyinConfig (bus, "pinyin")
{
@@ -294,11 +307,17 @@ LibPinyinPinyinConfig::readDefaultValues (void)
#if !defined(HAVE_IBUS_CONFIG_GET_VALUES)
/* double pinyin */
m_double_pinyin = read (CONFIG_DOUBLE_PINYIN, false);
- m_double_pinyin_schema = read (CONFIG_DOUBLE_PINYIN_SCHEMA, 0);
- if (m_double_pinyin_schema > DOUBLE_PINYIN_LAST) {
- m_double_pinyin_schema = 0;
- g_warn_if_reached ();
+
+ const gint map = read (CONFIG_DOUBLE_PINYIN_SCHEMA, 0);
+ m_double_pinyin_schema = DOUBLE_PINYIN_DEFAULT;
+
+ for (guint i = 0; i < G_N_ELEMENTS (double_pinyin_schemes); i++) {
+ if (map == double_pinyin_schemes[i].double_pinyin_keyboard) {
+ /* set double pinyin scheme. */
+ m_double_pinyin_schema = double_pinyin_schemes[i].scheme;
+ }
}
+
m_double_pinyin_show_raw = read (CONFIG_DOUBLE_PINYIN_SHOW_RAW, false);
/* init states */
@@ -347,13 +366,15 @@ LibPinyinPinyinConfig::valueChanged (const std::string &section,
if (CONFIG_DOUBLE_PINYIN == name)
m_double_pinyin = normalizeGVariant (value, false);
else if (CONFIG_DOUBLE_PINYIN_SCHEMA == name) {
- m_double_pinyin_schema = normalizeGVariant (value, 0);
-#if 0
- if (m_double_pinyin_schema > DOUBLE_PINYIN_LAST) {
- m_double_pinyin_schema = 0;
- g_warn_if_reached ();
+ const gint map = normalizeGVariant (value, 0);
+ m_double_pinyin_schema = DOUBLE_PINYIN_DEFAULT;
+
+ for (guint i = 0; i < G_N_ELEMENTS (double_pinyin_schemes); i++) {
+ if (map == double_pinyin_schemes[i].double_pinyin_keyboard) {
+ /* set double pinyin scheme. */
+ m_double_pinyin_schema = double_pinyin_schemes[i].scheme;
+ }
}
-#endif
}
else if (CONFIG_DOUBLE_PINYIN_SHOW_RAW == name)
m_double_pinyin_show_raw = normalizeGVariant (value, false);