Merge "Apply string localization for web" into tizen_2.2
[platform/framework/native/appfw.git] / src / server / system / setting / providers / FSys_SettingStorageProvider.cpp
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
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
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
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.
15 //
16
17 /**
18  * @file        FSys_SettingStorageProvider.cpp
19  * @brief       This is the implementation for the _SettingStorageProvider class.
20  */
21
22 #include <FApp.h>
23 #include <FBase.h>
24 #include <FBaseSysLog.h>
25 #include <FIo.h>
26
27 #include "FSys_SettingInfo.h"
28 #include "FSys_SettingStorageProvider.h"
29
30 using namespace Tizen::App;
31 using namespace Tizen::Base;
32 using namespace Tizen::Base::Utility;
33 using namespace Tizen::Io;
34
35 namespace Tizen { namespace System
36 {
37
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";
46
47 _SettingStorageProvider::_SettingStorageProvider()
48 {
49         int errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, SettingEventVConf, null);
50         if(errorCode != 0)
51         {
52                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT event listener");
53         }
54
55         errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, SettingEventVConf, null);
56         if(errorCode != 0)
57         {
58                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT event listener");
59         }
60
61         errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, SettingEventVConf, null);
62         if(errorCode != 0)
63         {
64                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT event listener");
65         }
66
67         errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, SettingEventVConf, null);
68         if(errorCode != 0)
69         {
70                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT event listener");
71         }
72
73         errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, SettingEventVConf, null);
74         if(errorCode != 0)
75         {
76                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT event listener");
77         }
78
79         errorCode = vconf_notify_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT, SettingEventVConf, null);
80         if(errorCode != 0)
81         {
82                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to register VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT event listener");
83         }
84 }
85
86
87 _SettingStorageProvider::~_SettingStorageProvider()
88 {
89         int errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, SettingEventVConf);
90         if(errorCode != 0)
91         {
92                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT event listener");
93         }
94
95         errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, SettingEventVConf);
96         if(errorCode != 0)
97         {
98                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT event listener");
99         }
100
101         errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, SettingEventVConf);
102         if(errorCode != 0)
103         {
104                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT event listener");
105         }
106
107         errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, SettingEventVConf);
108         if(errorCode != 0)
109         {
110                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT event listener");
111         }
112
113         errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, SettingEventVConf);
114         if(errorCode != 0)
115         {
116                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT event listener");
117         }
118
119         errorCode = vconf_ignore_key_changed(VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT, SettingEventVConf);
120         if(errorCode != 0)
121         {
122                 SysLogException(NID_SYS, E_SYSTEM, "It is failed to unregister VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT event listener");
123         }
124 }
125
126 result
127 _SettingStorageProvider::GetValue(const String& key, String& value)
128 {
129         result r = E_OBJ_NOT_FOUND;
130         int errorCode = 0;
131         int storage_mode = 0;
132
133         if (key == _STORAGE_DIRECTORY_WAP_DOWNLOAD)
134         {
135                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
136                 r = E_SUCCESS;
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);
140
141                 switch(storage_mode)
142                 {
143                         case 0:
144                                 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
145                                 break;
146                         case 1:
147                                 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
148                                 break;
149                         default:
150                                 r = E_SYSTEM;
151                 }
152                 SysLog(NID_SYS, "storage wap download -> %s", value.GetPointer());
153         }
154         else if (key == _STORAGE_DIRECTORY_BLUETOOTH_DOWNLOAD)
155         {
156                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
157                 r = E_SUCCESS;
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");
160
161                 switch(storage_mode)
162                 {
163                         case 0:
164                                 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
165                                 break;
166                         case 1:
167                                 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
168                                 break;
169                         default:
170                                 r = E_SYSTEM;
171                 }
172         }
173         else if (key == _STORAGE_DIRECTORY_CAMERA_RECORD)
174         {
175                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
176                 r = E_SUCCESS;
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");
179
180                 switch(storage_mode)
181                 {
182                         case 0:
183                                 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
184                                 break;
185                         case 1:
186                                 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
187                                 break;
188                         default:
189                                 r = E_SYSTEM;
190                 }
191         }
192         else if (key == _STORAGE_DIRECTORY_VOICE_RECORD)
193         {
194                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
195                 r = E_SUCCESS;
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");
198
199                 switch(storage_mode)
200                 {
201                         case 0:
202                                 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
203                                 break;
204                         case 1:
205                                 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
206                                 break;
207                         default:
208                                 r = E_SYSTEM;
209                 }
210         }
211         else if (key == _STORAGE_DIRECTORY_RADIO_BROADCAST)
212         {
213                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
214                 r = E_SUCCESS;
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");
217
218                 switch(storage_mode)
219                 {
220                         case 0:
221                                 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
222                                 break;
223                         case 1:
224                                 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
225                                 break;
226                         default:
227                                 r = E_SYSTEM;
228                 }
229         }
230         else if (key == _STORAGE_DIRECTORY_VIDEO_BROADCAST)
231         {
232                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
233                 r = E_SUCCESS;
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");
236
237                 switch(storage_mode)
238                 {
239                         case 0:
240                                 value = _STORAGE_DIRECTORY_INTERNAL_MODE;
241                                 break;
242                         case 1:
243                                 value = _STORAGE_DIRECTORY_EXTERNAL_MODE;
244                                 break;
245                         default:
246                                 r = E_SYSTEM;
247                 }
248         }
249         return r;
250 }
251
252 result
253 _SettingStorageProvider::SetValue(const String& key, const String value)
254 {
255         result r = E_OBJ_NOT_FOUND;
256         int storage_mode = 0;
257         int errorCode = 0;
258         if(key == _STORAGE_DIRECTORY_WAP_DOWNLOAD)
259         {
260                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
261                 r = E_SUCCESS;
262
263                 String lowerValue;
264                 value.ToLowerCase(lowerValue);
265
266                 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
267                 {
268                         storage_mode = 0;
269                 }
270                 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
271                 {
272                         storage_mode = 1;
273                 }
274                 else
275                 {
276                         return E_UNSUPPORTED_OPERATION;
277                 }
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");
280         }
281         else if(key == _STORAGE_DIRECTORY_BLUETOOTH_DOWNLOAD)
282         {
283                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
284                 r = E_SUCCESS;
285
286                 String lowerValue;
287                 value.ToLowerCase(lowerValue);
288
289                 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
290                 {
291                         storage_mode = 0;
292                 }
293                 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
294                 {
295                         storage_mode = 1;
296                 }
297                 else
298                 {
299                         return E_UNSUPPORTED_OPERATION;
300                 }
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");
303         }
304         else if(key == _STORAGE_DIRECTORY_CAMERA_RECORD)
305         {
306                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
307                 r = E_SUCCESS;
308
309                 String lowerValue;
310                 value.ToLowerCase(lowerValue);
311
312                 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
313                 {
314                         storage_mode = 0;
315                 }
316                 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
317                 {
318                         storage_mode = 1;
319                 }
320                 else
321                 {
322                         return E_UNSUPPORTED_OPERATION;
323                 }
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");
326         }
327         else if(key == _STORAGE_DIRECTORY_VOICE_RECORD)
328         {
329                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
330                 r = E_SUCCESS;
331
332                 String lowerValue;
333                 value.ToLowerCase(lowerValue);
334
335                 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
336                 {
337                         storage_mode = 0;
338                 }
339                 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
340                 {
341                         storage_mode = 1;
342                 }
343                 else
344                 {
345                         return E_UNSUPPORTED_OPERATION;
346                 }
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");
349         }
350         else if(key == _STORAGE_DIRECTORY_RADIO_BROADCAST)
351         {
352                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
353                 r = E_SUCCESS;
354
355                 String lowerValue;
356                 value.ToLowerCase(lowerValue);
357
358                 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
359                 {
360                         storage_mode = 0;
361                 }
362                 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
363                 {
364                         storage_mode = 1;
365                 }
366                 else
367                 {
368                         return E_UNSUPPORTED_OPERATION;
369                 }
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");
372         }
373         else if(key == _STORAGE_DIRECTORY_VIDEO_BROADCAST)
374         {
375                 SysTryReturnResult(NID_SYS, HasKey(key) == true, E_UNSUPPORTED_OPERATION, "Current device does not support storage feature.");
376                 r = E_SUCCESS;
377
378                 String lowerValue;
379                 value.ToLowerCase(lowerValue);
380
381                 if(lowerValue == _STORAGE_DIRECTORY_INTERNAL_MODE)
382                 {
383                         storage_mode = 0;
384                 }
385                 else if(lowerValue == _STORAGE_DIRECTORY_EXTERNAL_MODE)
386                 {
387                         storage_mode = 1;
388                 }
389                 else
390                 {
391                         return E_UNSUPPORTED_OPERATION;
392                 }
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");
395         }
396         return r;
397 }
398
399 bool
400 _SettingStorageProvider::HasKey(const Tizen::Base::String& key)
401 {
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)
408         {
409                 return true;
410         }
411         return false;
412 }
413
414 void
415 _SettingStorageProvider::SettingEventVConf(keynode_t* node, void* userData)
416 {
417         String settingKey;
418
419         if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, vconf_keynode_get_name(node)) == 0)
420         {
421                 settingKey.Append(_STORAGE_DIRECTORY_WAP_DOWNLOAD);
422         }
423         else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_BLUETOOTH_INT, vconf_keynode_get_name(node)) == 0)
424         {
425                 settingKey.Append(_STORAGE_DIRECTORY_BLUETOOTH_DOWNLOAD);
426         }
427         else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_CAMERA_INT, vconf_keynode_get_name(node)) == 0)
428         {
429                 settingKey.Append(_STORAGE_DIRECTORY_CAMERA_RECORD);
430         }
431         else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_VOICE_RECORDER_INT, vconf_keynode_get_name(node)) == 0)
432         {
433                 settingKey.Append(_STORAGE_DIRECTORY_VOICE_RECORD);
434         }
435         else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_FM_RADIO_INT, vconf_keynode_get_name(node)) == 0)
436         {
437                 settingKey.Append(_STORAGE_DIRECTORY_RADIO_BROADCAST);
438         }
439         else if (strcmp(VCONFKEY_SETAPPL_DEFAULT_MEM_DVB_H_INT, vconf_keynode_get_name(node)) == 0)
440         {
441                 settingKey.Append(_STORAGE_DIRECTORY_VIDEO_BROADCAST);
442         }
443         else
444         {
445                 return;
446         }
447         
448         _SettingInfo* pSettingInfo = _SettingInfo::GetInstance();
449         SysTryReturnVoidResult(NID_SYS, pSettingInfo != null, E_SYSTEM, "_SettingInfo is not ready.");
450
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());
453 }
454
455 }}