Remove unused classes.
[profile/tv/apps/web/browser.git] / services / SimpleUI / SimpleUI.h
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.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://www.apache.org/licenses/LICENSE-2.0
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  * SimpleUI.h
19  *
20  *  Created on: Mar 18, 2014
21  *      Author: k.szalilow
22  */
23
24 #ifndef SIMPLEUI_H_
25 #define SIMPLEUI_H_
26
27 #include <Evas.h>
28
29 #include "AbstractMainWindow.h"
30 #include "AbstractService.h"
31 #include "AbstractFavoriteService.h"
32 #include "ServiceFactory.h"
33 #include "service_macros.h"
34
35 // components
36 #include "AbstractWebEngine.h"
37 #include "MoreMenuUI.h"
38 #include "HistoryUI.h"
39 #include "SettingsUI.h"
40 #include "MainUI.h"
41 #include "TabUI.h"
42 #include "ButtonBar.h"
43 #include "HistoryService.h"
44 #include "BookmarkManagerUI.h"
45 #include "SimpleURI.h"
46 #include "PlatformInputManager.h"
47 #include "SessionStorage.h"
48 #include "SqlStorage.h"
49
50 // other
51 #include "Action.h"
52 #include "SimplePopup.h"
53 #include "WebConfirmation.h"
54 #include "BookmarksManager.h"
55 #include "Config.h"
56
57 namespace tizen_browser{
58 namespace base_ui{
59
60 template <>
61 void AbstractMainWindow<Evas_Object>::setMainWindow(Evas_Object * rawPtr)
62 {
63     m_window = std::shared_ptr<Evas_Object>(rawPtr, evas_object_del);
64 }
65
66 class BROWSER_EXPORT SimpleUI : public AbstractMainWindow<Evas_Object>
67 {
68 public:
69     SimpleUI(/*Evas_Object *window*/);
70     virtual ~SimpleUI();
71     virtual int exec(const std::string& url);
72     virtual std::string getName();
73
74     void destroyUI();
75 private:
76     // setup functions
77     void loadThemes();
78     void createActions();
79     void connectActions();
80     void loadUIServices();
81     void connectUISignals();
82     void loadModelServices();
83     void initModelServices();
84     void connectModelSignals();
85     void restoreLastSession();
86     Evas_Object* createWebLayout(Evas_Object* parent);
87     Evas_Object* createErrorLayout(Evas_Object* parent);
88
89
90     void backEnable(bool enable);
91     void forwardEnable(bool enable);
92     void stopEnable(bool enable);
93     void reloadEnable(bool enable);
94     void addBookmarkEnable(bool enable);
95     void removeBookmarkEnable(bool enable);
96     void zoomEnable(bool enable);
97
98     void settingsButtonEnable(bool enable);
99
100     void loadFinished();
101     void progressChanged(double progress);
102     void loadStarted();
103
104     void loadError();
105     void setErrorButtons();
106     bool isErrorPageActive();
107
108     void bookmarkAdded();
109     void bookmarkDeleted();
110
111     bool isHomePageActive();
112     void switchViewToHomePage();
113     void updateBrowserView();
114     void updateWebView();
115     void updateURIBarView();
116     void updateView();
117
118     void openNewTab(const std::string &uri, bool desktopMode = true);
119     void switchToTab(const tizen_browser::basic_webengine::TabId& tabId);
120     void newTabClicked(const std::string &);
121     void tabClicked(const tizen_browser::basic_webengine::TabId& tabId);
122     void closeTabsClicked(const tizen_browser::basic_webengine::TabId& tabId);
123     void tabCreated();
124     void tabClosed(const tizen_browser::basic_webengine::TabId& id);
125
126     void bookmarkCheck();
127     std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarks(int folder_id = -1);
128     std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > getBookmarkFolders(int folder_id);
129     std::shared_ptr<services::HistoryItemVector> getHistory();
130     std::shared_ptr<services::HistoryItemVector> getMostVisitedItems();
131
132     //UI signal handling functions
133     void onBookmarkAdded(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
134
135     void onBookmarkClicked(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
136     void onBookmarkDeleteClicked(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem);
137     void onBookmarkRemoved(const std::string& uri);
138
139     void onHistoryAdded(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem);
140     void onHistoryRemoved(const std::string& uri);
141     void onOpenURLInNewTab(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, bool desktopMode);
142     void onMostVisitedTileClicked(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, int itemsNumber);
143     void onClearHistoryClicked(const std::string&);
144
145     void onMostVisitedClicked(const std::string&);
146     void onBookmarkButtonClicked(const std::string&);
147     void onBookmarkManagerButtonClicked(const std::string&);
148
149     void handleConfirmationRequest(basic_webengine::WebConfirmationPtr webConfirmation);
150     void authPopupButtonClicked(PopupButtons button, std::shared_ptr<PopupData> popupData);
151
152     void onActionTriggered(const Action& action);
153
154
155     void setwvIMEStatus(bool status);
156
157     sharedAction m_back;
158     sharedAction m_forward;
159     sharedAction m_stopLoading;
160     sharedAction m_reload;
161     sharedAction m_bookmark;
162     sharedAction m_unbookmark;
163     sharedAction m_tab;
164     sharedAction m_share;
165     sharedAction m_zoom_in;
166     sharedAction m_showMoreMenu;
167     sharedAction m_showBookmarkManagerUI;
168     sharedAction m_settingPointerMode;
169     sharedAction m_settingPrivateBrowsing;
170     sharedAction m_settingDeleteHistory;
171     sharedAction m_settingDeleteData;
172     sharedAction m_settingDeleteFavorite;
173     sharedAction m_mostvisited;
174     sharedAction m_bookmarksvisited;
175     sharedAction m_bookmarks_manager_Add_NewFolder;
176     sharedAction m_bookmarks_manager_BookmarkBar;
177     sharedAction m_bookmarks_manager_Folder1;
178     sharedAction m_bookmarks_manager_Folder2;
179     sharedAction m_bookmarks_manager_Folder3;
180
181     /**
182      * \brief filters URL before it is passed to WebEngine.
183      *
184      * This function should be connected with m_simpleURI->uriChanged.
185      * it is a good place to check for special urls (like "about:home"),
186      * filter forbidden addresses and to check set favorite icon.
187      */
188     void filterURL(const std::string& url);
189
190     /**
191      * Checks if correct tab is visible to user, and if not, it update browser view
192      * @param id of tab that should be visible to user
193      */
194     void checkTabId(const tizen_browser::basic_webengine::TabId& id);
195
196     /**
197      * \brief check if url comming back from WebEngine should be passed to URI.
198      *
199      * For filtered addresses we need to hide real URI so the user would be confused.
200      * and this is a back function that checks if address emited from browser should be changed.
201      */
202     void webEngineURLChanged(const std::string url);
203     void onmostHistoryvisitedClicked();
204     void onBookmarkvisitedClicked();
205      /**
206      * @brief Adds current page to bookmarks.
207      *
208      */
209     void addToBookmarks(int);
210     /**
211      * @brief Remove current page from bookmarks
212      *
213      * @param  ...
214      * @return void
215      */
216     void deleteBookmark(void);
217
218     void showHistory();
219     void hideHistory();
220     void addBookmarkFolders();
221
222     void newFolderBookmarkManager(const char* title, int by_user);
223     void newFolderMoreMenu(const char* title, int by_user);
224     void showTabUI();
225     void closeTabUI(const std::string& str);
226     void showMoreMenu();
227     void closeMoreMenu(const std::string& str);
228     void switchToMobileMode();
229     void switchToDesktopMode();
230     void showHistoryUI(const std::string& str);
231     void closeHistoryUI(const std::string&);
232     void showMainUI();
233     void hideMainUI();
234     void showURIBar();
235     void hideURIBar();
236     void hideWebView();
237     void hideSettingsMenu();
238     void showSettingsUI(const std::string&);
239     void closeSettingsUI(const std::string&);
240
241     void showProgressBar();
242     void hideProgressBar();
243
244     void closeBookmarkManagerMenu(const std::string& str);
245     void updateBookmarkManagerGenGrid(int folder_id);
246     void showBookmarkManagerMenu();
247
248     void showPopup(Evas_Object *content, char* btn1_text, char* btn2_text);
249
250     void closeTab();
251     void closeTab(const tizen_browser::basic_webengine::TabId& id);
252
253     void settingsPointerModeSwitch(bool newState);
254     void settingsPrivateModeSwitch(bool newState);
255     void settingsDeleteData();
256     void settingsDeleteFavorite();
257     void settingsDeleteSelectedData(const std::string& str);
258     void settingsResetMostVisited(const std::string& str);
259     void settingsResetBrowser(const std::string& str);
260     void onDeleteSelectedDataButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
261     void onDeleteMostVisitedButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
262     void onResetBrowserButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
263     void onDeleteDataButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
264     void onDeleteFavoriteButton(PopupButtons button, std::shared_ptr<PopupData> popupData);
265     void tabLimitPopupButtonClicked(PopupButtons button, std::shared_ptr< PopupData > /*popupData*/);
266     void openLinkFromPopup(const std::string &);
267     void disableHistoryButton(bool flag);
268     int tabsCount();
269
270     void onNetworkError();
271     void onNetworkConnected();
272     void onNetErrorButtonPressed(PopupButtons, std::shared_ptr<PopupData>);
273
274     void onReturnPressed(MenuButton *m);
275     void onBackPressed();
276
277     boost::signals2::signal<void ()> hidePopup;
278
279     std::string edjePath(const std::string &);
280
281     Evas_Object *m_mainLayout;
282     Evas_Object *m_progressBar;
283     Evas_Object *m_popup;
284     Evas_Object *m_entry;
285     Evas_Object *m_errorLayout;
286
287     std::shared_ptr<basic_webengine::AbstractWebEngine<Evas_Object>>  m_webEngine;
288     std::shared_ptr<tizen_browser::base_ui::SimpleURI> m_simpleURI;
289     std::shared_ptr<ButtonBar> leftButtonBar;
290     std::shared_ptr<ButtonBar> rightButtonBar;
291     std::shared_ptr<tizen_browser::interfaces::AbstractFavoriteService> m_favoriteService;
292     std::shared_ptr<tizen_browser::services::HistoryService> m_historyService;
293     std::shared_ptr<tizen_browser::base_ui::MoreMenuUI> m_moreMenuUI;
294     std::shared_ptr<tizen_browser::base_ui::BookmarkManagerUI> m_bookmarkManagerUI;
295     std::shared_ptr<tizen_browser::base_ui::MainUI> m_mainUI;
296     std::shared_ptr<tizen_browser::base_ui::HistoryUI> m_historyUI;
297     std::shared_ptr<tizen_browser::base_ui::SettingsUI> m_settingsUI;
298     std::shared_ptr<tizen_browser::base_ui::TabUI> m_tabUI;
299     std::shared_ptr<tizen_browser::services::PlatformInputManager> m_platformInputManager;
300     std::shared_ptr<tizen_browser::services::SessionStorage> m_sessionService;
301     tizen_browser::Session::Session m_currentSession;
302     std::shared_ptr<BookmarksManager> m_bookmarks_manager;
303     bool m_initialised;
304     bool m_isHomePageActive;
305     int m_tabLimit;
306     int m_favoritesLimit;
307     bool m_wvIMEStatus;
308     int m_curr_folder_id;
309     // This context object is used to implicitly init internal ewk data used by opengl to create the first and
310     // consecutive webviews in the application, otherwise we would encounter a crash after creating
311     // the first web view
312     Ewk_Context *m_ewkContext;
313
314     std::vector<std::shared_ptr<tizen_browser::services::HistoryItem>> items_vector;
315     SimplePopup* m_networkErrorPopup;
316
317     void searchWebPage(std::string &text, int flags);
318     static void favicon_clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
319
320 };
321
322 }
323 }
324
325 #endif /* SIMPLEUI_H_ */