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 int _SYSTEM_RESPONSE_DATA = 2;
50 static const wchar_t* _SETTING_SCREEN_WALLPAPER = L"http://tizen.org/setting/screen.wallpaper";
51 static const wchar_t* _SETTING_SYSTEM_SOUND_VOLUME = L"SystemSoundVolume";
52 static const wchar_t* _SETTING_SOUND_SYSTEM_VOLUME= L"http://tizen.org/setting/sound.system.volume";
53 static const wchar_t* _SETTING_MEDIA_SOUND_VOLUME = L"MediaSoundVolume";
54 static const wchar_t* _SETTING_SOUND_MEDIA_VOLUME = L"http://tizen.org/setting/sound.media.volume";
55 static const wchar_t* _SETTING_RINGTONE_SOUND_VOLUME = L"RingtoneSoundVolume";
56 static const wchar_t* _SETTING_SOUND_RINGTONE = L"http://tizen.org/setting/sound.ringtone";
57 static const wchar_t* _SETTING_SOUND_RINGTONE_VOLUME = L"http://tizen.org/setting/sound.ringtone.volume";
58 static const wchar_t* _SETTING_NOTIFICATION_SOUND_VOLUME = L"NotificationSoundVolume";
59 static const wchar_t* _SETTING_SOUND_NOTIFICATION_VOLUME = L"http://tizen.org/setting/sound.notification.volume";
62 static const wchar_t* _FONT_SIZE = L"http://tizen.org/setting/font.size";
63 static const wchar_t* _FONTSIZE = L"FontSize";
64 static const wchar_t* _FONT_TYPE = L"http://tizen.org/setting/font.type";
65 static const wchar_t* _FONTTYPE = L"FontType";
67 static const wchar_t* _FONT_SIZE_GIANT = L"giant";
68 static const wchar_t* _FONT_SIZE_HUGE = L"huge";
69 static const wchar_t* _FONT_SIZE_LARGE = L"large";
70 static const wchar_t* _FONT_SIZE_MEDIUM = L"medium";
71 static const wchar_t* _FONT_SIZE_SMALL = L"small";
73 static const int _FONT_SIZE_GIANT_VCONF = 4;
74 static const int _FONT_SIZE_HUGE_VCONF = 3;
75 static const int _FONT_SIZE_LARGE_VCONF = 2;
76 static const int _FONT_SIZE_MEDIUM_VCONF = 1;
77 static const int _FONT_SIZE_SMALL_VCONF = 0;
80 static _SettingClient* pSettingClient = null;
83 _SettingInfoImpl::InitSettingClient(void)
85 if(pSettingClient == null)
87 pSettingClient = _SettingClient::GetInstance();
91 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, Tizen::Base::String& value)
95 if (key == _FONT_SIZE || key == _FONT_TYPE || key == _FONTSIZE || key == _FONTTYPE)
98 if(tizenKey == _FONTSIZE)
100 tizenKey = _FONT_SIZE;
102 else if(tizenKey == _FONTTYPE)
104 tizenKey = _FONT_TYPE;
107 r = GetValueForFont(tizenKey, value);
111 if(_AppInfo::GetApiVersion() == _API_VERSION_2_0 && _AppInfo::IsOspCompat() == true)
113 if(value == _FONT_SIZE_GIANT || value == _FONT_SIZE_HUGE)
115 value = _FONT_SIZE_LARGE; //OSP not support giant or huge size of font.
123 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
124 r = pSettingClient->GetValue(key, value);
130 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, int& value)
133 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
134 return pSettingClient->GetValue(key, value);
138 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, long long& value)
141 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
142 return pSettingClient->GetValue(key, value);
146 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, double& value)
149 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
150 return pSettingClient->GetValue(key, value);
154 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, bool& value)
157 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
158 return pSettingClient->GetValue(key, value);
162 _SettingInfoImpl::GetValue(const Tizen::Base::String& key, Tizen::Base::UuId& value)
165 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
166 return pSettingClient->GetValue(key, value);
170 _SettingInfoImpl::SetWallpaper(const Tizen::Base::String& filePath)
173 result r = E_SUCCESS;
175 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
176 r = pSettingClient->SetValue(_SETTING_SCREEN_WALLPAPER, filePath);
178 if(r == E_INVALID_ARG)
179 r = E_FILE_NOT_FOUND;
180 else if(r == E_OBJ_NOT_FOUND)
182 else if(r == E_UNSUPPORTED_OPERATION)
189 _SettingInfoImpl::GetValueForPrivilegedKey(const String& key, bool& value)
193 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
194 return pSettingClient->GetValueForPrivilegedKey(key, value);
198 _SettingInfoImpl::SetValue(const String& key, bool value)
201 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
202 return pSettingClient->SetValue(key, value);
206 _SettingInfoImpl::SetValue(const String& key, int value)
209 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
210 return pSettingClient->SetValue(key, value);
215 _SettingInfoImpl::SetValue(const String& key, String value)
217 result r = E_SUCCESS;
218 if (key == _FONT_SIZE || key == _FONT_TYPE)
220 r = SetValueForFont(key, value);
225 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
226 return pSettingClient->SetValue(key, value);
232 _SettingInfoImpl::SetValueForPrivilegedKey(const String& key, bool value)
235 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
236 return pSettingClient->SetValueForPrivilegedKey(key, value);
240 _SettingInfoImpl::SetValueForPrivilegedKey(const String& key, String value)
243 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
244 return pSettingClient->SetValueForPrivilegedKey(key, value);
248 _SettingInfoImpl::HasKey(const String& key)
251 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
252 return pSettingClient->HasKey(key);
255 _SettingInfoImpl::ResetToFactoryDefault(void)
258 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
259 return pSettingClient->ResetToFactoryDefault();
263 _SettingInfoImpl::SetRingtone(const Tizen::Base::String& filePath)
265 result r = E_SUCCESS;
267 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
268 r = pSettingClient->SetValue(_SETTING_SOUND_RINGTONE, filePath);
270 if(r == E_INVALID_ARG)
271 r = E_FILE_NOT_FOUND;
272 else if(r == E_OBJ_NOT_FOUND)
274 else if(r == E_UNSUPPORTED_OPERATION)
281 _SettingInfoImpl::SetVolume(const Tizen::Base::String& soundCategory, int level)
283 result r = E_SUCCESS;
286 if (soundCategory == _SETTING_SYSTEM_SOUND_VOLUME)
288 key = _SETTING_SOUND_SYSTEM_VOLUME;
290 else if (soundCategory == _SETTING_MEDIA_SOUND_VOLUME)
292 key = _SETTING_SOUND_MEDIA_VOLUME;
294 else if (soundCategory == _SETTING_RINGTONE_SOUND_VOLUME)
296 key = _SETTING_SOUND_RINGTONE_VOLUME;
298 else if (soundCategory == _SETTING_NOTIFICATION_SOUND_VOLUME)
300 key = _SETTING_SOUND_NOTIFICATION_VOLUME;
308 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
309 r = pSettingClient->SetValue(key, level);
311 if (r == E_OBJ_NOT_FOUND)
315 else if(r == E_INVALID_ARG)
319 else if(r == E_UNSUPPORTED_OPERATION)
327 _SettingInfoImpl::AddSettingEventListener(ISettingEventListener& listener)
330 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
331 return pSettingClient->AddSettingEventListener(listener);
335 _SettingInfoImpl::RemoveSettingEventListener(ISettingEventListener& listener)
338 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
339 return pSettingClient->RemoveSettingEventListener(listener);
343 _SettingInfoImpl::AddSettingEventListenerForInternal(ISettingEventListener& listener)
346 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
347 return pSettingClient->AddSettingEventListenerForInternal(listener);
351 _SettingInfoImpl::RemoveSettingEventListenerForInternal(ISettingEventListener& listener)
354 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
355 return pSettingClient->RemoveSettingEventListenerForInternal(listener);
359 _SettingInfoImpl::SetSettingEventListener(ISettingEventListener* pListener)
362 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
363 return pSettingClient->SetSettingEventListener(pListener);
367 _SettingInfoImpl::SetValueAsync(const Tizen::Base::String& key, bool value, ISettingInfoSetValueAsyncResultListener* listener)
370 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
371 return pSettingClient->SetValueAsync(key, value, listener);
375 _SettingInfoImpl::SetValueAsyncForPrivilegedKey(const Tizen::Base::String& key, bool value, ISettingInfoSetValueAsyncResultListener* listener)
378 SysTryReturnResult(NID_SYS, pSettingClient != null, E_SYSTEM, "It is failed to intialize setting manager");
379 return pSettingClient->SetValueAsyncForPrivilegedKey(key, value, listener);
383 _SettingInfoImpl::GetInstance(SettingInfo& settinginfo)
385 return settinginfo.__pSettingInfoImpl;
388 const _SettingInfoImpl*
389 _SettingInfoImpl::GetInstance(const SettingInfo& settinginfo)
391 return settinginfo.__pSettingInfoImpl;
395 _SettingInfoImpl::GetValueForFont(const Tizen::Base::String& key, Tizen::Base::String& value)
397 result r = E_OBJ_NOT_FOUND;
399 if (key == _FONT_SIZE)
403 res = system_settings_get_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, &fontSize);
405 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to get font size.");
410 case _FONT_SIZE_GIANT_VCONF:
411 value.Append(_FONT_SIZE_GIANT);
413 case _FONT_SIZE_HUGE_VCONF:
414 value.Append(_FONT_SIZE_HUGE);
416 case _FONT_SIZE_LARGE_VCONF:
417 value.Append(_FONT_SIZE_LARGE);
419 case _FONT_SIZE_MEDIUM_VCONF:
420 value.Append(_FONT_SIZE_MEDIUM);
422 case _FONT_SIZE_SMALL_VCONF:
423 value.Append(_FONT_SIZE_SMALL);
431 else if (key == _FONT_TYPE)
434 char* pFontType = null;
436 res = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, &pFontType);
437 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "Failed to get font type");
438 r = StringUtil::Utf8ToString(pFontType, value);
439 SysTryReturn(NID_SYS, r == E_SUCCESS, E_SYSTEM, r, "[%s] StringUtil::Utf8ToString failed", GetErrorMessage(r));
447 _SettingInfoImpl::SetValueForFont(const Tizen::Base::String& key, Tizen::Base::String value)
449 result r = E_OBJ_NOT_FOUND;
451 if(key == _FONT_SIZE)
455 String lowerValue = value;
456 lowerValue.ToLowerCase();
459 if (lowerValue == _FONT_SIZE_GIANT)
461 fontSize = _FONT_SIZE_GIANT_VCONF;
463 else if (lowerValue == _FONT_SIZE_HUGE)
465 fontSize = _FONT_SIZE_HUGE_VCONF;
467 else if (lowerValue == _FONT_SIZE_LARGE)
469 fontSize = _FONT_SIZE_LARGE_VCONF;
471 else if (lowerValue == _FONT_SIZE_MEDIUM)
473 fontSize = _FONT_SIZE_MEDIUM_VCONF;
475 else if (lowerValue == _FONT_SIZE_SMALL)
477 fontSize = _FONT_SIZE_SMALL_VCONF;
481 return E_INVALID_ARG;
483 res = system_settings_set_value_int(SYSTEM_SETTINGS_KEY_FONT_SIZE, fontSize);
484 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font size.");
486 else if(key == _FONT_TYPE)
491 unique_ptr<char[]> pFontType(_StringConverter::CopyToCharArrayN(value));
492 SysTryReturnResult(NID_SYS, pFontType.get() != null, E_SYSTEM, "It is failed to convert String to string.");
493 SysLog(NID_SYS, "Requested font type is %s.", pFontType.get());
494 res = system_settings_set_value_string(SYSTEM_SETTINGS_KEY_FONT_TYPE, pFontType.get());
495 SysTryReturnResult(NID_SYS, res != SYSTEM_SETTINGS_ERROR_INVALID_PARAMETER, E_INVALID_ARG, "It is not valid font type.");
496 SysTryReturnResult(NID_SYS, res == SYSTEM_SETTINGS_ERROR_NONE, E_SYSTEM, "It is failed to set font type.");