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 CmCamcorderForm.h
19 * @brief This is the header file for CamcorderForm class.
22 #ifndef _CM_CAMCORDER_FORM_H_
23 #define _CM_CAMCORDER_FORM_H_
25 #include <FAppIAppControlEventListener.h>
26 #include <FGraphics.h>
29 #include <FSysBattery.h>
30 #include <FTelephony.h>
32 #include <FUiWindow.h>
34 #include "CmCameraScenesList.h"
35 #include "CmICameraEventListener.h"
36 #include "CmBaseForm.h"
38 enum CamcorderTabSubMenuContent
40 CAMCORDER_SUB_MENU_CONTENT_RECORDING_RESOLUTION_MODE = 0,
41 CAMCORDER_SUB_MENU_CONTENT_RECORDING_MODE,
42 CAMCORDER_SUB_MENU_CONTENT_MAX
45 enum CamcorderGeneralTabSubMenuContent
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
55 class CameraPresentationModel;
56 class CameraStarterThread;
59 :public ICameraEventListner
64 virtual ~CamcorderForm(void);
66 result Initialize(void);
68 result DrawRecord(bool isRecord);
69 result DrawPauseRecord(void);
70 result DrawRecordTimer(void);
71 result InitElapsedTimeLable(void);
73 void OnCameraActionPerformed(CameraActionEvent event);
74 result OnCameraActionRecorderClosed(void);
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);
80 virtual result OnInitializing(void);
81 virtual result OnTerminating(void);
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);
86 virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
87 virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
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);
93 virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
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);
99 virtual void OnSliderBarMoved(Tizen::Ui::Controls::Slider& source, int value);
100 virtual void OnAdjustmentValueChanged(const Tizen::Ui::Control& source, int adjustment);
102 virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus);
104 virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
106 virtual void OnFileEventOccured(const unsigned long events, const Tizen::Base::String& path, const unsigned int eventId);
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);
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);
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);
130 SCREEN_MODE_NORMAL = 0,
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);
148 void CheckCamcorderSettingLabel(void);
149 void CheckGeneralSettingLabel(void);
151 result InitSettingMenuPanel(void);
152 result InitActionMenuPanel(void);
154 result UpdateUiIndicatorStorage(Tizen::Graphics::Canvas* pCanvas, const Tizen::Base::String& str);
156 void MakeCamcoderTabSettingPopup(void);
157 void MakeGeneralTabSettingPopup(void);
158 void MakeSettingPopupTab(bool isShow);
160 result MakeCamcoderTabMenuString(void);
161 result MakeGeneralTabMenuString(void);
163 int GetGeneralTabSettingMainMenuCount(void) const;
164 void SetGeneralTabSettingMainMenuCount(int count);
166 int GetGeneralTabSettingSubMenuCount(void) const;
167 void SetGeneralTabSettingSubMenuCount(int count);
169 CamcorderTabSubMenuContent GetCamcorderTabSettingSubMenuMode(void) const;
170 void SetCamcorderTabSettingSubMenuMode(const CamcorderTabSubMenuContent mode);
172 int GetSettingMainMenuCount(void) const;
173 void SetSettingMainMenuCount(int count);
175 int GetSettingSubMenuCount(void) const;
176 void SetSettingSubMenuCount(int count);
178 CamcorderTabSubMenuContent GetSettingSubMenuMode(void) const;
179 void SetSubMenuListviewState(const int menuCount, const CamcorderTabSubMenuContent mode);
181 int GetCamcorderTabSettingMainMenuCount(void) const;
182 void SetCamcorderTabSettingMainMenuCount(int count);
184 int GetCamcorderTabSettingSubMenuCount(void) const;
185 void SetCamcorderTabSettingSubMenuCount(int count);
187 CamcorderGeneralTabSubMenuContent GetGeneralTabSettingSubMenuMode(void) const;
189 void SetSettingGenSubMenuMode(const CamcorderGeneralTabSubMenuContent mode);
190 void SetGeneralTabSubMenuListviewState(const int menuCount, const CamcorderGeneralTabSubMenuContent mode);
192 void SetCamcorderTabSubMenuListviewState(const int menuCount, const CamcorderTabSubMenuContent mode);
193 result SetMenuTitle(Tizen::Graphics::Canvas* pCanvas, const Tizen::Base::String& str, const int fntSize);
195 int GetTimerIntervalValue(void) const;
196 void SetGuideLine(int guideLineEnable);
197 void SetStartRecording(void);
199 result RestoreDefaultSetting(void);
200 result SetRecordStartTimer(int timerInterval);
202 result DrawMarker(bool useGuidline);
203 result DrawFocus(int focusMode);
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);
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);
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);
224 result DrawTimerPopup(void);
225 result StartRecordTimer(void);
227 void EndRecordTimer(void);
228 result StartPopupTimer(void);
229 result StopPopupTimer(void);
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);
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);
247 result UpdateUiPanelIcon(void);
248 result UpdateUiActionPanelIcon(void);
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);
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);
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);
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);
292 void DrawTouchAutoFocus(const Tizen::Graphics::Point& currentPosition);
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);
300 void GetCameraToForeground(void);
301 void SendCameraToBackground(void);
302 void DrawThumbnail(void);
303 void ShowCameraFailPopup(void);
304 void ShowSavingPopup(void);
306 void StartChargingTimer(void);
307 result DrawBatteryLevelFull(void);
308 result CheckBatteryStatus(void);
309 result MakeMenuString(void);
310 result MakeGenMenuString(void);
312 result RunStartPreviewThread(void);
313 void MakeRecordingResolutionList(bool remakeList);
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);
334 void ReInitialise(void);
335 void UpdatePopUp(void);
336 void ShowMemoryFull(void);
337 void HideCancelPopup();
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);
343 static const int IDA_BTN_YES = 603;
344 static const int IDA_BTN_NO = 604;
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;
369 bool __isLockScreenMode;
370 bool __isOrientationChanged;
372 bool __recorderStopped;
373 bool __appcontrolRecordingEnabled;
375 Tizen::Ui::Controls::Panel* __pSettingPanel;
376 Tizen::Ui::Controls::Panel* __pActionPanel;
377 Tizen::Ui::OrientationStatus __dir;
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;
410 Tizen::Graphics::Rectangle CancelPopupRect;
411 Tizen::Graphics::Rectangle ResetPopupRect;
414 #endif // _CM_CAMCORDER_FORM_H_