2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
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
8 // http://floralicense.org/license/
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 CmCameraPresentationModel.h
19 * @brief This is the header file for CameraPresentationModel class.
22 #ifndef _CM_CAMERA_PRESENTATION_MODEL_H_
23 #define _CM_CAMERA_PRESENTATION_MODEL_H_
34 #include "CmICameraEventListener.h"
36 #include "CmUtility.h"
38 class CameraSettingsPresentationModel;
40 class CameraPresentationModel
41 : public Tizen::Media::ICameraEventListener
42 , public Tizen::Media::IVideoRecorderEventListener
43 , public Tizen::System::IDeviceEventListener
44 ,public Tizen::Content::IContentScanListener
49 CAMERA_MODE_SNAPSHOT = 0,
55 CAMERA_DIRECTION_BACK = 0,
56 CAMERA_DIRECTION_FRONT,
59 enum CamSelfPortraitMode
61 CAM_SELF_PORTRAIT_MODE_PRIMARY,
62 CAM_SELF_PORTRAIT_MODE_SECONDARY,
65 enum AppControlRequestType
67 APP_CONTROL_REQUEST_TYPE_CANCELED = 0,
68 APP_CONTROL_REQUEST_TYPE_SUCCEEDED,
69 APP_CONTROL_REQUEST_TYPE_FAILED
74 STORAGE_CARD_STATE_UNMOUNT = 0,
75 STORAGE_CARD_STATE_MOUNT,
78 enum StorageCardChageState
80 STORAGE_CARD_CHAGE_STATE_UNKNOWN = 0,
81 STORAGE_CARD_CHAGE_STATE_MOUNT_TO_UNMOUNT,
82 STORAGE_CARD_CHAGE_STATE_UNMOUNT_TO_MOUNT,
85 enum DisplayResolution
87 DISPLAY_RESOLUTION_WVGA = 0,
88 DISPLAY_RESOLUTION_HD,
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);
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);
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);
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);
140 Tizen::Media::CameraFlipType GetFlip(void) const;
141 void SetFlip(Tizen::Media::CameraFlipType type);
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);
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);
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;
177 result SetExifOrientation(int orientation);
178 void KeepScreenOnState(bool keepOn, bool dimming);
180 void AddPresentationChangedEventListener(ICameraEventListner& pObserverListener);
181 void RemovePresentationChangedEventListener(ICameraEventListner* pObserverListener);
182 void CallOnPresentationModeChanged(CameraActionEvent event);
184 bool GetOnVideoRecorderStopped(void);
185 void SetOnVideoRecorderStopped(bool isCompleted);
187 bool GetIntervalTimerRun(void) const;
188 void SetIntervalTimerRun(bool intervalTimerRun);
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;
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);
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);
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);
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);
220 void UpdateContentFile(void);
221 void SetRecordStopException(bool currentStatus);
222 Tizen::Media::RecorderErrorReason GetRecorderErrorStatus(void);
223 void GetUpdatedContentName(Tizen::Base::String& latestContentName);
225 void SetMemoryFullException(bool status);
226 bool GetMemoryFullExceptionStatus(void);
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;
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;
268 int __storageCardState;
269 int __storageCardChageState;
270 int __isStopCaptured;
272 int __onVideoRecorderStarted;
273 int __displayResolution;
274 bool __startPreviewException;
275 bool __isCancelRecord;
277 bool __isPreviewExit;
278 bool __isIntervalTimerRun;
279 bool __recorderStopException;
280 bool __memoryFullException;
281 Tizen::Media::RecorderErrorReason __recorderError;
284 #endif // _CM_CAMERA_PRESENTATION_MODEL_H_