4715d1eca9607709bb556e7b7ab502ee46f61164
[apps/osp/Internet.git] / inc / IntMainForm.h
1 //\r
2 \r
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.\r
4 //\r
5 // Licensed under the Flora License, Version 1.0 (the License);\r
6 // you may not use this file except in compliance with the License.\r
7 // You may obtain a copy of the License at\r
8 //\r
9 //     http://floralicense.org/license/\r
10 //\r
11 // Unless required by applicable law or agreed to in writing, software\r
12 // distributed under the License is distributed on an AS IS BASIS,\r
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
14 // See the License for the specific language governing permissions and\r
15 // limitations under the License.\r
16 //\r
17 \r
18 //!Internet MainForm class\r
19 /*@file:         MainForm.h\r
20  *@brief:        The %MainForm provides the common functionalities for the Main View of the Browser including the addressbar,\r
21  *                       loading,handling events etc.\r
22  */\r
23 \r
24 #ifndef _INT_MAIN_FORM_H_\r
25 #define _INT_MAIN_FORM_H_\r
26 \r
27 #include <FBase.h>\r
28 #include <FUi.h>\r
29 #include <FWeb.h>\r
30 \r
31 #include "IntAddressbar.h"\r
32 #include "IntHistoryData.h"\r
33 #include "IntHistoryPresentationModel.h"\r
34 #include "IntIAddressbarEventListener.h"\r
35 #include "IntISettingChangeListener.h"\r
36 #include "IntMultipleWindowPresentationModel.h"\r
37 #include "IntSharePopup.h"\r
38 \r
39 class MainForm\r
40         : public Tizen::Ui::Controls::Form\r
41         , public Tizen::Ui::Controls::IListViewItemEventListener\r
42         , public Tizen::Ui::Controls::IListViewItemProvider\r
43         , public Tizen::Ui::IActionEventListener\r
44         , public IAddressbarEventListener\r
45         , public Tizen::Ui::Controls::IFormBackEventListener\r
46         , public Tizen::Ui::IKeypadEventListener\r
47         , public Tizen::Web::Controls::ILoadingListener\r
48         , public Tizen::Ui::IOrientationEventListener\r
49         , public Tizen::Ui::ITextEventListener\r
50         , public Tizen::Ui::ITouchEventListener\r
51         , public Tizen::Ui::Scenes::ISceneEventListener\r
52         , public ISettingChangeEventListener\r
53         , public Tizen::Web::Controls::IWebKeypadEventListener\r
54         , public Tizen::Web::Controls::IWebUiEventListener\r
55         , public Tizen::Web::Controls::ITextSearchListener\r
56 {\r
57 public:\r
58    /**\r
59         *@brief                 Default constructor\r
60         */\r
61         MainForm(void);\r
62 \r
63    /**\r
64         *@brief                 Default destructor\r
65         */\r
66         virtual ~MainForm(void);\r
67 \r
68         /**\r
69          * @brief               The method initializes the screen variables and controls to be used by the user.\r
70          *\r
71          */\r
72         bool Initialize(void);\r
73 \r
74         /**\r
75          * @brief               Initializes this instance of %MainForm.\r
76          *\r
77          */\r
78         result InitWebControl();\r
79 \r
80         /**\r
81          * @brief               Initializes this instance of Reader Panel.\r
82          */\r
83         result CreateReaderPanel(void);\r
84 \r
85         Tizen::Base::String GetImagePath(void);\r
86 \r
87         void LoadUrl(Tizen::Base::String& url);\r
88 \r
89         virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);\r
90 \r
91         virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);\r
92 \r
93         //IAddressbarEventListener\r
94         void OnAddressCancelledClicked(const Addressbar&);\r
95 \r
96         void OnAddressBarKeypadClosed(const Addressbar&);\r
97 \r
98         void OnAddressBarKeypadOpened(const Addressbar&);\r
99 \r
100         void OnAddressBarKeypadWillOpen(const Addressbar&);\r
101 \r
102         void OnAddressBarModeChanged(const Addressbar&);\r
103 \r
104         void OnBackClicked(const Addressbar&);\r
105 \r
106         void OnForwardClicked(const Addressbar&);\r
107 \r
108         void OnReaderClicked(const Addressbar&);\r
109 \r
110         void OnRefreshClicked(const Addressbar&){}\r
111 \r
112         void OnSearchClicked(const Addressbar&){}\r
113 \r
114         void OnStopClicked(Addressbar&);\r
115 \r
116         void OnUrlSubmitted(Addressbar&);\r
117 \r
118         //ILoadingeventListener\r
119         virtual void OnEstimatedProgress(int progress);\r
120 \r
121         virtual bool OnHttpAuthenticationRequestedN(const Tizen::Base::String& host, const Tizen::Base::String& realm, const Tizen::Web::Controls::AuthenticationChallenge& authentication);\r
122 \r
123         virtual void OnHttpAuthenticationCanceled(void);\r
124 \r
125         virtual result OnInitializing(void);\r
126 \r
127         virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);\r
128 \r
129         virtual void OnKeypadOpened(Tizen::Ui::Control& source){}\r
130 \r
131         virtual void OnKeypadClosed(Tizen::Ui::Control& source);;\r
132 \r
133         virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction){}\r
134 \r
135         void OnLoadingErrorOccurred(Tizen::Web::Controls::LoadingErrorType error, const Tizen::Base::String& reason);\r
136 \r
137         virtual void OnLoadingStarted(void);\r
138 \r
139         virtual void OnLoadingCanceled(void);\r
140 \r
141         virtual void OnLoadingCompleted(void);\r
142 \r
143         bool OnLoadingRequested(const Tizen::Base::String& url, Tizen::Web::Controls::WebNavigationType type);\r
144 \r
145         virtual void OnPageTitleReceived(const Tizen::Base::String& title);\r
146 \r
147         virtual Tizen::Web::Controls::DecisionPolicy OnWebDataReceived(const Tizen::Base::String& mime, const Tizen::Net::Http::HttpHeader& httpHeader);\r
148 \r
149         //IOrientationEventListener\r
150         virtual void OnOrientationChanged (const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus);\r
151 \r
152         //ISceenEventListener\r
153         virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);\r
154 \r
155         virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);\r
156 \r
157         virtual result OnTerminating(void);\r
158 \r
159         void SetImageLoadEnabled(void);\r
160 \r
161         void SetJavascriptEnabled(void);\r
162 \r
163         // IListViewItemEventListener\r
164         /**\r
165          *Called when the state of an element in the ListContextItem is changed.\r
166          */\r
167         virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);\r
168 \r
169         /**\r
170          *Called when the state of an element in the ListViewItem in the ListView or GroupedListView is changed.\r
171          */\r
172         virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);\r
173 \r
174         /**\r
175          *Called when the ListItem is swept.\r
176          */\r
177         virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);\r
178 \r
179         /**\r
180          *Called when the item or the element is long pressed.\r
181          */\r
182         virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback){};\r
183 \r
184 \r
185         //IListViewItemProvider\r
186         virtual Tizen::Ui::Controls::ListItemBase *     CreateItem (int index, int itemWidth);\r
187         virtual bool    DeleteItem (int index, Tizen::Ui::Controls::ListItemBase *pItem, int itemWidth);\r
188         virtual int     GetItemCount (void);\r
189 \r
190         //IWebUiEventListener\r
191         virtual void OnWebPageBlockSelected(Tizen::Web::Controls::Web& source, Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint);\r
192         virtual void OnWebPageShowRequested(Tizen::Web::Controls::Web& source);\r
193         virtual Tizen::Web::Controls::Web* OnWebWindowCreateRequested(void);\r
194         virtual void OnWebWindowCloseRequested(Tizen::Web::Controls::Web& source) {AppLog("acdaqsc");}\r
195 \r
196         //IWebKeypadEventListener\r
197         virtual void OnWebKeypadClosed(Tizen::Web::Controls::Web& source);\r
198         virtual void OnWebKeypadOpened(Tizen::Web::Controls::Web& source);\r
199         virtual void OnWebKeypadWillOpen(Tizen::Web::Controls::Web& source);\r
200 \r
201         //ITouchEventListener\r
202         virtual void OnTouchDoublePressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);\r
203         virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}\r
204         virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}\r
205         virtual void OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);\r
206         virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);\r
207         virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);\r
208         virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);\r
209 \r
210         virtual void OnTextFound(int totalCount, int currentOrdinal);\r
211 \r
212         //ISettingsChangeListener\r
213         void OnClearCache(void);\r
214         void OnClearCookie(void);\r
215         void OnSettingsChange(int settingvalue);\r
216         void OnSettingsReset(void);\r
217 \r
218         virtual void  OnTextValueChangeCanceled (const Tizen::Ui::Control &source){}\r
219         virtual void  OnTextValueChanged (const Tizen::Ui::Control &source);\r
220 \r
221         void UpdateImageContent(Tizen::Base::ByteBuffer* aBuffer, Tizen::Base::String imageName);\r
222 private:\r
223         double findDistance(int x1,int y1,int x2, int y2);\r
224         void FindNextWord(bool next = true);\r
225         result InitAddressbar(void);\r
226         result InitFooter(void);\r
227         result InitContextMenu(Tizen::Graphics::Point& p);\r
228         result InitFindWordPanel(void);\r
229         result InitImageContextMenu(Tizen::Graphics::Point p);\r
230         result InitSelectTextContextMenu(Tizen::Graphics::Point p, bool pasteOption, bool onlyPasteOption);\r
231         result InitMostVisitedSitesPanel(Tizen::Ui::OrientationStatus orientationStatus);\r
232         result InitMostVisitedSitesView(Tizen::Ui::OrientationStatus orientationStatus);\r
233         void MoveUiControls(void);\r
234         void UpdateFavicon(void);\r
235         void RelayoutControls(bool showAddressbar);\r
236         void ShowFindWordPanel(bool show = true, bool isTouchPressed = false);\r
237         void ShowMostVisitedSitesPanel(void);\r
238         void StartWordSearch();\r
239 \r
240 private:\r
241 \r
242         static const int IDA_FORMAT_BITMAP;\r
243         static const int IDA_FORMAT_DELETE_BITMAP;\r
244         static const int IDA_FORMAT_TITLE_STRING;\r
245         static const int IDA_FORMAT_URL_STRING;\r
246         static const int IDA_CONTEXT_ITEM_DELETE;\r
247 \r
248         Tizen::Graphics::Point __adressPanelPosition;\r
249         AddressBarMode __curAddressBarMode;\r
250         Tizen::Base::String     __currentSearchStr;\r
251         Tizen::Base::String     __currentSelectedStr;\r
252         int __distanceMoved;\r
253         int __webControlHeight;\r
254         float __previousZoomLevel;\r
255         int     __maxOccurrances;\r
256         int     __currentWordIndex;\r
257         bool __isLoaded;\r
258         bool __inputEventToBeSupressed;\r
259         Addressbar* __pAddressbar;\r
260         Tizen::Graphics::Point __contextMenuPosition;\r
261         Tizen::Ui::Controls::Label* __pArticleReaderLabel;\r
262         Tizen::Ui::Controls::Panel* __pArticleReaderPanel;\r
263         Tizen::Ui::Controls::Panel* __pBlankPanel;\r
264         Tizen::Ui::Controls::Label *    __pFindWordBgLabel;\r
265         Tizen::Ui::Controls::Button*    __pFindWordClear;\r
266         Tizen::Ui::Controls::Label*     __pFindWordCountLabel;\r
267         Tizen::Ui::Controls::Panel*     __pFindWordControl;\r
268         Tizen::Ui::Controls::EditField* __pFindWordEditField;\r
269         Tizen::Ui::Controls::Button*    __pFindWordNext;\r
270         Tizen::Ui::Controls::Button*    __pFindWordPrev;\r
271         Tizen::Ui::Controls::Panel*     __pFindWordPanel;\r
272         Tizen::Ui::Controls::Panel* __pFooterPanel;\r
273         Tizen::Web::Controls::HitElementResult* __pHitElementResult;\r
274         Tizen::Ui::Controls::ContextMenu* __pImageMenu;\r
275         Tizen::Ui::Controls::ContextMenu* __pMenu;\r
276         Tizen::Ui::Controls::Button* __pMoreButton;\r
277         Tizen::Ui::Controls::Button* __pMultiWindowButton;\r
278         Tizen::Ui::Controls::Button* __pNewWindowButton;\r
279         SharePopup*     __pPopUp;\r
280         AddressBarMode __prevAddressBarMode;\r
281         Tizen::Ui::Controls::Button* __pReaderCloseBtn;\r
282         Tizen::Base::String*    __pReaderData;\r
283         Tizen::Media::Image* __pSaveImage;\r
284         Tizen::Web::Controls::Web* __pWebReader;\r
285         Tizen::Web::Controls::Web* __pWebViewer;\r
286         WindowInfo*     __pWindowInfo;\r
287         Tizen::Ui::Controls::ListView* __pMostVisitedListView;\r
288 \r
289         Tizen::Graphics::Point __touchPoint1;\r
290         Tizen::Graphics::Point __touchPoint2;\r
291         Tizen::Graphics::Point __webControlPosition;\r
292 \r
293         Tizen::Ui::Controls::ListContextItem* __pItemContext;\r
294         Tizen::Base::Collection::ArrayList* __pMostVisitedSites;\r
295 };\r
296 \r
297 #endif  //_INT_MAIN_FORM_H_\r