summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2020-09-25 10:24:57 +0800
committerPeng Wu <alexepico@gmail.com>2020-09-25 10:24:57 +0800
commit117d390aea32de451a497b5f1bc1d9391f123079 (patch)
tree1439ed2497aa9ecf8bf7bbf182f0c8486fe3fabc
parent2823391970f8f6798340fdce8e514cc239054dd0 (diff)
downloadibus-libpinyin-117d390aea32de451a497b5f1bc1d9391f123079.tar.gz
Use enum CloudInputSource
-rw-r--r--src/PYConfig.h11
-rw-r--r--src/PYPCloudCandidates.cc17
-rw-r--r--src/PYPCloudCandidates.h2
-rw-r--r--src/PYPConfig.cc93
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))