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>
25 #include <FBaseColArrayList.h>
26 #include <FBaseSysLog.h>
28 #include <FApp_AppInfo.h>
29 #include <FBase_StringConverter.h>
30 #include <FBase_NativeError.h>
31 #include <FSys_SettingInfoImpl.h>
32 #include "FSys_SettingClient.h"
34 using namespace Tizen::App;
35 using namespace Tizen::Base;
36 using namespace Tizen::Base::Collection;
37 using namespace Tizen::Io;
38 using namespace Tizen::Base::Utility;
40 namespace Tizen { namespace System
43 static const int _SYSTEM_RESPONSE_DATA = 2;
46 static const wchar_t* _SETTING_SCREEN_WALLPAPER = L"http://tizen.org/setting/screen.wallpaper";
47 static const wchar_t* _SETTING_SYSTEM_SOUND_VOLUME = L"SystemSoundVolume";
48 static const wchar_t* _SETTING_SOUND_SYSTEM_VOLUME= L"http://tizen.org/setting/sound.system.volume";
49 static const wchar_t* _SETTING_MEDIA_SOUND_VOLUME = L"MediaSoundVolume";
50 static const wchar_t* _SETTING_SOUND_MEDIA_VOLUME = L"http://tizen.org/setting/sound.media.volume";
51 static const wchar_t* _SETTING_RINGTONE_SOUND_VOLUME = L"RingtoneSoundVolume";
52 static const wchar_t* _SETTING_SOUND_RINGTONE = L"http://tizen.org/setting/sound.ringtone";
53 static const wchar_t* _SETTING_SOUND_RINGTONE_VOLUME = L"http://tizen.org/setting/sound.ringtone.volume";
54 static const wchar_t* _SETTING_NOTIFICATION_SOUND_VOLUME = L"NotificationSoundVolume";
55 static const wchar_t* _SETTING_SOUND_NOTIFICATION_VOLUME = L"http://tizen.org/setting/sound.notification.volume";
58 static const wchar_t* _FONT_SIZE = L"http://tizen.org/setting/font.size";
59 static const wchar_t* _FONTSIZE = L"FontSize";
60 static const wchar_t* _FONT_TYPE = L"http://tizen.org/setting/font.type";
61 static const wchar_t* _FONTTYPE = L"FontType";
63 static const wchar_t* _FONT_SIZE_GIANT = L"giant";
64 static const wchar_t* _FONT_SIZE_HUGE = L"huge";
65 static const wchar_t* _FONT_SIZE_LARGE = L"large";
66 static const wchar_t* _FONT_SIZE_MEDIUM = L"medium";
67 static const wchar_t* _FONT_SIZE_SMALL = L"small";
69 static const int _FONT_SIZE_GIANT_VCONF = 4;
70 static const int _FONT_SIZE_HUGE_VCONF = 3;
71 static const int _FONT_SIZE_LARGE_VCONF = 2;
72 static const int _FONT_SIZE_MEDIUM_VCONF = 1;
73 static const int _FONT_SIZE_SMALL_VCONF = 0;
76 static _SettingClient* pSettingClient = null;
79 _SettingInfoImpl::InitSettingClient(void)
81 if(pSettingClient == null)
83 pSettingClient = _SettingClient::GetInstance();
87 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, Tizen::Base::String& value)
91 if (key == _FONT_SIZE || key == _FONT_TYPE || key == _FONTSIZE || key == _FONTTYPE)
94 if(tizenKey == _FONTSIZE)
96 tizenKey = _FONT_SIZE;
98 else if(tizenKey == _FONTTYPE)
100 tizenKey = _FONT_TYPE;
103 r = GetValueForFont(tizenKey, value);
107 if(_AppInfo::GetApiVersion() == _API_VERSION_2_0 && _AppInfo::IsOspCompat() == true)
109 if(value == _FONT_SIZE_GIANT || value == _FONT_SIZE_HUGE)
111 value = _FONT_SIZE_LARGE; //OSP not support giant or huge size of font.
119 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
120 r = pSettingClient->GetValue(key, value);
126 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, int& value)
129 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
130 return pSettingClient->GetValue(key, value);
134 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, long long& value)
137 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
138 return pSettingClient->GetValue(key, value);
142 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, double& value)
145 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
146 return pSettingClient->GetValue(key, value);
150 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, bool& value)
153 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
154 return pSettingClient->GetValue(key, value);
158 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, Tizen::Base::UuId& value)
161 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
162 return pSettingClient->GetValue(key, value);
166 _SettingInfoImpl::SetWallpaper(const Tizen::Base::String& filePath)
169 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
170 result r = pSettingClient->SetValue(_SETTING_SCREEN_WALLPAPER, filePath);
172 if(r == E_INVALID_ARG)
173 r = E_FILE_NOT_FOUND;
174 else if(r == E_OBJ_NOT_FOUND)
176 else if(r == E_UNSUPPORTED_OPERATION)
183 _SettingInfoImpl::GetValueForPrivilegedKey(const String& key, bool& value)
186 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
187 return pSettingClient->GetValueForPrivilegedKey(key, value);
191 _SettingInfoImpl::SetValue(const String& key, bool value)
194 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
195 return pSettingClient->SetValue(key, value);
199 _SettingInfoImpl::SetValue(const String& key, int value)
202 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
203 return pSettingClient->SetValue(key, value);
208 _SettingInfoImpl::SetValue(const String& key, String value)
210 result r = E_SUCCESS;
211 if (key == _FONT_SIZE || key == _FONT_TYPE)
213 r = SetValueForFont(key, value);
218 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
219 r = pSettingClient->SetValue(key, value);
225 _SettingInfoImpl::SetValueForPrivilegedKey(const String& key, bool value)
228 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
229 return pSettingClient->SetValueForPrivilegedKey(key, value);
233 _SettingInfoImpl::SetValueForPrivilegedKey(const String& key, String value)
236 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
237 return pSettingClient->SetValueForPrivilegedKey(key, value);
241 _SettingInfoImpl::HasKey(const String& key)
244 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
245 return pSettingClient->HasKey(key);
248 _SettingInfoImpl::ResetToFactoryDefault(void)
251 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
252 return pSettingClient->ResetToFactoryDefault();
256 _SettingInfoImpl::SetRingtone(const Tizen::Base::String& filePath)
259 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
260 result r = pSettingClient->SetValue(_SETTING_SOUND_RINGTONE, filePath);
262 if(r == E_INVALID_ARG)
263 r = E_FILE_NOT_FOUND;
264 else if(r == E_OBJ_NOT_FOUND)
266 else if(r == E_UNSUPPORTED_OPERATION)
273 _SettingInfoImpl::SetVolume(const Tizen::Base::String& soundCategory, int level)
275 result r = E_SUCCESS;
279 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
281 if (soundCategory == _SETTING_SYSTEM_SOUND_VOLUME)
283 key = _SETTING_SOUND_SYSTEM_VOLUME;
285 else if (soundCategory == _SETTING_MEDIA_SOUND_VOLUME)
287 key = _SETTING_SOUND_MEDIA_VOLUME;
289 else if (soundCategory == _SETTING_RINGTONE_SOUND_VOLUME)
291 key = _SETTING_SOUND_RINGTONE_VOLUME;
293 else if (soundCategory == _SETTING_NOTIFICATION_SOUND_VOLUME)
295 key = _SETTING_SOUND_NOTIFICATION_VOLUME;
302 r = pSettingClient->SetValue(key, level);
304 if (r == E_OBJ_NOT_FOUND)
308 else if(r == E_INVALID_ARG)
312 else if(r == E_UNSUPPORTED_OPERATION)
320 _SettingInfoImpl::AddSettingEventListener(ISettingEventListener& listener)
323 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
324 return pSettingClient->AddSettingEventListener(listener);
328 _SettingInfoImpl::RemoveSettingEventListener(ISettingEventListener& listener)
331 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
332 return pSettingClient->RemoveSettingEventListener(listener);
336 _SettingInfoImpl::AddSettingEventListenerForInternal(ISettingEventListener& listener)
339 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
340 return pSettingClient->AddSettingEventListenerForInternal(listener);
344 _SettingInfoImpl::RemoveSettingEventListenerForInternal(ISettingEventListener& listener)
347 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
348 return pSettingClient->RemoveSettingEventListenerForInternal(listener);
352 _SettingInfoImpl::SetSettingEventListener(ISettingEventListener* pListener)
355 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
356 return pSettingClient->SetSettingEventListener(pListener);
360 _SettingInfoImpl::SetValueAsync(const Tizen::Base::String& key, bool value, ISettingInfoSetValueAsyncResultListener* listener)
363 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
364 return pSettingClient->SetValueAsync(key, value, listener);
368 _SettingInfoImpl::SetValueAsyncForPrivilegedKey(const Tizen::Base::String& key, bool value, ISettingInfoSetValueAsyncResultListener* listener)
371 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
372 return pSettingClient->SetValueAsyncForPrivilegedKey(key, value, listener);
376 _SettingInfoImpl::GetInstance(SettingInfo& settinginfo)
378 return settinginfo.__pSettingInfoImpl;
381 const _SettingInfoImpl*
382 _SettingInfoImpl::GetInstance(const SettingInfo& settinginfo)
384 return settinginfo.__pSettingInfoImpl;
388 _SettingInfoImpl::GetValueForFont(const Tizen::Base::String& key, Tizen::Base::String& value)
390 result r = E_OBJ_NOT_FOUND;
392 if (key == _FONT_SIZE)
396 res = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &fontSize);
398 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to get font size.");
403 case _FONT_SIZE_GIANT_VCONF:
404 value.Append(_FONT_SIZE_GIANT);
406 case _FONT_SIZE_HUGE_VCONF:
407 value.Append(_FONT_SIZE_HUGE);
409 case _FONT_SIZE_LARGE_VCONF:
410 value.Append(_FONT_SIZE_LARGE);
412 case _FONT_SIZE_MEDIUM_VCONF:
413 value.Append(_FONT_SIZE_MEDIUM);
415 case _FONT_SIZE_SMALL_VCONF:
416 value.Append(_FONT_SIZE_SMALL);
424 else if (key == _FONT_TYPE)
427 char* pFontType = null;
429 res = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &pFontType);
430 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "Failed to get font type");
431 r = StringUtil::Utf8ToString(pFontType, value);
432 SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::Utf8ToString failed", GetErrorMessage(r));
440 _SettingInfoImpl::SetValueForFont(const Tizen::Base::String& key, Tizen::Base::String value)
442 result r = E_OBJ_NOT_FOUND;
444 if(key == _FONT_SIZE)
448 String lowerValue = value;
449 lowerValue.ToLowerCase();
452 if (lowerValue == _FONT_SIZE_GIANT)
454 fontSize = _FONT_SIZE_GIANT_VCONF;
456 else if (lowerValue == _FONT_SIZE_HUGE)
458 fontSize = _FONT_SIZE_HUGE_VCONF;
460 else if (lowerValue == _FONT_SIZE_LARGE)
462 fontSize = _FONT_SIZE_LARGE_VCONF;
464 else if (lowerValue == _FONT_SIZE_MEDIUM)
466 fontSize = _FONT_SIZE_MEDIUM_VCONF;
468 else if (lowerValue == _FONT_SIZE_SMALL)
470 fontSize = _FONT_SIZE_SMALL_VCONF;
474 return E_INVALID_ARG;
476 res = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, fontSize);
477 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font size.");
479 else if(key == _FONT_TYPE)
481 char* pFontType = null;
485 pFontType = _StringConverter::CopyToCharArrayN(value);
486 SysTryReturnResult(NID_SYS, pFontType != null, E_SYSTEM, "It is failed to convert String to string.");
487 SysLog(NID_SYS, "Requested font type is %s.", pFontType);
488 res = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, pFontType);
490 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font type.");