return support_events;
}
-char* DBManager::GetSystemLocale() {
+std::string DBManager::GetSystemLocale() {
char* lang;
- char* locale;
+ std::string locale;
char* ptr;
char* tmp;
lang = vconf_get_str(VCONFKEY_LANGSET);
- if (lang == nullptr) {
- locale = strdup(DEFAULT_LOCALE);
- if (locale == nullptr) {
- LOGE("out of memory");
- return nullptr;
- }
- return locale;
- }
+ if (lang == nullptr)
+ return std::string(DEFAULT_LOCALE);
tmp = strtok_r(lang, ".", &ptr);
+ free(lang);
if (tmp == nullptr) {
LOGE("failed to get language");
- free(lang);
- return nullptr;
+ return "";
}
- locale = strdup(tmp);
- if (locale == nullptr) {
- LOGE("out of memory");
- free(lang);
- return nullptr;
- }
-
- for (int i = 0; i < static_cast<int>(strlen(locale)); i++) {
+ locale = std::string(tmp);
+ for (int i = 0; i < (int)locale.size(); i++) {
if (locale[i] == '_')
locale[i] = '-';
if (isupper(locale[i]))
locale[i] = tolower(locale[i]);
}
-
- free(lang);
-
return locale;
}
if (!db.Prepare(query))
return std::string();
- char* locale = GetSystemLocale();
- if (locale == nullptr)
- return std::string();
-
- std::unique_ptr<char, decltype(std::free)*> locale_ptr(locale, std::free);
+ std::string locale = GetSystemLocale();
+ if (locale.empty())
+ return "";
if (!db.Bind(1, provider_id))
return std::string();
- if (!db.Bind(2, locale_ptr.get()))
+ if (!db.Bind(2, locale))
return std::string();
std::string label;
return label;
}
-std::string DBManager::GetIcon(const char* provider_id) {
+std::string DBManager::GetIcon(std::string provider_id, std::string locale) {
static const char query[] =
"SELECT icon_path FROM provider_icon "
"WHERE provider_id=? AND locale=?";
if (!db.Prepare(query))
return std::string();
- char* locale = GetSystemLocale();
- if (locale == nullptr)
- return std::string();
-
- std::unique_ptr<char, decltype(std::free)*> locale_ptr(locale, std::free);
-
if (!db.Bind(1, provider_id))
return std::string();
- if (!db.Bind(2, locale_ptr.get()))
+ if (!db.Bind(2, locale))
return std::string();
std::string icon;
static int GetSupportTypes(std::string& provider_id, int* types);
static int GetProviderPeriod(std::string& provider_id, int* period);
static std::string GetLabel(const char* provider_id);
- static std::string GetIcon(const char* provider_id);
+ static std::string GetIcon(std::string provider_id, std::string locale);
static std::string GetSetupAppId(const char* provider_id);
static bool IsProviderExist(std::string& provider_id, int support_type);
static std::list<std::string> GetProviderListWithAppId(const char* provider_id);
static int GetTrustedInfo(std::string& provider_id, bool* trusted);
+ static std::string GetSystemLocale();
private:
DBManager(); /* LCOV_EXCL_LINE */
virtual ~DBManager(); /* LCOV_EXCL_LINE */
- static char* GetSystemLocale();
};
} // namespace watchface_complication
bundle_get_str(const_cast<bundle*>(candidate_data),
Complication::GetProviderIdKey(), &val);
if (val != NULL) {
- std::string ic = DBManager::GetIcon(val);
+ std::string ic = DBManager::GetIcon(val, DBManager::GetSystemLocale());
+ if (ic.empty())
+ ic = DBManager::GetIcon(val, "No Locale");
if (!ic.empty()) {
char* shared_path;
aul_get_app_shared_resource_path_by_appid(