messagingapp/msgsettings/msgsettingsplugin.deprecated/src/msgadvancedsettingsform.cpp
changeset 23 238255e8b033
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgsettings/msgsettingsplugin.deprecated/src/msgadvancedsettingsform.cpp	Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,634 @@
+/*
+ * Copyright (c) 2009 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 class is for drawing form for advanced view 
+ * settings
+ *
+ */
+
+#include "msgadvancedsettingsform.h"
+#include "msgsettingengine.h"
+
+#include <hbdataformviewitem.h>
+#include <hbdataformmodelitem.h>
+#include <hbdataformmodel.h>
+#include <hbpushbutton.h>
+#include <hbcombobox.h>
+#include <hbinputeditorinterface.h>
+#include <HbLineEdit>
+#include <QStandardItemModel>
+#include "debugtraces.h"
+
+//Localized Strings
+#define LOC_ADVANCED_SETTINGS hbTrId("txt_messaging_title_advanced_settings_messaging")
+#define LOC_MMS_SETTINGS hbTrId("txt_messaging_subhead_mms_settings")
+#define LOC_SMS_CENTRE_SETTINGS hbTrId("txt_messaging_subhead_sms_message_centre_settings")
+#define LOC_MMS_CREATION_MODE hbTrId("txt_messaging_setlabel_mms_creation_mode")
+#define LOC_MMS_RETRIEVAL hbTrId("txt_messaging_setlabel_mms_retrieval")
+#define LOC_ALLOW_ANONYMOUS_MMS hbTrId("txt_messaging_setlabel_allow_anonymous_mms_message")
+#define LOC_RECEIVE_MMS_ADVERTS hbTrId("txt_messaging_setlabel_receive_mms_adverts")
+#define LOC_MMS_AP_IN_USE hbTrId("txt_messaging_setlabel_mms_access_point_in_use")
+#define LOC_SMS_CENTRE_IN_USE hbTrId("txt_messaging_setlabel_sms_message_centre_in_use")
+#define LOC_ADD_NEW hbTrId("txt_messaging_button_add_new")
+
+#define LOC_RESTRICTED hbTrId("txt_messaging_setlabel_val_restricted")
+#define LOC_GUIDED hbTrId("txt_messaging_setlabel_val_guided")
+#define LOC_FREE hbTrId("txt_messaging_setlabel_val_free")
+
+#define LOC_ALWAYS_AUTOMATIC hbTrId("txt_messaging_setlabel_val_always_automatic")
+#define LOC_AUTO_HOME_NETWORK hbTrId("txt_messaging_setlabel_val_auto_home_network")
+#define LOC_MANUAL hbTrId("txt_messaging_setlabel_val_mannual")
+#define LOC_ON hbTrId("txt_messaging_setlabel_val_on")
+#define LOC_OFF hbTrId("txt_messaging_setlabel_val_off")
+
+#define LOC_MMS_YES hbTrId("txt_messaging_setlabel_allow_anonymous_mms_val_yes")
+#define LOC_MMS_NO hbTrId("txt_messaging_setlabel_allow_anonymous_mms_val_no")
+
+
+MsgAdvancedSettingsForm::MsgAdvancedSettingsForm(QGraphicsItem *parent) :
+    HbDataForm(parent), mSmsServiceCenterModel(0), mEditEmailGateway(NULL),
+        mEditEmailServiceNumber(NULL), mDefaultServiceCenter(0)
+{
+    this->setHeading(LOC_ADVANCED_SETTINGS);
+
+    mSettingEngine = new MsgSettingEngine();
+
+    initGroupPageName();
+    initSettingModel();
+
+    connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(onItemActivated(QModelIndex)));
+
+}
+
+MsgAdvancedSettingsForm::~MsgAdvancedSettingsForm()
+{
+    delete mSettingEngine;
+}
+
+void MsgAdvancedSettingsForm::initGroupPageName()
+{
+    mGroupPageName << LOC_MMS_SETTINGS 
+                   << LOC_SMS_CENTRE_SETTINGS 
+                   << tr("SMS E-mail settings");
+
+    mmsSettingsGroup << LOC_MMS_CREATION_MODE 
+                     << LOC_MMS_RETRIEVAL 
+                     << LOC_ALLOW_ANONYMOUS_MMS 
+                     << LOC_RECEIVE_MMS_ADVERTS 
+                     << LOC_MMS_AP_IN_USE;
+
+    mSmsMCSettingsGroup << LOC_SMS_CENTRE_IN_USE 
+                        << LOC_ADD_NEW;
+
+    mSmsEmailSettingsGroup << tr("E-mail gateway") << tr("E-mail service centre number");
+}
+
+void MsgAdvancedSettingsForm::initSettingModel()
+{
+    HbDataFormModel *advancedSettingsmodel = new HbDataFormModel();
+
+    mMMSGroup = new HbDataFormModelItem(HbDataFormModelItem::GroupItem, mGroupPageName.at(0), 0);
+
+    HbDataFormModelItem* rootItem = advancedSettingsmodel->invisibleRootItem();
+
+    advancedSettingsmodel->appendDataFormItem(mMMSGroup, rootItem);
+
+    addMMSGroupItem(mMMSGroup);
+
+    mSmsMCGroup = new HbDataFormModelItem(HbDataFormModelItem::GroupItem, mGroupPageName.at(1), 0);
+
+    advancedSettingsmodel->appendDataFormItem(mSmsMCGroup, rootItem);
+
+    addSmsMCGroupItem(mSmsMCGroup, advancedSettingsmodel);
+
+    mSmsEmailGroup = new HbDataFormModelItem(HbDataFormModelItem::GroupItem, mGroupPageName.at(2),
+        0);
+
+    advancedSettingsmodel->appendDataFormItem(mSmsEmailGroup, rootItem);
+
+    addSmsEmailGroupItem(mSmsEmailGroup);
+
+    this->setModel(advancedSettingsmodel);
+}
+
+void MsgAdvancedSettingsForm::addMMSGroupItem(HbDataFormModelItem* parent)
+{
+    //read settings
+    MsgSettingEngine::MmsCreationMode creationMode = MsgSettingEngine::Guided;
+    MsgSettingEngine::MmsRetrieval retrieval = MsgSettingEngine::AlwaysAutomatic;
+    bool allowAnonymous = true;
+    bool allowAdverts = true;
+
+    mSettingEngine->advanceMmsSettings(creationMode, retrieval, allowAnonymous, allowAdverts);
+    // add all the mmss group item
+    HbDataFormModelItem *mmsCreationMode = new HbDataFormModelItem(
+        HbDataFormModelItem::ComboBoxItem, mmsSettingsGroup.at(0), 0);
+
+    QStringList mmsCreationModeList;
+    mmsCreationModeList << LOC_RESTRICTED 
+                        << LOC_GUIDED 
+                        << LOC_FREE;
+
+    mmsCreationMode->setContentWidgetData("items", mmsCreationModeList);
+    mmsCreationMode->setContentWidgetData("currentIndex", int(creationMode));
+
+    HbDataFormModelItem *mmsRetrieval = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem,
+        mmsSettingsGroup.at(1), 0);
+
+    QStringList mmsRetrievalList;
+    mmsRetrievalList << LOC_ALWAYS_AUTOMATIC 
+                     << LOC_AUTO_HOME_NETWORK 
+                     << LOC_MANUAL
+                     << LOC_OFF
+                     << LOC_ON;
+
+    mmsRetrieval->setContentWidgetData("items", mmsRetrievalList);
+    mmsRetrieval->setContentWidgetData("currentIndex", int(retrieval));
+
+    HbDataFormModelItem *anonymousMMS = new HbDataFormModelItem(
+        HbDataFormModelItem::ToggleValueItem, mmsSettingsGroup.at(2), 0);
+
+    QStringList anonymousMMSList;
+    anonymousMMSList << LOC_MMS_NO 
+                     << LOC_MMS_YES;
+
+    int defaultIndex = int(allowAnonymous);
+    int alternateIndex = (defaultIndex + 1) % anonymousMMSList.count();
+
+    anonymousMMS->setContentWidgetData("text", anonymousMMSList.at(defaultIndex));
+    anonymousMMS->setContentWidgetData("additionalText", anonymousMMSList.at(alternateIndex));
+
+    HbDataFormModelItem *mmsAdverts = new HbDataFormModelItem(HbDataFormModelItem::ToggleValueItem,
+        mmsSettingsGroup.at(3), 0);
+
+    QStringList mmsAdvertsList;
+    mmsAdvertsList << LOC_MMS_NO 
+                   << LOC_MMS_YES;
+
+    defaultIndex = int(allowAdverts);
+    alternateIndex = (defaultIndex + 1) % mmsAdvertsList.count();
+
+    mmsAdverts->setContentWidgetData("text", mmsAdvertsList.at(defaultIndex));
+    mmsAdverts->setContentWidgetData("additionalText", mmsAdvertsList.at(alternateIndex));
+
+    HbDataFormModelItem *accessPoint = new HbDataFormModelItem(HbDataFormModelItem::ComboBoxItem,
+        mmsSettingsGroup.at(4), 0);
+
+    QStandardItemModel* comboModel = new QStandardItemModel();
+
+    QStringList mmsList;
+    int defaultAccessPointIndex = -1;
+
+    mSettingEngine->allMMsAcessPoints(mmsList, defaultAccessPointIndex);
+    int accessPoints = mmsList.count();
+    for (int a = 0; a < accessPoints; ++a) {
+        QStandardItem* item = new QStandardItem();
+        item->setData(mmsList[a], Qt::DisplayRole);
+        comboModel->appendRow(item);
+    }
+    accessPoint->setModel(comboModel);
+    accessPoint->setContentWidgetData("items", mmsList);
+    if (defaultAccessPointIndex >= 0) {
+        accessPoint->setContentWidgetData("currentIndex", defaultAccessPointIndex);
+    }
+
+    parent->appendChild(mmsCreationMode);
+    parent->appendChild(mmsRetrieval);
+    parent->appendChild(anonymousMMS);
+    parent->appendChild(mmsAdverts);
+    parent->appendChild(accessPoint);
+}
+
+void MsgAdvancedSettingsForm::addSmsMCGroupItem(HbDataFormModelItem* parent,
+    HbDataFormModel* advancedSettingsmodel)
+{
+    // add all the sms message center group item
+    HbDataFormModelItem *smsMessageCenter = new HbDataFormModelItem(
+        HbDataFormModelItem::ComboBoxItem, mSmsMCSettingsGroup.at(0), 0);
+
+    mSettingEngine->allSMSMessageCenter(mSmsServiceList, mDefaultServiceCenter);
+
+    //create and fill service center model.
+    createServiceCenterModel();
+
+    smsMessageCenter->setContentWidgetData("currentIndex", mDefaultServiceCenter);
+    parent->appendChild(smsMessageCenter);
+
+    //CUSTOM SETTING ITEM HbButton
+    HbDataFormModelItem::DataItemType customButtonGeneral =
+        static_cast<HbDataFormModelItem::DataItemType> (HbDataFormModelItem::CustomItemBase + 1);
+
+    int totalServices = mSmsServiceList.count();
+    for (int index = 0; index < totalServices; index++) {
+        HbDataFormModelItem *newMessageCenters = advancedSettingsmodel->appendDataFormItem(
+            customButtonGeneral, QString(""), parent);
+
+        newMessageCenters->setData(HbDataFormModelItem::KeyRole, mSmsServiceList.at(index));
+    }
+
+    HbDataFormModelItem *newMessageCenters = advancedSettingsmodel->appendDataFormItem(
+        customButtonGeneral, QString(""), parent);
+
+    newMessageCenters->setData(HbDataFormModelItem::KeyRole, mSmsMCSettingsGroup.at(1));
+}
+
+void MsgAdvancedSettingsForm::addSmsEmailGroupItem(HbDataFormModelItem* parent)
+{
+    QString emailSmsNum = QString();
+    QString emailGatewayTxt = QString();
+
+    mSettingEngine->emailEmailGatewayAndServiceCenterNumber(emailGatewayTxt, emailSmsNum);
+
+    // add all the sms email group item
+    HbDataFormModelItem *emailGateway = new HbDataFormModelItem(HbDataFormModelItem::TextItem,
+        mSmsEmailSettingsGroup.at(0), 0);
+
+    emailGateway->setContentWidgetData("text", emailGatewayTxt);
+
+    HbDataFormModelItem *emailService = new HbDataFormModelItem(HbDataFormModelItem::TextItem,
+        mSmsEmailSettingsGroup.at(1), 0);
+    emailService->setContentWidgetData("text", emailSmsNum);
+
+    parent->appendChild(emailGateway);
+    parent->appendChild(emailService);
+}
+
+void MsgAdvancedSettingsForm::onItemActivated(const QModelIndex &index)
+{
+    HbDataFormModelItem *itemData = static_cast<HbDataFormModelItem *> (index.internalPointer());
+    // to deal with orbit change temparialy
+    if (itemData->type() > HbDataFormModelItem::GroupPageItem) {
+        HbDataFormModelItem *pageItemData = const_cast<HbDataFormModelItem *> (itemData->parent());
+        //get the widget of setting item
+        HbWidget* widget = this->dataFormViewItem(index)->dataItemContentWidget();
+        if (pageItemData) {
+            //the first one is for mms group items
+            if (pageItemData == mMMSGroup) {
+                switch (pageItemData->indexOf(itemData)) {
+                case 0: //mms creation mode
+                    activateMMSCreationMode(widget);
+                    break;
+                case 1: //mms retrieval
+                    activateMMSRetrievalMode(widget);
+                    break;
+                case 2: //anonymous msgs
+                    activateMMSAnonymousMode(widget);
+                    break;
+                case 3: //mms adverts
+                    activateMMSAdverts(widget);
+                    break;
+                case 4: //MMS Accesspoint
+                    activateMMSAccesspoint(widget);
+                    break;
+                default:
+                    break;
+                }
+            }
+            else if (pageItemData == mSmsMCGroup) {
+                //the second one is for sms message center
+                if (pageItemData->indexOf(itemData) == 0) {
+                    activateSMSCCenterList(widget);
+                }
+                else {
+                    int btnIndex = pageItemData->indexOf(itemData);
+                    activateCustomButtonListItems(widget, btnIndex);
+                }
+            }
+            else if (pageItemData == mSmsEmailGroup) {
+                switch (pageItemData->indexOf(itemData)) {
+                case 0:
+                    activateEmailGateway(widget, mEditEmailGateway);
+                    break;
+                case 1:
+                    activateEmailServiceCenterNo(widget, mEditEmailServiceNumber);
+                    break;
+                default:
+                    break;
+                }
+            }
+        }
+    }
+}
+
+void MsgAdvancedSettingsForm::activateSMSCCenterList(HbWidget* widget)
+{
+    mSmsCenterComboBox = qobject_cast<HbComboBox *> (widget);
+
+    if (mSmsCenterComboBox) {
+        mSmsCenterComboBox->setModel(mSmsServiceCenterModel);
+
+        //to avoid multiple connects.
+        disconnect(mSmsCenterComboBox, SIGNAL(currentIndexChanged(int)), this,
+            SLOT(onSMSCurrentIndexChanged(int)));
+
+        mSmsCenterComboBox->setCurrentIndex(mDefaultServiceCenter);
+
+        //map the sms message center selected
+        connect(mSmsCenterComboBox, SIGNAL(currentIndexChanged(int)), this,
+            SLOT(onSMSCurrentIndexChanged(int)));
+    }
+}
+
+void MsgAdvancedSettingsForm::onSMSCurrentIndexChanged(int index)
+{
+#ifdef _DEBUG_TRACES_
+    qDebug() << "Enter MsgAdvancedSettingsForm::onSMSCurrentIndexChanged index=" << index << "\n";
+#endif
+
+    //set into msg settings
+    mSettingEngine->setSMSMessageCenter(index);
+
+#ifdef _DEBUG_TRACES_
+    qDebug() << "Exit MsgAdvancedSettingsForm::onSMSCurrentIndexChanged \n";
+#endif
+
+}
+
+void MsgAdvancedSettingsForm::activateCustomButtonListItems(HbWidget* widget, int btnIndex)
+{
+    HbPushButton *btn = qobject_cast<HbPushButton *> (widget);
+
+    if (btnIndex == mSmsServiceList.count() + 1) {
+        btn->setText(mSmsMCSettingsGroup.at(1));
+    }
+    else {
+        btn->setText(mSmsServiceList.at(btnIndex - 1));
+    }
+
+    if (btn) {
+        //to avoid multiple connects.
+        disconnect(btn, SIGNAL(clicked()), this, SLOT(onPressedCustomButton()));
+
+        //activate the custom buttons
+        connect(btn, SIGNAL(clicked()), this, SLOT(onPressedCustomButton()));
+
+        disconnect(btn, SIGNAL(longPress(QPointF)), this, SLOT(onLongPress(QPointF)));
+
+        connect(btn, SIGNAL(longPress(QPointF)), this, SLOT(onLongPress(QPointF)));
+    }
+}
+
+void MsgAdvancedSettingsForm::activateMMSCreationMode(HbWidget* widget)
+{
+    HbComboBox* combo = qobject_cast<HbComboBox *> (widget);
+
+    if (combo) {
+        //to avoid multiple connects.
+        disconnect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeMMSCreationMode(int)));
+
+        //map the mms access points selected
+        connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeMMSCreationMode(int)));
+    }
+}
+
+void MsgAdvancedSettingsForm::changeMMSCreationMode(int index)
+{
+    mSettingEngine->setMMSCreationmode(MsgSettingEngine::MmsCreationMode(index));
+}
+
+void MsgAdvancedSettingsForm::activateMMSRetrievalMode(HbWidget* widget)
+{
+    HbComboBox* combo = qobject_cast<HbComboBox *> (widget);
+
+    if (combo) {
+        //to avoid multiple connects.
+        disconnect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeMMSRetrievalMode(int)));
+
+        //map the mms access points selected
+        connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeMMSRetrievalMode(int)));
+    }
+}
+
+void MsgAdvancedSettingsForm::changeMMSRetrievalMode(int index)
+{
+    mSettingEngine->setMMSRetrieval(MsgSettingEngine::MmsRetrieval(index));
+}
+
+void MsgAdvancedSettingsForm::activateMMSAnonymousMode(HbWidget* widget)
+{
+    HbPushButton* toggleItem = qobject_cast<HbPushButton *> (widget);
+
+    if (toggleItem) {
+        //TODO Issue in DataForm Calling the itemActivated twice
+        disconnect(toggleItem, SIGNAL(clicked()), this, SLOT(allowAnonymousMMS()));
+
+        connect(toggleItem, SIGNAL(clicked()), this, SLOT(allowAnonymousMMS()));
+    }
+}
+
+void MsgAdvancedSettingsForm::allowAnonymousMMS()
+{
+    HbPushButton *btn = qobject_cast<HbPushButton *> (sender());
+
+    if (btn) {
+        QString btnText = btn->text();
+
+        //check if the button pressed was Yes or NO
+        if (LOC_MMS_YES == btnText) {
+            mSettingEngine->setAnonymousMessages(true);
+        }
+        else {
+            mSettingEngine->setAnonymousMessages(false);
+        }
+    }
+}
+
+void MsgAdvancedSettingsForm::activateMMSAdverts(HbWidget* widget)
+{
+    HbPushButton* toggleItem = qobject_cast<HbPushButton *> (widget);
+
+    if (toggleItem) {
+        //TODO Issue in DataForm Calling the itemActivated twice
+        disconnect(toggleItem, SIGNAL(clicked()), this, SLOT(allowMMSAdverts()));
+
+        connect(toggleItem, SIGNAL(clicked()), this, SLOT(allowMMSAdverts()));
+    }
+}
+
+void MsgAdvancedSettingsForm::allowMMSAdverts()
+{
+    HbPushButton *btn = qobject_cast<HbPushButton *> (sender());
+
+    if (btn) {
+        QString btnText = btn->text();
+
+        //check if the button pressed was Yes or NO
+        if (LOC_MMS_NO == btnText) {
+            mSettingEngine->setReceiveMMSAdverts(true);
+        }
+        else {
+            mSettingEngine->setReceiveMMSAdverts(false);
+        }
+    }
+}
+
+void MsgAdvancedSettingsForm::activateMMSAccesspoint(HbWidget* widget)
+{
+    HbComboBox* accessPointCombo = qobject_cast<HbComboBox *> (widget);
+
+    //to avoid multiple connects.
+    disconnect(accessPointCombo, SIGNAL(currentIndexChanged(int)), this,
+        SLOT(changeAccessPoint(int)));
+
+    //map the mms access points selected
+    connect(accessPointCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(changeAccessPoint(int)));
+}
+
+void MsgAdvancedSettingsForm::onPressedCustomButton()
+{
+    HbPushButton *btn = qobject_cast<HbPushButton *> (sender());
+
+    if (btn) {
+        QString btnText = btn->text();
+        if (btnText == mSmsMCSettingsGroup.at(1)) {
+            // emit the signal to open add view 
+            emit newSMSCCenterClicked(-1);
+        }
+        else {
+            int index = mSmsServiceList.indexOf(btnText);
+            emit newSMSCCenterClicked(index);
+        }
+    }
+}
+
+void MsgAdvancedSettingsForm::changeAccessPoint(int index)
+{
+#ifdef _DEBUG_TRACES_
+    qDebug() << "Enter MsgAdvancedSettingsForm::changeAccessPoint index=" << index << "\n";
+#endif
+
+    // save to the mms settings
+    mSettingEngine->setMMSAccesspoint(index);
+
+#ifdef _DEBUG_TRACES_
+    qDebug() << "Exit MsgAdvancedSettingsForm::changeAccessPoint";
+#endif
+
+}
+
+void MsgAdvancedSettingsForm::refresh()
+{
+    int childCount = mSmsMCGroup->childCount();
+    //remove items after mSmsCenterComboBox till new center button.
+    mSmsMCGroup->removeChildren(1, childCount - 2);
+    updateSmsCenterModel();
+}
+
+void MsgAdvancedSettingsForm::commitEmailChanges()
+{
+    if (mEditEmailGateway == NULL || mEditEmailServiceNumber == NULL) {
+        return;
+    }
+
+    QString emailGateway = mEditEmailGateway->text();
+    QString emailServiceCenter = mEditEmailServiceNumber->text();
+
+#ifdef _DEBUG_TRACES_
+    qDebug() << "Enter MsgAdvancedSettingsForm::commitEmailChanges " << emailGateway << " "
+        << emailServiceCenter;
+#endif
+
+    mSettingEngine->setEmailGateway(emailGateway);
+
+    //set the smsc center number
+    mSettingEngine->setEmailSeriveCenterNumber(emailServiceCenter);
+
+#ifdef _DEBUG_TRACES_
+    qDebug() << "Exit MsgAdvancedSettingsForm::commitEmailChanges\n";
+#endif
+
+}
+
+void MsgAdvancedSettingsForm::updateSmsCenterModel()
+{
+    mSmsServiceList.clear();
+    mSettingEngine->allSMSMessageCenter(mSmsServiceList, mDefaultServiceCenter);
+
+    HbDataFormModelItem* smsCenterCombo = mSmsMCGroup->childAt(0);
+    QAbstractItemModel* mod = const_cast<QAbstractItemModel*> (this->model());
+    HbDataFormModel* advancedSettingsmodel = static_cast<HbDataFormModel*> (mod);
+    int msgCenterComboIndex = advancedSettingsmodel->indexFromItem(smsCenterCombo).row();
+
+    //clear model before refilling.
+    mSmsServiceCenterModel->clear();
+    fillServiceCenterModel();
+
+    //CUSTOM SETTING ITEM HbButton
+    HbDataFormModelItem::DataItemType customButtonGeneral =
+        static_cast<HbDataFormModelItem::DataItemType> (HbDataFormModelItem::CustomItemBase + 1);
+
+    int itemCount = mSmsServiceList.count();
+    for (int i = 0; i < itemCount; ++i) {
+        //add custom buttons.
+        HbDataFormModelItem *messageCenters = new HbDataFormModelItem(customButtonGeneral,
+            QString(), mSmsMCGroup);
+
+        messageCenters->setData(HbDataFormModelItem::KeyRole, mSmsServiceList.at(i));
+
+        advancedSettingsmodel->insertDataFormItem(msgCenterComboIndex + 1 + i, messageCenters,
+            mSmsMCGroup);
+    }
+}
+
+void MsgAdvancedSettingsForm::createServiceCenterModel()
+{
+    mSmsServiceCenterModel = new QStandardItemModel();
+
+    //to know when is model destroyed.
+    connect(mSmsServiceCenterModel, SIGNAL(destroyed()), this, SLOT(createServiceCenterModel()));
+
+    fillServiceCenterModel();
+}
+
+void MsgAdvancedSettingsForm::fillServiceCenterModel()
+{
+    QStringList serviceCenters;
+    mSettingEngine->allSMSMessageCenter(serviceCenters, mDefaultServiceCenter);
+
+    int itemCount = serviceCenters.count();
+    for (int i = 0; i < itemCount; ++i) {
+        QStandardItem *item = new QStandardItem;
+        item->setData(serviceCenters.at(i), Qt::DisplayRole);
+        mSmsServiceCenterModel->appendRow(item);
+    }
+}
+
+void MsgAdvancedSettingsForm::activateEmailGateway(HbWidget* widget, HbLineEdit* &edit)
+{
+    // editing finished SIGNAL is still not coming in week48MCL
+    HbLineEdit* editWidget = qobject_cast<HbLineEdit *> (widget);
+
+    if (editWidget) {
+        edit = editWidget;
+        //connect(edit, SIGNAL(editingFinished()), this, SLOT(onEditingFinished()));
+    }
+}
+
+void MsgAdvancedSettingsForm::activateEmailServiceCenterNo(HbWidget* widget, HbLineEdit* &edit)
+{
+    // editing finished SIGNAL is still not coming in week48MCL
+    HbLineEdit* editWidget = qobject_cast<HbLineEdit *> (widget);
+
+    if (editWidget) {
+        edit = editWidget;
+        HbEditorInterface editorInterface(edit);
+        editorInterface.setUpAsPhoneNumberEditor();
+        //connect(edit, SIGNAL(editingFinished()), this, SLOT(onEditingFinished()));
+    }
+}
+
+void MsgAdvancedSettingsForm::onLongPress(QPointF point)
+{
+    Q_UNUSED(point);
+}
+//eof