3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 //!Internet MainForm class
20 *@brief: The %MainForm provides the common functionalities for the Main View of the Browser including the addressbar,
21 * loading,handling events etc.
24 #ifndef _INT_MAIN_FORM_H_
25 #define _INT_MAIN_FORM_H_
31 #include "IntAddressbar.h"
32 #include "IntHistoryData.h"
33 #include "IntHistoryPresentationModel.h"
34 #include "IntIAddressbarEventListener.h"
35 #include "IntISettingChangeListener.h"
36 #include "IntMultipleWindowPresentationModel.h"
37 #include "IntSharePopup.h"
41 ADDRESSBAR_MODE_INVALID = -1,
42 ADDRESSBAR_MODE_READER = 0,
43 ADDRESSBAR_MODE_LOADING,
44 ADDRESSBAR_MODE_LOADING_COMPLETE,
49 : public Tizen::Ui::Controls::Form
50 , public Tizen::Ui::Controls::IListViewItemEventListener
51 , public Tizen::Ui::Controls::IListViewItemProvider
52 , public Tizen::Ui::IActionEventListener
53 , public IAddressbarEventListener
54 , public Tizen::Ui::Controls::IFormBackEventListener
55 , public Tizen::Ui::IKeypadEventListener
56 , public Tizen::Web::Controls::ILoadingListener
57 , public Tizen::Ui::IOrientationEventListener
58 , public Tizen::Ui::ITextEventListener
59 , public Tizen::Ui::ITouchEventListener
60 , public Tizen::Ui::Scenes::ISceneEventListener
61 , public ISettingChangeEventListener
62 , public Tizen::Web::Controls::IWebKeypadEventListener
63 , public Tizen::Web::Controls::IWebUiEventListener
64 , public Tizen::Web::Controls::ITextSearchListener
68 *@brief Default constructor
73 *@brief Default destructor
75 virtual ~MainForm(void);
78 * @brief The method initializes the screen variables and controls to be used by the user.
81 bool Initialize(void);
84 * @brief Initializes this instance of %MainForm.
87 result InitWebControl();
90 * @brief Initializes this instance of Reader Panel.
92 result CreateReaderPanel(void);
94 Tizen::Base::String GetImagePath(void);
96 void LoadUrl(Tizen::Base::String& url);
98 virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
100 virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
102 //IAddressbarEventListener
103 void OnAddressCancelledClicked(const Addressbar&);
105 void OnAddressBarKeypadClosed(const Addressbar&, bool footerState = true);
107 void OnAddressBarKeypadOpened(const Addressbar&);
109 void OnAddressBarKeypadWillOpen(const Addressbar&);
111 void OnAddressBarModeChanged(/*const Addressbar&*/);
113 void OnBackClicked(/*const Addressbar&*/);
115 void OnForwardClicked(/*const Addressbar&*/);
117 void OnReaderClicked(const Addressbar&);
119 void OnRefreshClicked(const Addressbar&){}
121 void OnSearchClicked(const Addressbar&){}
123 void OnStopClicked(Addressbar&);
125 void OnUrlValueChanged(Addressbar&);
127 void OnUrlSubmitted(Addressbar&);
129 //ILoadingeventListener
130 virtual void OnEstimatedProgress(int progress);
131 virtual void OnFaviconReceived(const Tizen::Graphics::Bitmap& favicon);
133 virtual bool OnHttpAuthenticationRequestedN(const Tizen::Base::String& host, const Tizen::Base::String& realm, const Tizen::Web::Controls::AuthenticationChallenge& authentication);
135 virtual void OnHttpAuthenticationCanceled(void);
137 virtual result OnInitializing(void);
139 virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
141 virtual void OnKeypadOpened(Tizen::Ui::Control& source);
143 virtual void OnKeypadClosed(Tizen::Ui::Control& source);
145 virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction){}
147 void OnLoadingErrorOccurred(Tizen::Web::Controls::LoadingErrorType error, const Tizen::Base::String& reason);
149 virtual void OnLoadingStarted(void);
151 virtual void OnLoadingCanceled(void);
153 virtual void OnLoadingCompleted(void);
155 bool OnLoadingRequested(const Tizen::Base::String& url, Tizen::Web::Controls::WebNavigationType type);
157 virtual void OnPageTitleReceived(const Tizen::Base::String& title);
159 virtual Tizen::Web::Controls::DecisionPolicy OnWebDataReceived(const Tizen::Base::String& mime, const Tizen::Net::Http::HttpHeader& httpHeader);
161 //IOrientationEventListener
162 virtual void OnOrientationChanged (const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus);
164 //ISceenEventListener
165 virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
167 virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
169 virtual result OnTerminating(void);
171 void SetImageLoadEnabled(void);
173 void SetJavascriptEnabled(void);
175 // IListViewItemEventListener
177 *Called when the state of an element in the ListContextItem is changed.
179 virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
182 *Called when the state of an element in the ListViewItem in the ListView or GroupedListView is changed.
184 virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
187 *Called when the ListItem is swept.
189 virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
192 *Called when the item or the element is long pressed.
194 virtual void OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback){};
197 //IListViewItemProvider
198 virtual Tizen::Ui::Controls::ListItemBase * CreateItem (int index, int itemWidth);
199 virtual bool DeleteItem (int index, Tizen::Ui::Controls::ListItemBase *pItem, int itemWidth);
200 virtual int GetItemCount (void);
202 //IWebUiEventListener
203 virtual void OnWebPageBlockSelected(Tizen::Web::Controls::Web& source, Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint);
204 virtual void OnWebPageShowRequested(Tizen::Web::Controls::Web& source);
205 virtual Tizen::Web::Controls::Web* OnWebWindowCreateRequested(void);
206 virtual void OnWebWindowCloseRequested(Tizen::Web::Controls::Web& source) {AppLog("acdaqsc");}
208 //IWebKeypadEventListener
209 virtual void OnWebKeypadClosed(Tizen::Web::Controls::Web& source);
210 virtual void OnWebKeypadOpened(Tizen::Web::Controls::Web& source);
211 virtual void OnWebKeypadWillOpen(Tizen::Web::Controls::Web& source);
213 //ITouchEventListener
214 virtual void OnTouchDoublePressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
215 virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}
216 virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){}
217 virtual void OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
218 virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
219 virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
220 virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
222 virtual void OnTextFound(int totalCount, int currentOrdinal);
224 //ISettingsChangeListener
225 void OnClearCache(void);
226 void OnClearCookie(void);
227 void OnSettingsChange(int settingvalue);
228 void OnSettingsReset(void);
230 virtual void OnTextValueChangeCanceled (const Tizen::Ui::Control &source){}
231 virtual void OnTextValueChanged (const Tizen::Ui::Control &source);
233 void UpdateImageContent(Tizen::Base::ByteBuffer* aBuffer, Tizen::Base::String imageName);
235 void SetForwardButtonEnabled(bool isEnabled);
236 void SetBackButtonEnabled(bool isEnabled);
238 void UpdateProgress(int percentage);
239 int GetProgress(void);
240 void UpdateProgressBitmap(void);
243 * @brief Sets the current addressbar Mode.
245 void SetAddressbarMode(AddressBarMode addMode);
247 void SetUrl(const Tizen::Base::String& url);
250 double findDistance(int x1,int y1,int x2, int y2);
251 void FindNextWord(bool next = true);
252 result InitAddressbar(void);
253 result InitFooter(void);
254 result InitContextMenu(Tizen::Graphics::Point& p);
255 result InitFindWordPanel(void);
256 result InitImageContextMenu(Tizen::Graphics::Point p);
257 result InitSelectTextContextMenu(Tizen::Graphics::Point p, bool pasteOption, bool onlyPasteOption);
258 result InitMostVisitedSitesPanel(Tizen::Ui::OrientationStatus orientationStatus);
259 result InitMostVisitedSitesView(Tizen::Ui::OrientationStatus orientationStatus);
260 void MoveUiControls(void);
261 void UpdateFavicon(void);
262 void RelayoutControls(bool showAddressbar);
263 void ShowFindWordPanel(bool show = true, bool isTouchPressed = false);
264 void ShowMostVisitedSitesPanel(void);
265 void StartWordSearch();
266 AddressBarMode GetAddressbarMode(void);
267 Tizen::Base::String RemoveHttpTextFromDisplayURL(void);
271 static const int IDA_FORMAT_BITMAP;
272 static const int IDA_FORMAT_DELETE_BITMAP;
273 static const int IDA_FORMAT_TITLE_STRING;
274 static const int IDA_FORMAT_URL_STRING;
275 static const int IDA_CONTEXT_ITEM_DELETE;
277 Tizen::Graphics::Point __adressPanelPosition;
278 AddressBarMode __curAddressBarMode;
279 Tizen::Base::String __currentSearchStr;
280 Tizen::Base::String __currentSelectedStr;
282 int __webControlHeight;
283 float __previousZoomLevel;
284 int __maxOccurrances;
285 int __currentWordIndex;
287 bool __inputEventToBeSupressed;
289 bool __isLoadingData;
290 bool __isLoadingCompleted;
291 int __progressPercentage;
293 AddressBarMode __currentAddMode;
294 Tizen::Base::String __displayUrl;
295 Tizen::Base::String __editTextUrl;
297 Addressbar* __pAddressbar;
298 Tizen::Graphics::Point __contextMenuPosition;
299 Tizen::Ui::Controls::Label* __pArticleReaderLabel;
300 Tizen::Ui::Controls::Panel* __pArticleReaderPanel;
301 Tizen::Ui::Controls::Panel* __pBlankPanel;
302 Tizen::Ui::Controls::Label * __pFindWordBgLabel;
303 Tizen::Ui::Controls::Button* __pFindWordClear;
304 Tizen::Ui::Controls::Label* __pFindWordCountLabel;
305 Tizen::Ui::Controls::Panel* __pFindWordControl;
306 Tizen::Ui::Controls::EditField* __pFindWordEditField;
307 Tizen::Ui::Controls::Button* __pFindWordNext;
308 Tizen::Ui::Controls::Button* __pFindWordPrev;
309 Tizen::Ui::Controls::Panel* __pFindWordPanel;
310 Tizen::Ui::Controls::Panel* __pFooterPanel;
311 Tizen::Web::Controls::HitElementResult* __pHitElementResult;
312 Tizen::Ui::Controls::ContextMenu* __pImageMenu;
313 Tizen::Ui::Controls::ContextMenu* __pMenu;
314 Tizen::Ui::Controls::Button* __pMoreButton;
315 Tizen::Ui::Controls::Button* __pMultiWindowButton;
316 // Tizen::Ui::Controls::Button* __pNewWindowButton;
317 SharePopup* __pPopUp;
318 AddressBarMode __prevAddressBarMode;
319 Tizen::Ui::Controls::Button* __pReaderCloseBtn;
320 Tizen::Base::String* __pReaderData;
321 Tizen::Media::Image* __pSaveImage;
322 Tizen::Web::Controls::Web* __pWebReader;
323 Tizen::Web::Controls::Web* __pWebViewer;
324 WindowInfo* __pWindowInfo;
325 Tizen::Ui::Controls::ListView* __pMostVisitedListView;
327 Tizen::Graphics::Point __touchPoint1;
328 Tizen::Graphics::Point __touchPoint2;
329 Tizen::Graphics::Point __webControlPosition;
331 Tizen::Ui::Controls::ListContextItem* __pItemContext;
332 Tizen::Ui::Controls::ListContextItem* __pItemContextLandscape;
333 Tizen::Base::Collection::ArrayList* __pMostVisitedSites;
334 Tizen::Ui::Controls::EditField* __pFooterUrlField;
335 Tizen::Ui::Controls::Button* __pGoBackBtn;
336 Tizen::Ui::Controls::Button* __pGoForwardBtn;
337 Tizen::Ui::Controls::Button* __pRefreshBtn;
338 Tizen::Ui::Controls::Label* __pProgressbarLabel;
339 Tizen::Ui::Controls::Label* __pFooterLabel;
340 Tizen::Ui::Controls::Button* __pStopBtn;
341 Tizen::Ui::Controls::Button* __pClearBtn;
345 #endif //_INT_MAIN_FORM_H_