--- a/cmmanager/cpdestinationplugin/src/cpdestinationentryitem.cpp Tue Aug 31 15:35:44 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,835 +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:
-* This items represents one Destination in UI.
-*/
-
-// System includes
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbToolBar>
-#include <HbAction>
-#include <HbDataFormViewItem>
-#include <HbMenu>
-#include <HbInputDialog>
-#include <HbMessageBox>
-#include <HbPopup>
-#include <HbListWidget>
-#include <HbListWidgetItem>
-#include <HbMainWindow>
-#include <HbInstance>
-#include <HbParameterLengthLimiter>
-#include <cppluginutility.h>
-#include <cpitemdatahelper.h>
-#include <cpbasesettingview.h>
-#include <cmdestination_shim.h>
-#include <cmconnectionmethod_shim.h>
-#include <cmmanager_shim.h>
-
-// User includes
-#include "cpiapitem.h"
-#include "cpdestinationentryitem.h"
-#include "cpdestinationgroup.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "cpdestinationentryitemTraces.h"
-#endif
-/*!
- \class CpDestinationEntryItemData
- \brief This class represents destination in data model.
- It takes care of all destination related operations.
-*/
-
-// External function prototypes
-
-// Local constants
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
- Constructor.
-
- @param[in] itemDataHelper Helper for connecting signals and slots.
- */
-CpDestinationEntryItemData::CpDestinationEntryItemData(CpItemDataHelper &itemDataHelper)
- : CpSettingFormEntryItemData(CpSettingFormEntryItemData::ButtonEntryItem, itemDataHelper),
- mList(0),
- mDialog(0),
- mOkAction(0)
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA_ENTRY);
- mAps = new QList<CpIapItem*>();
- try {
- mCmm = new CmManagerShim();
- } catch (const std::exception&) {
- OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA, "CpDestinationEntryItemData::CpDestinationEntryItemData: Exception caught");
- mCmm = NULL;
- }
-
- // Fix connections
- itemDataHelper.removeConnection(this,SIGNAL(pressed()),this,SLOT(onLaunchView()));
- itemDataHelper.addConnection(this,SIGNAL(clicked()),this,SLOT(onLaunchView()));
- itemDataHelper.addConnection(this,SIGNAL(longPress(QPointF)),this,SLOT(showItemMenu(QPointF)));
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA_EXIT);
-}
-
-/*!
- Destructor
- */
-CpDestinationEntryItemData::~CpDestinationEntryItemData()
-{
- OstTraceFunctionEntry0(DUP1_CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA_ENTRY);
- delete mCmm;
- delete mAps;
- OstTraceFunctionExit0(DUP1_CPDESTINATIONENTRYITEMDATA_CPDESTINATIONENTRYITEMDATA_EXIT);
-}
-
-/*!
- \return unique destination ID of this item.
- */
-int CpDestinationEntryItemData::destinationId()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_DESTINATIONID_ENTRY);
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_DESTINATIONID_EXIT);
- return mDestinationId;
-}
-
-/*!
- Sets destination ID to be given integer.
- */
-void CpDestinationEntryItemData::setDestinationId(int destId)
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SETDESTINATIONID_ENTRY);
- mDestinationId = destId;
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SETDESTINATIONID_EXIT);
-}
-
-/*!
- \return Returns destination name as QString
- */
-QString CpDestinationEntryItemData::destinationName()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_DESTINATIONNAME_ENTRY);
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_DESTINATIONNAME_EXIT);
- return mDestinationName;
-}
-
-/*!
- Sets given QString to be destination name.
- */
-void CpDestinationEntryItemData::setDestinationName(const QString destinationName)
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SETDESTINATIONNAME_ENTRY);
- mDestinationName = destinationName;
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SETDESTINATIONNAME_EXIT);
-}
-
-/*!
- Inherited member from CpSettingFormEntryItemData. Returns view that contains
- all access points included in this destination item.
- */
-CpBaseSettingView *CpDestinationEntryItemData::createSettingView() const
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CREATESETTINGVIEW_ENTRY);
- CpBaseSettingView* view = new CpBaseSettingView();
- constructSettingView(view);
-
- // Toolbar. Allow arrange if more than one AP is shown
- if (mDestinationId != 0 && mAps->count() > 1) {
- HbToolBar *tb = view->toolBar();
- HbIcon arrangeIcon("qtg_mono_sort");
- HbAction *arrangeAction
- = tb->addAction(arrangeIcon, "", this, SLOT(activateArrangeMode()));
- }
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CREATESETTINGVIEW_EXIT);
- return view;
-}
-
-/*!
- Worker function for createSettingView(). Adds Access points to given view.
-
- @param[out] view Target view where settings are constructed.
- */
-void CpDestinationEntryItemData::constructSettingView(CpBaseSettingView *view) const
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CONSTRUCTSETTINGVIEW_ENTRY);
- mAps->clear();
- CpItemDataHelper *itemDataHelper = new CpItemDataHelper();
- HbDataForm *form = new HbDataForm();
- HbDataFormModel *model = new HbDataFormModel;
- form->setModel(model);
- model->setParent(form);
- view->setWidget(form);
- CpPluginUtility::addCpItemPrototype(form);
- QList<QSharedPointer<CmConnectionMethodShim> > apList;
- // Following won't throw exception
- fetchReferencedAps(apList, mCmm);
- form->setHeading(text());
-
- for (int i = 0; i < apList.count(); i++) {
- int apId = apList[i]->getIntAttribute(CMManagerShim::CmId);
- CpBearerApPluginInterface *bearerPlugin =
- static_cast<CpDestinationGroup*>(HbDataFormModelItem::parent())->findBearerPlugin(apId);
- bool apProtected = false;
- if (mDestinationId != 0) {
- CmDestinationShim *destination = mCmm->destination(mDestinationId);
- CMManagerShim::CmmProtectionLevel level = destination->protectionLevel();
- if (level == CMManagerShim::ProtLevel3) {
- apProtected = apList[i]->getBoolAttribute(CMManagerShim::CmProtected);
- } else if (level == CMManagerShim::ProtLevel1) {
- apProtected = true;
- }
- delete destination;
- }
-
- CpIapItem *iapDataItem;
- iapDataItem = new CpIapItem(
- *itemDataHelper,
- apId,
- apList[i]->getStringAttribute(CMManagerShim::CmName),
- mDestinationId,
- apProtected,
- bearerPlugin);
-
- // Add name to UI item
- iapDataItem->setContentWidgetData(
- QString("text"),
- apList[i]->getStringAttribute(CMManagerShim::CmName));
-
- // Add Icon if found
- HbIcon iapIcon(resolveApIcon(apList[i]));
- iapDataItem->setEntryItemIcon(iapIcon);
-
- // Add priority to item if not Uncategorised "Destination"
- if (mDestinationId != 0) {
- // Access Points are listed in priority order.
- QString priority = hbTrId("txt_occ_dblist_val_priority_l1").arg(i + 1);
- iapDataItem->setContentWidgetData(QString("additionalText"), priority);
- } else {
- iapDataItem->setContentWidgetData(QString("stretched"), true);
- }
-
- // Set item disabled if it is protected
- if (apProtected) {
- iapDataItem->setContentWidgetData(QString("enabled"), false);
- }
-
- // Add to model
- model->appendDataFormItem(iapDataItem);
-
- // Save and make connections
- mAps->append(iapDataItem);
- bool connected
- = connect(iapDataItem, SIGNAL(iapChanged()), this, SLOT(updateDestinationView()));
- Q_ASSERT(connected);
- }
-
- itemDataHelper->bindToForm(form);
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CONSTRUCTSETTINGVIEW_EXIT);
-}
-
-/*!
- Rebuilds view with access points after access points have changed.
- */
-void CpDestinationEntryItemData::updateDestinationView()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_UPDATEDESTINATIONVIEW_ENTRY);
- QList< HbMainWindow* > mainWindows = hbInstance->allMainWindows();
- HbMainWindow *mainWnd = mainWindows.front();
-
- if (mainWnd) {
- HbView *view = mainWnd->currentView();
- CpBaseSettingView *cpView = static_cast<CpBaseSettingView *>(view);
- constructSettingView(cpView);
-
- // Remove Toolbar if necessary
- if (mDestinationId != 0 && mAps->count() <= 1) {
- HbToolBar *tb = view->toolBar();
- tb->clearActions();
- }
- }
- OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_UPDATEDESTINATIONVIEW, "CpDestinationEntryItemData::updateDestinationView: Emit destination changed");
- emit destChanged();
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_UPDATEDESTINATIONVIEW_EXIT);
-}
-
-/*!
- Prompts user for action after long tap. Choices for actions are "Rename" and "Delete".
-
- @param[in] position The item specific menu is shown in given position.
- */
-void CpDestinationEntryItemData::showItemMenu(QPointF position)
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SHOWITEMMENU_ENTRY);
- if (mDestinationId != 0) {
- CmDestinationShim *destination = NULL;
- CMManagerShim::CmmProtectionLevel protLvl = CMManagerShim::ProtLevel1;
-
- try {
- destination = mCmm->destination(mDestinationId);
- protLvl = destination->protectionLevel();
- delete destination;
- } catch (const std::exception&) {
- OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_SHOWITEMMENU, "CpDestinationEntryItemData::showItemMenu: Exception caught");
- if (destination != NULL) {
- delete destination;
- }
- }
-
- HbMenu *menu = createItemMenu(protLvl, position);
- menu->show();
- }
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SHOWITEMMENU_EXIT);
-}
-
-/*!
- Opens selected destination.
- */
-void CpDestinationEntryItemData::openDestination()
-{
- onLaunchView();
-}
-
-/*!
- Prompts user for new destination name and makes
- the change in commsdat if new name is valid.
-
- \sa isDestinationNameValid()
- */
-void CpDestinationEntryItemData::renameDestination()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_RENAMEDESTINATION_ENTRY);
- mDialog = new HbInputDialog();
- mDialog->setAttribute(Qt::WA_DeleteOnClose);
- mDialog->lineEdit()->setMaxLength(CMManagerShim::CmNameLength);
- mDialog->clearActions();
- mDialog->setPromptText(hbTrId("txt_occ_dialog_destination_name"));
- mDialog->setInputMode(HbInputDialog::TextInput);
- mDialog->setValue(mDestinationName);
- mOkAction = new HbAction(
- hbTrId("txt_common_button_ok"),
- mDialog);
- bool connected = connect(mOkAction,
- SIGNAL(triggered()),
- this,
- SLOT(saveNewDestinationName()));
- Q_ASSERT(connected);
- HbAction *cancelAction = new HbAction(
- hbTrId("txt_common_button_cancel"),
- mDialog);
- mDialog->addAction(mOkAction);
- mDialog->addAction(cancelAction);
- mDialog->show();
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_RENAMEDESTINATION_EXIT);
-}
-
-/*!
- Shows confirmation query for user before deleteting destination.
- \sa deleteDestination()
- */
-void CpDestinationEntryItemData::confirmDestinationDelete()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CONFIRMDESTINATIONDELETE_ENTRY);
- HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
- note->setAttribute(Qt::WA_DeleteOnClose);
- note->setText(HbParameterLengthLimiter(
- "txt_occ_info_delete_snap").arg(mDestinationName));
- note->clearActions();
- HbAction *okAction = new HbAction(
- hbTrId("txt_common_button_yes"),
- note);
- note->addAction(okAction);
- bool connected = connect(
- okAction,
- SIGNAL(triggered()),
- this,
- SLOT(deleteDestination()));
- Q_ASSERT(connected);
- HbAction *cancelAction = new HbAction(
- hbTrId("txt_common_button_no"),
- note);
- note->addAction(cancelAction);
- note->setTimeout(HbPopup::NoTimeout);
- note->show();
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CONFIRMDESTINATIONDELETE_EXIT);
-}
-
-/*!
- Destination is deleted after user chooses "OK" from destination deletion
- confirmation query.
- \sa confirmDestinationDelete()
- */
-void CpDestinationEntryItemData::deleteDestination()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_DELETEDESTINATION_ENTRY);
- CmDestinationShim *destination = NULL;
- CmConnectionMethodShim *cm = NULL;
- try {
- destination = mCmm->destination(mDestinationId);
- int cmCount = destination->connectionMethodCount();
- while (cmCount > 0) {
- cm = destination->connectionMethod(0);
- destination->removeConnectionMethod(cm);
- cmCount--;
- delete cm;
- cm = NULL;
- }
- destination->update();
- destination->deleteDestination();
- CpDestinationGroup *parent
- = static_cast<CpDestinationGroup *>(HbDataFormModelItem::parent());
- parent->deleteDestination(mDestinationId);
- delete destination;
- } catch (const std::exception&) {
- OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_DELETEDESTINATION, "CpDestinationEntryItemData::deleteDestination: Exception caught");
- if (destination != NULL) {
- delete destination;
- }
- if (cm != NULL) {
- delete cm;
- }
- showErrorNote(hbTrId("txt_occ_info_unable_to_save_setting"));
- }
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_DELETEDESTINATION_EXIT);
-}
-
-/*!
- Creates new view where access point priorities can
- be changed by dragging and dropping and shows it to user.
- */
-void CpDestinationEntryItemData::activateArrangeMode()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_ACTIVATEARRANGEMODE_ENTRY);
- QList< HbMainWindow* > mainWindows = hbInstance->allMainWindows();
- HbMainWindow *mainWnd = mainWindows.front();
- HbView *view = new HbView();
- createArrangeModeView(view);
- mList->installEventFilter(this);
-
- if (mainWnd && view) {
- mPreView = mainWnd->currentView();
- mainWnd->addView(view);
- mainWnd->setCurrentView(view, false);
- HbAction *arrangeViewBackAction = new HbAction(Hb::BackNaviAction, view);
- bool connected = connect(
- arrangeViewBackAction,
- SIGNAL(triggered()),
- this,
- SLOT(viewCancel()));
- Q_ASSERT(connected);
- view->setNavigationAction(arrangeViewBackAction);
- }
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_ACTIVATEARRANGEMODE_EXIT);
-}
-
-/*!
- This function is called when user returns from arrange mode with
- toolbar command "Done" thus accapting the changes. New priorities
- are saved to commsdat according to order of the items in the previous view.
- */
-void CpDestinationEntryItemData::viewDone()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_VIEWDONE_ENTRY);
- try {
- // Arrange items
- CmDestinationShim *destination = mCmm->destination(mDestinationId);
- for (int i = 0; i < mList->count(); i++) {
- int apId = mList->item(i)->data(Hb::IndexFeedbackRole).toInt();
- CmConnectionMethodShim *cm = mCmm->connectionMethod(apId);
- destination->modifyPriority(cm,i);
- delete cm;
- }
- destination->update();
- delete destination;
- } catch (const std::exception&) {
- OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_VIEWDONE, "CpDestinationEntryItemData::viewDone: Exception caught");
- viewCancel();
- showErrorNote(QString("txt_occ_info_unable_to_save_setting"));
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_VIEWDONE_EXIT);
- return;
- }
-
- QList< HbMainWindow* > mainWindows = hbInstance->allMainWindows();
- HbMainWindow *mainWnd = mainWindows.front();
- HbView* view = mainWnd->currentView();
-
- if (mainWnd && view) {
- //restore previous status
- mList->removeEventFilter(this);
- mainWnd->removeView(view);
- mainWnd->setCurrentView(mPreView);
- mPreView = NULL;
- }
- updateDestinationView();
- OstTraceFunctionExit0(DUP1_CPDESTINATIONENTRYITEMDATA_VIEWDONE_EXIT);
-}
-
-/*!
- User returns from view without accepting the changes to priorities.
- */
-void CpDestinationEntryItemData::viewCancel()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_VIEWCANCEL_ENTRY);
- QList< HbMainWindow* > mainWindows = hbInstance->allMainWindows();
- HbMainWindow *mainWnd = mainWindows.front();
- HbView* view = mainWnd->currentView();
-
- if (mainWnd && view) {
- //restore previous status
- mList->removeEventFilter(this);
- mainWnd->removeView(view);
- view->deleteLater();
- mainWnd->setCurrentView(mPreView);
- mPreView = NULL;
- }
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_VIEWCANCEL_EXIT);
-}
-
-/*!
- This function updates access points priorities shown in UI
- when user is in arrange mode.
-
- \sa activateArrangeMode()
- */
-void CpDestinationEntryItemData::updateIndex()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_UPDATEINDEX_ENTRY);
- for (int i = 0; i < mList->count(); i++) {
- HbListWidgetItem *item = mList->item(i);
- QString priority = hbTrId("txt_occ_dblist_val_priority_l1").arg(i + 1);
- item->setSecondaryText(priority);
- }
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_UPDATEINDEX_EXIT);
-}
-
-/*!
- This function searches all connection methods from commsdat that are
- connected to this destination item. Connection methods are returned in
- apList reference parameter.
-
- @param[out] apList Constains list of this destination's accesspoints.
- @param[in] cmm Pointer to CmManagerShim instance to avoid multiple session openings.
- */
-void CpDestinationEntryItemData::fetchReferencedAps(
- QList<QSharedPointer<CmConnectionMethodShim> > &apList,
- const CmManagerShim *cmm) const
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_FETCHREFERENCEDAPS_ENTRY);
- CmDestinationShim *destination = NULL;
- try {
- if (mDestinationId == 0) {
- QList<uint> apIds;
- cmm->connectionMethod(apIds);
- for (int i = 0; i < apIds.count(); i++) {
- CmConnectionMethodShim *cm;
- cm = cmm->connectionMethod(apIds.at(i));
- if (!cm->getBoolAttribute(CMManagerShim::CmHidden)) {
- apList.append(QSharedPointer<CmConnectionMethodShim>(cm));
- } else {
- delete cm;
- }
- }
- } else {
- destination = cmm->destination(mDestinationId);
- int apCount = destination->connectionMethodCount();
- for (int i = 0; i < apCount; i++) {
- CmConnectionMethodShim *cm = NULL;
- cm = destination->connectionMethod(i);
- if (!cm->getBoolAttribute(CMManagerShim::CmDestination)
- && !cm->getBoolAttribute(CMManagerShim::CmHidden)) {
- apList.append(QSharedPointer<CmConnectionMethodShim>(cm));
- } else {
- delete cm;
- }
- }
- delete destination;
- }
- } catch (const std::exception&) {
- OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_FETCHREFERENCEDAPS, "CpDestinationEntryItemData::fetchReferencedAps: Exception caught");
- if (destination != NULL) {
- delete destination;
- }
- }
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_FETCHREFERENCEDAPS_EXIT);
-}
-
-/*!
- Function for checking if the given destination name is valid. Duplicate and
- and empty names are rejected.
-
- @param[out] destination Constains the destination name to be validated. If name
- is valid it remains unchanged. If the given name is invalid, appropriate
- error text is set the variable.
- @param[in] cmm Pointer to CmManagerShim instance to avoid multiple session openings.
-
- \return true if name is valid.
- */
-bool CpDestinationEntryItemData::isDestinationNameValid(
- QString &destination,
- const CmManagerShim *cmm)
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_ISDESTINATIONNAMEVALID_ENTRY);
- bool retVal = true;
-
- if (destination.length() > 0) {
- QList<uint> destinationList;
- cmm->allDestinations(destinationList);
-
- for (int i = 0; i < destinationList.count(); i ++) {
- CmDestinationShim *dest = cmm->destination(destinationList[i]);
- if (0 == destination.compare(dest->name())) {
- destination = hbTrId("txt_occ_info_name_already_in_use");
- retVal = false;
- delete dest;
- break;
- }
- delete dest;
- }
- } else {
- destination = hbTrId("txt_occ_info_invalid_name");
- retVal = false;
- }
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_ISDESTINATIONNAMEVALID_EXIT);
- return retVal;
-}
-
-/*!
- Worker function for activateArrangeMode(). Adds list of access points
- to given view.
-
- @param[out] view Target view where the arrange mode is constructed.
-
- \sa activateArrangeMode()
- */
-void CpDestinationEntryItemData::createArrangeModeView(HbView *view)
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CREATEARRANGEMODEVIEW_ENTRY);
- QList<QSharedPointer<CmConnectionMethodShim> > apList;
- fetchReferencedAps(apList, mCmm);
- CmDestinationShim *destination = NULL;
- mList = new HbListWidget();
- view->setWidget(mList);
-
- try {
- destination = mCmm->destination(mDestinationId);
- for (int i = 0; i < apList.count(); i++) {
- HbListWidgetItem *item = new HbListWidgetItem();
- item->setText(apList[i]->getStringAttribute(CMManagerShim::CmName));
- item->setData(apList[i]->getIntAttribute(CMManagerShim::CmId), Hb::IndexFeedbackRole);
-
- uint pri = destination->priority(apList[i].data());
- QString priority = hbTrId("txt_occ_dblist_val_priority_l1").arg(pri);
- item->setSecondaryText(priority);
-
- HbIcon iapIcon(resolveApIcon(apList[i]));
- item->setIcon(iapIcon);
-
- mList->addItem(item);
- }
- mList->setArrangeMode(true);
- delete destination;
- } catch (const std::exception&) {
- OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_CREATEARRANGEMODEVIEW, "CpDestinationEntryItemData::createArrangeModeView: Exception caught");
- // return empty view
- if (destination != NULL) {
- delete destination;
- }
- while (mList->count() > 0) {
- HbListWidgetItem *item = mList->item(0);
- delete item;
- }
- mList->clear();
- }
- // Toolbar
- HbToolBar *tb = view->toolBar();
- HbIcon okIcon("qtg_mono_tick");
- HbAction *doneAction
- = tb->addAction(okIcon, "", this, SLOT(viewDone()));
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CREATEARRANGEMODEVIEW_EXIT);
-}
-
-/*!
- Helper function for creating item specific menu.
-
- @param[in] protLvl Effective protection level for this
- access point.
- */
-HbMenu *CpDestinationEntryItemData::createItemMenu(
- CMManagerShim::CmmProtectionLevel protLvl,
- const QPointF position)
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_CREATEITEMMENU_ENTRY);
- HbMenu *menu = new HbMenu();
- menu->setAttribute(Qt::WA_DeleteOnClose);
- HbAction *openDestAction = menu->addAction(hbTrId("txt_common_menu_open"));
- bool connected =
- connect(openDestAction, SIGNAL(triggered()), this, SLOT(openDestination()));
- Q_ASSERT(connected);
- HbAction *renameDestAction = menu->addAction(hbTrId("txt_common_menu_rename_item"));
- connected =
- connect(renameDestAction, SIGNAL(triggered()), this, SLOT(renameDestination()));
- Q_ASSERT(connected);
- HbAction *deleteDestAction = menu->addAction(hbTrId("txt_common_menu_delete"));
- connected =
- connect(deleteDestAction, SIGNAL(triggered()), this, SLOT(confirmDestinationDelete()));
- Q_ASSERT(connected);
-
- if (protLvl == CMManagerShim::ProtLevel1
- || protLvl == CMManagerShim::ProtLevel2 ) {
-
- // Disable operations for protected destinations
- renameDestAction->setDisabled(true);
- deleteDestAction->setDisabled(true);
- }
-
- menu->setModal(true);
- menu->setPreferredPos(position);
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_CREATEITEMMENU_EXIT);
- return menu;
-}
-
-/*!
- This function is called when user selects OK from destination
- name query popup. The given name is validated and if the name is
- valid, new destination name is saved to commsdat. If validation fails
- user is prompted again for destination name.
- */
-void CpDestinationEntryItemData::saveNewDestinationName()
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SAVENEWDESTINATIONNAME_ENTRY);
- QString destinationName = mDialog->value().toString();
- if (destinationName != mDestinationName) {
- // Destination name was changed
- bool destinationNameInvalid = true;
- CmManagerShim *cmm = NULL;
- CmDestinationShim *destination = NULL;
-
- try {
- cmm = new CmManagerShim();
- if (isDestinationNameValid(destinationName, cmm)) {
- destination = cmm->destination(mDestinationId);
- destination->setName(destinationName);
- destination->update();
- mDestinationName = destinationName;
- destinationNameInvalid = false;
- }
- } catch (const std::exception&) {
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SAVENEWDESTINATIONNAME_EXIT);
- return;
- }
- delete destination;
- delete cmm;
-
- if (destinationNameInvalid) {
- // Validation function has modified destination name
- // to be error string
- showRenameError(destinationName);
- } else {
- OstTrace0(TRACE_NORMAL, CPDESTINATIONENTRYITEMDATA_SAVENEWDESTINATIONNAME, "CpDestinationEntryItemData::saveNewDestinationName: emit destination changed");
- emit destChanged();
- }
- }
- OstTraceFunctionExit0(DUP1_CPDESTINATIONENTRYITEMDATA_SAVENEWDESTINATIONNAME_EXIT);
-}
-
-/*!
- * Helper function for showing error note when user inputs
- * invalid destination name.
- */
-void CpDestinationEntryItemData::showRenameError(const QString &info)
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SHOWRENAMEERROR_ENTRY);
- // Destination name NOK. Inform user and ask again.
- 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);
- bool connected = connect(
- errorOk,
- SIGNAL(triggered()),
- this,
- SLOT(renameDestination()));
- Q_ASSERT(connected);
- note->addAction(errorOk);
- note->show();
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SHOWRENAMEERROR_EXIT);
-}
-
-/*!
- Helper function for showing error notes.
-
- @param[in] info Info string to be shown in note.
- */
-void CpDestinationEntryItemData::showErrorNote(const QString &info)
-{
- OstTraceFunctionEntry0(CPDESTINATIONENTRYITEMDATA_SHOWERRORNOTE_ENTRY);
- HbMessageBox *note = new HbMessageBox(HbMessageBox::MessageTypeWarning);
- note->clearActions();
- note->setAttribute(Qt::WA_DeleteOnClose);
- note->setText(info);
- note->setTimeout(HbPopup::NoTimeout);
- HbAction *errorOk = new HbAction(
- hbTrId("txt_common_button_ok"),
- note);
- note->addAction(errorOk);
- note->show();
- OstTraceFunctionExit0(CPDESTINATIONENTRYITEMDATA_SHOWERRORNOTE_EXIT);
-}
-
-/*!
- Helper function for showing icons.
-
- \return Returns string representing given destination's icon
- */
-QString CpDestinationEntryItemData::resolveApIcon(QSharedPointer<CmConnectionMethodShim> cm) const
-{
- QString result(cm->getIcon());
-
- if (result.isEmpty()) {
- uint bearerType = cm->getIntAttribute(CMManagerShim::CmBearerType);
- switch (bearerType) {
- case CMManagerShim::BearerTypeWlan:
- result = "qtg_small_wlan";
- break;
- case CMManagerShim::BearerTypePacketData:
- result = "qtg_small_gprs";
- break;
- default:
- // Unknown bearer type
- break;
- }
- }
- return result;
-}
-
-/*!
- Event filter for updating priorities when arrange mode is active.
-
- \return Returns false so that event gets forwarded
- */
-bool CpDestinationEntryItemData::eventFilter(QObject *object, QEvent *event)
-{
- Q_UNUSED(object);
- if (event->type() == QEvent::GraphicsSceneMouseRelease) {
- updateIndex();
- }
- return false;
-}
-