NABI issue 43925
[apps/osp/Camera.git] / src / CmCameraSettingsPresentationModel.cpp
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.1 (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://floralicense.org/license/
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                CmCameraSettingsPresentationModel.cpp
19  * @brief               This is the implementation file for CameraSettingsPresentationModel class.
20  */
21
22 #include <cstdlib>
23 #include "CmCameraSettingsPresentationModel.h"
24 #include "CmTypes.h"
25
26 using namespace Tizen::App;
27 using namespace Tizen::Base;
28 using namespace Tizen::Io;
29 using namespace Tizen::Media;
30 using namespace Tizen::Graphics;
31 using namespace Tizen::System;
32
33 static const int DEFAULT_VALUE_ZERO = 0;
34 static const int DEFAULT_VALUE_ONE = 1;
35
36 const wchar_t* PATH_CAMERA_DEFAULT_SETTINGS = L"data/CameraDefaultSettings.ini";
37
38 CameraSettingsPresentationModel* CameraSettingsPresentationModel::__pCameraSettingsPresentationModel = null;
39
40 CameraSettingsPresentationModel::CameraSettingsPresentationModel(void)
41         : __pDefaultCameraRegistry(null)
42 {
43         AppLogDebug("ENTER");
44         AppLogDebug("EXIT");
45 }
46
47 CameraSettingsPresentationModel::~CameraSettingsPresentationModel(void)
48 {
49         AppLogDebug("ENTER");
50
51         if (__pDefaultCameraRegistry !=null)
52         {
53                 delete __pDefaultCameraRegistry;
54         }
55
56         AppLogDebug("EXIT");
57 }
58
59 CameraSettingsPresentationModel*
60 CameraSettingsPresentationModel::GetInstance(void)
61 {
62         AppLogDebug("ENTER");
63         if (__pCameraSettingsPresentationModel == null)
64         {
65                 AppLogDebug("CameraSettingsPresentationModel GetInstance");
66
67                 CreateInstance();
68         }
69
70         AppLogDebug("EXIT");
71         return __pCameraSettingsPresentationModel;
72 }
73
74 void
75 CameraSettingsPresentationModel::CreateInstance(void)
76 {
77         AppLogDebug("ENTER");
78         __pCameraSettingsPresentationModel = new (std::nothrow) CameraSettingsPresentationModel();
79
80         result r = __pCameraSettingsPresentationModel->Construct();
81
82         if (IsFailed(r))
83         {
84                 delete __pCameraSettingsPresentationModel;
85                 __pCameraSettingsPresentationModel = null;
86                 return;
87         }
88
89 //      std::atexit(DestroyInstance);
90         AppLogDebug("EXIT");
91 }
92
93 void
94 CameraSettingsPresentationModel::DestroyInstance(void)
95 {
96         AppLogDebug("ENTER");
97         delete __pCameraSettingsPresentationModel;
98         __pCameraSettingsPresentationModel = null;
99         AppLogDebug("EXIT");
100 }
101
102 result
103 CameraSettingsPresentationModel::GetValue(const Tizen::Base::String& strSectionName, const Tizen::Base::String& entryName, int& value) const
104 {
105         AppLogDebug("ENTER");
106         result r = E_SUCCESS;
107         String pathCameraDefaultSetting = App::GetInstance()->GetAppRootPath() + PATH_CAMERA_DEFAULT_SETTINGS;
108
109         AppLogDebug("EntryName of registry is %ls",entryName.GetPointer());
110         AppLogDebug("Entry value of registry is %d",value);
111         AppLogDebug("section name is %ls",strSectionName.GetPointer());
112
113         r = __pDefaultCameraRegistry->GetValue(strSectionName, entryName, value);
114         TryCatch(r == E_SUCCESS, , "Registry::GetValue() failed[%s]", GetErrorMessage(r));
115
116         AppLogDebug("EXIT");
117         return r;
118
119 CATCH:
120         AppLogDebug("CATCH - GetValue");
121         if (File::IsFileExist(pathCameraDefaultSetting))
122         {
123                 r = File::Remove(pathCameraDefaultSetting);
124
125                 if (r != E_SUCCESS)
126                 {
127                         AppLogDebug("File:: Remove[%s]", GetErrorMessage(r));
128                         UiApp::GetInstance()->Terminate();
129                 }
130         }
131
132         if (__pDefaultCameraRegistry )
133         {
134                 delete __pDefaultCameraRegistry;
135                 __pDefaultCameraRegistry = null;
136         }
137
138         r = __pCameraSettingsPresentationModel->Construct();
139         AppLogDebug("Construct:: failed[%s]", GetErrorMessage(r));
140
141         if (__pDefaultCameraRegistry)
142         {
143                 r = __pDefaultCameraRegistry->GetValue(strSectionName, entryName, value);
144                 AppLogDebug("GetValue:: failed[%s]", GetErrorMessage(r));
145         }
146
147         AppLogDebug("Exit with Error[%s]", GetErrorMessage(r));
148         return r;
149 }
150
151 result
152 CameraSettingsPresentationModel::SetValue(const Tizen::Base::String& strSectionName, const Tizen::Base::String& entryName, const int value)
153 {
154         AppLogDebug("ENTER");
155         result r = E_SUCCESS;
156
157         AppLogDebug("EntryName of registry is %ls",entryName.GetPointer());
158         AppLogDebug("Entry value of registry is %d",value);
159         AppLogDebug("SetValue set value to registry");
160
161         TryCatch(__pDefaultCameraRegistry!=null, r= E_FAILURE, "Camera App Registry is NULL");
162
163         r = __pDefaultCameraRegistry->SetValue(strSectionName, entryName, value);
164         AppLogDebug("Registry Setvalue result is %s",GetErrorMessage(r));
165
166         if (r != E_SUCCESS)
167         {
168                 r = __pDefaultCameraRegistry->AddSection(strSectionName);
169                 AppLogDebug("Registry addsection result is %s",GetErrorMessage(r));
170                 r = __pDefaultCameraRegistry->AddValue(strSectionName, entryName, value);
171                 AppLogDebug("Registry addvalue result is %s",GetErrorMessage(r));
172                 TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
173         }
174
175         AppLogDebug("EXIT");
176         return r;
177
178 CATCH:
179         AppLogDebug("EXIT : Error Code : %s", GetErrorMessage(r));
180         return r;
181 }
182
183
184 result
185 CameraSettingsPresentationModel::Construct(void)
186 {
187         AppLogDebug("ENTER");
188         result r = E_SUCCESS;
189
190         r = CreateRegistry();
191         TryCatch(r==E_SUCCESS,,"Registry creation failed");
192         AppLogDebug("Exit [%s]", GetErrorMessage(r));
193         return r;
194
195 CATCH:
196         AppLogDebug("Exit with error [%s]", GetErrorMessage(r));
197         SetLastResult(r);
198
199         RemoveDefaultRegistry();
200
201         if (__pDefaultCameraRegistry )
202         {
203                 delete __pDefaultCameraRegistry;
204                 __pDefaultCameraRegistry = null;
205         }
206         return r;
207 }
208
209 result
210 CameraSettingsPresentationModel::ResetCameraSettingsRegistry(void)
211 {
212         AppLogDebug("ENTER");
213         result r = E_SUCCESS;
214
215         r = CreateRegistry(true);
216         TryCatch(r == E_SUCCESS, , "CameraSettingsPresentationModel::Construct() failed[%s]", GetErrorMessage(r));
217         AppLogDebug("EXIT");
218         return r;
219
220 CATCH:
221         AppLogDebug("EXIT-with Error Message %s", GetErrorMessage(r));
222         return r;
223 }
224
225 void
226 CameraSettingsPresentationModel::DestroyCameraSettingInstance(void)
227 {
228         AppLogDebug("ENTER");
229         CameraSettingsPresentationModel* pCameraSettingsPresentationModel = CameraSettingsPresentationModel::GetInstance();
230
231         delete pCameraSettingsPresentationModel;
232         AppLogDebug("EXIT");
233 }
234
235 result
236 CameraSettingsPresentationModel::RemoveDefaultRegistry(void)
237 {
238         result r = E_SUCCESS;
239         String pathCameraDefaultSetting = App::GetInstance()->GetAppRootPath() + PATH_CAMERA_DEFAULT_SETTINGS;
240
241         if(__pDefaultCameraRegistry!=null)
242         {
243                 __pDefaultCameraRegistry->Remove(pathCameraDefaultSetting);
244         }
245
246         return r;
247 }
248
249 result
250 CameraSettingsPresentationModel::CreateRegistry(bool bResetSettings)
251 {
252         AppLogDebug("ENTER : %d ", bResetSettings);
253         result r = E_SUCCESS;
254         String pathCameraDefaultSetting = App::GetInstance()->GetAppRootPath() + PATH_CAMERA_DEFAULT_SETTINGS;
255
256         if(  bResetSettings )
257         {
258                 if (File::IsFileExist(pathCameraDefaultSetting))
259                 {
260                         r = File::Remove(pathCameraDefaultSetting);
261                         if (r != E_SUCCESS)
262                         {
263                                 //UiApp::GetInstance()->Terminate();
264                                 if (__pDefaultCameraRegistry !=null)
265                                 {
266                                         delete __pDefaultCameraRegistry;
267                                         __pDefaultCameraRegistry = null;
268                                 }
269                                 return E_FAILURE;
270                         }
271                         else
272                         {
273                                 if (__pDefaultCameraRegistry !=null)
274                                 {
275                                         delete __pDefaultCameraRegistry;
276                                         __pDefaultCameraRegistry = null;
277                                 }
278                         }
279                 }
280                 if ( File::IsFileExist(pathCameraDefaultSetting))
281                 {
282                         AppLogDebug("Default Settings file still exists %d ", File::IsFileExist(pathCameraDefaultSetting));
283                         return E_FAILURE;
284                 }
285
286                 if ( __pDefaultCameraRegistry==null )
287                         __pDefaultCameraRegistry = new (std::nothrow) Registry();
288                 else
289                 {
290                         delete __pDefaultCameraRegistry;
291                         __pDefaultCameraRegistry = null;
292                 }
293
294                 TryCatch(__pDefaultCameraRegistry!=null,,"Default registry can not be created!");
295         }
296         else
297         {
298                 if(  __pDefaultCameraRegistry== null )
299                         __pDefaultCameraRegistry = new (std::nothrow) Registry();
300
301                 TryCatch(__pDefaultCameraRegistry!=null,,"Default registry can not be created!");
302
303                 if (File::IsFileExist(pathCameraDefaultSetting))
304                 {
305                         r = __pDefaultCameraRegistry->Construct(pathCameraDefaultSetting, false);
306                         if (r != E_SUCCESS)
307                         {
308                                 r = File::Remove(pathCameraDefaultSetting);
309
310                                 delete __pDefaultCameraRegistry;
311                                 __pDefaultCameraRegistry = null;
312
313                                 return E_FAILURE;
314                         }
315                         else
316                         {
317                                 AppLogDebug("RegistryFile already exists. No need to create it again, open it to read!");
318                                 return r;
319                         }
320                 }
321         }
322
323         r = __pDefaultCameraRegistry->Construct(pathCameraDefaultSetting, true);
324         TryCatch(r == E_SUCCESS, , "Default registry construct failed [%s]", GetErrorMessage(r));
325
326         r = __pDefaultCameraRegistry->AddSection(SECTION_CAMERA);
327         TryCatch(r == E_SUCCESS, , "Registry::AddSection() failed[%s]", GetErrorMessage(r));
328
329         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, CURRENT_MODE, DEFAULT_VALUE_ZERO);
330         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
331
332         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, FLASH_MODE_PRIMARY, DEFAULT_VALUE_ONE);
333         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
334
335         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, FLASH_MODE_SECONDARY, DEFAULT_VALUE_ZERO);
336         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
337
338         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, SELF_PORTRAIT_ENABLE, DEFAULT_VALUE_ZERO);
339         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
340
341         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, SHOOTING_MODE, DEFAULT_VALUE_ZERO);
342         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
343
344         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, EXPOSURE_VALUE, EXPOSURE_DEFAULT_VALUE);
345         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
346
347         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, BRIGHTNESS_VALUE, BRIGHTNESS_DEFAULT_VALUE);
348         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
349
350         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, TIMER_INTERVAL, DEFAULT_VALUE_ZERO);
351         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
352
353         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, ISO_VALUE, DEFAULT_VALUE_ZERO);
354         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
355
356         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, WHITE_BALANCE_TYPE_PRIMARY, DEFAULT_VALUE_ZERO);
357         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
358
359         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, WHITE_BALANCE_TYPE_SECONDARY, DEFAULT_VALUE_ZERO);
360         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
361
362         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, EXPOSURE_METERING_TYPE, DEFAULT_VALUE_ONE);
363         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
364
365         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, GEO_TAGGING_ENABLE, DEFAULT_VALUE_ZERO);
366         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
367
368         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, GUIDELINE_ENABLE, DEFAULT_VALUE_ZERO);
369         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
370
371         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, STORAGE_TYPE, DEFAULT_VALUE_ZERO);
372         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
373
374         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, RECORDING_MODE, DEFAULT_VALUE_ZERO);
375         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
376
377         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, OVERLAY_HELP_ENABLE, DEFAULT_VALUE_ZERO);
378         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
379
380         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, PRIMARY_RESOLUTION_INDEX, DEFAULT_VALUE_ZERO);
381         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
382
383         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMERA, SECONDARY_RESOLUTION_INDEX, DEFAULT_VALUE_ZERO);
384         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
385
386         r = __pDefaultCameraRegistry->AddSection(SECTION_CAMCORDER);
387         TryCatch(r == E_SUCCESS, , "Registry::AddSection() failed[%s]", GetErrorMessage(r));
388
389         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, FLASH_MODE_PRIMARY, DEFAULT_VALUE_ONE);
390         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
391
392         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, FLASH_MODE_SECONDARY, DEFAULT_VALUE_ZERO);
393         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
394
395         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, SELF_PORTRAIT_ENABLE, DEFAULT_VALUE_ZERO);
396         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
397
398         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, SHOOTING_MODE, DEFAULT_VALUE_ZERO);
399         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
400
401         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, EXPOSURE_VALUE, EXPOSURE_DEFAULT_VALUE);
402         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
403
404         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, BRIGHTNESS_VALUE, BRIGHTNESS_DEFAULT_VALUE);
405         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
406
407         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, TIMER_INTERVAL, DEFAULT_VALUE_ZERO);
408         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
409
410         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, ISO_VALUE, DEFAULT_VALUE_ZERO);
411         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
412
413         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, WHITE_BALANCE_TYPE_PRIMARY, DEFAULT_VALUE_ZERO);
414         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
415
416         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, WHITE_BALANCE_TYPE_SECONDARY, DEFAULT_VALUE_ZERO);
417         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
418
419         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, EXPOSURE_METERING_TYPE, DEFAULT_VALUE_ONE);
420         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
421
422         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, GEO_TAGGING_ENABLE, DEFAULT_VALUE_ZERO);
423         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
424
425         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, GUIDELINE_ENABLE, DEFAULT_VALUE_ZERO);
426         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
427
428         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, STORAGE_TYPE, DEFAULT_VALUE_ZERO);
429         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
430
431         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, RECORDING_MODE, DEFAULT_VALUE_ZERO);
432         TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
433
434         r = __pDefaultCameraRegistry->AddValue(SECTION_CAMCORDER, OVERLAY_HELP_ENABLE, DEFAULT_VALUE_ZERO);
435                 TryCatch(r == E_SUCCESS, , "Registry::AddValue() failed[%s]", GetErrorMessage(r));
436
437         if (!(CmUtility::GetAvailableMemory() < MIN_MEMORY_NEEDED))
438         {
439                 r = __pDefaultCameraRegistry->Flush();
440                 TryCatch(r == E_SUCCESS, , "Registry::Flush() failed[%s]", GetErrorMessage(r));
441         }
442         AppLogDebug("Exit");
443         return r;
444
445 CATCH:
446         AppLogDebug("Exit with Error [%s]", GetErrorMessage(r));
447         return r;
448 }