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::SetValueAsyncForPrivilegedKey(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->SetValueAsyncForPrivilegedKey(key, value, listener);
343 _SettingInfoImpl::GetInstance(SettingInfo& settinginfo)
345 return settinginfo.__pSettingInfoImpl;
348 const _SettingInfoImpl*
349 _SettingInfoImpl::GetInstance(const SettingInfo& settinginfo)
351 return settinginfo.__pSettingInfoImpl;
355 _SettingInfoImpl::GetValueForFont(const Tizen::Base::String& key, Tizen::Base::String& value)
357 result r = E_OBJ_NOT_FOUND;
359 if (key == _FONT_SIZE)
363 res = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &fontSize);
365 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to get font size.");
370 case _FONT_SIZE_GIANT_VCONF:
371 value.Append(_FONT_SIZE_GIANT);
373 case _FONT_SIZE_HUGE_VCONF:
374 value.Append(_FONT_SIZE_HUGE);
376 case _FONT_SIZE_LARGE_VCONF:
377 value.Append(_FONT_SIZE_LARGE);
379 case _FONT_SIZE_MEDIUM_VCONF:
380 value.Append(_FONT_SIZE_MEDIUM);
382 case _FONT_SIZE_SMALL_VCONF:
383 value.Append(_FONT_SIZE_SMALL);
391 else if (key == _FONT_TYPE)
394 char* pFontType = null;
396 res = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &pFontType);
397 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "Failed to get font type");
398 r = StringUtil::Utf8ToString(pFontType, value);
399 SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::Utf8ToString failed", GetErrorMessage(r));
407 _SettingInfoImpl::SetValueForFont(const Tizen::Base::String& key, Tizen::Base::String value)
409 result r = E_OBJ_NOT_FOUND;
411 if(key == _FONT_SIZE)
415 String lowerValue = value;
416 lowerValue.ToLowerCase();
419 if (lowerValue == _FONT_SIZE_GIANT)
421 fontSize = _FONT_SIZE_GIANT_VCONF;
423 else if (lowerValue == _FONT_SIZE_HUGE)
425 fontSize = _FONT_SIZE_HUGE_VCONF;
427 else if (lowerValue == _FONT_SIZE_LARGE)
429 fontSize = _FONT_SIZE_LARGE_VCONF;
431 else if (lowerValue == _FONT_SIZE_MEDIUM)
433 fontSize = _FONT_SIZE_MEDIUM_VCONF;
435 else if (lowerValue == _FONT_SIZE_SMALL)
437 fontSize = _FONT_SIZE_SMALL_VCONF;
441 return E_INVALID_ARG;
443 res = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, fontSize);
444 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font size.");
446 else if(key == _FONT_TYPE)
448 char* pFontType = null;
452 pFontType = _StringConverter::CopyToCharArrayN(value);
453 SysTryReturnResult(NID_SYS, pFontType != null, E_SYSTEM, "It is failed to convert String to string.");
454 SysLog(NID_SYS, "Requested font type is %s.", pFontType);
455 res = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, pFontType);
457 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font type.");