--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/ViewStack.cpp Tue May 04 12:39:35 2010 +0300
@@ -0,0 +1,331 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#include "Utilities.h"
+#include <QtCore/QUrl>
+#include "ViewStack.h"
+#include "ViewController.h"
+#include "ChromeWidget.h"
+#include "webpagecontroller.h"
+#include "HistoryFlowView.h"
+#include "BookmarksTreeView.h"
+#include "BookMarksHistoryView.h"
+#include "WindowFlowView.h"
+
+namespace GVA {
+
+static const QString KBookmarkHistoryViewName = "BookmarkHistoryView";
+static const QString KBookmarkTreeViewName = "BookmarkTreeView";
+static const QString KGoAnywhereViewName = "GoAnywhereView";
+static const QString KWebViewName = "WebView";
+static const QString KWindowViewName = "WindowView";
+static const QString KHistoryViewName = "HistoryView";
+static const QString KSettingsViewName = "SettingsView";
+
+
+ViewStack* ViewStack::getSingleton()
+{
+ static ViewStack* singleton = 0;
+ if(!singleton)
+ {
+ singleton = new ViewStack;
+ singleton->setObjectName("ViewStack");
+ } // if(! singleton)
+
+ assert(singleton);
+ return singleton;
+}
+
+void ViewStack::fromWindowView(const QString &to)
+{
+ emit (deActivateWindowView());
+
+ //m_chromeView->setViewofCurrentPage();
+
+ WRT::WindowFlowView* windowView = static_cast<WRT::WindowFlowView *>(m_viewController->view(KWindowViewName));
+
+ disconnect(windowView, SIGNAL(ok(WrtBrowserContainer*)), this, SLOT(goBackFromWindowView()));
+ disconnect(windowView, SIGNAL(addPageComplete()), this, SLOT(goBackFromWindowView()));
+ disconnect(windowView, SIGNAL(centerIndexChanged(int)), this, SIGNAL(pageChanged(int)));
+
+ m_viewController->showContent(to);
+}
+
+void ViewStack::fromSettingsView(const QString &to) // goto WebView
+{
+ emit (deActivateSettingsView());
+ emit (currentViewChanged());
+ m_viewController->showContent(to);
+}
+
+void ViewStack::fromGoAnywhereView(const QString &to)
+{
+ WRT::HistoryFlowView* historyView = static_cast<WRT::HistoryFlowView*>(m_viewController->view(KHistoryViewName));
+ WRT::BookmarksTreeView* bookmarkTreeView = static_cast<WRT::BookmarksTreeView *>(m_viewController->view(KBookmarkTreeViewName));
+ WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast<WRT::BookmarksHistoryView *>(m_viewController->view(KBookmarkHistoryViewName));
+
+ disconnect(historyView, SIGNAL(ok(int)), this, SLOT(loadHistoryItem(int)));
+ disconnect(bookmarkTreeView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromGoAnywhereView()));
+ disconnect(bookmarkHistoryView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromGoAnywhereView()));
+
+ m_viewController->showContent(to);
+
+ disconnect(bookmarkTreeView, SIGNAL(activated()), this, SIGNAL(activateBookmark()));
+ disconnect(bookmarkTreeView, SIGNAL(deactivated()), this, SIGNAL(deActivateBookmark()));
+ disconnect(historyView, SIGNAL(activated()), this, SIGNAL(activateHistory()));
+ disconnect(historyView, SIGNAL(deactivated()), this, SIGNAL(deActivateHistory()));
+ disconnect(bookmarkHistoryView, SIGNAL(activated()), this, SIGNAL(activateBookMarkHistory()));
+ disconnect(bookmarkHistoryView, SIGNAL(deactivated()), this, SIGNAL(deActivateBookMarkHistory()));
+}
+
+void ViewStack::fromWebView(const QString &to)
+{
+ m_viewController->showContent(to);
+ emit (deActivateWebView());
+}
+
+
+void ViewStack::fromBookmarkTreeView(const QString &to)
+{
+ //m_viewController->showContent(to);
+ //WRT::BookmarksTreeView* bookmarkTreeView = static_cast<WRT::BookmarksTreeView *>(m_viewController->view(KBookmarkTreeViewName));
+
+ //disconnect(bookmarkTreeView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromBookmarkView()));
+ m_viewController->viewChanged();
+
+ emit(deActivateBookmark());
+}
+
+
+void ViewStack::fromBookmarkHistoryView(const QString &to)
+{
+ //m_viewController->showContent(to);
+ //WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast<WRT::BookmarksHistoryView *>(m_viewController->view(KBookmarkHistoryViewName));
+
+ //disconnect(bookmarkHistoryView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromRecentUrlView()));
+ m_viewController->viewChanged();
+
+ emit(deActivateBookMarkHistory());
+}
+
+void ViewStack::toGoAnywhereView()
+{
+ emit (activateHistory()); // by default go to history view
+
+ /* Connect ALL of goAnywhere's signals in one shot */
+
+ WRT::HistoryFlowView* historyView = static_cast<WRT::HistoryFlowView*>(m_viewController->view(KHistoryViewName));
+ WRT::BookmarksTreeView* bookmarkTreeView = static_cast<WRT::BookmarksTreeView *>(m_viewController->view(KBookmarkTreeViewName));
+ WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast<WRT::BookmarksHistoryView *>(m_viewController->view(KBookmarkHistoryViewName));
+
+ safe_connect(historyView, SIGNAL(ok(int)), this, SLOT(loadHistoryItem(int)))
+ safe_connect(bookmarkTreeView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromGoAnywhereView()))
+ safe_connect(bookmarkHistoryView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromGoAnywhereView()));
+ safe_connect(bookmarkTreeView, SIGNAL(activated()), this, SIGNAL(activateBookmark()));
+ safe_connect(bookmarkTreeView, SIGNAL(deactivated()), this, SIGNAL(deActivateBookmark()));
+ safe_connect(historyView, SIGNAL(activated()), this, SIGNAL(activateHistory()));
+ safe_connect(historyView, SIGNAL(deactivated()), this, SIGNAL(deActivateHistory()));
+ safe_connect(bookmarkHistoryView, SIGNAL(activated()), this, SIGNAL(activateBookMarkHistory()));
+ safe_connect(bookmarkHistoryView, SIGNAL(deactivated()), this, SIGNAL(deActivateBookMarkHistory()));
+}
+
+void ViewStack::initWindowView()
+{
+ /*
+ int width = m_chromeView->size().width();
+ int height = m_chromeView->size().height();
+ // FIXME: the snippet id is hardcode
+ ChromeSnippet* visibleSnippet = m_chromeView->getChromeWidget()->getSnippet("StatusBarChromeId");
+ if (visibleSnippet)
+ height -= (int) (visibleSnippet->rect().height());
+
+ visibleSnippet = m_chromeView->getChromeWidget()->getSnippet("WebViewToolbarId");
+ if (visibleSnippet)
+ height -= (int) (visibleSnippet->rect().height());
+
+ if (m_chromeView->displayMode() == ChromeView::DisplayModePortrait) {
+ visibleSnippet = m_chromeView->getChromeWidget()->getSnippet("WindowCountBarId");
+ if (visibleSnippet)
+ height -= (int) (visibleSnippet->rect().height());
+ }
+ QSize windowViewSize(100,100);
+ WRT::WindowFlowView* windowView = static_cast<WRT::WindowFlowView *>(m_viewController->view(KWindowViewName));
+ windowView->setSize(windowViewSize);
+*/
+}
+
+
+void ViewStack::toWindowView()
+{
+ emit(activateWindowView());
+
+ WRT::WindowFlowView* windowView = static_cast<WRT::WindowFlowView *>(m_viewController->view(KWindowViewName));
+
+ safe_connect(windowView, SIGNAL(ok(WrtBrowserContainer*)), this, SLOT(goBackFromWindowView()));
+ safe_connect(windowView, SIGNAL(addPageComplete()), this, SLOT(goBackFromWindowView()));
+ safe_connect(windowView, SIGNAL(centerIndexChanged(int)), this, SIGNAL(pageChanged(int)));
+}
+
+void ViewStack::initSettingsView()
+{
+}
+
+void ViewStack::toSettingsView()
+{
+ emit(activateSettingsView());
+ emit(currentViewChanged());
+}
+
+void ViewStack::toWebView()
+{
+ emit (activateWebView());
+}
+
+void ViewStack::toBookmarkHistoryView()
+{
+ emit(activateBookMarkHistory());
+
+ m_viewController->viewChanged();
+ //WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast<WRT::BookmarksHistoryView *>(m_viewController->view(KBookmarkHistoryViewName));
+
+ //safe_connect(bookmarkHistoryView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromRecentUrlView()));
+}
+
+void ViewStack::toBookmarkView()
+{
+ emit(activateBookmark());
+
+ m_viewController->viewChanged();
+
+ //WRT::BookmarksTreeView* bookmarkTreeView = static_cast<WRT::BookmarksTreeView *>(m_viewController->view(KBookmarkTreeViewName));
+
+ //safe_connect(bookmarkTreeView, SIGNAL(openUrl(const QUrl &)), this, SLOT(goBackFromBookmarkView()));
+}
+
+
+void ViewStack::switchView(const QString &to, const QString &from) {
+ qDebug() << "ViewStack::switchView: " << to << " " << from;
+
+ if (to == from) {
+ return;
+ }
+ if (!m_viewController) {
+ return;
+ }
+
+ if (from == KWindowViewName) {
+ fromWindowView(to);
+ }
+ else if (from == KGoAnywhereViewName) {
+ fromGoAnywhereView(to);
+ }
+ else if (from == KWebViewName) {
+ if (to == KWindowViewName)
+ initWindowView(); // to fix the size issue of windows view
+ fromWebView(to);
+ }
+ else if (from == KBookmarkHistoryViewName) {
+ fromBookmarkHistoryView(to);
+ }
+ else if (from == KBookmarkTreeViewName) {
+ fromBookmarkTreeView(to);
+ }
+ else if (from == KSettingsViewName) {
+ fromSettingsView(to);
+ }
+
+ if (to == KWindowViewName) {
+ toWindowView();
+ }
+ else if (to == KGoAnywhereViewName) {
+ toGoAnywhereView();
+ }
+ else if (to == KWebViewName) {
+ toWebView();
+ }
+ else if (to == KBookmarkHistoryViewName) {
+ toBookmarkHistoryView();
+ }
+ else if (to == KBookmarkTreeViewName) {
+ toBookmarkView();
+ }
+ else if (to == KSettingsViewName) {
+ toSettingsView();
+ }
+}
+
+
+void ViewStack::loadHistoryItem(int item) {
+
+ if (!m_viewController) {
+ return;
+ }
+ WRT::HistoryFlowView* historyView = static_cast<WRT::HistoryFlowView*>(m_viewController->view(KHistoryViewName));
+ //var myIndex = window.viewManager.historyView.currentHistIndex;
+ int myIndex = historyView->currentIndex();
+
+ if (myIndex != item ) {
+ //window.chrome.alert("loadFromHistory");
+ WebPageController::getSingleton()->currentSetFromHistory(item);
+ safe_connect(m_viewController,SIGNAL(loadProgess(const int)), this, SLOT(showContentView(const int)));
+ }
+ else {
+ //window.chrome.alert("Just go back");
+ goBackFromGoAnywhereView();
+ }
+}
+
+void ViewStack::goBackFromGoAnywhereView() {
+ switchView(KWebViewName, KGoAnywhereViewName);
+}
+
+
+void ViewStack::goBackFromWindowView() {
+ switchView(KWebViewName, KWindowViewName);
+}
+
+void ViewStack::goBackFromRecentUrlView() {
+ switchView(KWebViewName, KBookmarkHistoryViewName);
+}
+
+void ViewStack::goBackFromBookmarkView() {
+ switchView(KWebViewName, KBookmarkTreeViewName);
+}
+
+void ViewStack::goBackFromSettingsView() {
+ switchView(KWebViewName, KSettingsViewName);
+}
+
+void ViewStack::showContentView(int progress) {
+
+ if (!m_viewController) {
+ return;
+ }
+
+ if (progress >= 30 && m_viewController->currentView()->type() == KGoAnywhereViewName) {
+ //goBackToWebView();
+ goBackFromGoAnywhereView();
+ disconnect(m_viewController,SIGNAL(loadProgess(const int)), this, SLOT(showContentView(const int)));
+ }
+ else if ( m_viewController->currentView()->type() == KWebViewName ) {
+ disconnect(m_viewController,SIGNAL(loadProgess(const int)), this, SLOT(showContentView(const int)));
+ }
+}
+
+} // end of namespace
+