ginebra2/ViewStack.cpp
changeset 0 1450b09d0cfd
child 3 0954f5dd2cd0
child 5 0f2326c2a325
equal deleted inserted replaced
-1:000000000000 0:1450b09d0cfd
       
     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