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_SettingStorageProvider.cpp
19 * @brief This is the implementation for the _SettingStorageProvider class.
24 #include <FBaseSysLog.h>
27 #include "FSys_SettingInfo.h"
28 #include "FSys_SettingStorageProvider.h"
30 using namespace Tizen::App;
31 using namespace Tizen::Base;
32 using namespace Tizen::Base::Utility;
33 using namespace Tizen::Io;
35 namespace Tizen { namespace System
38 static const wchar_t* _STORAGE_DIRECTORY_WAP_DOWNLOAD = L"http://tizen.org/setting/storage.directory.wap.download";
39 static const wchar_t* _STORAGE_DIRECTORY_BLUETOOTH_DOWNLOAD = L"http://tizen.org/setting/storage.directory.bluetooth.download";
40 static const wchar_t* _STORAGE_DIRECTORY_CAMERA_RECORD = L"http://tizen.org/setting/storage.directory.camera.record";
41 static const wchar_t* _STORAGE_DIRECTORY_VOICE_RECORD = L"http://tizen.org/setting/storage.directory.voice.record";
42 static const wchar_t* _STORAGE_DIRECTORY_RADIO_BROADCAST = L"http://tizen.org/setting/storage.directory.radio.broadcast";
43 static const wchar_t* _STORAGE_DIRECTORY_VIDEO_BROADCAST = L"http://tizen.org/setting/storage.directory.video.broadcast";
44 static const wchar_t* _STORAGE_DIRECTORY_INTERNAL_MODE = L"internal";
45 static const wchar_t* _STORAGE_DIRECTORY_EXTERNAL_MODE = L"external";
47 _SettingStorageProvider::_SettingStorageProvider()
49 int errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, SettingEventVConf, null);
52 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT event listener");
55 errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, SettingEventVConf, null);
58 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT event listener");
61 errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, SettingEventVConf, null);
64 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT event listener");
67 errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, SettingEventVConf, null);
70 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT event listener");
73 errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, SettingEventVConf, null);
76 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT event listener");
79 errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT, SettingEventVConf, null);
82 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT event listener");
87 _SettingStorageProvider::~_SettingStorageProvider()
89 int errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, SettingEventVConf);
92 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT event listener");
95 errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, SettingEventVConf);
98 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT event listener");
101 errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, SettingEventVConf);
104 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT event listener");
107 errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, SettingEventVConf);
110 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT event listener");
113 errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, SettingEventVConf);
116 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT event listener");
119 errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT, SettingEventVConf);
122 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT event listener");
127 _SettingStorageProvider::GetValue(const String& key, String& value)
129 result r = E_OBJ_NOT_FOUND;
131 int storage_mode = 0;
133 if (key == _STORAGE_DIRECTORY_WAP_DOWNLOAD)
135 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
137 errorCode = vconf_get_int(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, &storage_mode);
138 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to get on VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT vconf");
139 SysLog(NID_SYS, "storage wap download -> %d", storage_mode);
144 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
147 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
152 SysLog(NID_SYS, "storage wap download -> %s", value.GetPointer());
154 else if (key == _STORAGE_DIRECTORY_BLUETOOTH_DOWNLOAD)
156 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
158 errorCode = vconf_get_int(VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, &storage_mode);
159 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to get on VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT vconf");
164 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
167 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
173 else if (key == _STORAGE_DIRECTORY_CAMERA_RECORD)
175 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
177 errorCode = vconf_get_int(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, &storage_mode);
178 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to get on VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT vconf");
183 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
186 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
192 else if (key == _STORAGE_DIRECTORY_VOICE_RECORD)
194 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
196 errorCode = vconf_get_int(VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, &storage_mode);
197 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to get on VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT vconf");
202 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
205 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
211 else if (key == _STORAGE_DIRECTORY_RADIO_BROADCAST)
213 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
215 errorCode = vconf_get_int(VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, &storage_mode);
216 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to get on VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT vconf");
221 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
224 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
230 else if (key == _STORAGE_DIRECTORY_VIDEO_BROADCAST)
232 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
234 errorCode = vconf_get_int(VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT, &storage_mode);
235 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to get on VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT vconf");
240 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
243 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
253 _SettingStorageProvider::SetValue(const String& key, const String value)
255 result r = E_OBJ_NOT_FOUND;
256 int storage_mode = 0;
258 if(key == _STORAGE_DIRECTORY_WAP_DOWNLOAD)
260 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
264 value.ToLowerCase(lowerValue);
266 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
270 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
276 return E_UNSUPPORTED_OPERATION;
278 errorCode = vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, storage_mode);
279 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to set on VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT vconf");
281 else if(key == _STORAGE_DIRECTORY_BLUETOOTH_DOWNLOAD)
283 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
287 value.ToLowerCase(lowerValue);
289 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
293 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
299 return E_UNSUPPORTED_OPERATION;
301 errorCode = vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, storage_mode);
302 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to set on VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT vconf");
304 else if(key == _STORAGE_DIRECTORY_CAMERA_RECORD)
306 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
310 value.ToLowerCase(lowerValue);
312 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
316 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
322 return E_UNSUPPORTED_OPERATION;
324 errorCode = vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, storage_mode);
325 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to set on VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT vconf");
327 else if(key == _STORAGE_DIRECTORY_VOICE_RECORD)
329 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
333 value.ToLowerCase(lowerValue);
335 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
339 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
345 return E_UNSUPPORTED_OPERATION;
347 errorCode = vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, storage_mode);
348 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to set on VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT vconf");
350 else if(key == _STORAGE_DIRECTORY_RADIO_BROADCAST)
352 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
356 value.ToLowerCase(lowerValue);
358 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
362 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
368 return E_UNSUPPORTED_OPERATION;
370 errorCode = vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, storage_mode);
371 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to set on VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT vconf");
373 else if(key == _STORAGE_DIRECTORY_VIDEO_BROADCAST)
375 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
379 value.ToLowerCase(lowerValue);
381 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
385 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
391 return E_UNSUPPORTED_OPERATION;
393 errorCode = vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT, storage_mode);
394 SysTryReturnResult(NID_SYS, errorCode == 0, E_SYSTEM, "It is failed to set on VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT vconf");
400 _SettingStorageProvider::HasKey(const Tizen::Base::String& key)
402 if(key == _STORAGE_DIRECTORY_WAP_DOWNLOAD
403 || key == _STORAGE_DIRECTORY_BLUETOOTH_DOWNLOAD
404 || key == _STORAGE_DIRECTORY_CAMERA_RECORD
405 || key == _STORAGE_DIRECTORY_VOICE_RECORD
406 || key == _STORAGE_DIRECTORY_RADIO_BROADCAST
407 || key == _STORAGE_DIRECTORY_VIDEO_BROADCAST)
415 _SettingStorageProvider::SettingEventVConf(keynode_t* node, void* userData)
419 if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, vconf_keynode_get_name(node)) == 0)
421 settingKey.Append(_STORAGE_DIRECTORY_WAP_DOWNLOAD);
423 else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, vconf_keynode_get_name(node)) == 0)
425 settingKey.Append(_STORAGE_DIRECTORY_BLUETOOTH_DOWNLOAD);
427 else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, vconf_keynode_get_name(node)) == 0)
429 settingKey.Append(_STORAGE_DIRECTORY_CAMERA_RECORD);
431 else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, vconf_keynode_get_name(node)) == 0)
433 settingKey.Append(_STORAGE_DIRECTORY_VOICE_RECORD);
435 else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, vconf_keynode_get_name(node)) == 0)
437 settingKey.Append(_STORAGE_DIRECTORY_RADIO_BROADCAST);
439 else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT, vconf_keynode_get_name(node)) == 0)
441 settingKey.Append(_STORAGE_DIRECTORY_VIDEO_BROADCAST);
448 _SettingInfo* pSettingInfo = _SettingInfo::GetInstance();
449 SysTryReturnVoidResult(NID_SYS, pSettingInfo != null, E_SYSTEM, "_SettingInfo is not ready.");
451 result r = pSettingInfo->AnnounceSettingEvent(settingKey);
452 SysTryReturnVoidResult(NID_SYS, r == E_SUCCESS, E_SYSTEM, "It is failed to send the event[%ls].", settingKey.GetPointer());