diff -r 000000000000 -r 1450b09d0cfd ginebra2/ViewStack.cpp --- /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 +#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(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(m_viewController->view(KHistoryViewName)); + WRT::BookmarksTreeView* bookmarkTreeView = static_cast(m_viewController->view(KBookmarkTreeViewName)); + WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast(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(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(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(m_viewController->view(KHistoryViewName)); + WRT::BookmarksTreeView* bookmarkTreeView = static_cast(m_viewController->view(KBookmarkTreeViewName)); + WRT::BookmarksHistoryView* bookmarkHistoryView = static_cast(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(m_viewController->view(KWindowViewName)); + windowView->setSize(windowViewSize); +*/ +} + + +void ViewStack::toWindowView() +{ + emit(activateWindowView()); + + WRT::WindowFlowView* windowView = static_cast(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(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(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(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 +