|
1 /* |
|
2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 #include "Utilities.h" |
|
20 #include <QtCore/QUrl> |
|
21 #include "ViewStack.h" |
|
22 #include "ViewController.h" |
|
23 #include "ChromeWidget.h" |
|
24 #include "webpagecontroller.h" |
|
25 #include "HistoryFlowView.h" |
|
26 #include "BookmarksTreeView.h" |
|
27 #include "BookMarksHistoryView.h" |
|
28 #include "WindowFlowView.h" |
|
29 |
|
30 namespace GVA { |
|
31 |
|
32 static const QString KBookmarkHistoryViewName = "BookmarkHistoryView"; |
|
33 static const QString KBookmarkTreeViewName = "BookmarkTreeView"; |
|
34 static const QString KGoAnywhereViewName = "GoAnywhereView"; |
|
35 static const QString KWebViewName = "WebView"; |
|
36 static const QString KWindowViewName = "WindowView"; |
|
37 static const QString KHistoryViewName = "HistoryView"; |
|
38 static const QString KSettingsViewName = "SettingsView"; |
|
39 |
|
40 |
|
41 ViewStack* ViewStack::getSingleton() |
|
42 { |
|
43 static ViewStack* singleton = 0; |
|
44 if(!singleton) |
|
45 { |
|
46 singleton = new ViewStack; |
|
47 singleton->setObjectName("ViewStack"); |
|
48 } // if(! singleton) |
|
49 |
|
50 assert(singleton); |
|
51 return singleton; |
|
52 } |
|
53 |
|
54 void ViewStack::fromWindowView(const QString &to) |
|
55 { |
|
56 emit (deActivateWindowView()); |
|
57 |
|
58 //m_chromeView->setViewofCurrentPage(); |
|
59 |
|
60 WRT::WindowFlowView* windowView = static_cast<WRT::WindowFlowView *>(m_viewController->view(KWindowViewName)); |
|
61 |
|
62 disconnect(windowView, SIGNAL(ok(WrtBrowserContainer*)), this, SLOT(goBackFromWindowView())); |
|
63 disconnect(windowView, SIGNAL(addPageComplete()), this, SLOT(goBackFromWindowView())); |
|
64 disconnect(windowView, SIGNAL(centerIndexChanged(int)), this, SIGNAL(pageChanged(int))); |
|
65 |
|
66 m_viewController->showContent(to); |
|
67 } |
|
68 |
|
69 void ViewStack::fromSettingsView(const QString &to) // goto WebView |
|
70 { |
|
71 emit (deActivateSettingsView()); |
|
72 emit (currentViewChanged()); |
|
73 m_viewController->showContent(to); |
|
74 } |
|
75 |
|
76 void ViewStack::fromGoAnywhereView(const QString &to) |
|
77 { |
|
78 WRT::HistoryFlowView* historyView = static_cast<WRT::HistoryFlowView*>(m_viewController->view(KHistoryViewName)); |
|
79 WRT::BookmarksTreeView* bookmarkTreeView = static_cast<WRT::BookmarksTreeView *>(m_viewController->view(KBookmarkTreeViewName)); |
|
80 WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast<WRT::BookmarksHistoryView *>(m_viewController->view(KBookmarkHistoryViewName)); |
|
81 |
|
82 disconnect(historyView, SIGNAL(ok(int)), this, SLOT(loadHistoryItem(int))); |
|
83 disconnect(bookmarkTreeView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromGoAnywhereView())); |
|
84 disconnect(bookmarkHistoryView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromGoAnywhereView())); |
|
85 |
|
86 m_viewController->showContent(to); |
|
87 |
|
88 disconnect(bookmarkTreeView, SIGNAL(activated()), this, SIGNAL(activateBookmark())); |
|
89 disconnect(bookmarkTreeView, SIGNAL(deactivated()), this, SIGNAL(deActivateBookmark())); |
|
90 disconnect(historyView, SIGNAL(activated()), this, SIGNAL(activateHistory())); |
|
91 disconnect(historyView, SIGNAL(deactivated()), this, SIGNAL(deActivateHistory())); |
|
92 disconnect(bookmarkHistoryView, SIGNAL(activated()), this, SIGNAL(activateBookMarkHistory())); |
|
93 disconnect(bookmarkHistoryView, SIGNAL(deactivated()), this, SIGNAL(deActivateBookMarkHistory())); |
|
94 } |
|
95 |
|
96 void ViewStack::fromWebView(const QString &to) |
|
97 { |
|
98 m_viewController->showContent(to); |
|
99 emit (deActivateWebView()); |
|
100 } |
|
101 |
|
102 |
|
103 void ViewStack::fromBookmarkTreeView(const QString &to) |
|
104 { |
|
105 //m_viewController->showContent(to); |
|
106 //WRT::BookmarksTreeView* bookmarkTreeView = static_cast<WRT::BookmarksTreeView *>(m_viewController->view(KBookmarkTreeViewName)); |
|
107 |
|
108 //disconnect(bookmarkTreeView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromBookmarkView())); |
|
109 m_viewController->viewChanged(); |
|
110 |
|
111 emit(deActivateBookmark()); |
|
112 } |
|
113 |
|
114 |
|
115 void ViewStack::fromBookmarkHistoryView(const QString &to) |
|
116 { |
|
117 //m_viewController->showContent(to); |
|
118 //WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast<WRT::BookmarksHistoryView *>(m_viewController->view(KBookmarkHistoryViewName)); |
|
119 |
|
120 //disconnect(bookmarkHistoryView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromRecentUrlView())); |
|
121 m_viewController->viewChanged(); |
|
122 |
|
123 emit(deActivateBookMarkHistory()); |
|
124 } |
|
125 |
|
126 void ViewStack::toGoAnywhereView() |
|
127 { |
|
128 emit (activateHistory()); // by default go to history view |
|
129 |
|
130 /* Connect ALL of goAnywhere's signals in one shot */ |
|
131 |
|
132 WRT::HistoryFlowView* historyView = static_cast<WRT::HistoryFlowView*>(m_viewController->view(KHistoryViewName)); |
|
133 WRT::BookmarksTreeView* bookmarkTreeView = static_cast<WRT::BookmarksTreeView *>(m_viewController->view(KBookmarkTreeViewName)); |
|
134 WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast<WRT::BookmarksHistoryView *>(m_viewController->view(KBookmarkHistoryViewName)); |
|
135 |
|
136 safe_connect(historyView, SIGNAL(ok(int)), this, SLOT(loadHistoryItem(int))) |
|
137 safe_connect(bookmarkTreeView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromGoAnywhereView())) |
|
138 safe_connect(bookmarkHistoryView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromGoAnywhereView())); |
|
139 safe_connect(bookmarkTreeView, SIGNAL(activated()), this, SIGNAL(activateBookmark())); |
|
140 safe_connect(bookmarkTreeView, SIGNAL(deactivated()), this, SIGNAL(deActivateBookmark())); |
|
141 safe_connect(historyView, SIGNAL(activated()), this, SIGNAL(activateHistory())); |
|
142 safe_connect(historyView, SIGNAL(deactivated()), this, SIGNAL(deActivateHistory())); |
|
143 safe_connect(bookmarkHistoryView, SIGNAL(activated()), this, SIGNAL(activateBookMarkHistory())); |
|
144 safe_connect(bookmarkHistoryView, SIGNAL(deactivated()), this, SIGNAL(deActivateBookMarkHistory())); |
|
145 } |
|
146 |
|
147 void ViewStack::initWindowView() |
|
148 { |
|
149 /* |
|
150 int width = m_chromeView->size().width(); |
|
151 int height = m_chromeView->size().height(); |
|
152 // FIXME: the snippet id is hardcode |
|
153 ChromeSnippet* visibleSnippet = m_chromeView->getChromeWidget()->getSnippet("StatusBarChromeId"); |
|
154 if (visibleSnippet) |
|
155 height -= (int) (visibleSnippet->rect().height()); |
|
156 |
|
157 visibleSnippet = m_chromeView->getChromeWidget()->getSnippet("WebViewToolbarId"); |
|
158 if (visibleSnippet) |
|
159 height -= (int) (visibleSnippet->rect().height()); |
|
160 |
|
161 if (m_chromeView->displayMode() == ChromeView::DisplayModePortrait) { |
|
162 visibleSnippet = m_chromeView->getChromeWidget()->getSnippet("WindowCountBarId"); |
|
163 if (visibleSnippet) |
|
164 height -= (int) (visibleSnippet->rect().height()); |
|
165 } |
|
166 QSize windowViewSize(100,100); |
|
167 WRT::WindowFlowView* windowView = static_cast<WRT::WindowFlowView *>(m_viewController->view(KWindowViewName)); |
|
168 windowView->setSize(windowViewSize); |
|
169 */ |
|
170 } |
|
171 |
|
172 |
|
173 void ViewStack::toWindowView() |
|
174 { |
|
175 emit(activateWindowView()); |
|
176 |
|
177 WRT::WindowFlowView* windowView = static_cast<WRT::WindowFlowView *>(m_viewController->view(KWindowViewName)); |
|
178 |
|
179 safe_connect(windowView, SIGNAL(ok(WrtBrowserContainer*)), this, SLOT(goBackFromWindowView())); |
|
180 safe_connect(windowView, SIGNAL(addPageComplete()), this, SLOT(goBackFromWindowView())); |
|
181 safe_connect(windowView, SIGNAL(centerIndexChanged(int)), this, SIGNAL(pageChanged(int))); |
|
182 } |
|
183 |
|
184 void ViewStack::initSettingsView() |
|
185 { |
|
186 } |
|
187 |
|
188 void ViewStack::toSettingsView() |
|
189 { |
|
190 emit(activateSettingsView()); |
|
191 emit(currentViewChanged()); |
|
192 } |
|
193 |
|
194 void ViewStack::toWebView() |
|
195 { |
|
196 emit (activateWebView()); |
|
197 } |
|
198 |
|
199 void ViewStack::toBookmarkHistoryView() |
|
200 { |
|
201 emit(activateBookMarkHistory()); |
|
202 |
|
203 m_viewController->viewChanged(); |
|
204 //WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast<WRT::BookmarksHistoryView *>(m_viewController->view(KBookmarkHistoryViewName)); |
|
205 |
|
206 //safe_connect(bookmarkHistoryView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromRecentUrlView())); |
|
207 } |
|
208 |
|
209 void ViewStack::toBookmarkView() |
|
210 { |
|
211 emit(activateBookmark()); |
|
212 |
|
213 m_viewController->viewChanged(); |
|
214 |
|
215 //WRT::BookmarksTreeView* bookmarkTreeView = static_cast<WRT::BookmarksTreeView *>(m_viewController->view(KBookmarkTreeViewName)); |
|
216 |
|
217 //safe_connect(bookmarkTreeView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromBookmarkView())); |
|
218 } |
|
219 |
|
220 |
|
221 void ViewStack::switchView(const QString &to, const QString &from) { |
|
222 qDebug() << "ViewStack::switchView: " << to << " " << from; |
|
223 |
|
224 if (to == from) { |
|
225 return; |
|
226 } |
|
227 if (!m_viewController) { |
|
228 return; |
|
229 } |
|
230 |
|
231 if (from == KWindowViewName) { |
|
232 fromWindowView(to); |
|
233 } |
|
234 else if (from == KGoAnywhereViewName) { |
|
235 fromGoAnywhereView(to); |
|
236 } |
|
237 else if (from == KWebViewName) { |
|
238 if (to == KWindowViewName) |
|
239 initWindowView(); // to fix the size issue of windows view |
|
240 fromWebView(to); |
|
241 } |
|
242 else if (from == KBookmarkHistoryViewName) { |
|
243 fromBookmarkHistoryView(to); |
|
244 } |
|
245 else if (from == KBookmarkTreeViewName) { |
|
246 fromBookmarkTreeView(to); |
|
247 } |
|
248 else if (from == KSettingsViewName) { |
|
249 fromSettingsView(to); |
|
250 } |
|
251 |
|
252 if (to == KWindowViewName) { |
|
253 toWindowView(); |
|
254 } |
|
255 else if (to == KGoAnywhereViewName) { |
|
256 toGoAnywhereView(); |
|
257 } |
|
258 else if (to == KWebViewName) { |
|
259 toWebView(); |
|
260 } |
|
261 else if (to == KBookmarkHistoryViewName) { |
|
262 toBookmarkHistoryView(); |
|
263 } |
|
264 else if (to == KBookmarkTreeViewName) { |
|
265 toBookmarkView(); |
|
266 } |
|
267 else if (to == KSettingsViewName) { |
|
268 toSettingsView(); |
|
269 } |
|
270 } |
|
271 |
|
272 |
|
273 void ViewStack::loadHistoryItem(int item) { |
|
274 |
|
275 if (!m_viewController) { |
|
276 return; |
|
277 } |
|
278 WRT::HistoryFlowView* historyView = static_cast<WRT::HistoryFlowView*>(m_viewController->view(KHistoryViewName)); |
|
279 //var myIndex = window.viewManager.historyView.currentHistIndex; |
|
280 int myIndex = historyView->currentIndex(); |
|
281 |
|
282 if (myIndex != item ) { |
|
283 //window.chrome.alert("loadFromHistory"); |
|
284 WebPageController::getSingleton()->currentSetFromHistory(item); |
|
285 safe_connect(m_viewController,SIGNAL(loadProgess(const int)), this, SLOT(showContentView(const int))); |
|
286 } |
|
287 else { |
|
288 //window.chrome.alert("Just go back"); |
|
289 goBackFromGoAnywhereView(); |
|
290 } |
|
291 } |
|
292 |
|
293 void ViewStack::goBackFromGoAnywhereView() { |
|
294 switchView(KWebViewName, KGoAnywhereViewName); |
|
295 } |
|
296 |
|
297 |
|
298 void ViewStack::goBackFromWindowView() { |
|
299 switchView(KWebViewName, KWindowViewName); |
|
300 } |
|
301 |
|
302 void ViewStack::goBackFromRecentUrlView() { |
|
303 switchView(KWebViewName, KBookmarkHistoryViewName); |
|
304 } |
|
305 |
|
306 void ViewStack::goBackFromBookmarkView() { |
|
307 switchView(KWebViewName, KBookmarkTreeViewName); |
|
308 } |
|
309 |
|
310 void ViewStack::goBackFromSettingsView() { |
|
311 switchView(KWebViewName, KSettingsViewName); |
|
312 } |
|
313 |
|
314 void ViewStack::showContentView(int progress) { |
|
315 |
|
316 if (!m_viewController) { |
|
317 return; |
|
318 } |
|
319 |
|
320 if (progress >= 30 && m_viewController->currentView()->type() == KGoAnywhereViewName) { |
|
321 //goBackToWebView(); |
|
322 goBackFromGoAnywhereView(); |
|
323 disconnect(m_viewController,SIGNAL(loadProgess(const int)), this, SLOT(showContentView(const int))); |
|
324 } |
|
325 else if ( m_viewController->currentView()->type() == KWebViewName ) { |
|
326 disconnect(m_viewController,SIGNAL(loadProgess(const int)), this, SLOT(showContentView(const int))); |
|
327 } |
|
328 } |
|
329 |
|
330 } // end of namespace |
|
331 |