2 // Open Service Platform
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Apache License, Version 2.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
19 * @file FSys_SettingInfoImpl.cpp
20 * @brief This is the implementation file for _SysSettingInfoImpl class.
22 #include <system/system_settings.h>
24 #include <FBaseColArrayList.h>
25 #include <FBaseSysLog.h>
27 #include <FBase_StringConverter.h>
28 #include <FBase_NativeError.h>
29 #include <FSys_SettingInfoImpl.h>
30 #include "FSys_SettingClient.h"
32 using namespace Tizen::App;
33 using namespace Tizen::Base;
34 using namespace Tizen::Base::Collection;
35 using namespace Tizen::Io;
36 using namespace Tizen::Base::Utility;
38 namespace Tizen { namespace System
41 static const int _SYSTEM_RESPONSE_DATA = 2;
44 static const wchar_t* _SETTING_SCREEN_WALLPAPER = L"http://tizen.org/setting/screen.wallpaper";
45 static const wchar_t* _SETTING_SYSTEM_SOUND_VOLUME = L"SystemSoundVolume";
46 static const wchar_t* _SETTING_SOUND_SYSTEM_VOLUME= L"http://tizen.org/setting/sound.system.volume";
47 static const wchar_t* _SETTING_MEDIA_SOUND_VOLUME = L"MediaSoundVolume";
48 static const wchar_t* _SETTING_SOUND_MEDIA_VOLUME = L"http://tizen.org/setting/sound.media.volume";
49 static const wchar_t* _SETTING_RINGTONE_SOUND_VOLUME = L"RingtoneSoundVolume";
50 static const wchar_t* _SETTING_SOUND_RINGTONE = L"http://tizen.org/setting/sound.ringtone";
51 static const wchar_t* _SETTING_SOUND_RINGTONE_VOLUME = L"http://tizen.org/setting/sound.ringtone.volume";
52 static const wchar_t* _SETTING_NOTIFICATION_SOUND_VOLUME = L"NotificationSoundVolume";
53 static const wchar_t* _SETTING_SOUND_NOTIFICATION_VOLUME = L"http://tizen.org/setting/sound.notification.volume";
56 static const wchar_t* _FONT_SIZE = L"http://tizen.org/setting/font.size";
57 static const wchar_t* _FONT_TYPE = L"http://tizen.org/setting/font.type";
59 static const wchar_t* _FONT_SIZE_GIANT = L"giant";
60 static const wchar_t* _FONT_SIZE_HUGE = L"huge";
61 static const wchar_t* _FONT_SIZE_LARGE = L"large";
62 static const wchar_t* _FONT_SIZE_MEDIUM = L"medium";
63 static const wchar_t* _FONT_SIZE_SMALL = L"small";
65 static const int _FONT_SIZE_GIANT_VCONF = 4;
66 static const int _FONT_SIZE_HUGE_VCONF = 3;
67 static const int _FONT_SIZE_LARGE_VCONF = 2;
68 static const int _FONT_SIZE_MEDIUM_VCONF = 1;
69 static const int _FONT_SIZE_SMALL_VCONF = 0;
72 static _SettingClient* pSettingClient = null;
75 _SettingInfoImpl::InitSettingClient(void)
77 if(pSettingClient == null)
79 pSettingClient = _SettingClient::GetInstance();
83 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, Tizen::Base::String& value)
87 if (key == _FONT_SIZE || key == _FONT_TYPE)
89 r = GetValueForFont(key, value);
94 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
95 r = pSettingClient->GetValue(key, value);
101 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, int& value)
104 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
105 return pSettingClient->GetValue(key, value);
109 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, long long& value)
112 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
113 return pSettingClient->GetValue(key, value);
117 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, double& value)
120 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
121 return pSettingClient->GetValue(key, value);
125 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, bool& value)
128 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
129 return pSettingClient->GetValue(key, value);
133 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, Tizen::Base::UuId& value)
136 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
137 return pSettingClient->GetValue(key, value);
141 _SettingInfoImpl::SetWallpaper(const Tizen::Base::String& filePath)
144 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
145 result r = pSettingClient->SetValue(_SETTING_SCREEN_WALLPAPER, filePath);
147 if(r == E_INVALID_ARG)
148 r = E_FILE_NOT_FOUND;
149 else if(r == E_OBJ_NOT_FOUND)
151 else if(r == E_UNSUPPORTED_OPERATION)
158 _SettingInfoImpl::GetValueForPrivilegedKey(const String& key, bool& value)
161 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
162 return pSettingClient->GetValueForPrivilegedKey(key, value);
166 _SettingInfoImpl::SetValue(const String& key, bool value)
169 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
170 return pSettingClient->SetValue(key, value);
174 _SettingInfoImpl::SetValue(const String& key, int value)
177 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
178 return pSettingClient->SetValue(key, value);
183 _SettingInfoImpl::SetValue(const String& key, String value)
185 result r = E_SUCCESS;
186 if (key == _FONT_SIZE || key == _FONT_TYPE)
188 r = SetValueForFont(key, value);
193 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
194 r = pSettingClient->SetValue(key, value);
200 _SettingInfoImpl::SetValueForPrivilegedKey(const String& key, bool value)
203 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
204 return pSettingClient->SetValueForPrivilegedKey(key, value);
208 _SettingInfoImpl::SetValueForPrivilegedKey(const String& key, String value)
211 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
212 return pSettingClient->SetValueForPrivilegedKey(key, value);
216 _SettingInfoImpl::HasKey(const String& key)
219 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
220 return pSettingClient->HasKey(key);
223 _SettingInfoImpl::ResetToFactoryDefault(void)
226 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
227 return pSettingClient->ResetToFactoryDefault();
231 _SettingInfoImpl::SetRingtone(const Tizen::Base::String& filePath)
234 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
235 result r = pSettingClient->SetValue(_SETTING_SOUND_RINGTONE, filePath);
237 if(r == E_INVALID_ARG)
238 r = E_FILE_NOT_FOUND;
239 else if(r == E_OBJ_NOT_FOUND)
241 else if(r == E_UNSUPPORTED_OPERATION)
248 _SettingInfoImpl::SetVolume(const Tizen::Base::String& soundCategory, int level)
250 result r = E_SUCCESS;
254 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
256 if (soundCategory == _SETTING_SYSTEM_SOUND_VOLUME)
258 key = _SETTING_SOUND_SYSTEM_VOLUME;
260 else if (soundCategory == _SETTING_MEDIA_SOUND_VOLUME)
262 key = _SETTING_SOUND_MEDIA_VOLUME;
264 else if (soundCategory == _SETTING_RINGTONE_SOUND_VOLUME)
266 key = _SETTING_SOUND_RINGTONE_VOLUME;
268 else if (soundCategory == _SETTING_NOTIFICATION_SOUND_VOLUME)
270 key = _SETTING_SOUND_NOTIFICATION_VOLUME;
277 r = pSettingClient->SetValue(key, level);
279 if (r == E_OBJ_NOT_FOUND)
283 else if(r == E_INVALID_ARG)
287 else if(r == E_UNSUPPORTED_OPERATION)
295 _SettingInfoImpl::AddSettingEventListener(ISettingEventListener& listener)
298 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
299 return pSettingClient->AddSettingEventListener(listener);
303 _SettingInfoImpl::RemoveSettingEventListener(ISettingEventListener& listener)
306 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
307 return pSettingClient->RemoveSettingEventListener(listener);
311 _SettingInfoImpl::AddSettingEventListenerForInternal(ISettingEventListener& listener)
314 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
315 return pSettingClient->AddSettingEventListenerForInternal(listener);
319 _SettingInfoImpl::RemoveSettingEventListenerForInternal(ISettingEventListener& listener)
322 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
323 return pSettingClient->RemoveSettingEventListenerForInternal(listener);
327 _SettingInfoImpl::SetSettingEventListener(ISettingEventListener* pListener)
330 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
331 return pSettingClient->SetSettingEventListener(pListener);
335 _SettingInfoImpl::SetValueAsync(const Tizen::Base::String& key, bool value, ISettingInfoSetValueAsyncResultListener* listener)
338 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
339 return pSettingClient->SetValueAsync(key, value, listener);
343 _SettingInfoImpl::SetValueAsyncForPrivilegedKey(const Tizen::Base::String& key, bool value, ISettingInfoSetValueAsyncResultListener* listener)
346 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
347 return pSettingClient->SetValueAsyncForPrivilegedKey(key, value, listener);
351 _SettingInfoImpl::GetInstance(SettingInfo& settinginfo)
353 return settinginfo.__pSettingInfoImpl;
356 const _SettingInfoImpl*
357 _SettingInfoImpl::GetInstance(const SettingInfo& settinginfo)
359 return settinginfo.__pSettingInfoImpl;
363 _SettingInfoImpl::GetValueForFont(const Tizen::Base::String& key, Tizen::Base::String& value)
365 result r = E_OBJ_NOT_FOUND;
367 if (key == _FONT_SIZE)
371 res = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &fontSize);
373 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to get font size.");
378 case _FONT_SIZE_GIANT_VCONF:
379 value.Append(_FONT_SIZE_GIANT);
381 case _FONT_SIZE_HUGE_VCONF:
382 value.Append(_FONT_SIZE_HUGE);
384 case _FONT_SIZE_LARGE_VCONF:
385 value.Append(_FONT_SIZE_LARGE);
387 case _FONT_SIZE_MEDIUM_VCONF:
388 value.Append(_FONT_SIZE_MEDIUM);
390 case _FONT_SIZE_SMALL_VCONF:
391 value.Append(_FONT_SIZE_SMALL);
399 else if (key == _FONT_TYPE)
402 char* pFontType = null;
404 res = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &pFontType);
405 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "Failed to get font type");
406 r = StringUtil::Utf8ToString(pFontType, value);
407 SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::Utf8ToString failed", GetErrorMessage(r));
415 _SettingInfoImpl::SetValueForFont(const Tizen::Base::String& key, Tizen::Base::String value)
417 result r = E_OBJ_NOT_FOUND;
419 if(key == _FONT_SIZE)
423 String lowerValue = value;
424 lowerValue.ToLowerCase();
427 if (lowerValue == _FONT_SIZE_GIANT)
429 fontSize = _FONT_SIZE_GIANT_VCONF;
431 else if (lowerValue == _FONT_SIZE_HUGE)
433 fontSize = _FONT_SIZE_HUGE_VCONF;
435 else if (lowerValue == _FONT_SIZE_LARGE)
437 fontSize = _FONT_SIZE_LARGE_VCONF;
439 else if (lowerValue == _FONT_SIZE_MEDIUM)
441 fontSize = _FONT_SIZE_MEDIUM_VCONF;
443 else if (lowerValue == _FONT_SIZE_SMALL)
445 fontSize = _FONT_SIZE_SMALL_VCONF;
449 return E_INVALID_ARG;
451 res = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, fontSize);
452 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font size.");
454 else if(key == _FONT_TYPE)
456 char* pFontType = null;
460 pFontType = _StringConverter::CopyToCharArrayN(value);
461 SysTryReturnResult(NID_SYS, pFontType != null, E_SYSTEM, "It is failed to convert String to string.");
462 SysLog(NID_SYS, "Requested font type is %s.", pFontType);
463 res = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, pFontType);
465 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font type.");