--- 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;
-}