NABI issue 47695 47846
[apps/osp/Camera.git] / inc / CmCamcorderForm.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                CmCamcorderForm.h
19  * @brief               This is the header file for CamcorderForm class.
20  */
21
22 #ifndef _CM_CAMCORDER_FORM_H_
23 #define _CM_CAMCORDER_FORM_H_
24
25 #include <FAppIAppControlEventListener.h>
26 #include <FGraphics.h>
27 #include <FIo.h>
28 #include <FMedia.h>
29 #include <FSysBattery.h>
30 #include <FTelephony.h>
31 #include <FUi.h>
32 #include <FUiWindow.h>
33
34 #include "CmCameraScenesList.h"
35 #include "CmICameraEventListener.h"
36 #include "CmBaseForm.h"
37
38 enum CamcorderTabSubMenuContent
39 {
40         CAMCORDER_SUB_MENU_CONTENT_RECORDING_RESOLUTION_MODE = 0,
41         CAMCORDER_SUB_MENU_CONTENT_RECORDING_MODE,
42         CAMCORDER_SUB_MENU_CONTENT_MAX
43 };
44
45 enum CamcorderGeneralTabSubMenuContent
46 {
47         CAMCORDER_GENERAL_TAB_SUB_MENU_CONTENT_TIMER_MODE = 0,
48         CAMCORDER_GENERAL_TAB_SUB_MENU_CONTENT_GUIDELINE_MODE,
49         CAMCORDER_GENERAL_TAB_SUB_MENU_CONTENT_STORAGE_TYPE_MODE,
50         CAMCORDER_GENERAL_TAB_SUB_MENU_CONTENT_RESET_MODE,
51         CAMCORDER_GENERAL_TAB_SUB_MENU_OVERLAY_HELP_MODE,
52         CAMCORDER_GENERAL_TAB_SUB_MENU_CONTENT_MAX
53 };
54
55 class CameraPresentationModel;
56 class CameraStarterThread;
57
58 class CamcorderForm
59         :public ICameraEventListner
60                 , public BaseForm
61 {
62 public:
63         CamcorderForm(void);
64         virtual ~CamcorderForm(void);
65
66         result Initialize(void);
67
68         result DrawRecord(bool isRecord);
69         result DrawPauseRecord(void);
70         result DrawRecordTimer(void);
71         result InitElapsedTimeLable(void);
72
73         void OnCameraActionPerformed(CameraActionEvent event);
74         result OnCameraActionRecorderClosed(void);
75
76         virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);
77         virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
78         virtual int GetItemCount(void);
79
80         virtual result OnInitializing(void);
81         virtual result OnTerminating(void);
82
83         virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
84         virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
85
86         virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
87         virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
88
89         virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
90         virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
91         virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
92         
93         virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
94
95         virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
96         virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
97         virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
98
99         virtual void OnSliderBarMoved(Tizen::Ui::Controls::Slider& source, int value);
100         virtual void OnAdjustmentValueChanged(const Tizen::Ui::Control& source, int adjustment);
101
102         virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus);
103
104         virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
105
106         virtual void OnFileEventOccured(const unsigned long events, const Tizen::Base::String& path, const unsigned int eventId);
107
108         //IKeyEventListener
109         virtual void OnKeyLongPressed (const Tizen::Ui::Control &source, Tizen::Ui::KeyCode keyCode);
110         virtual void OnKeyPressed (const Tizen::Ui::Control &source, Tizen::Ui::KeyCode keyCode);
111         virtual void OnKeyReleased (const Tizen::Ui::Control &source, Tizen::Ui::KeyCode keyCode);
112
113         //IPropagatedKeyEventListener
114         virtual bool OnKeyPressed (Tizen::Ui::Control &source, const Tizen::Ui::KeyEventInfo &keyEventInfo);
115         virtual bool OnKeyReleased (Tizen::Ui::Control &source, const Tizen::Ui::KeyEventInfo &keyEventInfo);
116         virtual bool OnPreviewKeyPressed (Tizen::Ui::Control &source, const Tizen::Ui::KeyEventInfo &keyEventInfo);
117         virtual bool OnPreviewKeyReleased (Tizen::Ui::Control &source, const Tizen::Ui::KeyEventInfo &keyEventInfo);
118
119         //IAccessibilityListener
120         virtual void OnAccessibilityActionPerformed (const Tizen::Ui::Control &control, const Tizen::Ui::AccessibilityElement &element);
121         virtual void OnAccessibilityFocusIn (const Tizen::Ui::Control &control, const Tizen::Ui::AccessibilityElement &element);
122         virtual void OnAccessibilityFocusOut (const Tizen::Ui::Control &control, const Tizen::Ui::AccessibilityElement &element);
123         virtual void OnAccessibilityScreenReaderStatusChanged (const Tizen::Ui::Control &control, const Tizen::Ui::AccessibilityElement &element, Tizen::Ui::AccessibilityScreenReaderStatus status);
124
125         void OnUpdateView();
126
127 private:
128         enum ScreenMode
129         {
130                 SCREEN_MODE_NORMAL = 0,
131                 SCREEN_MODE_FULL,
132         };
133
134         void Update(bool isInvalidated);
135         void InitAppTimer(void);
136         void InitSettingTimer(void);
137         void InitMakerFocusTimer(void);
138         void InitChargingTimer(void);
139         void InitPreviewFailPopupTimer(void);
140         void InitChargingCompletedTimer(void);
141         void StartInitChargingTimer(void);
142         void StartInitAppTimer(void);
143         void StopInitAppTimer(void);
144         void StopInitChargingTimer(void);
145         void StartPreviewFailPopupTimer(void);
146         void StartInitChargingCompletedTimer(void);
147
148         void CheckCamcorderSettingLabel(void);
149         void CheckGeneralSettingLabel(void);
150
151         result InitSettingMenuPanel(void);
152         result InitActionMenuPanel(void);
153
154         result UpdateUiIndicatorStorage(Tizen::Graphics::Canvas* pCanvas, const Tizen::Base::String& str);
155
156         void MakeCamcoderTabSettingPopup(void);
157         void MakeGeneralTabSettingPopup(void);
158         void MakeSettingPopupTab(bool isShow);
159
160         result MakeCamcoderTabMenuString(void);
161         result MakeGeneralTabMenuString(void);
162
163         int GetGeneralTabSettingMainMenuCount(void) const;
164         void SetGeneralTabSettingMainMenuCount(int count);
165
166         int GetGeneralTabSettingSubMenuCount(void) const;
167         void SetGeneralTabSettingSubMenuCount(int count);
168
169         CamcorderTabSubMenuContent GetCamcorderTabSettingSubMenuMode(void) const;
170         void SetCamcorderTabSettingSubMenuMode(const CamcorderTabSubMenuContent mode);
171
172         int GetSettingMainMenuCount(void) const;
173         void SetSettingMainMenuCount(int count);
174
175         int GetSettingSubMenuCount(void) const;
176         void SetSettingSubMenuCount(int count);
177
178         CamcorderTabSubMenuContent GetSettingSubMenuMode(void) const;
179         void SetSubMenuListviewState(const int menuCount, const CamcorderTabSubMenuContent mode);
180
181         int GetCamcorderTabSettingMainMenuCount(void) const;
182         void SetCamcorderTabSettingMainMenuCount(int count);
183
184         int GetCamcorderTabSettingSubMenuCount(void) const;
185         void SetCamcorderTabSettingSubMenuCount(int count);
186
187         CamcorderGeneralTabSubMenuContent GetGeneralTabSettingSubMenuMode(void) const;
188
189         void SetSettingGenSubMenuMode(const CamcorderGeneralTabSubMenuContent mode);
190         void SetGeneralTabSubMenuListviewState(const int menuCount, const CamcorderGeneralTabSubMenuContent mode);
191
192         void SetCamcorderTabSubMenuListviewState(const int menuCount, const CamcorderTabSubMenuContent mode);
193         result SetMenuTitle(Tizen::Graphics::Canvas* pCanvas, const Tizen::Base::String& str, const int fntSize);
194
195         int GetTimerIntervalValue(void) const;
196         void SetGuideLine(int guideLineEnable);
197         void SetStartRecording(void);
198
199         result RestoreDefaultSetting(void);
200         result SetRecordStartTimer(int timerInterval);
201
202         result DrawMarker(bool useGuidline);
203         result DrawFocus(int focusMode);
204
205         result ToggleCameraDirection(int direction);
206         result SetSliderAdjustValue(const Tizen::Graphics::Point& currentPosition, const Tizen::Graphics::Rectangle& movableValidRect, const Tizen::Base::String& entryName, const int maxEntryValue);
207
208         result ProcessCamcorderTabMainListPopup(int index);
209         result ProcessGeneraTabMainListPopup(int index);
210         result ProcessFlashListPopup(int index);
211         result ProcessGeneraTabSubListPopup(int index);
212         result ProcessCamcorderTabSubListPopup(int index);
213
214         void SetFlashPopop(void);
215         void SetWhiteBalancePopop(void);
216         result SubListPopupWbMode(int index);
217         result SubListPopupGuidelineMode(int index);
218         void SubListPopupStorageTypeMode(int index);
219         result SubListPopupTimerMode(int index);
220         result SubListPopupResolutionMode(int index);
221         result SubListPopupOverlayHelpMode(int index);
222         result SubListPopupRecodringMode(int index);
223         
224         result DrawTimerPopup(void);
225         result StartRecordTimer(void);
226
227         void EndRecordTimer(void);
228         result StartPopupTimer(void);
229         result StopPopupTimer(void);
230
231         result SetRecordPauseButton(bool start);
232         result SetRecordButton(bool start);
233         void ExposureValuePerformed(void);
234         void AutoFocusPerformed(void);
235         void SetContinuousAutoFocusButton(void);
236         result BackButtonPerformed(void);
237         result PressBackButton(void);
238         void SetSelfModeButton(void);
239         void SetCamcorderSettingsDevice(void);
240
241         Tizen::Graphics::Bitmap* RotationImageN(Tizen::Graphics::Bitmap* pSrcBitmap, Tizen::Media::ImageRotationType rotationType);
242         result CreateExposureSlider(void);
243         result DrawExposureSlider(const Tizen::Graphics::Point& currentPosition, int DrawMode);
244         result DrawExposureSlider(void);
245         void ShowExposureSlider(void);
246
247         result UpdateUiPanelIcon(void);
248         result UpdateUiActionPanelIcon(void);
249
250         void HidePopup(void);
251         void SetControlAlwaysOnTopPanel();
252         void AppControlRequestHideButton(void);
253         void HidePanel(bool isWideMode, bool isInvalidated);
254         void DoRecordHideUiPanel(void);
255         void HideUiPanel(bool state);
256         void HideUiModeChangedButton(void);
257         void CheckStorageInfo(void);
258
259         void SetCamcorderMode(void);
260         result CreateOverlayRegion(Tizen::Graphics::Rectangle rect);
261         result SetOverlayPanel(Tizen::Graphics::Rectangle rect, Tizen::Graphics::Rectangle evaluateBoundsRect, Tizen::Graphics::Rectangle clientRect, bool destroyOverlay, bool isWideMode);
262         void SetOverlayPanelOrientationChanged(Tizen::Ui::OrientationStatus orientationStatus);
263         void SetOverlayPanelWideMode(bool isRemoved);
264         void SetOverlayPanelNormalMode(bool isRemoved);
265         void SetOverlayRendererRotation(void);
266         void SetOverlayPanelChangeMode(bool isMode);
267
268         result SetScreenMode(const ScreenMode mode, bool destory);
269         void InDrawFocus(void);
270         void StartRecord(void);
271         void CancelTimerIntervalRecord(void);
272         void CancelRecord(void);
273         void StopRecord(void);
274         void HideRecLabe(void);
275         result InitializePopup(void);
276         result SetRecordPauseBitmap(bool start);
277         result PauseRecord(void);
278         void SetRecordEndReached(void);
279         void SetRecordErrorOccurred(void);
280         void HideUiAction(void);
281         void HideUiSettingMenu(void);
282         void HideUiQuickMenu(void);
283         void ShowUiQuickMenu(void);
284
285         Tizen::Ui::Controls::CustomItem* CreateCamcorderTabMainMenuItem(int index, int itemWidth);
286         Tizen::Ui::Controls::CustomItem* CreateCamcorderTabSubMenuItem(int index, int itemWidth);
287         Tizen::Ui::Controls::CustomItem* CreateGeneralTabMainMenuItem(int index, int itemWidth);
288         Tizen::Ui::Controls::CustomItem* CreateGeneralTabSubMenuItem(int index, int itemWidth);
289         Tizen::Ui::Controls::CustomItem* CreateFlashMainMenuItem(int index, int itemWidth);
290         Tizen::Ui::Controls::CustomItem* CreateWhiteBalanceItem(int index, int itemWidth);
291
292         void DrawTouchAutoFocus(const Tizen::Graphics::Point& currentPosition);
293         
294         void SetUri(const Tizen::Base::String& uri);
295         void SetMime(const Tizen::Base::String& mime);
296         const Tizen::Base::String& GetUri(void) const;
297         const Tizen::Base::String& GetMime(void) const;
298         void LaunchImageview(void);
299
300         void GetCameraToForeground(void);
301         void SendCameraToBackground(void);
302         void DrawThumbnail(void);
303         void ShowCameraFailPopup(void);
304         void ShowSavingPopup(void);
305         
306         void StartChargingTimer(void);
307         result DrawBatteryLevelFull(void);
308         result CheckBatteryStatus(void);
309         result MakeMenuString(void);
310         result MakeGenMenuString(void);
311
312         result RunStartPreviewThread(void);
313         void MakeRecordingResolutionList(bool remakeList);
314
315         void CancelTimer(void);
316         void OnAppTimerExpired(void);
317         void OnSettingTimerExpired(void);
318         void OnPopupTimerExpired(void);
319         void OnRecordTimerExpired(void);
320         void OnExposureCloseTimerExpired(void);
321         void OnMakerFocusTimerExpired(void);
322         result OnChargingTimerExpired(void);
323         result OnChargingCompletedTimerExpired(void);
324         void OnPreviewFailPopupTimerExpired(void);
325         void OnTouchModeSwitch(void);
326         void OnTouchDrawExposure(const Tizen::Graphics::Point& currentPosition);
327         bool OnTouchDoHidePopup(void);
328         void DoRecording(void);
329         void DoStopRecording(void);
330         void OnTouchLaunchImageview(void);
331         result SetScreenOverlayHelpTimer(void);
332         result DrawScreenOverlayHelp(void);
333
334         void ReInitialise(void);
335         void UpdatePopUp(void);
336         void ShowMemoryFull(void);
337         void HideCancelPopup();
338
339         Tizen::Ui::Controls::CustomItem* GetEnrichedTextCustomItem(int elementId,int itemWidth,const Tizen::Base::String& strTmp);
340         void AddEnrichTextCustomItem(Tizen::Ui::Controls::CustomItem* pItem, int elementId,int itemWidth,const Tizen::Base::String& strTmp);
341
342 private:
343         static const int IDA_BTN_YES = 603;
344         static const int IDA_BTN_NO = 604;
345
346         ScreenMode __screenMode;
347         Tizen::Ui::Controls::OverlayPanel* __pOverlayPanel;
348         Tizen::Base::Runtime::Timer* __pRecordTimer;
349         int __camcoderTabMainMenuCount;
350         int __camcoderTabSubMenuCount;
351         CamcorderTabSubMenuContent __camcoderTabSettingMode;
352         int __generalTabMainMenuCount;
353         int __generalTabSubMenuCount;
354         CamcorderGeneralTabSubMenuContent __generalTabSettingMode;
355         int __settingIsoIndex;
356         int __settingWhiteBalance;
357         int __settingTimeInterval;
358         int __settingExposure;
359         long __recordTimeCount;
360         long __recordingMaxTime;
361         int _closeTimerValue;
362         int __previewResolutionWidth;
363         int __previewResolutionHeight;
364         int __pRecordingResolutionWidth;
365         int __pRecordingResolutionHeight;
366         int __pRecordingResolutionIndex;
367         bool __lowMemoryCapacity;
368         bool __isMemoryFull;
369         bool __isLockScreenMode;
370         bool __isOrientationChanged;
371         bool __doRecording;
372         bool __recorderStopped;
373         bool __appcontrolRecordingEnabled;
374         
375         Tizen::Ui::Controls::Panel* __pSettingPanel;
376         Tizen::Ui::Controls::Panel* __pActionPanel;
377         Tizen::Ui::OrientationStatus __dir;
378
379         Tizen::Ui::Controls::Label* __pSettingLine;
380         Tizen::Ui::Controls::Label* __pCameraIconLabel;
381         Tizen::Ui::Controls::Label* __pCamcoderIconLabel;
382         Tizen::Ui::Controls::Button* __pRecordButton;
383         Tizen::Ui::Controls::Button* __pThumbnailButton;
384         Tizen::Ui::Controls::Label* __pBatteryState;
385         Tizen::Ui::Controls::Label* __pRecLabelRed;
386         Tizen::Ui::Controls::Label* __pRecLabelText;
387         Tizen::Ui::Controls::Label* __pElapsedTimeLable;
388         Tizen::Ui::Controls::Label* __pElapsedTimeMaxLable;
389         Tizen::Ui::Controls::Label* __pElapsedRecordSizeLable;
390         Tizen::Graphics::Point __pButtonPoint;
391         Tizen::Base::String** __pSettingMenuString;
392         Tizen::Base::String** __pSettingGeneralMenuString;
393         CameraStarterThread* __pCameraStarterThread;
394         Tizen::Base::String __startTime;
395         Tizen::Base::Collection::ArrayList* __pRecordingResolutionList;
396         Tizen::Ui::Controls::Button* __pCamcoderSetting;
397         Tizen::Ui::Controls::Button* __pGeneralSetting;
398         Tizen::Ui::Controls::Label* __pCamcorderSettingLable;
399         Tizen::Ui::Controls::Label* __pGeneralSettingLable;
400         Tizen::Io::FileEventManager* __pFileEventManager;
401         Tizen::Base::String __uri;
402         Tizen::Base::String __mime;
403         bool __isCapacityBelow;
404         Tizen::Ui::Controls::Popup* __pCancelPopup;
405         bool __setTimerInterval;
406         Tizen::Graphics::Bitmap* __pRecordPauseBitmap;
407         Tizen::Graphics::BufferInfo __bufferInfo;
408         Tizen::Base::String __pFileEventPath;
409
410         Tizen::Graphics::Rectangle              CancelPopupRect;
411         Tizen::Graphics::Rectangle              ResetPopupRect;
412 };
413
414 #endif // _CM_CAMCORDER_FORM_H_