NABI issue 43925
[apps/osp/Camera.git] / inc / CmCameraPresentationModel.h
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                CmCameraPresentationModel.h
19  * @brief               This is the header file for CameraPresentationModel class.
20  */
21
22 #ifndef _CM_CAMERA_PRESENTATION_MODEL_H_
23 #define _CM_CAMERA_PRESENTATION_MODEL_H_
24
25 #include <new>
26 #include <FApp.h>
27 #include <FBase.h>
28 #include <FContent.h>
29 #include <FIo.h>
30 #include <FLocales.h>
31 #include <FMedia.h>
32 #include <FSystem.h>
33 #include <FUi.h>
34 #include "CmICameraEventListener.h"
35 #include "CmTypes.h"
36 #include "CmUtility.h"
37
38 class CameraSettingsPresentationModel;
39
40 class CameraPresentationModel
41         : public Tizen::Media::ICameraEventListener
42         , public Tizen::Media::IVideoRecorderEventListener
43         , public Tizen::System::IDeviceEventListener
44          ,public Tizen::Content::IContentScanListener
45 {
46 public:
47         enum CameraMode
48         {
49                 CAMERA_MODE_SNAPSHOT = 0,
50                 CAMERA_MODE_RECORD,
51         };
52
53         enum CameraDirection
54         {
55                 CAMERA_DIRECTION_BACK = 0,
56                 CAMERA_DIRECTION_FRONT,
57         };
58
59         enum CamSelfPortraitMode
60         {
61                 CAM_SELF_PORTRAIT_MODE_PRIMARY,
62                 CAM_SELF_PORTRAIT_MODE_SECONDARY,
63         };
64
65         enum AppControlRequestType
66         {
67                 APP_CONTROL_REQUEST_TYPE_CANCELED = 0,
68                 APP_CONTROL_REQUEST_TYPE_SUCCEEDED,
69                 APP_CONTROL_REQUEST_TYPE_FAILED
70         };
71
72         enum StorageCardState
73         {
74                 STORAGE_CARD_STATE_UNMOUNT = 0,
75                 STORAGE_CARD_STATE_MOUNT,
76         };
77
78         enum StorageCardChageState
79         {
80                 STORAGE_CARD_CHAGE_STATE_UNKNOWN = 0,
81                 STORAGE_CARD_CHAGE_STATE_MOUNT_TO_UNMOUNT,
82                 STORAGE_CARD_CHAGE_STATE_UNMOUNT_TO_MOUNT,
83         };
84
85         enum DisplayResolution
86         {
87                 DISPLAY_RESOLUTION_WVGA = 0,
88                 DISPLAY_RESOLUTION_HD,
89         };
90
91         static CameraPresentationModel* GetInstance(void);
92         result Construct(void);
93         void Terminate(int mode);
94         result InitializeFlashMode(void);
95         result InitializeCamcorder(void);
96         result InitializeCamera(void);
97         result ToggleCameraCamcorder(int mode);
98         result ToggleCameraDirection(int mode, int direction);
99         bool GetInitCameraStatus(void) const;
100         result SetMode(int mode);
101
102         int GetContentCount(void);
103         Tizen::Base::String GetContentFilePath(int currentCameraMode);
104         Tizen::Graphics::Bitmap* GetLatestThumbnail(void);
105         result GetLatestContentName(int currentCameraMode, Tizen::Base::String& latestContentName);
106         Tizen::Graphics::Dimension GetPreviewResolution(void) const;
107         result SetPreviewResolution(Tizen::Graphics::Dimension previewResolution);
108         Tizen::Graphics::Dimension GetCaptureResolution(void) const;
109         result SetCaptureResolution(Tizen::Graphics::Dimension captureResolution);
110         Tizen::Graphics::Dimension GetRecordingResolution(void) const;
111         result SetRecordingResolution(Tizen::Graphics::Dimension captureResolution);
112         Tizen::Base::Collection::IList* GetCaptureResolutionList(void);
113         Tizen::Base::Collection::IList* GetPreviewResolutionList(void);
114         Tizen::Base::Collection::IList* GetRecordingResolutionList(void);
115
116         bool IsPreviewState(void);
117         bool IsCameraInstance(void);
118         bool IsCameraPoweredOn(void);
119         bool IsStorageCardMounted(void) const;
120         bool IsCharging(void);
121         bool GetStartPreviewException(void);
122         bool GetPreviewState(void) const;
123         void StartPreview(const Tizen::Graphics::BufferInfo* pBufferInfo);
124         void StopPreview(void);
125         void StopCamera(void);
126         void Capture(void);
127         long GetMaxRecordingTime(void);
128         long GetRecordingSize(void);
129         void StartRecord(void);
130         void SetCancelRecord(bool isCancel);
131         result StopRecord(void);
132         void CloseRecord(void);
133         void CancelRecord(void);
134         void PauseRecord(void);
135         void SetFocusMode(Tizen::Media::CameraFocusMode mode);
136         void SetContinuousAutoFocus(void);
137         void SetAutoFocusPoint(const Tizen::Graphics::Point& currentPosition);
138         void SetStartPreviewException(bool status);
139
140         Tizen::Media::CameraFlipType GetFlip(void) const;
141         void SetFlip(Tizen::Media::CameraFlipType type);
142
143         int GetExposure(void) const;
144         void SetExposure(int exposureValue);
145         int GetBrightness(void) const;
146         void SetBrightness(int brightnessValue);
147         Tizen::Media::CameraWhiteBalance GetWhiteBalance(void) const;
148         result SetWhiteBalance(Tizen::Media::CameraWhiteBalance whitebalanceValue);
149         Tizen::Base::Collection::IList* GetIsoList(void);
150         Tizen::Media::CameraIsoLevel GetIsoLevel(void) const;
151         void SetIsoLevel(Tizen::Media::CameraIsoLevel isoValue);
152         int GetMaxZoomLevel(void) const;
153         int GetZoomLevel(void) const;
154         void SetZoomValue(int zoomValue);
155         Tizen::Media::CameraFlashMode GetFlashMode(void) const;
156         result SetFlashModeOnRecord(bool flashOn);
157         result SetFlashMode(Tizen::Media::CameraFlashMode mode);
158         Tizen::Ui::OrientationStatus GetOrientation(void) const;
159         void SetOrientation(Tizen::Ui::OrientationStatus dir);
160         int GetAppControlRequestType(void) const;
161         void SetAppControlRequestType(int requestType);
162         Tizen::Base::String GetErrorResult(void) const;
163         void SetErrorResult(const Tizen::Base::String& string);
164
165         int GetStorageCardState(void) const;
166         void SetStorageCardState(int storageCardState);
167         int GetStorageCardChageState(void) const;
168         void SetStorageCardChageState(int storageCardChageState);
169         void UpdateThumbnail(int currentCameraMode);
170
171         Tizen::System::BatteryLevel GetBatteryLevel(void) const;
172         Tizen::Media::CameraState GetCameraState(void) const;
173         Tizen::Media::RecorderState GetRecorderState(void) const;
174         long long GetAvailableStorageSpace(void) const;
175         void ZoomIn(void);
176         void ZoomOut(void);
177         result SetExifOrientation(int orientation);
178         void KeepScreenOnState(bool keepOn, bool dimming);
179
180         void AddPresentationChangedEventListener(ICameraEventListner& pObserverListener);
181         void RemovePresentationChangedEventListener(ICameraEventListner* pObserverListener);
182         void CallOnPresentationModeChanged(CameraActionEvent event);
183
184         bool GetOnVideoRecorderStopped(void);
185         void SetOnVideoRecorderStopped(bool isCompleted);
186
187         bool GetIntervalTimerRun(void) const;
188         void SetIntervalTimerRun(bool intervalTimerRun);
189
190         result ResetCameraSettingsRegistry(void);
191         result ResetCameraSettings(void);
192         result GetValue(const Tizen::Base::String& entryName, int& value) const;
193         result SetValue(const Tizen::Base::String& entryName, int value);
194         result GetMediaCapability(Tizen::Base::String key, bool& value) const;
195         result GetMediaCapability(Tizen::Base::String key, int& value) const;
196         result GetMediaCapability(Tizen::Base::String key) const;
197
198         void SetDisplayResolutionType(int type);
199         int GetDisplayResolutionType(void);
200         bool IsExistThumbnail(int currentCameraMode);
201         Tizen::Base::String GetfilePath(int storageType);
202         Tizen::Base::Collection::ArrayList* GetContentPathListN(int mode);
203
204         virtual void OnCameraAutoFocused(bool completeCondition);
205         virtual void OnCameraPreviewed(Tizen::Base::ByteBuffer& previewedData, result r);
206         virtual void OnCameraCaptured(Tizen::Base::ByteBuffer& capturedData, result r);
207         virtual void OnCameraErrorOccurred(Tizen::Media::CameraErrorReason r);
208
209         virtual void OnVideoRecorderCanceled(result r);
210         virtual void OnVideoRecorderClosed(result r);
211         virtual void OnVideoRecorderEndReached(Tizen::Media::RecordingEndCondition endCondition);
212         virtual void OnVideoRecorderErrorOccurred(Tizen::Media::RecorderErrorReason r);
213         virtual void OnVideoRecorderPaused(result r);
214         virtual void OnVideoRecorderStarted(result r);
215         virtual void OnVideoRecorderStopped(result r);
216
217         virtual void OnDeviceStateChanged(Tizen::System::DeviceType deviceType, const Tizen::Base::String& state);
218         virtual void OnContentScanCompleted (RequestId reqId, const Tizen::Base::String &scanPath, result r);
219
220         void UpdateContentFile(void);
221         void SetRecordStopException(bool currentStatus);
222         Tizen::Media::RecorderErrorReason GetRecorderErrorStatus(void);
223         void GetUpdatedContentName(Tizen::Base::String& latestContentName);
224
225         void SetMemoryFullException(bool status);
226         bool GetMemoryFullExceptionStatus(void);
227
228 private:
229         CameraPresentationModel(void);
230         CameraPresentationModel(const CameraPresentationModel&);
231         CameraPresentationModel& operator = (const CameraPresentationModel&);
232         virtual ~CameraPresentationModel(void);
233         result CreateThumbnail(int currentCameraMode);
234         result CreateFileName(Tizen::Base::String& fullFileName);
235         Tizen::Base::String SearchContentFilePath(int mode);
236         result SetCameraPreviewResolution(void);
237         result SetCamcorderRecordingResolution(void);
238         void StorageCardStateChaged(bool isMounted);
239         result RemoveVideoFile(void);
240         void SetDeviceManagerEventListner(void);
241         void RemoveDeviceManagerEventListner(void);
242         Tizen::Media::RecordingRotation GetRecordingRotation(void);
243         static void CreateInstance(void);
244         static void DestroyInstance(void);
245         static void DestroyPresentationModelInstance(void);
246         friend class CameraApp;
247
248 private:
249         static CameraPresentationModel* __pPresentationModel;
250         Tizen::Media::Camera* __pCamera;
251         Tizen::Base::Collection::IList* __pPreviewResolutionList;
252         Tizen::Base::Collection::IList* __pCaptureResolutionList;
253         Tizen::Base::Collection::IList* __pRecordingResolutionList;
254         Tizen::Base::Collection::IList* __pIsoList;
255         Tizen::Media::VideoRecorder* __pVideoRecorder;
256         ICameraEventListner* __pCameraListener;
257         Tizen::Content::ContentManager* __pContentManager;
258         Tizen::Content::ImageContentInfo* __pImageContentInfo;
259         Tizen::Content::VideoContentInfo* __pVideoContentInfo;
260         CameraSettingsPresentationModel* __pCameraSettingsPresentationModel;
261         Tizen::Graphics::Bitmap* __pBitmap;
262         Tizen::Base::String __latestContentName;
263         Tizen::Base::String __errorResult;
264         Tizen::Base::String __CurrentVideoFileName;
265         int __appControlRequestType;
266         Tizen::Ui::OrientationStatus __dir;
267         int __cameraMode;
268         int __storageCardState;
269         int __storageCardChageState;
270         int __isStopCaptured;
271         int __contentCount;
272         int __onVideoRecorderStarted;
273         int __displayResolution;
274         bool __startPreviewException;
275         bool __isCancelRecord;
276         bool __isInitCamera;
277         bool __isPreviewExit;
278         bool __isIntervalTimerRun;
279         bool __recorderStopException;
280         bool __memoryFullException;
281         Tizen::Media::RecorderErrorReason __recorderError;
282 };
283
284 #endif // _CM_CAMERA_PRESENTATION_MODEL_H_