2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
18 * @file FSys_SettingInfoImpl.cpp
19 * @brief This is the implementation file for _SysSettingInfoImpl class.
21 #include <unique_ptr.h>
22 #include <system/system_settings.h>
24 #include <FBaseColArrayList.h>
25 #include <FBaseSysLog.h>
26 #include <FBaseUtilStringUtil.h>
29 #include <FApp_AppInfo.h>
30 #include <FBase_StringConverter.h>
31 #include <FBase_NativeError.h>
32 #include <FSys_SettingInfoImpl.h>
34 #include "FSys_SettingClient.h"
38 using namespace Tizen::App;
39 using namespace Tizen::Base;
40 using namespace Tizen::Base::Collection;
41 using namespace Tizen::Io;
42 using namespace Tizen::Base::Utility;
44 namespace Tizen { namespace System
47 static const wchar_t* _SETTING_SCREEN_WALLPAPER = L"http://tizen.org/setting/screen.wallpaper";
48 static const wchar_t* _SETTING_SYSTEM_SOUND_VOLUME = L"SystemSoundVolume";
49 static const wchar_t* _SETTING_SOUND_SYSTEM_VOLUME= L"http://tizen.org/setting/sound.system.volume";
50 static const wchar_t* _SETTING_MEDIA_SOUND_VOLUME = L"MediaSoundVolume";
51 static const wchar_t* _SETTING_SOUND_MEDIA_VOLUME = L"http://tizen.org/setting/sound.media.volume";
52 static const wchar_t* _SETTING_RINGTONE_SOUND_VOLUME = L"RingtoneSoundVolume";
53 static const wchar_t* _SETTING_SOUND_RINGTONE = L"http://tizen.org/setting/sound.ringtone";
54 static const wchar_t* _SETTING_SOUND_RINGTONE_VOLUME = L"http://tizen.org/setting/sound.ringtone.volume";
55 static const wchar_t* _SETTING_NOTIFICATION_SOUND_VOLUME = L"NotificationSoundVolume";
56 static const wchar_t* _SETTING_SOUND_NOTIFICATION_VOLUME = L"http://tizen.org/setting/sound.notification.volume";
59 static const wchar_t* _FONT_SIZE = L"http://tizen.org/setting/font.size";
60 static const wchar_t* _FONTSIZE = L"FontSize";
61 static const wchar_t* _FONT_TYPE = L"http://tizen.org/setting/font.type";
62 static const wchar_t* _FONTTYPE = L"FontType";
64 static const wchar_t* _FONT_SIZE_GIANT = L"giant";
65 static const wchar_t* _FONT_SIZE_HUGE = L"huge";
66 static const wchar_t* _FONT_SIZE_LARGE = L"large";
67 static const wchar_t* _FONT_SIZE_MEDIUM = L"medium";
68 static const wchar_t* _FONT_SIZE_SMALL = L"small";
70 static const int _FONT_SIZE_GIANT_VCONF = 4;
71 static const int _FONT_SIZE_HUGE_VCONF = 3;
72 static const int _FONT_SIZE_LARGE_VCONF = 2;
73 static const int _FONT_SIZE_MEDIUM_VCONF = 1;
74 static const int _FONT_SIZE_SMALL_VCONF = 0;
77 static _SettingClient* pSettingClient = null;
80 _SettingInfoImpl::InitSettingClient(void)
82 if(pSettingClient == null)
84 pSettingClient = _SettingClient::GetInstance();
88 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, Tizen::Base::String& value)
92 if (key == _FONT_SIZE || key == _FONT_TYPE || key == _FONTSIZE || key == _FONTTYPE)
95 if(tizenKey == _FONTSIZE)
97 tizenKey = _FONT_SIZE;
99 else if(tizenKey == _FONTTYPE)
101 tizenKey = _FONT_TYPE;
104 r = GetValueForFont(tizenKey, value);
108 if(_AppInfo::GetApiVersion() == _API_VERSION_2_0 && _AppInfo::IsOspCompat() == true)
110 if(value == _FONT_SIZE_GIANT || value == _FONT_SIZE_HUGE)
112 value = _FONT_SIZE_LARGE; //OSP not support giant or huge size of font.
120 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
121 r = pSettingClient->GetValue(key, value);
127 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, int& value)
130 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
131 return pSettingClient->GetValue(key, value);
135 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, long long& value)
138 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
139 return pSettingClient->GetValue(key, value);
143 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, double& value)
146 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
147 return pSettingClient->GetValue(key, value);
151 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, bool& value)
154 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
155 return pSettingClient->GetValue(key, value);
159 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, Tizen::Base::UuId& value)
162 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
163 return pSettingClient->GetValue(key, value);
167 _SettingInfoImpl::SetWallpaper(const Tizen::Base::String& filePath)
170 result r = E_SUCCESS;
172 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
173 r = pSettingClient->SetValue(_SETTING_SCREEN_WALLPAPER, filePath);
175 if(r == E_INVALID_ARG)
176 r = E_FILE_NOT_FOUND;
177 else if(r == E_OBJ_NOT_FOUND)
179 else if(r == E_UNSUPPORTED_OPERATION)
186 _SettingInfoImpl::GetValueForPrivilegedKey(const String& key, bool& value)
190 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
191 return pSettingClient->GetValueForPrivilegedKey(key, value);
195 _SettingInfoImpl::SetValue(const String& key, bool value)
198 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
199 return pSettingClient->SetValue(key, value);
203 _SettingInfoImpl::SetValue(const String& key, int value)
206 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
207 return pSettingClient->SetValue(key, value);
212 _SettingInfoImpl::SetValue(const String& key, String value)
214 result r = E_SUCCESS;
215 if (key == _FONT_SIZE || key == _FONT_TYPE)
217 r = SetValueForFont(key, value);
222 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
223 return pSettingClient->SetValue(key, value);
229 _SettingInfoImpl::SetValueForPrivilegedKey(const String& key, bool value)
232 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
233 return pSettingClient->SetValueForPrivilegedKey(key, value);
237 _SettingInfoImpl::SetValueForPrivilegedKey(const String& key, String value)
240 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
241 return pSettingClient->SetValueForPrivilegedKey(key, value);
245 _SettingInfoImpl::HasKey(const String& key)
248 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
249 return pSettingClient->HasKey(key);
252 _SettingInfoImpl::ResetToFactoryDefault(void)
255 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
256 return pSettingClient->ResetToFactoryDefault();
260 _SettingInfoImpl::SetRingtone(const Tizen::Base::String& filePath)
262 result r = E_SUCCESS;
264 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
265 r = pSettingClient->SetValue(_SETTING_SOUND_RINGTONE, filePath);
267 if(r == E_INVALID_ARG)
268 r = E_FILE_NOT_FOUND;
269 else if(r == E_OBJ_NOT_FOUND)
271 else if(r == E_UNSUPPORTED_OPERATION)
278 _SettingInfoImpl::SetVolume(const Tizen::Base::String& soundCategory, int level)
280 result r = E_SUCCESS;
283 if (soundCategory == _SETTING_SYSTEM_SOUND_VOLUME)
285 key = _SETTING_SOUND_SYSTEM_VOLUME;
287 else if (soundCategory == _SETTING_MEDIA_SOUND_VOLUME)
289 key = _SETTING_SOUND_MEDIA_VOLUME;
291 else if (soundCategory == _SETTING_RINGTONE_SOUND_VOLUME)
293 key = _SETTING_SOUND_RINGTONE_VOLUME;
295 else if (soundCategory == _SETTING_NOTIFICATION_SOUND_VOLUME)
297 key = _SETTING_SOUND_NOTIFICATION_VOLUME;
305 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
306 r = pSettingClient->SetValue(key, level);
308 if (r == E_OBJ_NOT_FOUND)
312 else if(r == E_INVALID_ARG)
316 else if(r == E_UNSUPPORTED_OPERATION)
324 _SettingInfoImpl::AddSettingEventListener(ISettingEventListener& listener)
327 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
328 return pSettingClient->AddSettingEventListener(listener);
332 _SettingInfoImpl::RemoveSettingEventListener(ISettingEventListener& listener)
335 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
336 return pSettingClient->RemoveSettingEventListener(listener);
340 _SettingInfoImpl::AddSettingEventListenerForInternal(ISettingEventListener& listener)
343 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
344 return pSettingClient->AddSettingEventListenerForInternal(listener);
348 _SettingInfoImpl::RemoveSettingEventListenerForInternal(ISettingEventListener& listener)
351 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
352 return pSettingClient->RemoveSettingEventListenerForInternal(listener);
356 _SettingInfoImpl::SetSettingEventListener(ISettingEventListener* pListener)
359 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
360 return pSettingClient->SetSettingEventListener(pListener);
364 _SettingInfoImpl::SetValueAsync(const Tizen::Base::String& key, bool value, ISettingInfoSetValueAsyncResultListener* listener)
367 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
368 return pSettingClient->SetValueAsync(key, value, listener);
372 _SettingInfoImpl::SetValueAsyncForPrivilegedKey(const Tizen::Base::String& key, bool value, ISettingInfoSetValueAsyncResultListener* listener)
375 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
376 return pSettingClient->SetValueAsyncForPrivilegedKey(key, value, listener);
380 _SettingInfoImpl::GetInstance(SettingInfo& settinginfo)
382 return settinginfo.__pSettingInfoImpl;
385 const _SettingInfoImpl*
386 _SettingInfoImpl::GetInstance(const SettingInfo& settinginfo)
388 return settinginfo.__pSettingInfoImpl;
392 _SettingInfoImpl::GetValueForFont(const Tizen::Base::String& key, Tizen::Base::String& value)
394 result r = E_OBJ_NOT_FOUND;
396 if (key == _FONT_SIZE)
400 res = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &fontSize);
402 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to get font size.");
407 case _FONT_SIZE_GIANT_VCONF:
408 value.Append(_FONT_SIZE_GIANT);
410 case _FONT_SIZE_HUGE_VCONF:
411 value.Append(_FONT_SIZE_HUGE);
413 case _FONT_SIZE_LARGE_VCONF:
414 value.Append(_FONT_SIZE_LARGE);
416 case _FONT_SIZE_MEDIUM_VCONF:
417 value.Append(_FONT_SIZE_MEDIUM);
419 case _FONT_SIZE_SMALL_VCONF:
420 value.Append(_FONT_SIZE_SMALL);
428 else if (key == _FONT_TYPE)
431 char* pFontType = null;
433 res = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &pFontType);
434 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "Failed to get font type");
435 r = StringUtil::Utf8ToString(pFontType, value);
436 SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::Utf8ToString failed", GetErrorMessage(r));
444 _SettingInfoImpl::SetValueForFont(const Tizen::Base::String& key, Tizen::Base::String value)
446 result r = E_OBJ_NOT_FOUND;
448 if(key == _FONT_SIZE)
452 String lowerValue = value;
453 lowerValue.ToLowerCase();
456 if (lowerValue == _FONT_SIZE_GIANT)
458 fontSize = _FONT_SIZE_GIANT_VCONF;
460 else if (lowerValue == _FONT_SIZE_HUGE)
462 fontSize = _FONT_SIZE_HUGE_VCONF;
464 else if (lowerValue == _FONT_SIZE_LARGE)
466 fontSize = _FONT_SIZE_LARGE_VCONF;
468 else if (lowerValue == _FONT_SIZE_MEDIUM)
470 fontSize = _FONT_SIZE_MEDIUM_VCONF;
472 else if (lowerValue == _FONT_SIZE_SMALL)
474 fontSize = _FONT_SIZE_SMALL_VCONF;
478 return E_INVALID_ARG;
480 res = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, fontSize);
481 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font size.");
483 else if(key == _FONT_TYPE)
488 unique_ptr<char[]> pFontType(_StringConverter::CopyToCharArrayN(value));
489 SysTryReturnResult(NID_SYS, pFontType.get() != null, E_SYSTEM, "It is failed to convert String to string.");
490 SysLog(NID_SYS, "Requested font type is %s.", pFontType.get());
491 res = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, pFontType.get());
492 SysTryReturnResult(NID_SYS, res != SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, E_INVALID_ARG, "It is not valid font type.");
493 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font type.");