Fixed jira issue and fixed prevent issue
[apps/osp/MusicPlayer.git] / inc / MpMusicPlayerForm.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                MpMusicPlayerForm.h
19  * @brief               This is the header file for MusicPlayerForm class.
20  */
21
22 #ifndef _MP_MUSIC_PLAYER_FORM_H_
23 #define _MP_MUSIC_PLAYER_FORM_H_
24
25 #include <new>
26 #include <FApp.h>
27 #include <FSystem.h>
28 #include <FUi.h>
29 #include "MpIMusicContentUpdateEventListner.h"
30 #include "MpIMusicPlayerEventListener.h"
31 #include "MpIMusicSettingEventListener.h"
32 #include "MpThumbnailBase.h"
33 #include "MpTypes.h"
34
35 class PlayListPickerPopup;
36 class PlayerPresentationModel;
37 class SetAsPopup;
38 class SettingPresentationModel;
39 class SharePopup;
40 class SoundPathPopup;
41
42 class PlayerForm
43         : public ThumbnailBase
44         , public Tizen::Ui::Controls::Form
45         , public Tizen::Ui::Controls::IFormBackEventListener
46         , public Tizen::Ui::Controls::ITableViewItemProvider
47         , public Tizen::Ui::Controls::ITableViewItemEventListener
48         , public Tizen::Ui::Controls::ISliderEventListener
49         , public Tizen::Ui::IActionEventListener
50         , public Tizen::Ui::IOrientationEventListener
51         , public Tizen::Ui::ITouchEventListener
52         , public Tizen::Ui::IKeyEventListener
53         , public Tizen::Ui::Animations::IAnimationTransactionEventListener
54         , public IMusicContentUpdateEventListner
55         , public IMusicPlayerEventListener
56         , public IMusicSettingEventListener
57         , public Tizen::Ui::Scenes::ISceneEventListener
58         , public Tizen::Base::Runtime::ITimerEventListener
59 {
60 public:
61         PlayerForm(void);
62         virtual ~PlayerForm(void);
63         result Initialize(void);
64
65         virtual result OnInitializing(void);
66         virtual result OnTerminating(void);
67
68         virtual int GetItemCount(void);
69         virtual Tizen::Ui::Controls::TableViewItem* CreateItem(const int itemIndex, int itemWidth);
70         virtual bool DeleteItem(const int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
71         virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
72         virtual int GetDefaultItemHeight(void);
73
74         virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView,
75                                                         int itemIndex,
76                                                         Tizen::Ui::Controls::TableViewItem* pItem,
77                                                         Tizen::Ui::Controls::TableViewItemStatus status);
78         virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView,
79                                                                         int itemIndex,
80                                                                         Tizen::Ui::Controls::TableViewContextItem* pContextItem,
81                                                                         bool activated);
82         virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView,
83                                                 int itemIndexFrom,
84                                                 int itemIndexTo);
85
86         virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
87         virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
88                                                                         const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
89         virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
90                                                                         const Tizen::Ui::Scenes::SceneId& nextSceneId);
91
92         virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus);
93         virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
94
95         virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
96         virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
97         virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
98
99         virtual void OnTouchDoublePressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}
100         virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}
101         virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}
102         virtual void OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
103         virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
104         virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
105         virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
106
107         virtual void OnSliderBarMoved(Tizen::Ui::Controls::Slider& source, int value);
108
109         virtual void OnAnimationTransactionStarted(int transactionId);
110         virtual void OnAnimationTransactionStopped(int transactionId);
111         virtual void OnAnimationTransactionFinished(int transactionId);
112
113         virtual void OnPlayStateChanged(Tizen::Media::PlayerState playerState);
114         virtual void OnPlayContentChanged(int currentContentIndex);
115         virtual void OnPlayContentRemoved(int removedContentIndex);
116         virtual void OnPlayTimeChanged(const Tizen::Base::String& currentDuration, int currentPosition);
117         virtual void OnPlayVolumeBarStateChanged(void);
118         virtual void OnAutoOffTimeChanged(int autoOffTime);
119         virtual void OnPlayPresentationModelDestroying(void);
120
121         virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
122
123         virtual void OnChangedContentList(Tizen::Base::Collection::IList* pArgs);
124         virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
125
126         virtual void OnThumbnailInfoReveivedN(ThumbnailInfo* pThumbnailInfo);
127         virtual void OnMusicContentUpdateCompleted(void);
128
129 private:
130         result CreateTableViewItem(Tizen::Ui::Container& parent, const ContentInformation& contentInfoStruct);
131         void TogglePlayPauseImage(Tizen::Media::PlayerState playerState);
132         void SetPauseButtonImage(void);
133         void SetPlayButtonImage(void);
134         void SetRepeatButtonImage(int repeatValue);
135         void SetShuffleButtonImage(bool shuffleEnable);
136         void SetFileNotExistState(bool isFileExist);
137         result ShowMessageBox(const Tizen::Base::String& showText);
138         void SetContentInfo(int currentContentIndex);
139         void UpdateAnimationAlbumArt(AlbumArtImage position);
140         result InitializeVolumeBar(void);
141
142         void SetPlayerScreenState(unsigned int playerScreenState);
143         unsigned int GetPlayerScreenState(void);
144
145         result CreateContextMenuN(const Tizen::Ui::Control& source);
146         result SetContextMenuItem(unsigned int contextMenuItemStyle, Tizen::Graphics::Point anchorPosition = Tizen::Graphics::Point(-1, -1));
147         result TryRemoveContextMenu(int actionId);
148         void RemoveContextMenu(void);
149
150         result LanucherPicker(PickerType pickerType);
151         Tizen::Base::Collection::IList* GetPickerArgumentListN(PickerType pickerType);
152
153         result ShowSharePicker(Tizen::Base::Collection::IList* pIList);
154         result ShowPlayListPicker(Tizen::Base::Collection::IList* pIList);
155         result ShowSetAsPicker(Tizen::Base::Collection::IList* pIList);
156
157         void RemoveSharePicker(void);
158         void RemovePlayListPicker(void);
159         void RemoveSetAsPicker(void);
160
161         void PlayAnimation(void);
162         void StopAnimation(void);
163
164         void UpdateSplitBarState(void);
165
166 private:
167         PlayerPresentationModel* __pPlayerPresentationModel;
168
169         Tizen::Ui::Animations::VisualElement* __pAlbumArtElements;
170         Tizen::Ui::Animations::VisualElement* __pAlbumArtElement[ALBUM_ART_IMAGE_COUNT];
171
172         Tizen::Ui::Controls::Panel* __pVolumePanel;
173         Tizen::Ui::Controls::Panel* __pControllerPanel;
174         Tizen::Ui::Controls::Panel* __pPanelRegisterBar;
175         Tizen::Ui::Controls::Panel* __pContentsAlbumViewPanel;
176
177 //      Tizen::Ui::Controls::Label* __pAlbumArtLabel;
178         Tizen::Ui::Controls::Panel* __pContentsListViewPanel;
179
180         Tizen::Ui::Controls::Label* __pCurrentTimeLabel;
181         Tizen::Ui::Controls::Label* __pTotalTimeLabel;
182         Tizen::Ui::Controls::Label* __pTitleName;
183         Tizen::Ui::Controls::Label* __pArtistName;
184
185         Tizen::Ui::Controls::Button* __pRewindButton;
186         Tizen::Ui::Controls::Button* __pForwardButton;
187         Tizen::Ui::Controls::Button* __pVolumeButton;
188         Tizen::Ui::Controls::Button* __pPlayPauseButton;
189         Tizen::Ui::Controls::Button* __pBackButton;
190         Tizen::Ui::Controls::Button* __pHorizontalHeaderRightButton;
191         Tizen::Ui::Controls::Button* __pRepeatButton;
192         Tizen::Ui::Controls::Button* __pShuffleButton;
193 //      Tizen::Ui::Controls::Button* __pAddToPlaylistButton;
194         Tizen::Ui::Controls::Button* __pContentsViewToggleButton;
195         Tizen::Ui::Controls::Button* __pMoreContextButton;
196
197         Tizen::Ui::Controls::Slider* __pPlayStateSlider;
198         Tizen::Ui::Controls::Slider* __pVolumeSlider;
199
200 //      Tizen::Ui::Controls::TableView* __pContentsListView;
201 //      Tizen::Ui::Controls::ContextMenu* __pContextMenuIconText;
202         Tizen::Graphics::Bitmap* __pThumbnail;
203
204         PlayListPickerPopup* __pPlayListPicker;
205         SharePopup* __pSharePicker;
206         SetAsPopup* __pSetAsPicker;
207         SoundPathPopup* __pSoundPathPopup;
208
209         bool __isLongPressed;
210         Tizen::Ui::FlickDirection flickDirection;
211         int __transactionID;
212         unsigned int __playerScreenState;
213         bool __isAnimationPerformed;
214         bool __isRunByAppControl;
215
216         Tizen::Base::Runtime::Timer* __pAnimationFinishedTimer;
217         Tizen::Base::Runtime::Timer* __pContentPlayTimer;
218         Tizen::Ui::Scenes::SceneId __pPreviousSceneId;
219         Tizen::Base::String* __pPath;
220         Tizen::Ui::Controls::ContextMenu* __pContextMenu;
221 };
222
223 #endif // _MP_MUSIC_PLAYER_FORM_H_