cmmanager/cppacketdataapplugin/src/cppacketdataapview.cpp
branchRCL_3
changeset 58 83ca720e2b9a
parent 57 05bc53fe583b
child 62 bb1f80fb7db2
--- a/cmmanager/cppacketdataapplugin/src/cppacketdataapview.cpp	Tue Aug 31 15:35:44 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,596 +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:
-* Control Panel packet data AP settings view header file.  
-*
-*/
-
-// System includes
-#include <QString>
-#include <QStringList>
-#include <QVariant>
-#include <HbMainWindow>
-#include <HbMenu>
-#include <HbDataForm>
-#include <HbDataFormModel>
-#include <HbDataFormViewItem>
-#include <HbLineEdit>
-#include <HbEditorInterface>
-#include <HbUrlFilter>
-#include <HbPopup>
-#include <HbMessageBox>
-#include <HbAction>
-#include <cpsettingformitemdata.h>
-#include <cmconnectionmethod_shim.h>
-
-// User includes
-#include "cppacketdataapplugin.h"
-#include "cppacketdataapview.h"
-#include "cppacketdataapadvancedview.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "cppacketdataapviewTraces.h"
-#endif
-
-/*!
-    \class CpPacketDataApView
-    \brief Implements the settings view for packet data bearer access points.
-*/
-
-// External function prototypes
-
-// Local constants
-
-// ======== LOCAL FUNCTIONS ========
-
-// ======== MEMBER FUNCTIONS ========
-
-/*!
-    Constructor.
-*/
-CpPacketDataApView::CpPacketDataApView(
-    CmConnectionMethodShim *cmConnectionMethod,
-    QGraphicsItem *parent) :
-        CpBaseSettingView(0, parent),
-        mForm(0),
-        mModel(0),
-        mApSettingsGroupItem(0),
-        mConnectionNameItem(0),
-        mAccessPointNameItem(0),
-        mUserNameItem(0),
-        mPasswordItem(0),
-        mAuthenticationItem(0),
-        mHomepageItem(0),
-        mAdvancedSettingsAction(0),
-        mCmConnectionMethod(cmConnectionMethod),
-        mMessageBox(0)
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_CPPACKETDATAAPVIEW_ENTRY);
-    
-    HbMenu *menu = this->menu();
-    mAdvancedSettingsAction = menu->addAction(
-        hbTrId("txt_occ_opt_advanced_settings"));
-    bool status = connect(
-        menu,
-        SIGNAL(triggered(HbAction*)),
-        this,
-        SLOT(menuActionTriggered(HbAction*)));
-    Q_ASSERT(status);
-
-    // Construct packet data AP settings UI
-    mForm = new HbDataForm();
-    this->setWidget(mForm);
-    mModel = new HbDataFormModel(mForm);
-    mForm->setModel(mModel);
-    
-    // Add access point settings group
-    createAccessPointSettingsGroup();
-        
-    status = connect(
-        mForm,
-        SIGNAL(itemShown(const QModelIndex)),
-        this,
-        SLOT(setEditorPreferences(const QModelIndex)));
-    Q_ASSERT(status);
-
-    // Expand Access point settings group
-    mForm->setExpanded(mModel->indexFromItem(mApSettingsGroupItem), true);
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_CPPACKETDATAAPVIEW_EXIT);
-}
-
-/*!
-    Destructor.
-*/
-CpPacketDataApView::~CpPacketDataApView()
-{
-    OstTraceFunctionEntry0(DUP1_CPPACKETDATAAPVIEW_CPPACKETDATAAPVIEW_ENTRY);
-    
-    OstTraceFunctionExit0(DUP1_CPPACKETDATAAPVIEW_CPPACKETDATAAPVIEW_EXIT);
-}
-
-/*!
-    Adds settings group with all settings items to the model.
-*/
-void CpPacketDataApView::createAccessPointSettingsGroup()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_CREATEACCESSPOINTSETTINGSGROUP_ENTRY);
-    
-    // Access point settings group
-    mApSettingsGroupItem = new HbDataFormModelItem(
-        HbDataFormModelItem::GroupItem, 
-        hbTrId("txt_occ_subhead_access_point_settings"));
-    mModel->appendDataFormItem(mApSettingsGroupItem);
-    
-    // Connection name
-    mConnectionNameItem = new CpSettingFormItemData(
-        HbDataFormModelItem::TextItem,
-        hbTrId("txt_occ_setlabel_connection_name"));
-    // Connect signal and add item to group
-    mForm->addConnection(
-        mConnectionNameItem,
-        SIGNAL(editingFinished()),
-        this,
-        SLOT(connectionNameChanged()));
-    mConnectionNameItem->setContentWidgetData("objectName", "connectionNameEdit");
-    mApSettingsGroupItem->appendChild(mConnectionNameItem);
-    
-    // Access point name
-    mAccessPointNameItem = new CpSettingFormItemData(
-        HbDataFormModelItem::TextItem,
-        hbTrId("txt_occ_setlabel_access_point_name"));
-    // Connect signal and add item to group
-    mForm->addConnection(
-        mAccessPointNameItem,
-        SIGNAL(editingFinished()),
-        this,
-        SLOT(accessPointNameChanged()));
-    mAccessPointNameItem->setContentWidgetData("objectName", "accessPointNameEdit");
-    mApSettingsGroupItem->appendChild(mAccessPointNameItem);
-    
-    // User name
-    mUserNameItem = new CpSettingFormItemData(
-        HbDataFormModelItem::TextItem,
-        hbTrId("txt_occ_setlabel_user_name"));
-    // Connect signal and add item to group
-    mForm->addConnection(
-        mUserNameItem,
-        SIGNAL(editingFinished()),
-        this,
-        SLOT(userNameChanged()));
-    mUserNameItem->setContentWidgetData("objectName", "userNameEdit");
-    mApSettingsGroupItem->appendChild(mUserNameItem);
-    
-    // Password
-    mPasswordItem = new CpSettingFormItemData(
-        HbDataFormModelItem::TextItem,
-        hbTrId("txt_occ_setlabel_password"));
-    mPasswordItem->setContentWidgetData("echoMode", "PasswordEchoOnEdit");
-    // Connect signal and add item to group
-    mForm->addConnection(
-        mPasswordItem,
-        SIGNAL(editingFinished()),
-        this,
-        SLOT(passwordChanged()));
-    mPasswordItem->setContentWidgetData("objectName", "passwordEdit");
-    mApSettingsGroupItem->appendChild(mPasswordItem);
-    
-    // Authentication
-    mAuthenticationItem = new CpSettingFormItemData(
-        HbDataFormModelItem::ComboBoxItem,
-        hbTrId("txt_occ_setlabel_authentication"));
-    // Add items to combobox
-    QStringList authenticationItems;
-    authenticationItems
-        << hbTrId("txt_occ_setlabel_authentication_val_normal")
-        << hbTrId("txt_occ_setlabel_authentication_val_secure");
-    mAuthenticationItem->setContentWidgetData("items", authenticationItems);
-    // Construct map to link item indexes to setting values
-    mAuthenticationMap.insert(0, false); // normal (plaintext allowed)
-    mAuthenticationMap.insert(1, true); // secure (plaintext disabled)
-    // Connect signal and add item to group
-    mForm->addConnection(
-        mAuthenticationItem,
-        SIGNAL(currentIndexChanged(int)),
-        this,
-        SLOT(authenticationChanged(int)));
-    mAuthenticationItem->setContentWidgetData("objectName", "authenticationCB");
-    mApSettingsGroupItem->appendChild(mAuthenticationItem);
-    
-    // Homepage
-    mHomepageItem = new CpSettingFormItemData(
-        HbDataFormModelItem::TextItem,
-        hbTrId("txt_occ_setlabel_homepage"));
-    // Connect signal and add item to group
-    mForm->addConnection(
-        mHomepageItem,
-        SIGNAL(editingFinished()),
-        this,
-        SLOT(homepageChanged()));
-    mHomepageItem->setContentWidgetData("objectName", "homePageEdit");
-    mApSettingsGroupItem->appendChild(mHomepageItem);
-    
-    // Read settings from CommsDat and update widgets
-    updateAccessPointSettingsGroup();
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_CREATEACCESSPOINTSETTINGSGROUP_EXIT);
-}
-
-/*!
-    Reads attribute values and updates "Access point settings" group settings.
-*/
-void CpPacketDataApView::updateAccessPointSettingsGroup()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_UPDATEACCESSPOINTSETTINGSGROUP_ENTRY);
-
-    // Get attributes from CommsDat and set values to UI widgets
-    
-    // Connection name
-    QString connectionName = mCmConnectionMethod->getStringAttribute(
-        CMManagerShim::CmName);
-    mConnectionNameItem->setContentWidgetData("text", connectionName);
-    
-    // Access point name
-    QString accessPointName = mCmConnectionMethod->getStringAttribute(
-        CMManagerShim::PacketDataAPName);
-    mAccessPointNameItem->setContentWidgetData("text", accessPointName);
-    
-    // User name
-    QString userName = mCmConnectionMethod->getStringAttribute(
-        CMManagerShim::PacketDataIFAuthName);
-    mUserNameItem->setContentWidgetData("text", userName);
-    
-    // Password
-    QString password = mCmConnectionMethod->getStringAttribute(
-        CMManagerShim::PacketDataIFAuthPass);
-    mPasswordItem->setContentWidgetData("text", password);
-
-    // Authentication
-    bool disablePlainText = mCmConnectionMethod->getBoolAttribute(
-        CMManagerShim::PacketDataDisablePlainTextAuth);
-    mAuthenticationItem->setContentWidgetData("currentIndex",
-        mAuthenticationMap.key(disablePlainText));
-    
-    // Homepage
-    QString homepage = mCmConnectionMethod->getStringAttribute(
-        CMManagerShim::CmStartPage);
-    mHomepageItem->setContentWidgetData("text", homepage);
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_UPDATEACCESSPOINTSETTINGSGROUP_EXIT);
-}
-
-/*!
-    Shows message box with "OK" button using given text.
-*/
-void CpPacketDataApView::showMessageBox(
-    HbMessageBox::MessageBoxType type,
-    const QString &text)
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_SHOWMESSAGEBOX_ENTRY);
-    
-    // Create a message box
-    mMessageBox = QSharedPointer<HbMessageBox>(new HbMessageBox(type));
-    mMessageBox->setText(text);
-    mMessageBox->setModal(true);
-    mMessageBox->setTimeout(HbPopup::NoTimeout);
-    mMessageBox->open();
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_SHOWMESSAGEBOX_EXIT);
-}
-
-/*!
-    Tries to update connection method changes to CommsDat.
-    Returns "true" if success, "false" if some error happened. 
-*/
-bool CpPacketDataApView::tryUpdate()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_TRYUPDATE_ENTRY);
-    
-    // Try update
-    try {
-        mCmConnectionMethod->update();
-    }
-    catch (const std::exception&) {
-        // Handle error
-        handleUpdateError();
-        
-        OstTraceFunctionExit0(CPPACKETDATAAPVIEW_TRYUPDATE_EXIT);
-        return false;
-    }
-
-    OstTraceFunctionExit0(DUP1_CPPACKETDATAAPVIEW_TRYUPDATE_EXIT);
-    return true;
-}
-
-/*!
-    Handles failed CommsDat update.
- */
-void CpPacketDataApView::handleUpdateError()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_HANDLEUPDATEERROR_ENTRY);
-    
-    // Show error note to user
-    showMessageBox(
-        HbMessageBox::MessageTypeWarning,
-        hbTrId("txt_occ_info_unable_to_save_setting"));
-    // Reload settings from CommsDat and update UI
-    try {
-        mCmConnectionMethod->refresh();
-    }
-    catch (const std::exception&) {
-        // Ignore error from refresh. Most likely this will not happen, but
-        // if it does, there isn't very much we can do.
-        OstTrace0(
-            TRACE_ERROR,
-            CPPACKETDATAAPVIEW_HANDLEUPDATEERROR,
-            "Refresh failed");
-    };
-    updateAccessPointSettingsGroup();
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_HANDLEUPDATEERROR_EXIT);
-}
-
-/*!
-    Updates connection name to CommsDat.
-*/
-void CpPacketDataApView::connectionNameChanged()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_CONNECTIONNAMECHANGED_ENTRY);
-    
-    QString connectionName =
-        mConnectionNameItem->contentWidgetData("text").toString();
-    if (!connectionName.isEmpty()) {
-        // Update to CommsDat
-        mCmConnectionMethod->setStringAttribute(
-            CMManagerShim::CmName,
-            connectionName);
-        if (tryUpdate()) {
-            // Update successful
-            // Read name because in case the name already exists it will
-            // be made unique by CMManager
-            connectionName = mCmConnectionMethod->getStringAttribute(
-                CMManagerShim::CmName);
-            mConnectionNameItem->setContentWidgetData("text", connectionName);
-        }
-    } else {
-        // Inform user of invalid name
-        showMessageBox(
-            HbMessageBox::MessageTypeInformation,
-            hbTrId("txt_occ_info_invalid_name"));
-
-        // Empty name not allowed, revert back to old value in CommsDat
-        connectionName = mCmConnectionMethod->getStringAttribute(
-            CMManagerShim::CmName);
-        mConnectionNameItem->setContentWidgetData("text", connectionName);
-     }
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_CONNECTIONNAMECHANGED_EXIT);
-}
-
-/*!
-    Updates access point name to CommsDat.
-*/
-void CpPacketDataApView::accessPointNameChanged()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_ACCESSPOINTNAMECHANGED_ENTRY);
-    
-    // Update to CommsDat
-    QString accessPointName =
-        mAccessPointNameItem->contentWidgetData("text").toString();
-    if (!accessPointName.isEmpty()) {
-        mCmConnectionMethod->setStringAttribute(
-            CMManagerShim::PacketDataAPName,
-            accessPointName);
-        (void)tryUpdate();
-    } else {
-        // Inform user of invalid name
-        showMessageBox(
-            HbMessageBox::MessageTypeInformation,
-            hbTrId("txt_occ_info_invalid_name"));
-    
-        // Empty name not allowed, revert back to old value in CommsDat
-        accessPointName = mCmConnectionMethod->getStringAttribute(
-            CMManagerShim::PacketDataAPName);
-        mAccessPointNameItem->setContentWidgetData("text", accessPointName);
-    }
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_ACCESSPOINTNAMECHANGED_EXIT);
-}
-
-/*!
-    Updates user name to CommsDat.
-*/
-void CpPacketDataApView::userNameChanged()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_USERNAMECHANGED_ENTRY);
-    
-    // Update to CommsDat
-    QVariant userName = mUserNameItem->contentWidgetData("text");
-    mCmConnectionMethod->setStringAttribute(
-        CMManagerShim::PacketDataIFAuthName,
-        userName.toString());
-    (void)tryUpdate();
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_USERNAMECHANGED_EXIT);
-}
-
-/*!
-    Updates password to CommsDat.
-*/
-void CpPacketDataApView::passwordChanged()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_PASSWORDCHANGED_ENTRY);
-    
-    // Update to CommsDat
-    QVariant password = mPasswordItem->contentWidgetData("text");
-    mCmConnectionMethod->setStringAttribute(
-        CMManagerShim::PacketDataIFAuthPass,
-        password.toString());
-    (void)tryUpdate();
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_PASSWORDCHANGED_EXIT);
-}
-
-/*!
-    Updates authentication setting to CommsDat.
-*/
-void CpPacketDataApView::authenticationChanged(int index)
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_AUTHENTICATIONCHANGED_ENTRY);
-    
-    // Update to CommsDat
-    mCmConnectionMethod->setBoolAttribute(
-        CMManagerShim::PacketDataDisablePlainTextAuth,
-        mAuthenticationMap.value(index));
-    (void)tryUpdate();
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_AUTHENTICATIONCHANGED_EXIT);
-}
-
-/*!
-    Updates homepage to CommsDat.
-*/
-void CpPacketDataApView::homepageChanged()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_HOMEPAGECHANGED_ENTRY);
-    
-    // Update to CommsDat
-    QString homepage = mHomepageItem->contentWidgetData("text").toString();
-    mCmConnectionMethod->setStringAttribute(
-        CMManagerShim::CmStartPage, homepage);
-    (void)tryUpdate();
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_HOMEPAGECHANGED_EXIT);
-}
-
-/*!
-    Handles menu actions.
-*/
-void CpPacketDataApView::menuActionTriggered(HbAction *action)
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_MENUACTIONTRIGGERED_ENTRY);
-    
-    if (action == mAdvancedSettingsAction) {
-        // "Advanced settings" selected
-        HbMainWindow *mainWindow = this->mainWindow();
-
-        // Create the advanced settings view
-        HbView *newView = new CpPacketDataApAdvancedView(mCmConnectionMethod);
-        // Connect signal to return back to the previous view
-        bool status = QObject::connect(
-            newView,
-            SIGNAL(aboutToClose()),
-            this,
-            SLOT(restoreCurrentView()));
-        Q_ASSERT(status);
-
-        // Show the advanced settings view
-        mainWindow->addView(newView);
-        mainWindow->setCurrentView(newView);
-    }
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_MENUACTIONTRIGGERED_EXIT);
-}
-
-/*!
-    Deletes the current view and sets this view as the current one.
-*/
-void CpPacketDataApView::restoreCurrentView()
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_RESTORECURRENTVIEW_ENTRY);
-    
-    HbMainWindow *mainWindow = this->mainWindow();
-    
-    // Remove the previous view and delete it
-    HbView *prevView = mainWindow->currentView();
-    mainWindow->removeView(prevView);
-    prevView->deleteLater();
-    
-    // Set this view on top
-    mainWindow->setCurrentView(this);
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_RESTORECURRENTVIEW_EXIT);
-}
-
-/*!
-    Sets editor preferences for all HbLineEdit items.
-*/
-void CpPacketDataApView::setEditorPreferences(const QModelIndex modelIndex)
-{
-    OstTraceFunctionEntry0(CPPACKETDATAAPVIEW_SETEDITORPREFERENCES_ENTRY);
-    
-    HbDataFormViewItem *viewItem = qobject_cast<HbDataFormViewItem *>
-        (mForm->itemByIndex(modelIndex));
-    HbDataFormModelItem *modelItem = mModel->itemFromIndex(modelIndex);
-    
-    if (modelItem == mConnectionNameItem
-        || modelItem == mAccessPointNameItem
-        || modelItem == mUserNameItem
-        || modelItem == mPasswordItem
-        || modelItem == mHomepageItem ) {
-        // HbLineEdit items, get editor and editor interface
-        HbLineEdit *edit = qobject_cast<HbLineEdit *>
-            (viewItem->dataItemContentWidget());
-        HbEditorInterface editInterface(edit);
-        
-        if (modelItem == mConnectionNameItem) {
-            // Setup editor for connection name
-            editInterface.setInputConstraints(HbEditorConstraintLatinAlphabetOnly);
-            edit->setInputMethodHints(Qt::ImhNoPredictiveText); 
-            edit->setMaxLength(CMManagerShim::CmNameLength);
-        } else if (modelItem == mAccessPointNameItem) {
-            // Setup editor for packet data AP name
-            editInterface.setMode(HbInputModeNone);
-            editInterface.setInputConstraints(HbEditorConstraintLatinAlphabetOnly);
-            editInterface.setDigitType(HbDigitTypeNone);
-            edit->setInputMethodHints(
-                Qt::ImhNoPredictiveText
-                | Qt::ImhPreferLowercase);
-            edit->setMaxLength(CMManagerShim::PacketDataAPNameLength);
-        } else if (modelItem == mUserNameItem) {
-            // Setup editor for user name
-            editInterface.setMode(HbInputModeNone);
-            editInterface.setInputConstraints(HbEditorConstraintLatinAlphabetOnly);
-            editInterface.setEditorClass(HbInputEditorClassUsername);
-            editInterface.setDigitType(HbDigitTypeNone);
-            edit->setInputMethodHints(
-                Qt::ImhNoPredictiveText
-                | Qt::ImhPreferLowercase);
-            edit->setMaxLength(CMManagerShim::PacketDataIFAuthNameLength);
-        } else if (modelItem == mPasswordItem) {
-            // Setup editor for password
-            editInterface.setMode(HbInputModeNone);
-            editInterface.setInputConstraints(HbEditorConstraintLatinAlphabetOnly);
-            editInterface.setEditorClass(HbInputEditorClassPassword);
-            editInterface.setDigitType(HbDigitTypeNone);
-            edit->setInputMethodHints(
-                Qt::ImhNoPredictiveText
-                | Qt::ImhPreferLowercase);
-            edit->setMaxLength(CMManagerShim::PacketDataIFAuthPassLength);
-        } else { /* mHomepageItem */
-            // Setup editor for URL
-            editInterface.setMode(HbInputModeNone);
-            editInterface.setInputConstraints(HbEditorConstraintLatinAlphabetOnly);
-            editInterface.setFilter(HbUrlFilter::instance());
-            editInterface.setEditorClass(HbInputEditorClassUrl);
-            editInterface.setDigitType(HbDigitTypeNone);
-            edit->setInputMethodHints(
-                Qt::ImhNoPredictiveText
-                | Qt::ImhPreferLowercase);
-            edit->setMaxLength(CMManagerShim::CmStartPageLength);
-        }
-    }
-    
-    OstTraceFunctionExit0(CPPACKETDATAAPVIEW_SETEDITORPREFERENCES_EXIT);
-}