Fix N_SE-48032 N_SE-48035
[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.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                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 <FMediaIAudioRouteEventListener.h>
30 #include <FUi.h>
31 #include "VpIVideoPlayerEventListener.h"
32
33 class SoundPathPopup;
34 class VideoPlayerPresentationModel;
35
36 class VideoPlayerForm
37         : public Tizen::Ui::Controls::Form
38         , public Tizen::App::IAppControlResponseListener
39         , public Tizen::Base::Runtime::ITimerEventListener
40         , public Tizen::Media::IAudioRouteEventListener
41         , public Tizen::Ui::Controls::IFormBackEventListener
42         , public Tizen::Ui::Controls::ISliderEventListener
43         , public Tizen::Ui::IActionEventListener
44         , public Tizen::Ui::IAdjustmentEventListener
45         , public Tizen::Ui::IFocusEventListener
46         , public Tizen::Ui::IKeyEventListener
47         , public Tizen::Ui::IOrientationEventListener
48         , public Tizen::Ui::ITouchEventListener
49         , public Tizen::Ui::Scenes::ISceneEventListener
50         , public IVideoPlayerEventListener
51 {
52 public:
53         VideoPlayerForm(void);
54         virtual ~VideoPlayerForm(void);
55
56         void Initialize(void);
57
58         void CancelTimerByFrameDeactivated(void);
59         void CheckAppLaunchable(void);
60
61         result SetActiveAudioRoute(const Tizen::Media::AudioRouteInfo& route);
62
63         void SetFrameActivated(bool frameActivated);
64         bool GetFrameActivated(void) const;
65
66         virtual result OnInitializing(void);
67         virtual result OnTerminating(void);
68         virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
69
70         virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId,
71                                 const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult,
72                                 const Tizen::Base::Collection::IMap* pExtraData);
73
74         virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
75
76         virtual void OnActiveAudioRouteChanged(const Tizen::Media::AudioRouteInfo& route);
77         virtual void OnAudioRouteAdded(const Tizen::Media::AudioRouteInfo& route);
78         virtual void OnAudioRouteRemoved(const Tizen::Media::AudioRouteInfo& route);
79
80         virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
81
82         virtual void OnSliderBarMoved(Tizen::Ui::Controls::Slider& source, int value);
83
84         virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
85
86         virtual void OnAdjustmentValueChanged(const Tizen::Ui::Control& source, int adjustment);
87
88         virtual void OnFocusGained(const Tizen::Ui::Control& source){}
89         virtual void OnFocusLost(const Tizen::Ui::Control& source);
90
91         virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
92         virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
93         virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
94
95         virtual void OnOrientationChanged(const Tizen::Ui::Control& source,     Tizen::Ui::OrientationStatus orientationStatus);
96
97         virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
98         virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
99         virtual void OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
100         virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}
101         virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}
102         virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}
103
104         virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
105         virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
106
107         virtual void OnPlayOpened(result r);
108         virtual void OnPlayEndOfClip(bool playNextContent, int repeatMode, int mediaCount);
109         virtual void OnPlayBuffering(int percent);
110         virtual void OnPlayErrorOccurred(Tizen::Media::PlayerErrorReason r);
111         virtual void OnPlayInterrupted(void);
112         virtual void OnPlayReleased(void);
113         virtual void OnPlayContentChanged(const Tizen::Base::String& fileName);
114         virtual void OnPlayTimeChanged(int currentProgressPos, Tizen::Base::String& currentPlayTime);
115         virtual void OnPlayStateChanged(Tizen::Media::PlayerState playState);
116         virtual void OnPlaySeekCompleted(result r);
117
118 private:
119         enum ScreenMode
120         {
121                 SCREEN_MODE_NORMAL = 0,
122                 SCREEN_MODE_FULL,
123                 SCREEN_MODE_FIT
124         };
125
126         enum AudioRouteMode
127         {
128                 AUDIO_ROUTE_SPEAKER_ONLY,
129                 AUDIO_ROUTE_BT_A2DP_AND_SPEAKER,
130                 AUDIO_ROUTE_WIRED_ACCESSORY_AND_SPEAKER,
131                 AUDIO_ROUTE_BT_A2DP_AND_WIRED_ACCESSORY
132         };
133
134         enum AvailableAudioRoute
135         {
136                 OUTPUT_AUDIO_ROUTE_NONE,
137                 OUTPUT_AUDIO_ROUTE_SPEAKER,
138                 OUTPUT_AUDIO_ROUTE_RECEIVER,
139                 OUTPUT_AUDIO_ROUTE_WIRED_ACCESSORY,
140                 OUTPUT_AUDIO_ROUTE_BT_SCO,
141                 OUTPUT_AUDIO_ROUTE_BT_A2DP,
142                 OUTPUT_AUDIO_ROUTE_MAX
143         };
144
145         friend void DestroyPresentationModelInstance(void);
146         result InitializeHeader(void);
147         result InitializeFuncPanel(void);
148         result InitializeController(void);
149         result SetScreenMode(const ScreenMode mode, bool destroyOverlay);
150         void UpdateProgressBar(const int currentPlayTime);
151         void InitTimer(void);
152         void DeleteTimer(void);
153         void GetTotalTime(Tizen::Base::String& totalTime);
154         void PlayerSoundPathPopupInit(void);
155         result SetPlayPauseButtonImage(Tizen::Media::PlayerState playState);
156         void SetRepeatButtonImage(int repeatValue);
157         void SetScreenModeButtonImage(void);
158         void CreateMessageBox(const Tizen::Base::String& title, const Tizen::Base::String& message,
159                         Tizen::Ui::Controls::MessageBoxStyle style = Tizen::Ui::Controls::MSGBOX_STYLE_OK,
160                         unsigned long timeout = 0);
161         void ShowControl(bool setShow);
162         void CheckCallStatus(void);
163         void CheckLowBatteryStatus(void);
164         void InitAudioRouteList(void);
165
166 private:
167         Tizen::Ui::Controls::OverlayPanel* __pOverlayPanel;
168         ScreenMode __screenMode;
169         SoundPathPopup* __pSoundPathPopup;
170         Tizen::Base::Runtime::Timer* __pUiControlTimer;
171         Tizen::Media::AudioRouteManager* __pAudioRouteManager;
172         Tizen::Ui::Controls::Header* __pHeader;
173         Tizen::Ui::Controls::Panel* __pFunctionPanel;
174         Tizen::Ui::Controls::Panel* __pControllerPanel;
175         Tizen::Ui::Controls::Button* __pPlayPauseButton;
176         Tizen::Ui::Controls::Button* __pFastForwardButton;
177         Tizen::Ui::Controls::Button* __pFastRewindButton;
178         Tizen::Ui::Controls::Button* __pShareButton;
179         Tizen::Ui::Controls::Button* __pScreenModeButton;
180         Tizen::Ui::Controls::Button* __pRepeatModeButton;
181         Tizen::Ui::Controls::Label* __pCurrenTimeLabel;
182         Tizen::Ui::Controls::Label* __pTotalTimeLabel;
183         Tizen::Ui::Controls::Slider* __pSlider;
184         Tizen::Ui::Controls::ContextMenu* __pShareContextMenu;
185         bool __actionTouchLongPressed;
186         bool __setPauseState;
187         bool __isControlVisibleState;
188         bool __availableAudioRoute[OUTPUT_AUDIO_ROUTE_MAX];
189         bool __sliderMoved;
190         bool __playingBeforeSlide;
191         bool __frameActivated;
192         int __audioRouteMode;
193         long __timeToSeek;
194         VideoPlayerPresentationModel* __pVideoPlayerPresentationModel;
195 };
196
197 #endif // _VP_MAIN_FORM_H_