diff options
author | Junghoon Park <jh9216.park@samsung.com> | 2017-05-24 10:26:11 +0900 |
---|---|---|
committer | Junghoon Park <jh9216.park@samsung.com> | 2017-05-24 04:04:38 +0000 |
commit | 4484f4b263328669c77a6ce3843bbf1328e00f69 (patch) | |
tree | cb07c9eb247056845bb3c07a29583a33596d514b | |
parent | 6e08a7be9687a206aa1f56c87ae280a673ea0447 (diff) | |
download | widget-service-4484f4b263328669c77a6ce3843bbf1328e00f69.tar.gz widget-service-4484f4b263328669c77a6ce3843bbf1328e00f69.tar.bz2 widget-service-4484f4b263328669c77a6ce3843bbf1328e00f69.zip |
Find current locale when the incoming parameter 'lang' is nullsubmit/tizen_3.0/20170524.073551
Change-Id: I0eaac1c9a64eb4a13a6fdbabc48de8c4238506e8
Signed-off-by: Junghoon Park <jh9216.park@samsung.com>
-rw-r--r-- | src/widget_service.c | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/src/widget_service.c b/src/widget_service.c index 9aaa2cc..da15ede 100644 --- a/src/widget_service.c +++ b/src/widget_service.c @@ -1515,7 +1515,7 @@ static char *_get_name(const char *widget_id, const char *lang, uid_t uid) { static const char query[] = "SELECT label FROM label " - "WHERE classid=? AND (locale=? OR locale IS NULL) " + "WHERE classid=? AND (LOWER(locale)=LOWER(?) OR locale IS NULL) " "ORDER BY locale DESC"; int ret; sqlite3 *db; @@ -1570,9 +1570,37 @@ static char *_get_name(const char *widget_id, const char *lang, uid_t uid) } +static char *__get_cur_locale(void) +{ + char *language; + char *ptr; + + language = vconf_get_str(VCONFKEY_LANGSET); + if (language) { + ptr = language; + while (*ptr) { + if (*ptr == '.') { + *ptr = '\0'; + break; + } + + if (*ptr == '_') { + *ptr = '-'; + } + + ptr++; + } + } else { + language = strdup("en-us"); + } + + return language; +} + EAPI char *widget_service_get_name(const char *widget_id, const char *lang) { char *name; + char *language; if (!_is_widget_feature_enabled()) { _E("not supported"); @@ -1591,9 +1619,22 @@ EAPI char *widget_service_get_name(const char *widget_id, const char *lang) return NULL; } - name = _get_name(widget_id, lang, getuid()); + if (!lang) + language = __get_cur_locale(); + else + language = strdup(lang); + + if (!language) { + _E("Out-of-memory"); + set_last_result(WIDGET_ERROR_OUT_OF_MEMORY); + return NULL; + } + + name = _get_name(widget_id, language, getuid()); if (name == NULL && get_last_result() == WIDGET_ERROR_NOT_EXIST) - name = _get_name(widget_id, lang, GLOBALAPP_USER); + name = _get_name(widget_id, language, GLOBALAPP_USER); + + free(language); return name; } |