diff options
author | Peng Wu <alexepico@gmail.com> | 2020-09-25 10:24:57 +0800 |
---|---|---|
committer | Peng Wu <alexepico@gmail.com> | 2020-09-25 10:24:57 +0800 |
commit | 117d390aea32de451a497b5f1bc1d9391f123079 (patch) | |
tree | 1439ed2497aa9ecf8bf7bbf182f0c8486fe3fabc | |
parent | 2823391970f8f6798340fdce8e514cc239054dd0 (diff) | |
download | ibus-libpinyin-117d390aea32de451a497b5f1bc1d9391f123079.tar.gz |
Use enum CloudInputSource
-rw-r--r-- | src/PYConfig.h | 11 | ||||
-rw-r--r-- | src/PYPCloudCandidates.cc | 17 | ||||
-rw-r--r-- | src/PYPCloudCandidates.h | 2 | ||||
-rw-r--r-- | src/PYPConfig.cc | 93 |
4 files changed, 71 insertions, 52 deletions
diff --git a/src/PYConfig.h b/src/PYConfig.h index 55518ba..7fe9a25 100644 --- a/src/PYConfig.h +++ b/src/PYConfig.h @@ -39,10 +39,9 @@ typedef enum { } DisplayStyle; enum CloudInputSource{ - CLOUD_INPUT_SOURCE_BAIDU = 0, + CLOUD_INPUT_SOURCE_BAIDU, CLOUD_INPUT_SOURCE_GOOGLE, - CLOUD_INPUT_SOURCE_GOOGLE_CN, - CLOUD_INPUT_SOURCE_UNKNOWN + CLOUD_INPUT_SOURCE_GOOGLE_CN }; class Config { @@ -97,8 +96,10 @@ public: virtual gboolean networkDictionaryEndTimestamp (gint64 timestamp) { return FALSE; } +public: + /* cloud option */ gboolean enableCloudInput (void) const { return m_enable_cloud_input; } - guint cloudInputSource (void) const { return m_cloud_input_source; } + CloudInputSource cloudInputSource (void) const { return m_cloud_input_source; } guint cloudCandidatesNumber (void) const { return m_cloud_candidates_number; } guint cloudRequestDelayTime (void) const { return m_cloud_request_delay_time; } @@ -171,7 +172,7 @@ protected: gint64 m_network_dictionary_end_timestamp; gboolean m_enable_cloud_input; - guint m_cloud_input_source; + CloudInputSource m_cloud_input_source; guint m_cloud_candidates_number; guint m_cloud_request_delay_time; }; diff --git a/src/PYPCloudCandidates.cc b/src/PYPCloudCandidates.cc index a528b56..5d072ea 100644 --- a/src/PYPCloudCandidates.cc +++ b/src/PYPCloudCandidates.cc @@ -58,7 +58,7 @@ typedef struct class CloudCandidatesResponseParser { public: - CloudCandidatesResponseParser (guint input_source) : + CloudCandidatesResponseParser (CloudInputSource input_source) : m_input_source (input_source) {} virtual ~CloudCandidatesResponseParser () {} @@ -71,13 +71,13 @@ public: protected: std::vector<std::string> m_candidates; - const guint m_input_source; + const CloudInputSource m_input_source; }; class CloudCandidatesResponseJsonParser : public CloudCandidatesResponseParser { public: - CloudCandidatesResponseJsonParser (guint input_source) : + CloudCandidatesResponseJsonParser (CloudInputSource input_source) : CloudCandidatesResponseParser (input_source) { m_parser = json_parser_new (); @@ -211,7 +211,7 @@ public: } public: - GoogleCloudCandidatesResponseJsonParser (guint input_source) : CloudCandidatesResponseJsonParser (input_source) {} + GoogleCloudCandidatesResponseJsonParser (CloudInputSource input_source) : CloudCandidatesResponseJsonParser (input_source) {} }; class BaiduCloudCandidatesResponseJsonParser : public CloudCandidatesResponseJsonParser @@ -313,7 +313,7 @@ public: } public: - BaiduCloudCandidatesResponseJsonParser (guint input_source) : CloudCandidatesResponseJsonParser (input_source) {} + BaiduCloudCandidatesResponseJsonParser (CloudInputSource input_source) : CloudCandidatesResponseJsonParser (input_source) {} }; gboolean @@ -346,7 +346,7 @@ CloudCandidates::CloudCandidates (PhoneticEditor * editor) : m_input_mode(FullPi m_source_event_id = 0; m_message = NULL; - m_input_source = CLOUD_INPUT_SOURCE_UNKNOWN; + m_input_source = CLOUD_INPUT_SOURCE_BAIDU; m_parser = NULL; resetCloudResponseParser (); @@ -384,9 +384,10 @@ CloudCandidates::~CloudCandidates () void CloudCandidates::resetCloudResponseParser () { - guint input_source = m_editor->m_config.cloudInputSource (); + CloudInputSource input_source = m_editor->m_config.cloudInputSource (); - if (m_input_source == input_source) + /* m_parser is initialized and not changed */ + if (m_parser && m_input_source == input_source) return; /* cloud input option is changed */ diff --git a/src/PYPCloudCandidates.h b/src/PYPCloudCandidates.h index 10d2cac..a5ce3c0 100644 --- a/src/PYPCloudCandidates.h +++ b/src/PYPCloudCandidates.h @@ -90,7 +90,7 @@ private: SoupSession *m_session; InputMode m_input_mode; - guint m_input_source; + CloudInputSource m_input_source; CloudCandidatesResponseParser *m_parser; GTimer *m_timer; diff --git a/src/PYPConfig.cc b/src/PYPConfig.cc index 9f014bc..24e5828 100644 --- a/src/PYPConfig.cc +++ b/src/PYPConfig.cc @@ -196,6 +196,15 @@ static const struct{ {1, DISPLAY_STYLE_COMPACT} }; +static const struct{ + gint cloud_input_source_index; + CloudInputSource cloud_input_source; +} cloud_input_source_options [] = { + {0, CLOUD_INPUT_SOURCE_BAIDU}, + {1, CLOUD_INPUT_SOURCE_GOOGLE}, + {2, CLOUD_INPUT_SOURCE_GOOGLE_CN} +}; + void LibPinyinConfig::readDefaultValues (void) { @@ -293,6 +302,27 @@ LibPinyinConfig::readDefaultValues (void) } m_enable_cloud_input = read (CONFIG_INIT_ENABLE_CLOUD_INPUT, false); + + /* set cloud input source option. */ + index = read (CONFIG_CLOUD_INPUT_SOURCE, 0); + m_cloud_input_source = CLOUD_INPUT_SOURCE_BAIDU; + for (guint i = 0; i < G_N_ELEMENTS (cloud_input_source_options); i++) { + if (index == cloud_input_source_options[i].cloud_input_source_index) { + m_cloud_input_source = cloud_input_source_options[i].cloud_input_source; + } + } + + m_cloud_candidates_number = read (CONFIG_CLOUD_CANDIDATES_NUMBER, 1); + if (m_cloud_candidates_number > 10 || m_cloud_candidates_number < 1) { + m_cloud_candidates_number = 1; + g_warn_if_reached (); + } + + m_cloud_request_delay_time = read (CONFIG_CLOUD_REQUEST_DELAY_TIME, 600); + if (m_cloud_request_delay_time > 2000 || m_cloud_request_delay_time < 200) { + m_cloud_request_delay_time = 600; + g_warn_if_reached (); + } #endif } @@ -367,6 +397,31 @@ LibPinyinConfig::valueChanged (const std::string &schema_id, else if (CONFIG_INIT_ENABLE_CLOUD_INPUT == name) { m_enable_cloud_input = normalizeGVariant (value, false); } + else if (CONFIG_CLOUD_INPUT_SOURCE == name) { + const gint index = normalizeGVariant (value, 0); + m_cloud_input_source = CLOUD_INPUT_SOURCE_BAIDU; + + /* set cloud input source option. */ + for (guint i = 0; i < G_N_ELEMENTS (cloud_input_source_options); i++) { + if (index == cloud_input_source_options[i].cloud_input_source_index) { + m_cloud_input_source = cloud_input_source_options[i].cloud_input_source; + } + } + } + else if (CONFIG_CLOUD_CANDIDATES_NUMBER == name) { + m_cloud_candidates_number = normalizeGVariant (value, 1); + if (m_cloud_candidates_number > 10 || m_cloud_candidates_number < 1) { + m_cloud_candidates_number = 1; + g_warn_if_reached (); + } + } + else if (CONFIG_CLOUD_REQUEST_DELAY_TIME == name) { + m_cloud_request_delay_time = read (CONFIG_CLOUD_REQUEST_DELAY_TIME, 600); + if (m_cloud_request_delay_time > 2000 || m_cloud_request_delay_time < 200) { + m_cloud_request_delay_time = 600; + g_warn_if_reached (); + } + } /* fuzzy pinyin */ else if (CONFIG_FUZZY_PINYIN == name) { if (normalizeGVariant (value, false)) @@ -503,22 +558,6 @@ PinyinConfig::readDefaultValues (void) else m_option &= ~pinyin_options[i].option; } - m_cloud_candidates_number = read (CONFIG_CLOUD_CANDIDATES_NUMBER, 1); - if (m_cloud_candidates_number > 10 || m_cloud_candidates_number < 1) { - m_cloud_candidates_number = 1; - g_warn_if_reached (); - } - m_cloud_input_source = read (CONFIG_CLOUD_INPUT_SOURCE, 0); - if (m_cloud_input_source < CLOUD_INPUT_SOURCE_BAIDU || - m_cloud_input_source >= CLOUD_INPUT_SOURCE_UNKNOWN) { - m_cloud_input_source = CLOUD_INPUT_SOURCE_BAIDU; - g_warn_if_reached (); - } - m_cloud_request_delay_time = read (CONFIG_CLOUD_REQUEST_DELAY_TIME, 600); - if (m_cloud_request_delay_time > 2000 || m_cloud_request_delay_time < 200) { - m_cloud_request_delay_time = 600; - g_warn_if_reached (); - } #endif } @@ -585,28 +624,6 @@ PinyinConfig::valueChanged (const std::string &schema_id, else m_option_mask &= ~PINYIN_CORRECT_ALL; } - else if (CONFIG_CLOUD_CANDIDATES_NUMBER == name) { - m_cloud_candidates_number = normalizeGVariant (value, 1); - if (m_cloud_candidates_number > 10 || m_cloud_candidates_number < 1) { - m_cloud_candidates_number = 1; - g_warn_if_reached (); - } - } - else if (CONFIG_CLOUD_INPUT_SOURCE == name) { - m_cloud_input_source = normalizeGVariant (value, CLOUD_INPUT_SOURCE_BAIDU); - if (m_cloud_input_source < CLOUD_INPUT_SOURCE_BAIDU || - m_cloud_input_source >= CLOUD_INPUT_SOURCE_UNKNOWN) { - m_cloud_input_source = CLOUD_INPUT_SOURCE_BAIDU; - g_warn_if_reached (); - } - } - else if (CONFIG_CLOUD_REQUEST_DELAY_TIME == name) { - m_cloud_request_delay_time = read (CONFIG_CLOUD_REQUEST_DELAY_TIME, 600); - if (m_cloud_request_delay_time > 2000 || m_cloud_request_delay_time < 200) { - m_cloud_request_delay_time = 600; - g_warn_if_reached (); - } - } else { for (guint i = 0; i < G_N_ELEMENTS (pinyin_options); i++) { if (G_LIKELY (pinyin_options[i].name != name)) |