Merge with master
[apps/osp/VideoPlayer.git] / inc / VpVideoPlayerForm.h
1 //
2 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.0 (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                VpVideoPlayerForm.h
19  * @brief               This is the header file for VideoPlayerForm class.
20  */
21
22 #ifndef _VP_MAIN_FORM_H_
23 #define _VP_MAIN_FORM_H_
24
25 #include <FApp.h>
26 #include <FBase.h>
27 #include <FGraphics.h>
28 #include <FMedia.h>
29 #include <FMediaAudioRouteInfo.h>
30 #include <FMediaAudioRouteManager.h>
31 #include <FMediaIAudioRouteEventListener.h>
32 #include <FUi.h>
33 #include "VpIVideoPlayerEventListener.h"
34
35 class SoundPathPopup;
36 class VideoPlayerPresentationModel;
37
38 class VideoPlayerForm
39         : public Tizen::Ui::Controls::Form
40         , public Tizen::Base::Runtime::ITimerEventListener
41         , public Tizen::Media::IAudioRouteEventListener
42         , public Tizen::Ui::IActionEventListener
43         , public Tizen::Ui::IAdjustmentEventListener
44         , public Tizen::Ui::IKeyEventListener
45         , public Tizen::Ui::IOrientationEventListener
46         , public Tizen::Ui::ITouchEventListener
47         , public Tizen::Ui::Controls::IFormBackEventListener
48         , public Tizen::Ui::Scenes::ISceneEventListener
49         , public IVideoPlayerEventListener
50 {
51 public:
52         VideoPlayerForm(void);
53         virtual ~VideoPlayerForm(void);
54
55         void Initialize(void);
56
57         void CancelTimerByFrameDeactivated(void);
58         void ShowControlByFrameActivated(void);
59
60         result SetActiveAudioRoute(const Tizen::Media::AudioRouteInfo& route);
61
62         virtual result OnInitializing(void);
63         virtual result OnTerminating(void);
64
65         virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
66
67         virtual void OnActiveAudioRouteChanged(const Tizen::Media::AudioRouteInfo& route);
68         virtual void OnAudioRouteAdded(const Tizen::Media::AudioRouteInfo& route);
69         virtual void OnAudioRouteRemoved(const Tizen::Media::AudioRouteInfo& route);
70
71         virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
72
73         virtual void OnAdjustmentValueChanged(const Tizen::Ui::Control& source, int adjustment);
74
75         virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
76         virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
77         virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
78
79         virtual void OnOrientationChanged(const Tizen::Ui::Control& source,
80                         Tizen::Ui::OrientationStatus orientationStatus);
81
82         virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
83                         const Tizen::Ui::TouchEventInfo& touchInfo);
84         virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
85                         const Tizen::Ui::TouchEventInfo& touchInfo);
86         virtual void OnTouchLongPressed(const Tizen::Ui::Control& source,
87                         const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
88         virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
89                         const Tizen::Ui::TouchEventInfo& touchInfo);
90         virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
91                         const Tizen::Ui::TouchEventInfo& touchInfo);
92         virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition,
93                         const Tizen::Ui::TouchEventInfo& touchInfo);
94
95         virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
96
97         virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
98                         const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
99         virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
100                         const Tizen::Ui::Scenes::SceneId& nextSceneId);
101
102         virtual void OnPlayOpened(result r);
103         virtual void OnPlayEndOfClip(bool playNextContent);
104         virtual void OnPlayBuffering(int percent);
105         virtual void OnPlayErrorOccurred(Tizen::Media::PlayerErrorReason r);
106         virtual void OnPlayInterrupted(void);
107         virtual void OnPlayReleased(void);
108         virtual void OnPlayContentChanged(const Tizen::Base::String& fileName);
109         virtual void OnPlayTimeChanged(int currentProgressPos, Tizen::Base::String& currentPlayTime);
110         virtual void OnPlayStateChanged(Tizen::Media::PlayerState playState);
111
112         virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
113
114 private:
115         enum ScreenMode
116         {
117                 SCREEN_MODE_NORMAL = 0,
118                 SCREEN_MODE_FULL,
119                 SCREEN_MODE_FIT
120         };
121
122         enum AudioRouteMode
123         {
124                 AUDIO_ROUTE_SPEAKER_ONLY,
125                 AUDIO_ROUTE_BT_A2DP_AND_SPEAKER,
126                 AUDIO_ROUTE_WIRED_ACCESSORY_AND_SPEAKER,
127                 AUDIO_ROUTE_BT_A2DP_AND_WIRED_ACCESSORY
128         };
129
130         enum AvailableAudioRoute
131         {
132                 OUTPUT_AUDIO_ROUTE_NONE,
133                 OUTPUT_AUDIO_ROUTE_SPEAKER,
134                 OUTPUT_AUDIO_ROUTE_RECEIVER,
135                 OUTPUT_AUDIO_ROUTE_WIRED_ACCESSORY,
136                 OUTPUT_AUDIO_ROUTE_BT_SCO,
137                 OUTPUT_AUDIO_ROUTE_BT_A2DP,
138                 OUTPUT_AUDIO_ROUTE_MAX
139         };
140
141         friend void DestroyPresentationModelInstance(void);
142         result SetScreenMode(const ScreenMode mode, bool destroyOverlay);
143         void UpdateProgressBar(const int currentPlayTime);
144         void InitTimer(void);
145         void ChangedControlPos(void);
146         void DeleteTimer(void);
147         void GetTotalTime(Tizen::Base::String& totalTime);
148         void PlayerSoundPathPopupInit(void);
149         result SetPlayPauseButtonImage(Tizen::Media::PlayerState playState);
150         void CreateMessageBox(const Tizen::Base::String& title, const Tizen::Base::String& message,
151                         Tizen::Ui::Controls::MessageBoxStyle style = Tizen::Ui::Controls::MSGBOX_STYLE_OK,
152                         unsigned long timeout = 0);
153         void ShowControl(bool setShow);
154         void CheckCallStatus(void);
155         void CheckLowBatteryStatus(void);
156         void InitAudioRouteList(void);
157
158 private:
159         Tizen::Ui::Controls::OverlayPanel* __pOverlayPanel;
160         ScreenMode __screenMode;
161         SoundPathPopup* __pSoundPathPopup;
162         Tizen::Base::Runtime::Timer* __pUiControlTimer;
163         Tizen::Media::AudioRouteManager* __pAudioRouteManager;
164         Tizen::Ui::Controls::Button* __pPlayPauseButton;
165         Tizen::Ui::Controls::Button* __pFastForwardButton;
166         Tizen::Ui::Controls::Button* __pFastRewindButton;
167         Tizen::Ui::Controls::Button* __pBackButton;
168         Tizen::Ui::Controls::ButtonItem* __pButtonLeftItem;
169         Tizen::Ui::Controls::ButtonItem* __pButtonRightItem;
170         Tizen::Ui::Controls::Header* __pHeader;
171         Tizen::Ui::Controls::Label* __pControlLabel;
172         Tizen::Ui::Controls::Label* __pCurrenTimeLabel;
173         Tizen::Ui::Controls::Label* __pFirstLineLabel;
174         Tizen::Ui::Controls::Label* __pTotalTimeLabel;
175         Tizen::Ui::Controls::Label* __pVerticalLeftLine;
176         Tizen::Ui::Controls::Label* __pVerticalRightLine;
177         Tizen::Ui::Controls::Slider* __pSlider;
178         bool __actionTouchLongPressed;
179         bool __setPauseState;
180         bool __isControlVisibleState;
181         bool __availableAudioRoute[OUTPUT_AUDIO_ROUTE_MAX];
182         int __audioRouteMode;
183         VideoPlayerPresentationModel* __pVideoPlayerPresentationModel;
184 };
185
186 #endif // _VP_MAIN_FORM_H_