result_parcel_.reset(
reinterpret_cast<pkgmgr_common::parcel::AbstractParcelable *>(
dl_func(req_type_, &raw[0], raw.size(),
- pkgmgr_common::SystemLocale::GetInst().Get().c_str())));
+ pkgmgr_common::SystemLocale::GetInst(false).Get().c_str())));
return true;
}
namespace pkgmgr_common {
-SystemLocale& SystemLocale::GetInst() {
- static SystemLocale inst;
+SystemLocale& SystemLocale::GetInst(bool is_online) {
+ static SystemLocale inst(is_online);
return inst;
}
-SystemLocale::SystemLocale() {
- vconf_notify_key_changed(VCONFKEY_LANGSET, LanChangedCb, this);
+SystemLocale::SystemLocale(bool is_online) : is_online_(is_online) {
+ if (is_online_)
+ vconf_notify_key_changed(VCONFKEY_LANGSET, LanChangedCb, this);
+
char* lang = vconf_get_str(VCONFKEY_LANGSET);
lang_ = lang ? std::string(lang) : "";
free(lang);
}
SystemLocale::~SystemLocale() {
- vconf_ignore_key_changed(VCONFKEY_LANGSET, LanChangedCb);
+ if (is_online_)
+ vconf_ignore_key_changed(VCONFKEY_LANGSET, LanChangedCb);
}
void SystemLocale::RegisterEvent(IEvent* listener) {
virtual void OnChanged(const std::string& locale) = 0;
};
- static SystemLocale& GetInst();
+ static SystemLocale& GetInst(bool is_online = true);
const std::string& Get() const;
void RegisterEvent(IEvent* listener);
void UnRegisterEvent();
private:
std::string lang_;
std::string locale_;
+ bool is_online_;
IEvent* listener_ = nullptr;
- SystemLocale();
+ SystemLocale(bool is_online);
~SystemLocale();
void SetLocale();
static void LanChangedCb(keynode_t* node, void* user_data);