New look ImageViewerForm
[apps/osp/ImageViewer.git] / inc / IvImageViewerForm.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                IvImageViewerForm.h
19  * @brief               This is the header file for ImageViewerForm class.
20  */
21
22 #ifndef _IV_IMAGE_VIEWER_FORM_H_
23 #define _IV_IMAGE_VIEWER_FORM_H_
24
25 #include <FBase.h>
26 #include <FContent.h>
27 #include <FGraphics.h>
28 #include <FIo.h>
29 #include <FMedia.h>
30 #include <FSystem.h>
31 #include <FUi.h>
32
33 #include "IvBaseForm.h"
34 #include "IvFileUpdateEventListener.h"
35 #include "IvImageProvider.h"
36 #include "IvImageViewerEventListener.h"
37 #include "IvTypes.h"
38
39 class ImageInfo;
40 class ImageViewerForm;
41 class ImageViewerPresentationModel;
42 class SettingPresentationModel;
43
44 class ImageViewerForm
45         : public BaseForm
46         , public Tizen::App::IAppControlResponseListener
47         , public Tizen::Base::Runtime::ITimerEventListener
48         , public Tizen::Content::IContentTransferListener
49         , public Tizen::Media::IImageDecodeUrlEventListener
50         , public Tizen::Ui::IActionEventListener
51         , public Tizen::Ui::IOrientationEventListener
52         , public Tizen::Ui::IScrollPanelEventListener
53         , public Tizen::Ui::Controls::IFormBackEventListener
54         , public Tizen::Ui::Controls::IGalleryEventListener
55         , public Tizen::Ui::Controls::IGalleryItemProvider
56         , public Tizen::Ui::Scenes::ISceneEventListener
57         , public IImageViewerEventListener
58         , public IFileUpdateEventListener
59 {
60 public:
61         ImageViewerForm(void);
62         virtual ~ImageViewerForm(void);
63
64         result Initialize();
65
66         virtual result OnInitializing(void);
67         virtual result OnInitialized(void);
68         virtual result OnTerminating(void);
69         virtual void OnUpdateContentList(void);
70
71         virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId,
72                         const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult,
73                         const Tizen::Base::Collection::IMap* pExtraData);
74
75         virtual void OnTimerExpired(Tizen::Base::Runtime::Timer &timer);
76
77         virtual void OnContentTransferInProgress(RequestId requestID, int totalReceivedSize);
78         virtual void OnContentUploadCompleted(RequestId requestID, result res,
79                         const Tizen::Base::String& errorCode,
80                         const Tizen::Base::String& errorMessage);
81         virtual void OnContentDownloadCompleted(RequestId requestID, Tizen::Content::ContentId contentID, result res,
82                         const Tizen::Base::String& errorCode, const Tizen::Base::String& errorMessage);
83         virtual void OnContentDownloadToBufferCompleted(RequestId reqId, Tizen::Base::ByteBuffer* pBuffer, result r,
84                         const Tizen::Base::String& errorCode, const Tizen::Base::String& errorMessage);
85         virtual void OnContentTransferCanceled(RequestId reqId, result res, const Tizen::Base::String& errorCode,
86                         const Tizen::Base::String& errorMessage);
87
88         virtual void OnImageDecodeUrlReceived (RequestId reqId, Tizen::Graphics::Bitmap *pBitmap,
89                                                 result r, const Tizen::Base::String errorCode, const Tizen::Base::String errorMessage);
90
91         virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
92
93         virtual void OnOrientationChanged(const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus);
94
95         virtual void OnOverlayControlCreated(const Tizen::Ui::Control& source);
96         virtual void OnOverlayControlOpened(const Tizen::Ui::Control& source);
97         virtual void OnOverlayControlClosed(const Tizen::Ui::Control& source);
98         virtual void OnOtherControlSelected(const Tizen::Ui::Control& source);
99
100         virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
101
102         virtual void OnGalleryCurrentItemChanged (Tizen::Ui::Controls::Gallery &view, int index);
103         virtual void OnGalleryItemClicked(Tizen::Ui::Controls::Gallery& listView, int index);
104         virtual void OnGallerySlideShowStarted(Tizen::Ui::Controls::Gallery& gallery);
105         virtual void OnGallerySlideShowStopped(Tizen::Ui::Controls::Gallery& gallery);
106
107         virtual Tizen::Ui::Controls::GalleryItem* CreateItem(int index);
108         virtual bool DeleteItem(int index, Tizen::Ui::Controls::GalleryItem* pItem);
109         virtual int GetItemCount(void);
110
111         virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
112                                                                    const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
113         virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
114                                                                         const Tizen::Ui::Scenes::SceneId& nextSceneId);
115
116         virtual void OnImageDecodedN(const int index);
117
118         virtual void OnFormFileEventOccuered(const int index, const unsigned long eventId);
119
120 private:
121         enum AppControlMode
122         {
123                   APPCONTROL_MODE_NORMAL = 0
124                 , APPCONTROL_MODE_WEB_LINK
125                 , APPCONTROL_MODE_CROP
126                 , APPCONTROL_MODE_MESSAGE
127                 , APPCONTROL_MODE_EMAIL
128         };
129
130         enum RotateMode
131         {
132                 ROTATE_MODE_RIGHT = 0
133           , ROTATE_MODE_LEFT
134         };
135
136         void InitializeDisplay(AppControlMode status);
137         void InitShowGallery(void);
138         void CreateGallery(void);
139         result InitializePanelDetail(void);
140         result SetDetailInfo(void);
141         result InitializePopup(void);
142
143         result InitializeContextMenuMore(void);
144         result InitializeContextMenuCopy(void);
145         result InitializeContextMenuSetAs(void);
146         result InitializeContextMenuShare(void);
147
148         result InitializeSliderPanel(void);
149         result ShowPanelDetail(bool showStatus);
150         result ChangeFooterItem(bool isChanged, Tizen::Ui::Controls::Footer* pFooter, int position);
151         long long GetFileSize(Tizen::Base::String filePath);
152         void GetLabelText(int index, Tizen::Base::String& page);
153         void DownloadFile(void);
154         void RotateImage(Tizen::Base::String& filePath, RotateMode rotateMode);
155         void CallVideoPlayer(void);
156         result DeleteImageFile(void);
157         void RequestDecodeUrl(void);
158         void OnRequestEmailAction(void);
159         void OnRequestMessagesAction(void);
160
161         void SetFooterItemState(bool isEnable);
162         Tizen::Graphics::Bitmap* GetQuickThumbnailN(Tizen::Base::String& fileName);
163
164 private:
165         AppControlMode __initializeDisplayModeCurrent;
166         Tizen::Ui::Controls::Label* __pLabel;
167         Tizen::Ui::Controls::Footer* __pFooter;
168         Tizen::Ui::Controls::ScrollPanel* __pScrollPanel;
169         Tizen::Ui::Controls::Label* __pDetail_Label;
170         Tizen::Ui::Controls::Label* __pDetail_FileInfo_Label[9];
171         Tizen::Ui::Controls::Label* __pDetail_FileInfo_Value_Label[9];
172         Tizen::Ui::Controls::Label *__pLabelMessage;
173         Tizen::Ui::Controls::Button* __pPlayButton;
174         Tizen::Ui::Controls::Button* __pRenameButton;
175         Tizen::Ui::Controls::FooterItem* __pDetailFooterItem;
176         Tizen::Ui::Controls::Gallery* __pGallery;
177         Tizen::Base::Runtime::Timer* __pTimer;
178         Tizen::Ui::Controls::ContextMenu* __pContextMenuMore;
179         Tizen::Ui::Controls::ContextMenu* __pContextMenuCopy;
180         Tizen::Ui::Controls::ContextMenu* __pContextMenuSetAs;
181         Tizen::Ui::Controls::ContextMenu* __pContextMenuShare;
182         Tizen::Ui::Controls::Popup* __pDeletePopup;
183         bool __visible;
184         bool __detail;
185         bool __startSlide;
186         Tizen::Base::String __downLordFileName;
187         RequestId __requestId;
188         Tizen::Content::ContentTransfer __contentTransfer;
189         ImageViewerPresentationModel* __pPresentationModel;
190         SettingPresentationModel* __pSettingPresentationModel;
191 };
192
193 #endif  /* _IV_IMAGE_VIEWER_FORM_H_ */