cmmanager/cpdestinationplugin/src/cpdestinationgroup.cpp
branchRCL_3
changeset 58 83ca720e2b9a
parent 57 05bc53fe583b
child 62 bb1f80fb7db2
--- a/cmmanager/cpdestinationplugin/src/cpdestinationgroup.cpp	Tue Aug 31 15:35:44 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,476 +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:  
-* CpDestinationGroup contains all destination UI items as well as 
-* items for uncategorized access points and adding new destinations.
-*/
-
-// System includes
-
-#include <QDir>
-#include <QPluginLoader>
-#include <QStringList>
-
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbDataFormViewItem>
-#include <HbParameterLengthLimiter>
-
-#include <cpbasesettingview.h>
-#include <cpitemdatahelper.h>
-#include <cpsettingformentryitemdataimpl.h>
-#include <cpsettingformitemdata.h>
-#include <cmmanager_shim.h>
-#include <cmdestination_shim.h>
-#include <cmconnectionmethod_shim.h>
-#include <cmmanagerdefines_shim.h>
-
-// User includes
-
-#include "cpdestinationgroup.h"
-#include "cpdestinationentryitem.h"
-#include "cpadddestinationentryitemdata.h"
-
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "cpdestinationgroupTraces.h"
-#endif
-
-/*!
-    \class  CpDestinationGroup
-    \brief  This class contains all data items representing destinations
-    in commsdat. 
-*/
-
-// External function prototypes
-
-// Local constants
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
-    
-    Constructor.
-    
-    @param[in] itemDataHelper Helper for connecting signals and slots.
- */
-CpDestinationGroup::CpDestinationGroup(CpItemDataHelper &itemDataHelper) :
-    CpSettingFormItemData(
-        HbDataFormModelItem::GroupItem, 
-        hbTrId("txt_occ_subhead_destinations_access_points")),
-    mItemDataHelper(&itemDataHelper),
-    mUncategorisedShown(false),
-    mCmManager(new CmManagerShim()),
-    mBearerPlugins(new QList<CpBearerApPluginInterface *>())
-{
-    OstTraceFunctionEntry0(CPDESTINATIONGROUP_CPDESTINATIONGROUP_ENTRY);
-    
-    this->loadBearerPlugins();
-    
-    QList<QSharedPointer<CmDestinationShim> > destinationList;
-    fetchDestinations(destinationList);
-
-    // Create Destination list
-    for (int i = 0; i < destinationList.count(); i++) {
-        QString iapCount = 
-			getDestinationAdditionalText(destinationList.at(i));
-        
-        // Create new destination entry
-        CpDestinationEntryItemData *destDataItem;
-        destDataItem = new CpDestinationEntryItemData(itemDataHelper);
-        destDataItem->setContentWidgetData(QString("text"), destinationList.at(i)->name());
-        destDataItem->setContentWidgetData(QString("additionalText"),iapCount);
-        destDataItem->setDestinationId(destinationList.at(i)->id());
-        destDataItem->setDestinationName(destinationList.at(i)->name());
-        HbIcon destIcon(resolveDestinationIcon(destinationList.at(i)));
-        destDataItem->setEntryItemIcon(destIcon);
-        bool connected = connect(
-            destDataItem, 
-            SIGNAL(destChanged()), 
-            this, 
-            SLOT(updateDestinationInformation()));
-        Q_ASSERT(connected);
-        this->appendChild(destDataItem);
-    }
-    
-    // Add "Uncategorised Iaps" button
-    createUncategorisedDestination();
-    
-    // "Add Destination" button
-    CpSettingFormEntryItemData *addDest = new CpAddDestinationEntryItemData(
-        itemDataHelper,
-        this);
-    addDest->setContentWidgetData(
-        QString("text"),
-        hbTrId("txt_occ_button_add_destination"));
-    this->appendChild(addDest);
-
-    OstTraceFunctionExit0(CPDESTINATIONGROUP_CPDESTINATIONGROUP_EXIT);
-}
-
-/*!
-    Destructor
- */
-CpDestinationGroup::~CpDestinationGroup()
-{
-    OstTraceFunctionEntry0(DUP1_CPDESTINATIONGROUP_CPDESTINATIONGROUP_ENTRY);
-    
-    delete mBearerPlugins;
-    delete mCmManager;
-    
-    OstTraceFunctionExit0(DUP1_CPDESTINATIONGROUP_CPDESTINATIONGROUP_EXIT);
-}
-
-/*!
-    addDestination() creates new destination item to Destinations group item.
-    The new destination is shown in the UI immediately.
- */
-void CpDestinationGroup::addDestination(
-    const QString &name,
-    QSharedPointer<CmDestinationShim> dest)
-{
-    OstTraceFunctionEntry0(CPDESTINATIONGROUP_ADDDESTINATION_ENTRY);
-    
-    // Create UI item for new destination
-    CpDestinationEntryItemData *destDataItem;
-    destDataItem = new CpDestinationEntryItemData(*mItemDataHelper);
-    destDataItem->setContentWidgetData(QString("text"), name);
-    destDataItem->setContentWidgetData(
-        QString("additionalText"), 
-        hbTrId("txt_occ_dblist_internet_val_no_access_points"));
-    destDataItem->setDestinationId(dest->id());
-    destDataItem->setDestinationName(name);
-    HbIcon destIcon(resolveDestinationIcon(dest));
-    destDataItem->setEntryItemIcon(destIcon);
-    connect(
-        destDataItem,
-        SIGNAL(destChanged()),
-        this,
-        SLOT(updateDestinationInformation()));
-    
-    // Insert Child to correct position
-    QList<QSharedPointer<CmDestinationShim> > destinationList;
-    fetchDestinations(destinationList);
-    insertChild(destinationList.count() - 1, destDataItem);
-    
-    OstTraceFunctionExit0(CPDESTINATIONGROUP_ADDDESTINATION_EXIT);
-}
-
-/*!
-    Deletes destination from commsdat and removes it from UI.
- */
-void CpDestinationGroup::deleteDestination(int destId)
-{
-    OstTraceFunctionEntry0(CPDESTINATIONGROUP_DELETEDESTINATION_ENTRY);
-    
-    // "Add Destination" child is removed from count (childCount() -1)
-    for (int i = 0; i < this->childCount() - 1; i++) { 
-        CpDestinationEntryItemData  *destDataItem = 
-            static_cast<CpDestinationEntryItemData*>(this->childAt(i));
-
-        if (destDataItem->destinationId() == destId) {
-            int index = this->indexOf(destDataItem);
-            this->removeChild(index);
-            
-            if (!mUncategorisedShown) {
-            // Return "Uncategorised" item to UI if necessary
-            createUncategorisedDestination();
-            }
-        }
-    }
-    
-    OstTraceFunctionExit0(CPDESTINATIONGROUP_DELETEDESTINATION_EXIT);
-}
-
-/*!
-    Finds correct access point settings implementation according to
-    access point bearer type.
-    
-    \return Returns pointer to CpBearerApPluginInterface which implements
-            access point settins.
- */
-CpBearerApPluginInterface *CpDestinationGroup::findBearerPlugin(int apId)
-{
-    OstTraceFunctionEntry0(CPDESTINATIONGROUP_FINDBEARERPLUGIN_ENTRY);
-    
-    CpBearerApPluginInterface *retVal = NULL;
-    try {
-        CmConnectionMethodShim *cm = mCmManager->connectionMethod(apId);
-        int apBearerType = cm->getIntAttribute(CMManagerShim::CmBearerType);
-    
-        for (int i = 0; i < mBearerPlugins->count(); i++) {
-            if (mBearerPlugins->at(i)->bearerType() == apBearerType) {
-                retVal = mBearerPlugins->at(i);
-                break;
-            }
-        }
-        delete cm;
-    }
-    catch (const std::exception&) {
-        OstTrace0(
-            TRACE_NORMAL,
-            CPDESTINATIONGROUP_FINDBEARERPLUGIN,
-            "CpDestinationGroup::findBearerPlugin: Exception caught");
-        // Let return value be NULL.
-    }
-    
-    OstTraceFunctionExit0(CPDESTINATIONGROUP_FINDBEARERPLUGIN_EXIT);
-    return retVal;
-}
-
-/*!
-    Updates all destination group items' destinations' information. 
-    (Name and access point count)
- */
-void CpDestinationGroup::updateDestinationInformation()
-{
-	OstTraceFunctionEntry0(CPDESTINATIONGROUP_UPDATEDESTINATIONINFORMATION_ENTRY);
-	
-	// "Add Destination" child is removed from count (childCount() -1)
-    for (int i = 0; i < childCount() - 1; i++) {
-        CpDestinationEntryItemData  *destDataItem = 
-            static_cast<CpDestinationEntryItemData*>(this->childAt(i));
-        
-        if (destDataItem->destinationId() == 0) {
-            // Uncategrised Iaps
-	        QList<uint> apList;
-            mCmManager->connectionMethod(apList);
-            if (apList.count() == 0) {
-                // delete empty uncategorised IAPs destination
-                int index = this->indexOf(destDataItem);
-                this->removeChild(index);
-                mUncategorisedShown = false;
-                continue;
-            } 
-        }
-        QString iapCount = getDestinationAdditionalText(destDataItem->destinationId());
-        destDataItem->setContentWidgetData(QString("additionalText"), iapCount);
-        destDataItem->setContentWidgetData(QString("text"), destDataItem->destinationName());
-    }
-    
-    OstTraceFunctionExit0(CPDESTINATIONGROUP_UPDATEDESTINATIONINFORMATION_EXIT);
-}
-
-/*!
-    Creates item for uncategorized access points to destination group item
-    if there is any.
- */
-void CpDestinationGroup::createUncategorisedDestination()
-{
-    OstTraceFunctionEntry0(CPDESTINATIONGROUP_CREATEUNCATEGORISEDDESTINATION_ENTRY);
-    
-    QList<uint> apList;
-    mCmManager->connectionMethod(apList);
-    if (apList.count() > 0) {
-        // Create new destination entry
-        CpDestinationEntryItemData *destDataItem;
-        destDataItem = new CpDestinationEntryItemData(*mItemDataHelper);
-        destDataItem->setContentWidgetData(QString("text"), hbTrId("txt_occ_dblist_uncategorized"));
-        QString iapCount = getDestinationAdditionalText(0);
-        destDataItem->setContentWidgetData(QString("additionalText"),iapCount);
-        destDataItem->setDestinationId(0);
-        destDataItem->setDestinationName(hbTrId("txt_occ_dblist_uncategorized"));
-        HbIcon destIcon(mCmManager->getUncategorizedIcon());
-        destDataItem->setEntryItemIcon(destIcon);
-        bool connected = connect(
-            destDataItem, 
-            SIGNAL(destChanged()), 
-            this, 
-            SLOT(updateDestinationInformation()));
-        Q_ASSERT(connected);
-        QList<QSharedPointer<CmDestinationShim> > destinationList;
-        fetchDestinations(destinationList);
-        
-        insertChild(destinationList.count(), destDataItem);
-        mUncategorisedShown = true;
-    }
-    
-    OstTraceFunctionExit0(CPDESTINATIONGROUP_CREATEUNCATEGORISEDDESTINATION_EXIT);
-}
-
-/*!
-    Searches all destinations from commsdat. List of representing 
-    CmDestinationShim * items returned on completion.
- */
-void CpDestinationGroup::fetchDestinations(
-    QList<QSharedPointer<CmDestinationShim> > &destinationList)
-{
-    OstTraceFunctionEntry0(CPDESTINATIONGROUP_FETCHDESTINATIONS_ENTRY);
-    
-    try {
-        QList<uint> destArray;
-        mCmManager->allDestinations(destArray);
-    
-        for (int i = 0; i < destArray.count(); i++) {
-            CmDestinationShim *destination;
-            destination = mCmManager->destination(destArray[i]);
-            if (!destination->isHidden()) {
-                destinationList.append(QSharedPointer<CmDestinationShim>(destination));
-            } else {
-                delete destination;
-            }
-        }
-    } catch (const std::exception&) {
-        OstTrace0(
-            TRACE_NORMAL,
-            CPDESTINATIONGROUP_FETCHDESTINATIONS,
-            "CpDestinationGroup::fetchDestinations: exception caught, Reading destinations");
-    }
-    
-    OstTraceFunctionExit0(CPDESTINATIONGROUP_FETCHDESTINATIONS_EXIT);
-}
-
-/*!
-    Searches all bearer plugins from fixed location and loads them.
-    
-    \sa findBearerPlugin()
- */
-void CpDestinationGroup::loadBearerPlugins()
-{
-    OstTraceFunctionEntry0(CPDESTINATIONGROUP_LOADBEARERPLUGINS_ENTRY);
-    
-    // Load bearer plugins
-    QDir pluginsDir("\\resource\\qt\\plugins\\controlpanel\\bearerap");
-    foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
-        
-        QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
-        CpBearerApPluginInterface *plugin = 
-            qobject_cast<CpBearerApPluginInterface *>(loader.instance());
-        if (plugin) {
-            mBearerPlugins->append(plugin);
-        }
-    }
-    
-    OstTraceFunctionExit0(CPDESTINATIONGROUP_LOADBEARERPLUGINS_EXIT);
-}
-
-/*!
-    Helper function to be used in localisation. (Overloaded)
-    
-    \return Returns correct localized QString according to access point count.
- */
-QString CpDestinationGroup::getDestinationAdditionalText(QSharedPointer<CmDestinationShim> destination)
-{
-    OstTraceFunctionEntry0(CPDESTINATIONGROUP_GETDESTINATIONADDITIONALTEXT_ENTRY);
-    
-    QString result = "";
-    int iapCount = destination->connectionMethodCount();
-    int counter = 0;
-    for (int i = 0; i < iapCount; i++) {
-        CmConnectionMethodShim *cm = destination->connectionMethod(i);
-        if (cm->getBoolAttribute(CMManagerShim::CmDestination)
-            || cm->getBoolAttribute(CMManagerShim::CmHidden)) {
-            counter++;
-        }
-        delete cm; 
-    }
-    iapCount = iapCount - counter;
-    if (iapCount > 0) {
-        result = hbTrId("txt_occ_dblist_internet_val_ln_access_points", iapCount);
-    } else {
-        result = hbTrId("txt_occ_dblist_internet_val_no_access_points");
-    }
-    
-    OstTrace0(TRACE_FLOW, CPDESTINATIONGROUP_GETDESTINATIONADDITIONALTEXT_EXIT, "Exit");
-    return result;
-}
-
-/*!
-    Helper function to be used in localisation. (Overloaded)
-    
-    \return Returns correct localized QString according to access point count.
- */
-QString CpDestinationGroup::getDestinationAdditionalText(int destinationId)
-{
-    OstTraceFunctionEntry0(CPDESTINATIONGROUP_GETDESTINATIONADDITIONALTEXT2_ENTRY);
-    
-    QString result = "";
-    int iapCount = 0;
-    int counter = 0;
-    if (destinationId == 0) {
-        QList<uint> apList;
-        mCmManager->connectionMethod(apList);
-        iapCount = apList.count();
-        for (int i = 0; i < iapCount; i++) {
-            CmConnectionMethodShim *cm = mCmManager->connectionMethod(apList[i]);
-            if (cm->getBoolAttribute(CMManagerShim::CmDestination)
-                || cm->getBoolAttribute(CMManagerShim::CmHidden)) {
-                counter++;
-            }
-            delete cm; 
-        }
-    } else {
-        CmDestinationShim *destination = mCmManager->destination(destinationId);
-        iapCount = destination->connectionMethodCount();
-        for (int i = 0; i < iapCount; i++) {
-            CmConnectionMethodShim *cm = destination->connectionMethod(i);
-            if (cm->getBoolAttribute(CMManagerShim::CmDestination)
-                || cm->getBoolAttribute(CMManagerShim::CmHidden)) {
-                counter++;
-            }
-            delete cm; 
-        }
-        delete destination;
-    }
-    iapCount = iapCount - counter;
-    if (iapCount > 0) {
-        result = hbTrId("txt_occ_dblist_internet_val_ln_access_points", iapCount);
-    } else {
-        result = hbTrId("txt_occ_dblist_internet_val_no_access_points");
-    }
-    
-    OstTrace0(TRACE_FLOW, CPDESTINATIONGROUP_GETDESTINATIONADDITIONALTEXT2_EXIT, "Exit");
-    return result;
-}
-
-/*!
-    Helper function for showing icons.
-    
-    \return Returns string representing given destination's icon
- */
-QString CpDestinationGroup::resolveDestinationIcon(
-    QSharedPointer<CmDestinationShim> destination) const
-{
-    QString result(destination->getIcon());
-    
-    if (result.isEmpty()) {
-        uint metaData = destination->metadata(CMManagerShim::SnapMetadataPurpose);
-        switch (metaData) {
-            case CMManagerShim::SnapPurposeInternet:
-                result = "qtg_small_internet";
-                break;
-                
-            case CMManagerShim::SnapPurposeIntranet:
-                result = "qtg_small_intranet";
-                break;
-                
-            case CMManagerShim::SnapPurposeMMS:
-                result = "qtg_small_mms";
-                break;
-                
-            case CMManagerShim::SnapPurposeOperator:
-                result = "qtg_small_operator";
-                break;
-                
-            default:
-                // CMManagerShim::SnapPurposeUnknown
-                result = "qtg_small_favorite";
-                break;
-        }
-    }
-    
-    return result;
-}