connectionmonitoring/connectionview/src/connectionview.cpp
branchRCL_3
changeset 25 83ca720e2b9a
parent 24 05bc53fe583b
child 26 bb1f80fb7db2
--- a/connectionmonitoring/connectionview/src/connectionview.cpp	Tue Aug 31 15:35:44 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,501 +0,0 @@
-/*
-* 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 <HbTranslator>
-#include <QLocale>
-#include <QList>
-#include <HbLabel>
-#include <HbPushButton>
-#include <HbMainWindow>
-#include <HbGroupBox>
-#include <HbListWidget>
-#include <QHBoxLayout>
-#include <HbScrollArea>
-#include <HbView>
-#include <HbIcon>
-#include <HbAction>
-#include <HbToolBar>
-#include <HbStyleLoader>
-#include <QGraphicsLinearLayout>
-#include <QtCore/QSignalMapper>
-#include <QtNetwork>
-#include "connectionview.h"
-#include "scrollareawidget.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "connectionviewTraces.h"
-#endif
-
-
-QTM_USE_NAMESPACE
-
-const qreal typeLabelWidth = 18.0;
-const QString iapIdentifierPrefix = "I_";
-
-ConnectionView::ConnectionView():
-    mNetConfigurationManager(new QNetworkConfigurationManager(this)),
-    mSignalMapper(new QSignalMapper(this)),
-    mConnectionCount(0),
-    mClosingTimer(0)
-{
-    OstTraceFunctionEntry0( CONNECTIONVIEW_CONNECTIONVIEW_ENTRY );
-    // Install localization
-    mTranslator = QSharedPointer<HbTranslator>(new HbTranslator("connectionview"));
-   
-    // Register custom layout location
-    bool registerStatus = HbStyleLoader::registerFilePath(":/layout/");
-    Q_ASSERT(registerStatus);
-    
-    // Map the configurationChanged signal to a slot in order to get
-    // information about the changes in the connections
-    bool connectStatus = connect(
-            mNetConfigurationManager,
-            SIGNAL(configurationChanged(const QNetworkConfiguration&)),
-            this,
-            SLOT(handleConfigurationChanged(const QNetworkConfiguration&)));
-    
-    // Create the view and show it
-    createView();
-    OstTraceFunctionExit0( CONNECTIONVIEW_CONNECTIONVIEW_EXIT );
-}
-
-
-ConnectionView::~ConnectionView()
-{
-    OstTraceFunctionEntry0( DUP1_CONNECTIONVIEW_CONNECTIONVIEW_ENTRY );
-    // other widgets are childs of this widget, so they will be
-    // deleted along with mMainView. 
-    delete mMainView;
-    delete mNoConnView;
-    OstTraceFunctionExit0( DUP1_CONNECTIONVIEW_CONNECTIONVIEW_EXIT );
-}
-
-/* !
-     Quit the application when the timer is triggered
-*/
-void ConnectionView::timerEvent(QTimerEvent * /*event*/)
-{
-    killTimer(mClosingTimer);
-    mClosingTimer = 0;
-    qApp->quit();
-}
-
-
-/*!
-    Builds the actual view for the main window
-*/ 
-void ConnectionView::createView()
-{
-    OstTraceFunctionEntry0( CONNECTIONVIEW_CREATEVIEW_ENTRY );
-    
-    // Create the secondary view for displaying the "No active connections"-text
-    mNoConnView = new HbView();
-    mNoConnView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    addView(mNoConnView);
-    QGraphicsLinearLayout *noConnViewLayout = new QGraphicsLinearLayout(Qt::Vertical);
-    noConnViewLayout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-
-    HbLabel *infoLabel = new HbLabel;
-    infoLabel->setObjectName("mInfoLabel");
-    infoLabel->setPlainText(hbTrId("txt_occ_info_no_active_connections"));
-    infoLabel->setAlignment(Qt::AlignCenter);
-    noConnViewLayout->addItem(infoLabel);
-    noConnViewLayout->setAlignment(infoLabel, Qt::AlignCenter);
-    mNoConnView->setLayout(noConnViewLayout);
-   
-    mMainLayout = new QGraphicsLinearLayout(Qt::Vertical);
-    mMainLayout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    mScrollArea = new HbScrollArea();
-    mScrollArea->setScrollDirections(Qt::Vertical);
-    mScrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    mMainLayout->addItem(mScrollArea);
-
-    // Create the mainView and the layout for the window
-    mMainView = new HbView();
-    addView(mMainView);
-    ScrollAreaWidget *scrollContent = new ScrollAreaWidget();
-    scrollContent->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    mScrollArea->installEventFilter(scrollContent);
-    
-    mBoxLayout = new QGraphicsLinearLayout(Qt::Vertical);
-    mBoxLayout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    scrollContent->setLayout(mBoxLayout);
-    mMainView->setLayout(mMainLayout);
-    mScrollArea->setContentWidget(scrollContent);
-    
-    // Create the toolbar and the disconnection action
-    mToolBar = new HbToolBar();    
-    HbIcon icon("qtg_mono_disconnect");
-    HbAction *disconnectAction = new HbAction(mToolBar);
-    disconnectAction->setIcon(icon);
-    mToolBar->addAction(disconnectAction);
-    mMainView->setToolBar(mToolBar);
-    bool connectStatus = connect(
-            disconnectAction,
-            SIGNAL(triggered(bool)),
-            this,
-            SLOT(disconnectAll()));
-    
-    // Create the actual groupboxes for all the active connections
-    createGroupBoxesForConnections();  
-    show();
-    
-    OstTraceFunctionExit0( CONNECTIONVIEW_CREATEVIEW_EXIT );
-}
-
-
-/*!
-    Loops all the active cellular connections and creates groupboxes for those
-*/ 
-void ConnectionView::createGroupBoxesForConnections()
-{
-    OstTraceFunctionEntry0( CONNECTIONVIEW_CREATEGROUPBOXESFORCONNECTIONS_ENTRY );
-    
-    // disconnect all the old connections and then make the new connections
-    mSignalMapper->disconnect();
-    
-    //Let's find active connections if any
-    QList<QNetworkConfiguration> activeConfigurations;
-    getActiveCellularConnections(activeConfigurations);
-    
-    // If there are no active connections, then the dialog is not shown to the user
-    mConnectionCount = activeConfigurations.count();
-    
-    // Toolbar is shown only if there are more than one connections active
-    if (mConnectionCount > 1) {
-        mMainView->setItemVisible(Hb::ToolBarItem, true);
-    } else {
-        mMainView->setItemVisible(Hb::ToolBarItem, false);
-    }
-    
-    // if there are connections, the main view with the connections is shown
-    if (mConnectionCount > 0) { 
-        setCurrentView(mMainView);
-
-        for (int i=0; i<mConnectionCount; i++) {
-            // Get the iap id and the iap name for the UI construction
-            bool ok = true;
-            int iapId = activeConfigurations[i].identifier().remove(iapIdentifierPrefix).toInt(&ok);
-            QString iapName = activeConfigurations[i].name();
-
-            if (ok) {
-                addGroupBox(iapId, iapName);
-            }        
-        }
-        // This connection must be done only once, thus it's done here separately
-        bool connectStatus = connect(
-            mSignalMapper, 
-            SIGNAL(mapped(int)), 
-            this, 
-            SLOT(disconnectSelectedIap(int)));
-        
-        // there are no connections, show the view with the "no connections" label
-    } else {
-        setCurrentView(mNoConnView);
-        // start the timer to close the application after 3 seconds
-        if (mClosingTimer == 0) {
-            mClosingTimer = startTimer(timerValue);
-        }
-    }
-   
-   OstTraceFunctionExit0( CONNECTIONVIEW_CREATEGROUPBOXESFORCONNECTIONS_EXIT );
-}
-
-
-/*
-    Returns a list of all the available active cellular connections
-*/
-void ConnectionView::getActiveCellularConnections(QList<QNetworkConfiguration> &activeConfigurations)
-{
-    OstTraceFunctionEntry0( CONNECTIONVIEW_GETACTIVECELLULARCONNECTIONS_ENTRY );
-    //Let's find active connections if any
-    activeConfigurations.clear();
-
-    QList<QNetworkConfiguration> configurations = 
-        mNetConfigurationManager->allConfigurations(QNetworkConfiguration::Active);
-
-    // Connection are open if they are in active state
-    for (int i=0; i<configurations.count(); i++) {  
-        if (configurations[i].type() == QNetworkConfiguration::InternetAccessPoint) {
-            QString bearerName = configurations[i].bearerName();
-            
-            // WLAN connections are filtered out
-            // TODO At some point QNetwork configuration will provide these constants
-            if (bearerName==bearer2G || bearerName==bearerWCDMA || 
-                bearerName==bearerHSPA || bearerName==bearerCDMA2000) {
-                activeConfigurations.append(configurations[i]);
-            }
-        }
-    }
-    OstTraceFunctionExit0( CONNECTIONVIEW_GETACTIVECELLULARCONNECTIONS_EXIT );
-}
-    
-
-/*!
-    Handles the changes in the configurations whose states change to 
-    active or discovered (meaning connected and disconnected)
-*/ 
-void ConnectionView::handleConfigurationChanged(const QNetworkConfiguration& config)
-{
-    OstTraceFunctionEntry0( CONNECTIONVIEW_HANDLECONFIGURATIONCHANGED_ENTRY );
-    switch (config.state())
-    {
-        case QNetworkConfiguration::Undefined:
-            //Nothing done
-            break;
-        case QNetworkConfiguration::Defined:
-        case QNetworkConfiguration::Discovered:
-        case QNetworkConfiguration::Active:
-        {
-            // If the Configuration change is to Discovered or Active, it means
-            // that a connection was either opened or closed. Update the connections
-            // on the ui
-            QString bearerName = config.bearerName();
-        
-            // Update the view if there are changes in the cellular connections
-            // TODO At some point QNetwork configuration will provide these constants
-            if (bearerName==bearer2G || bearerName==bearerWCDMA || 
-                bearerName==bearerHSPA || bearerName==bearerCDMA2000) {     
-                // kill the application closing timer if it was started (there were no 
-                // active connections)
-                if (mClosingTimer != 0) {
-                    killTimer(mClosingTimer);
-                    mClosingTimer = 0;
-                }
-                clearGroupBoxView();
-                // redraw the boxes
-                createGroupBoxesForConnections();
-                update();
-            } 
-            break;
-        }
-    }    
-    OstTraceFunctionExit0( CONNECTIONVIEW_HANDLECONFIGURATIONCHANGED_EXIT );
-}
-
-
-/*!
-    Adds one groupbox into the boxlayout for the given iap
-*/ 
-void ConnectionView::addGroupBox(int iapId, QString iapName)
-{
-    OstTraceFunctionEntry0( CONNECTIONVIEW_ADDGROUPBOX_ENTRY );
-    // Create the groupbox and its layouts
-    HbGroupBox *groupBox = new HbGroupBox();
-    groupBox->setObjectName("groupBox");
-    groupBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum);
-    groupBox->setHeading(hbTrId("txt_occ_subhead_connection_details"));
-    groupBox->setCollapsable(true);
-    
-    // Create the disconnection button
-    HbPushButton* button = new HbPushButton(
-            hbTrId("txt_occ_button_disconnect"), mMainView);
-    button->setObjectName("disconnectButton");
-    button->setSizePolicy(QSizePolicy::Preferred, 
-                          QSizePolicy::Preferred, 
-                          QSizePolicy::PushButton);
-    
-    // Create the horizontal layout for the labels
-    QGraphicsLinearLayout *labelLayout = new QGraphicsLinearLayout(Qt::Horizontal);
-    labelLayout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    HbLabel *typeLabel = new HbLabel(hbTrId("txt_occ_list_name"));
-
-    // get the pixel size matching the spesified 18 units using the HbDeviceProfile
-    // and set the width of the label
-    HbDeviceProfile profile = HbDeviceProfile::profile(mMainView);
-    typeLabel->setPreferredWidth(typeLabelWidth*profile.unitValue());
-    typeLabel->setObjectName("mConnectionLabel");
-    
-    HbLabel *nameLabel = new HbLabel(iapName);
-    nameLabel->setAlignment(Qt::AlignRight);
-    nameLabel->setObjectName("mConnectionLabel");
-    labelLayout->addItem(typeLabel);
-    labelLayout->addItem(nameLabel);
-   
-    HbWidget *labelWidget = new HbWidget();
-    labelWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    labelWidget->setLayout(labelLayout);
-    
-    // a layout cannot be added directly to a layout, we need to use this container widget 
-    HbWidget *boxWidget = new HbWidget();  
-    boxWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    QGraphicsLinearLayout *boxLayout = new QGraphicsLinearLayout(Qt::Vertical);
-    boxLayout->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-    boxWidget->setLayout(boxLayout);
-
-    // Add the label layout and the button into the groupbox
-    boxLayout->addItem(labelWidget);
-    boxLayout->addItem(button);
-    boxLayout->setAlignment(button, Qt::AlignHCenter);
-    groupBox->setContentWidget(boxWidget);
-    groupBox->setCollapsed(true);
-    
-    // add the group box to the main layout
-    mBoxLayout->addItem(groupBox);
-    mBoxLayout->setAlignment(groupBox, Qt::AlignHCenter);
-        
-    // Expand the groupbox if connection count is 1 
-    if (mConnectionCount == 1) {
-        groupBox->setCollapsed(false);
-    }
-    
-    // Connect the button to the mapper
-    bool connectStatus = connect(
-        button, 
-        SIGNAL(clicked()), 
-        mSignalMapper, 
-        SLOT(map()));
-    mSignalMapper->setMapping(button, iapId);
-    OstTraceFunctionExit0( CONNECTIONVIEW_ADDGROUPBOX_EXIT );
-}
-
-
-/*!
-    Closes the connection to the given iap
-*/ 
-void ConnectionView::disconnectSelectedIap(int iapId)
-{   
-    OstTraceFunctionEntry0( CONNECTIONVIEW_DISCONNECTSELECTEDIAP_ENTRY );
-   
-    // Get all the active connections 
-    QList<QNetworkConfiguration> activeConfigurations;
-    getActiveCellularConnections(activeConfigurations);
-    int count = activeConfigurations.count();
-            
-    for (int i=0; i < count; i++) {
-        bool ok = true;
-        int loopedIapId = activeConfigurations[i].identifier().remove(iapIdentifierPrefix).toInt(&ok);
-        
-        // if the looped iap matches the iap, stop the connection
-        if (loopedIapId == iapId) {
-            
-            QNetworkSession *networkSession = new QNetworkSession(activeConfigurations[i], mMainView);
-
-            bool connectStatus = connect(
-                networkSession, 
-                SIGNAL(opened()), 
-                this, 
-                SLOT(stopSessions()));
-                      
-            // This connection is done basically for memory handling
-            // to be able to delete the session if one of the error signal is emitted
-            connect(
-                networkSession, 
-                SIGNAL(error(QNetworkSession::SessionError)), 
-                this, 
-                SLOT(errorSessions(QNetworkSession::SessionError)));
-            
-            // open the session only if the connection succeeded, otherwise it's no use
-            if (connectStatus) {
-                // session needs to be opened in order to stop all the sessions of this configurations
-                networkSession->open();
-            } else {
-                OstTrace1( CONNECTSTATUS, CONNECTIONVIEW_DISCONNECTSELECTEDIAP, "ConnectionView::disconnectSelectedIap failed;iapId=%d", iapId );
-            }
-   
-            // the searched iap was found, stop looping
-            break;
-        }
-    }
-    OstTraceFunctionExit0( CONNECTIONVIEW_DISCONNECTSELECTEDIAP_EXIT );
-}
-
-
-/*!
-    Closes all the connections to active iaps
-*/ 
-void ConnectionView::disconnectAll()
-{
-    OstTraceFunctionEntry0( CONNECTIONVIEW_DISCONNECTALL_ENTRY );
-    
-    // Get all the active connections 
-    QList<QNetworkConfiguration> activeConfigurations;
-    getActiveCellularConnections(activeConfigurations);
-    int count = activeConfigurations.count();
-    
-    for (int i=0; i < count; i++) {
-        QNetworkSession *networkSession = new QNetworkSession(activeConfigurations[i], mMainView);
-        bool connectStatus = connect(
-            networkSession, 
-            SIGNAL(opened()), 
-            this, 
-            SLOT(stopSessions()));
-        // This connection is done basically for memory handling
-        // to be able to delete the session if one of the error signal is emitted
-        connect(
-            networkSession, 
-            SIGNAL(error(QNetworkSession::SessionError)), 
-            this, 
-            SLOT(errorSessions(QNetworkSession::SessionError)));
-        
-        // open the session only if the connection succeeded, otherwise it's no use
-        if (connectStatus) {
-            // session needs to be opened in order to stop all the sessions of this configurations
-            networkSession->open();
-        }
-    }
-    OstTraceFunctionExit0( CONNECTIONVIEW_DISCONNECTALL_EXIT );
-}
-
-
-void ConnectionView::stopSessions() 
-{
-    OstTraceFunctionEntry0( CONNECTIONVIEW_STOPSESSIONS_ENTRY );
-
-    // get the sender-session and stop the sessions
-    QObject *senderObject = QObject::sender();
-    if (senderObject != NULL) {
-        QNetworkSession *session = qobject_cast<QNetworkSession *>(senderObject);
-        session->stop();
-        session->deleteLater();
-    }
-    OstTraceFunctionExit0( CONNECTIONVIEW_STOPSESSIONS_EXIT );
-}
-
-void ConnectionView::errorSessions(QNetworkSession::SessionError) 
-{
-    OstTraceFunctionEntry0( DUP2_CONNECTIONVIEW_ERRORSESSIONS_ENTRY );
-
-    // something went wrong in session opening
-    // get the sender-session and delete the sender
-    QObject *senderObject = QObject::sender();
-    if (senderObject != NULL) {
-        senderObject->deleteLater();
-    }
-    OstTraceFunctionExit0( DUP1_CONNECTIONVIEW_ERRORSESSIONS_EXIT );
-}
-
-/*!
-    Removes the items from the boxlayout in order to be costructed again.
-*/ 
-void ConnectionView::clearGroupBoxView()
-{
-    OstTraceFunctionEntry0( CONNECTIONVIEW_CLEARGROUPBOXVIEW_ENTRY );
-    // Loop all the groupbox items through and remove them from the view
-    int count = mBoxLayout->count();
-    for (int i = 0; i < count; i++ )  {
-        // store the pointer to the item to be able to delete it
-        QGraphicsLayoutItem *item = mBoxLayout->itemAt(0);
-        mBoxLayout->removeAt(0);
-        delete item;
-    }
-    OstTraceFunctionExit0( CONNECTIONVIEW_CLEARGROUPBOXVIEW_EXIT );
-}
-
-
-
-