connectionmonitoring/indicatorobserver/src/indicatorobserver.cpp
branchRCL_3
changeset 58 83ca720e2b9a
parent 57 05bc53fe583b
child 62 bb1f80fb7db2
--- a/connectionmonitoring/indicatorobserver/src/indicatorobserver.cpp	Tue Aug 31 15:35:44 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,399 +0,0 @@
-/*
- * Copyright (c) 2009 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 <QtCore>
-#include <QCoreApplication>
-
-#include <hbindicator.h>
-#include <hbindicatorplugininterface.h>
-#include <hbindicatorinterface.h>
-#include <qnetworkconfigmanager.h>
-#include <qnetworkconfiguration.h>
-#include <xqsettingsmanager.h>
-#include <wlandevicesettingsinternalcrkeys.h>
-
-#include "indicatorobserver.h"
-
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "indicatorobserverTraces.h"
-#endif
-
-QTM_USE_NAMESPACE
-
-/*!
-    IndicatorObserver::IndicatorObserver
-*/
-IndicatorObserver::IndicatorObserver(int argc, char* argv[]) :
-    QCoreApplication(argc, argv),
-    mNetConfigurationManager(new QNetworkConfigurationManager(this)),
-    mSettingsManager(new XQSettingsManager(this)),
-    mActiveCellularConfigurations(new QList<QNetworkConfiguration>),
-    mActiveWlanConfigurations(new QList<QNetworkConfiguration>),    
-    mWlanEnabled(0),
-    mWlanForceDisabled(0),
-    mWlanIndicatorIsActivated(false),
-    mCellularIndicatorIsActivated(false),
-    mWlanIndicator(NULL),
-    mCellularIndicator(NULL)
-    
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_CONSTRUCTOR_ENTRY, "-->");
-
-    bool connectStatus = false;
-
-    connectStatus = connect(
-        mNetConfigurationManager,
-        SIGNAL(configurationChanged(const QNetworkConfiguration&)),
-        this,
-        SLOT(handleConfigurationChanged(const QNetworkConfiguration&)));
-    
-    if (!connectStatus){
-        OstTrace0(TRACE_FLOW, INDICATOROBSERVER_CONNECT_FAILED, "Connecting handleConfigurationChanged SLOT failed");     
-        }
-    
-    connectStatus = connect(
-        mSettingsManager,
-        SIGNAL(valueChanged(const XQSettingsKey, const QVariant)),
-        this,
-        SLOT(updateWlanRadioStatus(const XQSettingsKey, const QVariant)));
-    
-    if (!connectStatus){
-        OstTrace0(TRACE_FLOW, INDICATOROBSERVER_CONNECT_FAILED_DUP1, "Connecting updateWlanRadioStatus SLOT failed");     
-        }
-    
-    // Subscribe for WLAN ON/OFF change indications
-    XQSettingsKey wlanKey(
-        XQSettingsKey::TargetCentralRepository,
-        KCRUidWlanDeviceSettingsRegistryId.iUid,
-        KWlanOnOff);
-    
-    // Also subscribe for KForceDisableWlan change indications
-    XQSettingsKey wlanForceKey(
-        XQSettingsKey::TargetCentralRepository,
-        KCRUidWlanDeviceSettingsRegistryId.iUid, 
-        KWlanForceDisable);
-    
-    //Read current status of WLAN radio
-    mWlanEnabled = mSettingsManager->readItemValue(wlanKey).toInt() ? true : false;
-    mWlanForceDisabled = mSettingsManager->readItemValue(wlanForceKey).toInt() ? true : false;
-
-    mSettingsManager->startMonitoring(wlanKey);
-    mSettingsManager->startMonitoring(wlanForceKey);
-
-    initializeIndicators();
-    
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_CONSTRUCTOR_EXIT, "<--");
-}
-
-
-/*!
-    IndicatorObserver::~IndicatorObserver
-*/
-IndicatorObserver::~IndicatorObserver()
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_DESTRUCTOR_ENTRY, "-->");
-     
-    if(mCellularIndicatorIsActivated) {
-        deactivateCellularIndicatorPlugin();
-    }
-    
-    if (mActiveCellularConfigurations) {
-        mActiveCellularConfigurations->clear();
-        delete mActiveCellularConfigurations;
-        }
-    
-
-    if (mWlanIndicatorIsActivated) {
-        deactivateWlanIndicatorPlugin();
-    }
-    
-    if (mActiveWlanConfigurations) {
-        mActiveWlanConfigurations->clear();
-        delete mActiveWlanConfigurations;
-        }
-    
-    delete mCellularIndicator;
-    delete mWlanIndicator;
-    
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_DESTRUCTOR_EXIT, "<--");
-}
-
-/*!
-    IndicatorObserver::initializeIndicators
-*/
-void IndicatorObserver::initializeIndicators()
-{
-
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_INITIALIZEINDICATORS_ENTRY, "-->");
-    
-    // create the indicators and make connections
-    mCellularIndicator = new HbIndicator();  
-    // connect the user activated slot here, so that the indicator know to start the connview in case
-    // the user taps the indicator
-    bool conn = QObject::connect(
-                    mCellularIndicator, 
-                    SIGNAL(userActivated(const QString&, const QVariantMap&)), 
-                    this, 
-                    SLOT(userActivateCellularIndicator(const QString&, const QVariantMap&)));
-    
-    mWlanIndicator = new HbIndicator();  
-    // connect the user activated slot here, so that the indicator know to start the wlan sniffer in case
-    // the user taps the indicator
-    conn = QObject::connect(
-                    mWlanIndicator, 
-                    SIGNAL(userActivated(const QString&, const QVariantMap&)), 
-                    this, 
-                    SLOT(userActivateWlanIndicator(const QString&, const QVariantMap&)));
-    
-    findActiveConfigurations();
-    updateWlanIndicator();
-    updateCellularIndicator();
-    
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_INITIALIZEINDICATORS_EXIT, "<--");
-}
-
-/*!
-    IndicatorObserver::updateWlanRadioStatus
-*/
-void IndicatorObserver::updateWlanRadioStatus(const XQSettingsKey &key, const QVariant &value)
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_UPDATEWLANRADIOSTATUS_ENTRY, "-->");
-    
-    // The change notification is received either for the WlanOnoff key, or the
-    // ForceDisableWlan key
-    if (KWlanOnOff == key.key()) {
-        mWlanEnabled = value.toInt() ? true : false;
-    } else {
-        mWlanForceDisabled = value.toInt() ? true : false;
-    }
-    
-    if (mWlanEnabled == false || mWlanForceDisabled == true) {    
-        deactivateWlanIndicatorPlugin();
-    } else {
-        updateWlanIndicator();
-    }
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_UPDATEWLANRADIOSTATUS_EXIT, "<--");
-}
-
-/*!
-    IndicatorObserver::findActiveConfigurations
-*/
-void IndicatorObserver::findActiveConfigurations()
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_FINDACTIVECONFIGURATIONS_ENTRY, "-->");
-    
-    mActiveWlanConfigurations->clear();
-    mActiveCellularConfigurations->clear();
-            
-    //Let's find active connections if any    
-    QList<QNetworkConfiguration> allConfigurations = mNetConfigurationManager->allConfigurations(QNetworkConfiguration::Active);
-    
-    for (int i=0; i<allConfigurations.count(); i++) {
-        if (allConfigurations[i].type() == QNetworkConfiguration::InternetAccessPoint) {
-
-            //Let's check the bearer type
-            QString bearerName = allConfigurations[i].bearerName();
-        
-            if (bearerName == bearerWLAN) {
-                mActiveWlanConfigurations->append(allConfigurations[i]);
-            } else if (bearerName == bearer2G ||
-                       bearerName == bearerWCDMA ||
-                       bearerName == bearerHSPA || 
-                       bearerName == bearerCDMA2000) {
-                mActiveCellularConfigurations->append(allConfigurations[i]);
-            }  
-        }
-    }
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_FINDACTIVECONFIGURATIONS_EXIT, "<--");
-}
-
-/*!
-    IndicatorObserver::updateWlanIndicator
-*/
-void IndicatorObserver::updateWlanIndicator()
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_UPDATEWLANINDICATOR_ENTRY, "-->");
-    QList<QVariant> list;
-    
-    int count = mActiveWlanConfigurations->count();
-
-    //We do not deactivate WlanIndicator plugin here as it is done in updateWlanRadioStatus method
-    //as WLAN radio status determines whether to show indicator or not
-    if ( mWlanEnabled && !mWlanForceDisabled) {
-        if(count == 0) {
-            list.insert(0, wlanNotConnected);
-            activateWlanIndicatorPlugin(list);
-        } else {
-            list.insert(0, wlanConnected);
-            list.insert(1, mActiveWlanConfigurations->at(0).name());          
-            activateWlanIndicatorPlugin(list);
-        }
-    }
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_UPDATEWLANINDICATOR_EXIT, "<--");
-}
-
-/*!
-    IndicatorObserver::updateCellularIndicator
-*/
-void IndicatorObserver::updateCellularIndicator()
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_UPDATECELLULARINDICATOR_ENTRY, "-->");
-    
-    QList<QVariant> list;
-
-    int count = mActiveCellularConfigurations->count();
- 
-    if ( count == 0 ) {
-        if ( mCellularIndicatorIsActivated ){
-            deactivateCellularIndicatorPlugin();
-        }
-    } else {
-        if (count == 1) {
-            list.insert(0, count);
-            list.insert(1, mActiveCellularConfigurations->at(0).name());
-            list.insert(2, mActiveCellularConfigurations->at(0).identifier().toInt());
-        } else {
-            list.insert(0, count);
-        
-        } 
-        activateCellularIndicatorPlugin(list);        
-    }
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_UPDATECELLULARINDICATOR_EXIT, "<--");
-}
-
-/*!
-    IndicatorObserver::handleConfigurationChanged
-*/
-void IndicatorObserver::handleConfigurationChanged(const QNetworkConfiguration& config)
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_HANDLECONFIGURATIONCHANGED_ENTRY, "-->");
-    
-    switch (config.state())
-    {   
-        case QNetworkConfiguration::Defined: //To handle situation where we have active connection and it is lost due to bad radio conditions 
-        case QNetworkConfiguration::Discovered:            
-        case QNetworkConfiguration::Active:
-            {
-                findActiveConfigurations();
-
-                QString bearerName = config.bearerName();
-                
-                if (bearerName == bearerWLAN) {
-                    updateWlanIndicator();
-                } else if (bearerName == bearer2G ||
-                           bearerName == bearerWCDMA ||
-                           bearerName == bearerHSPA  ||
-                           bearerName == bearerCDMA2000) {                   
-                    updateCellularIndicator();
-                }
-            }
-            break;
-            
-        default:
-            break;
-    }
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_HANDLECONFIGURATIONCHANGED_EXIT, "<--");
-}
-
-void IndicatorObserver::userActivateCellularIndicator(const QString &type, const QVariantMap &data)
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_USERACTIVATECELLULARINDICATOR_ENTRY, "-->");
-    
-    Q_UNUSED(data);
-    Q_UNUSED(type);
-    // Show connection view
-    QProcess::startDetached("connview");
-    
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_USERACTIVATECELLULARINDICATOR_EXIT, "<--");
-}
-
-void IndicatorObserver::userActivateWlanIndicator(const QString &type, const QVariantMap &data)
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_USERACTIVATEWLANINDICATOR_ENTRY, "-->");
-    
-    Q_UNUSED(data);
-    Q_UNUSED(type);
-    // Show wlan list view
-    QProcess::startDetached("WlanSniffer");
-
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_USERACTIVATEWLANINDICATOR_EXIT, "<--");
-}
-
-/*!
-    IndicatorObserver::activateCellularIndicatorPlugin
-*/
-void IndicatorObserver::activateCellularIndicatorPlugin(QList<QVariant> list)
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_ACTIVATECELLULARINDICATORPLUGIN_ENTRY, "-->");
-    
-    bool success = mCellularIndicator->activate("com.nokia.hb.indicator.connectivity.cellularindicatorplugin/1.0", list);
-     
-    if (!success) {
-        mCellularIndicatorIsActivated = false;
-        OstTrace0(TRACE_FLOW, INDICATOROBSERVER_CELLULAR_INDICATOR_ACTIVATION_FAILED, "Cellular indicator activation failed"); 
-    } else {
-        mCellularIndicatorIsActivated = true;
-    }
-    
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_ACTIVATECELLULARINDICATORPLUGIN_EXIT, "<--");
-}
-
-/*!
-    IndicatorObserver::deactivateCellularIndicatorPlugin
-*/
-void IndicatorObserver::deactivateCellularIndicatorPlugin()
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_DEACTIVATECELLULARINDICATORPLUGIN_ENTRY, "-->");
-    
-    mCellularIndicator->deactivate("com.nokia.hb.indicator.connectivity.cellularindicatorplugin/1.0");
-    mCellularIndicatorIsActivated = false;
-    
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_DEACTIVATECELLULARINDICATORPLUGIN_EXIT, "<--");
-}
-
-/*!
-    IndicatorObserver::activateWlanIndicatorPlugin
-*/
-void IndicatorObserver::activateWlanIndicatorPlugin(QList<QVariant> list)
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_ACTIVATEWLANINDICATORPLUGIN_ENTRY, "-->");
-    
-    bool success = mWlanIndicator->activate("com.nokia.hb.indicator.connectivity.wlanindicatorplugin/1.0", list);
-   
-    if (!success) {
-        mWlanIndicatorIsActivated = false;
-        OstTrace0(TRACE_FLOW, INDICATOROBSERVER_WLAN_INDICATOR_ACTIVATION_FAILED, "WLAN indicator activation failed"); 
-    } else {
-        mWlanIndicatorIsActivated = true;
-    }
-    
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_ACTIVATEWLANINDICATORPLUGIN_EXIT, "<--");    
-}
-
-/*!
-    IndicatorObserver::deactivateWlanIndicatorPlugin
-*/
-void IndicatorObserver::deactivateWlanIndicatorPlugin()
-{
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_DEACTIVATEWLANINDICATORPLUGIN_ENTRY, "-->");
-
-    mWlanIndicator->deactivate("com.nokia.hb.indicator.connectivity.wlanindicatorplugin/1.0");
-    mWlanIndicatorIsActivated = false;
-    
-    OstTrace0(TRACE_FLOW, INDICATOROBSERVER_DEACTIVATEWLANINDICATORPLUGIN_EXIT, "<--");   
-}