diff -r b852595f5cbe -r 63be7eb3fc78 wlanutilities/wlanlogin/wlanloginapp/src/wlanloginview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wlanutilities/wlanlogin/wlanloginapp/src/wlanloginview.cpp Tue Aug 31 16:18:40 2010 +0300 @@ -0,0 +1,407 @@ +/* +* 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: +* Main view for the WLAN Login application +* +*/ + + +#include +#include + +// System includes +#include +#include +#include +#include +#include +#include +#include + +// User includes +#include "wlanlogindocumentloader.h" +#include "wlanloginview.h" +#include "wlanloginwebview.h" +#include "wlanloginwebpage.h" +#include "wlanloginmainwindow.h" +#include "wlanloginengine.h" +#include "ictsqtwrapper.h" + +#include "OstTraceDefinitions.h" +#ifdef OST_TRACE_COMPILER_IN_USE +#include "wlanloginviewTraces.h" +#endif + +/*! + \class WlanLoginView + \brief Main view for the WLAN Login application +*/ + +// External function prototypes + +// Local constants +//! WLAN Login view docml file +static const QString wlanLoginViewDocml(":/docml/wlanloginview.docml"); + +// ======== LOCAL FUNCTIONS ======== + +// ======== MEMBER FUNCTIONS ======== + +/*! + Constructor + */ +WlanLoginView::WlanLoginView(WlanLoginMainWindow* mainWindow): + mMainWindow(mainWindow), + mDocLoader(new WlanLoginDocumentLoader(mainWindow)), + mProgressBar(NULL), + mScrollAreaContent(NULL), + mWebView(NULL), + mNextAction(NULL), + mFirstIctsOkResult(true) +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_WLANLOGINVIEW_ENTRY); + + loadDocml(); + + setTitleBarVisible(false); + setStatusBarVisible(false); + + // Set white background to content widget + QPixmap pixmap(10,10); + pixmap.fill(Qt::white); + QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(pixmap); + mScrollAreaContent->setBackgroundItem(pixmapItem); + + mWebView->page()->setNetworkAccessManager(mMainWindow->application()->engine()->networkAccessManager()); + + bool connectStatus = connect( + mWebView, + SIGNAL(loadStarted()), + this, + SLOT(handleLoadStarted())); + Q_ASSERT(connectStatus == true); + + connectStatus = connect( + mWebView, + SIGNAL(loadProgress(int)), + this, + SLOT(handleLoadProgress(int))); + Q_ASSERT(connectStatus == true); + + connectStatus = connect( + mWebView, + SIGNAL(loadFinished(bool)), + this, + SLOT(handleLoadFinished(bool))); + Q_ASSERT(connectStatus == true); + + connectStatus = connect( + mWebView, + SIGNAL(urlChanged(const QUrl&)), + this, + SLOT(handleUrlChanged(const QUrl&))); + Q_ASSERT(connectStatus == true); + + connectStatus = connect( + mWebView->page(), + SIGNAL(formSubmitted()), + this, + SLOT(handleFormSubmitted())); + Q_ASSERT(connectStatus == true); + + connectStatus = connect( + mCancelAction, + SIGNAL(triggered()), + this, + SLOT(handleCancelAction())); + Q_ASSERT(connectStatus == true); + + connectStatus = connect( + mNextAction, + SIGNAL(triggered()), + this, + SLOT(handleNextAction())); + Q_ASSERT(connectStatus == true); + + show(); + + OstTraceFunctionExit0(WLANLOGINVIEW_WLANLOGINVIEW_EXIT); +} + +/*! + Loads widgets and objects from the docml file. + */ +void WlanLoginView::loadDocml() +{ + OstTraceFunctionEntry0( WLANLOGINVIEW_LOADDOCML_ENTRY ); + + setObjectName(QString("wlanLoginView")); + QObjectList objectList; + objectList.append(this); + mDocLoader->setObjectTree(objectList); + + bool ok = false; + + mDocLoader->load(wlanLoginViewDocml, &ok); + Q_ASSERT(ok); + + //Fetch pointer for progress bar + mProgressBar = reinterpret_cast( + mDocLoader->findObject("progressBar")); + Q_ASSERT(mProgressBar); + + //Fetch pointer for scroll area content + mScrollAreaContent = reinterpret_cast( + mDocLoader->findObject("scrollAreaContent")); + Q_ASSERT(mScrollAreaContent); + + //Fetch pointer for Web View + mWebView = reinterpret_cast( + mDocLoader->findObject("webView")); + Q_ASSERT(mWebView); + + //Fetch pointer for cancel action + mCancelAction = qobject_cast ( + mDocLoader->findObject("cancelAction")); + Q_ASSERT(mCancelAction != NULL); + + //Fetch pointer for next action + mNextAction = qobject_cast ( + mDocLoader->findObject("nextAction")); + Q_ASSERT(mNextAction != NULL); + + OstTraceFunctionExit0( WLANLOGINVIEW_LOADDOCML_EXIT ); +} + +/*! + Destructor + */ +WlanLoginView::~WlanLoginView() +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_DESTRUCTOR_ENTRY); + + OstTraceFunctionExit0(WLANLOGINVIEW_DESTRUCTOR_EXIT); +} + + +/*! + This function handles connectionReady signal from engine and starts loading of + provided web page + + @param [in] url URL to be loaded + */ +void WlanLoginView::handleConnectionReady(QUrl url) +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_HANDLECONNECTIONREADY_ENTRY); + + mWebView->load(url); + + OstTraceFunctionExit0(WLANLOGINVIEW_HANDLECONNECTIONREADY_EXIT); +} + + +/*! + This function handles orientationChanged signal + + @param [in] orientation New Orientation of the screen + */ +void WlanLoginView::handleOrientationChanged(Qt::Orientation orientation) +{ + Q_UNUSED(orientation); + OstTraceFunctionEntry0( WLANLOGINVIEW_ORIENTATIONCHANGED_ENTRY ); + + adjustViewSize(); + + OstTraceFunctionEntry0( WLANLOGINVIEW_ORIENTATIONCHANGED_EXIT ); +} + +void WlanLoginView::adjustViewSize() +{ + OstTraceFunctionEntry0( WLANLOGINVIEW_ADJUSTVIEWSIZE_ENTRY ); + + //Store current screen size + QSizeF screenSize = mMainWindow->layoutRect().size(); + + //Store current content size + QSize contentSize = mWebView->page()->mainFrame()->contentsSize(); + + //Set viewPortSize to biggest values of content size or current screen size + QSize newViewPortSize; + if (screenSize.toSize().width() > contentSize.width()) { + newViewPortSize.setWidth(screenSize.toSize().width()); + } else { + newViewPortSize.setWidth(contentSize.width()); + } + + if (screenSize.toSize().height() > contentSize.height()) { + newViewPortSize.setHeight(screenSize.toSize().height()); + } else { + newViewPortSize.setHeight(contentSize.height()); + } + mWebView->page()->setViewportSize(newViewPortSize); + + + //Set Web View size to same size as viewport + mWebView->setMinimumWidth((qreal)newViewPortSize.width()); + mWebView->setMaximumWidth((qreal)newViewPortSize.width()); + mWebView->setPreferredWidth((qreal)newViewPortSize.width()); + + mWebView->setMinimumHeight((qreal)newViewPortSize.height()); + mWebView->setMaximumHeight((qreal)newViewPortSize.height()); + mWebView->setPreferredHeight((qreal)newViewPortSize.height()); + + + //Set preferred content size to current screen size + mWebView->page()->setPreferredContentsSize(mMainWindow->layoutRect().size().toSize()); + + OstTraceFunctionEntry0( WLANLOGINVIEW_ADJUSTVIEWSIZE_EXIT ); +} + + +/*! + This function handles urlChanged signal from QGraphicsWebView + + @param [in] newUrl New URL + */ +void WlanLoginView::handleUrlChanged(const QUrl& newUrl ) +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_HANDLEURLCHANGED_ENTRY); + +#ifdef OST_TRACE_COMPILER_IN_USE + QString url = newUrl.toString(); + TPtrC tmp(url.utf16(),url.length() ); + + OstTraceExt1( + TRACE_NORMAL, + WLANLOGINVIEW_HANDLEURLCHANGED_URL_TRACE, + "WlanLoginEngine::handleUrlChanged;newUrl=%S", + tmp); +#endif + + OstTraceFunctionExit0(WLANLOGINVIEW_HANDLEURLCHANGED_EXIT); +} + + +/*! + This function handles loadStarted signal from QGraphicsWebView + */ +void WlanLoginView::handleLoadStarted() +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_HANDLELOADSTARTED_ENTRY); + + mProgressBar->setVisible(true); + + OstTraceFunctionExit0(WLANLOGINVIEW_HANDLELOADSTARTED_EXIT); +} + + +/*! + This function handles loadProgress signal from QGraphicsWebView + + @param [in] progressValue Indicates page loading progress: 0..100 + */ +void WlanLoginView::handleLoadProgress(int progressValue) +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_HANDLELOADPROGRESS_ENTRY); + + mProgressBar->setProgressValue(progressValue); + + OstTraceFunctionExit0(WLANLOGINVIEW_HANDLELOADPROGRESS_EXIT); +} + + +/*! + This function handles loadfinished signal from QGraphicsWebView + + @param [in] status Success status + */ +void WlanLoginView::handleLoadFinished(bool status) +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_HANDLELOADFINISHED_ENTRY); + + if(status) + { + adjustViewSize(); + } + + mProgressBar->setVisible(false); + + OstTraceFunctionExit0(WLANLOGINVIEW_HANDLELOADFINISHED_EXIT); +} + + +/*! + This function handles formSumitted signal from WlanLoginWebPage + + */ +void WlanLoginView::handleFormSubmitted() +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_HANDLEFORMSUBMITTED_ENTRY); + + //User has submitted credentials, let's start internet connectivity test + emit startIcts(); + + OstTraceFunctionExit0(WLANLOGINVIEW_HANDLEFORMSUBMITTED_EXIT); +} + + +/*! + This function handles triggered signal from "cancel" button + + */ +void WlanLoginView::handleCancelAction() +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_HANDLECANCELACTION_ENTRY); + + mWebView->stop(); + emit cancelTriggered(); + + OstTraceFunctionExit0(WLANLOGINVIEW_HANDLECANCELACTION_EXIT); +} + + +/*! + This function handles triggered signal from "next" button + + */ +void WlanLoginView::handleNextAction() +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_HANDLENEXTACTION_ENTRY); + + emit nextTriggered(); + + OstTraceFunctionExit0(WLANLOGINVIEW_HANDLENEXTACTION_EXIT); +} + + +/*! + This function handles ictsOk signal from engine + + */ +void WlanLoginView::handleIctsOk() +{ + OstTraceFunctionEntry0(WLANLOGINVIEW_HANDLEICTSRESULT_ENTRY); + + mNextAction->setEnabled(true); + + //Send application to background automatically only in first successfull login + //as in other cases WLAN Wizard won't exist in the underneath + if (mFirstIctsOkResult) { + mFirstIctsOkResult = false; + emit nextTriggered(); + } + + OstTraceFunctionExit0(WLANLOGINVIEW_HANDLEICTSRESULT_EXIT); +} +