cmmanager/cpdestinationplugin/src/cpiapitem.cpp
branchRCL_3
changeset 58 83ca720e2b9a
parent 57 05bc53fe583b
child 62 bb1f80fb7db2
--- a/cmmanager/cpdestinationplugin/src/cpiapitem.cpp	Tue Aug 31 15:35:44 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,513 +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:  
-*   Data item for representing access points in UI.
-*/
-
-// System includes
-#include <QObject>
-#include <HbMenu>
-#include <HbAction>
-#include <HbDocumentLoader>
-#include <HbRadioButtonList>
-#include <HbDialog>
-#include <HbMessageBox>
-#include <HbPopup>
-#include <HbLabel>
-#include <HbDataFormViewItem>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbParameterLengthLimiter>
-#include <cpbasesettingview.h>
-#include <cpsettingformitemdata.h>
-#include <cpsettingformentryitemdata.h>
-#include <cpitemdatahelper.h>
-#include <cmdestination_shim.h>
-#include <cmmanager_shim.h>
-#include <cmconnectionmethod_shim.h>
-
-// User includes
-#include "cpiapitem.h"
-#include "cpdestinationentryitem.h"
-#include "cpbearerapplugininterface.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "cpiapitemTraces.h"
-#endif
-/*!
-    \class  CpIapItem
-    \brief  This class represents access point in data model. 
-            It takes care of all access point related operations.
-*/
-
-// External function prototypes
-
-// Local constants
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!         
-   Constructor.
-   
-   @param[in] itemDataHelper Helper for connecting signals and slots.
-   @param[in] iapId Unique ID if the access point this object represents.
-   @param[in] iapName Name of the access point this object represents.
-   @param[in] destId Unique ID of the destination that contains reference to 
-              the access point this object represents.
-   @param[in] bearerPlugin Pointer to the object that implements settings view
-              for this access point.
- */
-CpIapItem::CpIapItem(
-    CpItemDataHelper &itemDataHelper,  
-    int iapId, 
-    const QString &iapName, 
-    int destId,
-    bool apProtected,
-    CpBearerApPluginInterface *bearerPlugin) :
-    CpSettingFormEntryItemData(CpSettingFormEntryItemData::ButtonEntryItem, itemDataHelper), 
-    mIapId(iapId), 
-    mIapName(iapName),
-    mDestId(destId),
-    mItemDataHelper(&itemDataHelper),
-    mBearerPlugin(bearerPlugin),
-    mMoveOngoing(false),
-    mDialog(0),
-    mList(0)
-{
-    OstTraceFunctionEntry0(CPIAPITEM_CPIAPITEM_ENTRY);
-    try {
-        mCmm = new CmManagerShim();
-    } catch (const std::exception&) {
-        OstTrace0(TRACE_NORMAL, CPIAPITEM_CPIAPITEM, "CpIapItem::CpIapItem: Exception caught");
-        mCmm = NULL;
-    }
-    
-    // Fix connections
-    itemDataHelper.removeConnection(this,SIGNAL(pressed()),this,SLOT(onLaunchView()));
-    if (!apProtected) {
-        itemDataHelper.addConnection(
-            this,
-            SIGNAL(longPress(QPointF)),
-            this,
-            SLOT(showItemMenu(QPointF)));
-        itemDataHelper.addConnection(this,SIGNAL(clicked()),this,SLOT(onLaunchView()));
-        itemDataHelper.addConnection(
-            this,
-            SIGNAL(visibleChanged()),
-            this, 
-            SLOT(updateIap()));
-    }
-    OstTraceFunctionExit0(CPIAPITEM_CPIAPITEM_EXIT);
-}
-
-/*!
-    Destructor
- */
-CpIapItem::~CpIapItem()
-{
-    OstTraceFunctionEntry0(DUP1_CPIAPITEM_CPIAPITEM_ENTRY);
-    delete mCmm;
-    OstTraceFunctionExit0(DUP1_CPIAPITEM_CPIAPITEM_EXIT);
-}
-
-/*!
-    Shows user the item specific menu. The menu is triggered by long pressing
-    the access point item.
-    
-    @param[in] position Preferred position for the item specific menu.
- */
-void CpIapItem::showItemMenu(QPointF position)
-{
-    OstTraceFunctionEntry0(CPIAPITEM_SHOWITEMMENU_ENTRY);
-    if (isCmManagerAvailable()) {
-        bool settingsReadSuccessful = true;
-        bool cmConnected = false;
-        try {
-            CmConnectionMethodShim *cm = mCmm->connectionMethod(mIapId);
-            cmConnected = cm->getBoolAttribute(CMManagerShim::CmConnected);
-            delete cm;
-        } 
-        catch (const std::exception&)  {
-            OstTrace0(TRACE_NORMAL, CPIAPITEM_SHOWITEMMENU, "CpIapItem::showItemMenu: Exception caught");
-            settingsReadSuccessful = false;
-        }
-        if (settingsReadSuccessful) {
-            // Settings could be read from commsdat: show menu.
-            createItemMenu(cmConnected, position)->show();
-        }    
-    }
-    OstTraceFunctionExit0(CPIAPITEM_SHOWITEMMENU_EXIT);
-}
-
-/*!
-    Prompts user for destination where access point is to be 
-    added and then makes the move in commsdat.
- */
-void CpIapItem::moveIap()
-{
-    OstTraceFunctionEntry0(CPIAPITEM_MOVEIAP_ENTRY);
-    mMoveOngoing = true;
-    queryDestination();
-    OstTraceFunctionExit0(CPIAPITEM_MOVEIAP_EXIT);
-}
-
-/*!
-    Shows confirmation query for access point deletion.
- */
-void CpIapItem::showDeleteConfirmation()
-{
-    OstTraceFunctionEntry0(CPIAPITEM_SHOWDELETECONFIRMATION_ENTRY);
-    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-    note->clearActions();
-    note->setAttribute(Qt::WA_DeleteOnClose);
-    note->setText(HbParameterLengthLimiter(
-        "txt_occ_info_delete_access_point_1").arg(mIapName));
-    HbAction *primaryAction = new HbAction(hbTrId("txt_common_button_yes"));
-    bool connected = connect(
-        primaryAction, 
-        SIGNAL(triggered()), 
-        this, 
-        SLOT(deleteConfirmed()));
-    Q_ASSERT(connected);
-    note->addAction(primaryAction);
-    note->addAction(new HbAction(hbTrId("txt_common_button_no")));
-    note->setTimeout(HbPopup::NoTimeout);
-    note->show();
-    OstTraceFunctionExit0(CPIAPITEM_SHOWDELETECONFIRMATION_EXIT);
-}
-
-/*!
-    Prompts user for target destination and then adds access point 
-    that this object represents to the prompted destination.
- */
-void CpIapItem::shareIap()
-{
-    OstTraceFunctionEntry0(CPIAPITEM_SHAREIAP_ENTRY);
-    mMoveOngoing = false;
-    queryDestination();
-    OstTraceFunctionExit0(CPIAPITEM_SHAREIAP_EXIT);
-}
-
-/*!
-    Completes either saving or sharing of access point by 
-    making the move in commsdat.
- */
-void CpIapItem::queryDialogClosed()
-{
-    OstTraceFunctionEntry0(CPIAPITEM_QUERYDIALOGCLOSED_ENTRY);
-    if (mMoveOngoing) {
-        saveMove(mDestinationList[mList->selected()]);
-    } else {
-        saveShare(mDestinationList[mList->selected()]);
-    }
-    OstTraceFunctionExit0(CPIAPITEM_QUERYDIALOGCLOSED_EXIT);
-}
-
-/*!
-    Completes the deletion process by deleting access point from
-    commsdat.
- */
-void CpIapItem::deleteConfirmed()
-{
-    OstTraceFunctionEntry0(CPIAPITEM_DELETECONFIRMED_ENTRY);
-    bool deleteSuccessful = true;
-    try  {
-        if (mDestId != 0) {
-            CmDestinationShim *destination = mCmm->destination(mDestId);
-            CmConnectionMethodShim *cm = destination->connectionMethodByID(mIapId);
-            destination->deleteConnectionMethod(cm);
-            destination->update();
-            delete cm;
-            delete destination;
-        } else {
-            CmConnectionMethodShim *cm = mCmm->connectionMethod(mIapId);
-            cm->deleteConnectionMethod();
-            delete cm;
-        }
-    } catch (const std::exception&) {
-        OstTrace0(TRACE_NORMAL, DUP1_CPIAPITEM_DELETECONFIRMED, "CpIapItem::deleteConfirmed: Exception caught");
-        deleteSuccessful = false;
-    }
-    if (deleteSuccessful) {
-        this->deleteLater();
-        OstTrace0(TRACE_NORMAL, CPIAPITEM_DELETECONFIRMED, "CpIapItem::deleteConfirmed: Emit access point changed signal");
-        emit iapChanged();
-    } else {
-        showErrorNote(hbTrId("txt_occ_info_unable_to_save_setting"));
-    }
-    OstTraceFunctionExit0(CPIAPITEM_DELETECONFIRMED_EXIT);
-}
-
-/*!
-    Updates access point item name when the item becomes visible.
- */
-void CpIapItem::updateIap()
-{
-    OstTrace0( TRACE_FLOW, CPIAPITEM_UPDATEIAP_ENTRY, "CpIapItem::updateIap entry" );
-    try {
-        CmConnectionMethodShim *cm = mCmm->connectionMethod(mIapId);
-        this->setContentWidgetData("text", cm->getStringAttribute(CMManagerShim::CmName));
-        delete cm;
-    } catch (const std::exception&) {
-        OstTrace0( TRACE_NORMAL, CPIAPITEM_UPDATEIAP, "CpIapItem::updateIap: exception caught, CM name reading failed" );
-    }
-    OstTrace0( TRACE_FLOW, DUP1_CPIAPITEM_UPDATEIAP_EXIT, "CpIapItem::updateIap exit" );
-}
-
-/*!
-    Opens Iap settings view.
- */
-void CpIapItem::openIap()
-{
-    onLaunchView();
-}
-
-/*!
-    Gets access point specific view from bearer plugin.
-    
-    \return Returns settings view containing access point settings.
- */
-CpBaseSettingView *CpIapItem::createSettingView() const
-{
-    OstTraceFunctionEntry0(CPIAPITEM_CREATESETTINGVIEW_ENTRY);
-    CpBaseSettingView *view = NULL;
-    if (mBearerPlugin != NULL) {
-        CmConnectionMethodShim *cm = mCmm->connectionMethod(mIapId);
-        bool cmConnected = cm->getBoolAttribute(CMManagerShim::CmConnected);
-        delete cm;
-        
-        // Do not open connected AP
-        if (!cmConnected) {
-            view = mBearerPlugin->createSettingView(mIapId);
-        }
-    }
-    OstTraceFunctionExit0(CPIAPITEM_CREATESETTINGVIEW_EXIT);
-    return view;
-}
-
-/*!
-    Prompts user for destination.
- */
-void CpIapItem::queryDestination()
-{
-    OstTraceFunctionEntry0(CPIAPITEM_QUERYDESTINATION_ENTRY);
-    bool readingSuccessful = true;
-    QStringList destinations;
-    try {
-        mCmm->allDestinations(mDestinationList);
-        
-        for (int i = 0; i < mDestinationList.count(); i++) {
-            CmDestinationShim *destination = mCmm->destination(mDestinationList[i]);
-            if ((destination->id() != mDestId)
-                && !destination->isHidden()) {
-
-                QString dest = destination->name();
-                destinations.append(dest);
-            } else {
-                // Remove this destination from list to sync both lists
-                mDestinationList.removeAt(i);
-                i--;
-            }
-            delete destination;
-        }
-    } catch (const std::exception&) {
-        OstTrace0(TRACE_NORMAL, CPIAPITEM_QUERYDESTINATION, "CpIapItem::queryDestination: exception caught");
-        readingSuccessful = false;
-    }
-    
-    if (readingSuccessful) {
-        // Load DocML 
-        bool ok = false;
-        HbDocumentLoader *loader = new HbDocumentLoader();
-        loader->load(":/docml/cpdestinationplugindialogs.docml", &ok);
-        mDialog = qobject_cast<HbDialog *>(loader->findWidget("dialog"));
-        HbLabel *heading = qobject_cast<HbLabel *>(loader->findWidget("heading"));
-        heading->setPlainText(hbTrId("txt_occ_dialog_select_network_destination_to_be_ac"));
-        mList = qobject_cast<HbRadioButtonList *>(loader->findWidget("radioButtonList")); 
-        mList->setItems(destinations);
-        mList->setSelected(0);
-        mOk = qobject_cast<HbAction *>(loader->findObject("okAction"));
-        bool connected = connect(mOk, 
-                                 SIGNAL(triggered()), 
-                                 this, 
-                                 SLOT(queryDialogClosed()));
-        Q_ASSERT(connected);
-        mDialog->show();
-        delete loader;
-    } else {
-        OstTrace0(TRACE_NORMAL, DUP1_CPIAPITEM_QUERYDESTINATION, " CpIapItem::queryDestination: exception caught");
-        showErrorNote(hbTrId("txt_occ_info_unable_to_read_settings"));
-    }
-    OstTraceFunctionExit0(CPIAPITEM_QUERYDESTINATION_EXIT);
-}
-
-/*!
-    Shares access point to given destination.
-    
-    @param[in] id Target destination's ID
- */
-void CpIapItem::saveShare(int id)
-{
-    OstTraceFunctionEntry0(CPIAPITEM_SAVESHARE_ENTRY);
-    try {
-        CmConnectionMethodShim *cm;
-        CmDestinationShim *source = mCmm->destination(mDestId);
-        cm = source->connectionMethodByID(mIapId);
-        delete source;
-        CmDestinationShim *target = mCmm->destination(id);
-        target->addConnectionMethod(cm);
-        target->update();
-        delete cm;
-        delete target;
-        OstTrace0(TRACE_NORMAL, CPIAPITEM_SAVESHARE, "CpIapItem::saveShare: Emit access point changed signal");
-        emit iapChanged();
-    } catch (const std::exception&) {
-        OstTrace0(TRACE_NORMAL, DUP1_CPIAPITEM_SAVESHARE, "CpIapItem::saveShare: Exception caught");
-        showErrorNote(hbTrId("txt_occ_info_unable_to_read_settings"));
-    }
-    OstTraceFunctionExit0(CPIAPITEM_SAVESHARE_EXIT);
-}
-
-/*!
-    Moves access point from current destination to given destination.
-    
-    @param[in] id Target destination's ID
- */
-void CpIapItem::saveMove(int id)
-{
-    OstTraceFunctionEntry0(CPIAPITEM_SAVEMOVE_ENTRY);
-    try {
-        // Make move in commsdat
-        CmConnectionMethodShim *cm = NULL;
-        if (mDestId != 0) {
-            CmDestinationShim *source = mCmm->destination(mDestId);
-            cm = source->connectionMethodByID(mIapId);
-            source->removeConnectionMethod(cm);
-            source->update();
-            delete source;
-        } else {
-            cm = mCmm->connectionMethod(mIapId);
-        }
-        CmDestinationShim *target = mCmm->destination(id);
-        target->addConnectionMethod(cm);
-        target->update();
-        delete target;
-        delete cm;
-    }
-    catch (const std::exception&) {
-        OstTrace0(TRACE_NORMAL, DUP1_CPIAPITEM_SAVEMOVE, "CpIapItem::saveMove: Exception caught");
-        showErrorNote(hbTrId("txt_occ_info_unable_to_save_setting"));
-    }
-    OstTrace0(TRACE_NORMAL, CPIAPITEM_SAVEMOVE, "CpIapItem::saveMove: Emit access point changed signal");
-    emit iapChanged(); 
-    OstTraceFunctionExit0(CPIAPITEM_SAVEMOVE_EXIT);
-}
-
-/*!
-    Tests if CmManagerShim has been created successfully
-    earlier. If not, it retries.
- */
-bool CpIapItem::isCmManagerAvailable()
-{
-    OstTraceFunctionEntry0(CPIAPITEM_ISCMMANAGERAVAILABLE_ENTRY);
-    bool retval = false;
-    if (mCmm == NULL) {
-        try {
-            mCmm = new CmManagerShim();
-            retval = true;
-        }
-        catch (const std::exception&) {
-            OstTrace0(TRACE_NORMAL, CPIAPITEM_ISCMMANAGERAVAILABLE, "CpIapItem::isCmManagerAvailable: Exception caught");
-            mCmm = NULL;
-        }
-    } else {
-        retval = true;
-    }
-    OstTraceFunctionExit0(CPIAPITEM_ISCMMANAGERAVAILABLE_EXIT);
-    return retval;
-}
-
-/*!
-    Helper function for creating item specific menu.
-    
-    @param[in] protLvl Effective protection level for this
-                       access point.
- */
-HbMenu *CpIapItem::createItemMenu(
-    bool cmConnected,
-    const QPointF &position)
-{
-    OstTraceFunctionEntry0(CPIAPITEM_CREATEITEMMENU_ENTRY);
-    HbMenu* menu = new HbMenu();
-    menu->setAttribute(Qt::WA_DeleteOnClose);
-    HbAction* openIapAction 
-            = menu->addAction(hbTrId("txt_common_menu_open"));
-    bool connected = connect(openIapAction, SIGNAL(triggered()), this, SLOT(openIap()));
-    Q_ASSERT(connected);
-    HbAction* moveIapAction 
-        = menu->addAction(hbTrId("txt_occ_menu_move_to_other_destination"));
-    connected = connect(moveIapAction, SIGNAL(triggered()), this, SLOT(moveIap()));
-    Q_ASSERT(connected);
-    HbAction* deleteIapAction 
-        = menu->addAction(hbTrId("txt_common_menu_delete"));
-    connected = connect(
-        deleteIapAction, 
-        SIGNAL(triggered()), 
-        this, 
-        SLOT(showDeleteConfirmation()));
-    Q_ASSERT(connected);
-    HbAction* shareIapAction 
-        = menu->addAction(hbTrId("txt_occ_menu_share_to_other_destination"));
-    connected = connect(shareIapAction, SIGNAL(triggered()), this, SLOT(shareIap()));
-    Q_ASSERT(connected);
-       
-    if (cmConnected) {
-        // Disable operations for connected APs
-        openIapAction->setDisabled(true);
-        moveIapAction->setDisabled(true);
-        deleteIapAction->setDisabled(true);
-        shareIapAction->setDisabled(true);
-    }
-    
-    // Can't share uncategorised APs
-    if (mDestId == 0)
-    {
-        shareIapAction->setDisabled(true);
-    }
-       
-    menu->setPreferredPos(position);
-    OstTraceFunctionExit0(CPIAPITEM_CREATEITEMMENU_EXIT);
-    return menu;
-}
-
-/*!
-    Helper function for showing error notes.
-    
-    @param[in] info Info string to be shown in note.
- */
-void CpIapItem::showErrorNote(const QString &info)
-{
-    OstTraceFunctionEntry0(CPIAPITEM_SHOWERRORNOTE_ENTRY);
-    HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeInformation);
-    note->clearActions();
-    note->setAttribute(Qt::WA_DeleteOnClose);
-    note->setText(info);
-    note->setTimeout(HbPopup::NoTimeout);
-    HbAction *errorOk = new HbAction(hbTrId("txt_common_button_ok"));                       
-    note->addAction(errorOk);
-    note->show();    
-    OstTraceFunctionExit0(CPIAPITEM_SHOWERRORNOTE_EXIT);
-}