messagingapp/msgsettings/settingsview/src/msgsmscentersettingsform.cpp
changeset 31 ebfee66fde93
child 44 36f374c67aa8
equal deleted inserted replaced
30:6a20128ce557 31:ebfee66fde93
       
     1 /*
       
     2  * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of "Eclipse Public License v1.0"
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  *
       
    14  * Description:This class is for sms message center form view 
       
    15  *
       
    16  */
       
    17 
       
    18 #include "msgsmscentersettingsform.h"
       
    19 #include "msgsettingengine.h"
       
    20 #include "msgsettingsdataformcustomitem.h"
       
    21 
       
    22 #include <hbdataformviewitem.h>
       
    23 #include <hbdataformmodelitem.h>
       
    24 #include <hbdataformmodel.h>
       
    25 #include <hblineedit.h>
       
    26 #include <HbNotificationDialog>
       
    27 #include <hbinputeditorinterface.h>
       
    28 #include <hbmessagebox.h>
       
    29 #include <HbAction>
       
    30 #include "debugtraces.h"
       
    31 
       
    32 //Localized constants
       
    33 #define LOC_SMS_CENTRE_NAME hbTrId("txt_messaging_setlabel_message_centre_name")
       
    34 #define LOC_SMS_CENTRE_NUMBER hbTrId("txt_messaging_setlabel_message_centre_number")
       
    35 #define LOC_SMS_CENTRE_DELETE hbTrId("txt_messaging_button_delete_message_centre")
       
    36 #define LOC_MESSAGE_CENTER_SAVED hbTrId("txt_messaging_setlabel_message_centre_saved")
       
    37 #define LOC_BUTTON_DELETE hbTrId("txt_common_button_delete")
       
    38 #define LOC_BUTTON_CANCEL hbTrId("txt_common_button_cancel")
       
    39 
       
    40 MsgSMSCenterSettingsForm::MsgSMSCenterSettingsForm(int view,
       
    41                                                    QGraphicsItem *parent) :
       
    42     HbDataForm(parent), mEdit1(0), mEdit2(0), mView(view)
       
    43 {
       
    44     QString heading;
       
    45     if (mView > -1)
       
    46     {
       
    47         //add the custom prototype only for edit items
       
    48         MsgSettingsDataFormCustomItem* customPrototype =
       
    49                 new MsgSettingsDataFormCustomItem(this);
       
    50 
       
    51         QList<HbAbstractViewItem*> protos = this->itemPrototypes();
       
    52         protos.append(customPrototype);
       
    53         this->setItemPrototypes(protos);
       
    54     }
       
    55 
       
    56     bool b = connect(this,
       
    57                      SIGNAL(itemShown(const QModelIndex&)),
       
    58                      this,
       
    59                      SLOT(onItemShown(const QModelIndex&)));
       
    60 
       
    61     QDEBUG_WRITE_FORMAT("MsgSMSCenterSettingsForm::MsgSMSCenterSettingsForm initialized.. ", b)
       
    62 
       
    63     mSettingEngine = new MsgSettingEngine();
       
    64 
       
    65     initSettingModel();
       
    66 }
       
    67 
       
    68 MsgSMSCenterSettingsForm::~MsgSMSCenterSettingsForm()
       
    69 {
       
    70     delete mSettingEngine;
       
    71 }
       
    72 
       
    73 void MsgSMSCenterSettingsForm::initSettingModel()
       
    74 {
       
    75     QDEBUG_WRITE("MsgSMSCenterSettingsForm::initSettingModel");
       
    76     HbDataFormModel *settingsmodel = new HbDataFormModel();
       
    77 
       
    78     if (mView != -1)
       
    79     {
       
    80         mSettingEngine->smsCenterNameAndNumber(mView,
       
    81                                                mCenterName,
       
    82                                                mCenterNumber);
       
    83     }
       
    84 
       
    85     messageCenterName = new HbDataFormModelItem(HbDataFormModelItem::TextItem,
       
    86                                                 LOC_SMS_CENTRE_NAME,
       
    87                                                 0);
       
    88 
       
    89     messageCenterName->setContentWidgetData("text", mCenterName);
       
    90 
       
    91     settingsmodel->appendDataFormItem(messageCenterName,
       
    92                                       settingsmodel->invisibleRootItem());
       
    93 
       
    94     messageCenterNumber
       
    95             = new HbDataFormModelItem(HbDataFormModelItem::TextItem,
       
    96                                       LOC_SMS_CENTRE_NUMBER,
       
    97                                       0);
       
    98 
       
    99     messageCenterNumber->setContentWidgetData("text", mCenterNumber);
       
   100 
       
   101     settingsmodel->appendDataFormItem(messageCenterNumber,
       
   102                                       settingsmodel->invisibleRootItem());
       
   103 
       
   104     if (mView != -1) /// edit case delete button required
       
   105     {
       
   106         //CUSTOM SETTING ITEM HbButton
       
   107         HbDataFormModelItem::DataItemType
       
   108                 customButtonGeneral =
       
   109                         static_cast<HbDataFormModelItem::DataItemType> (
       
   110                                 HbDataFormModelItem::CustomItemBase + 1);
       
   111 
       
   112         HbDataFormModelItem
       
   113                 *deleteMessageCentre =
       
   114                         settingsmodel->appendDataFormItem(
       
   115                                 customButtonGeneral,
       
   116                                 QString(""),
       
   117                                 settingsmodel->invisibleRootItem());
       
   118 
       
   119         deleteMessageCentre->setContentWidgetData("text", 
       
   120                                                   LOC_SMS_CENTRE_DELETE);
       
   121         this->addConnection(deleteMessageCentre,
       
   122                             SIGNAL(clicked()),
       
   123                             this,
       
   124                             SLOT(onPressedCustomButton()));
       
   125     }
       
   126 
       
   127     this->setModel(settingsmodel);
       
   128 }
       
   129 
       
   130 void MsgSMSCenterSettingsForm::commitChanges()
       
   131 {
       
   132     //commit changes
       
   133     QString centerName;
       
   134     QString centerNumber;
       
   135 
       
   136     if (mEdit1)
       
   137         centerName = mEdit1->text();
       
   138 
       
   139     if (mEdit2)
       
   140         centerNumber = mEdit2->text();
       
   141 
       
   142     // check if any of the field are empty
       
   143     // OR the data unchanged, then return dont commit
       
   144     if (centerName.isEmpty() || centerNumber.isEmpty() || (centerName
       
   145             == mCenterName && centerNumber == mCenterNumber))
       
   146     {
       
   147         //if mCenterName or mCenterNumber is empty do not commit.
       
   148         return;
       
   149     }
       
   150 
       
   151     QDEBUG_WRITE("MsgSMSCenterSettingsForm::commitChanges");
       
   152     if (mView == -1)
       
   153     {
       
   154         mSettingEngine->addSmsMessageCenter(centerName, centerNumber);
       
   155     }
       
   156     else
       
   157     {
       
   158         mSettingEngine->editSmsMessageCenter(centerName, 
       
   159                                              centerNumber, 
       
   160                                              mView);
       
   161         
       
   162         HbNotificationDialog::launchDialog(LOC_MESSAGE_CENTER_SAVED);
       
   163     }
       
   164     QDEBUG_WRITE("ex MsgSMSCenterSettingsForm::commitChanges");
       
   165 }
       
   166 
       
   167 void MsgSMSCenterSettingsForm::onItemShown(const QModelIndex& topLeft)
       
   168 {
       
   169 
       
   170     QDEBUG_WRITE("DataForm MsgSMSCenterSettingsForm::onItemShown");
       
   171     HbDataFormModelItem *itemData =
       
   172             static_cast<HbDataFormModel *> (model())->itemFromIndex(topLeft);
       
   173 
       
   174     if (itemData && itemData == messageCenterName && !mEdit1)
       
   175     {
       
   176         QDEBUG_WRITE("messageCenterName updated..");
       
   177         HbDataFormViewItem* item1 = 
       
   178                 static_cast<HbDataFormViewItem*>(this->itemByIndex(topLeft));
       
   179         mEdit1 =  static_cast<HbLineEdit*>(item1->dataItemContentWidget());
       
   180     }
       
   181     else if (itemData && itemData == messageCenterNumber && !mEdit2)
       
   182     {
       
   183         QDEBUG_WRITE("messageCenterNumber updated..");
       
   184         HbDataFormViewItem* item1 = 
       
   185                  static_cast<HbDataFormViewItem*>(this->itemByIndex(topLeft));
       
   186         mEdit2 =  static_cast<HbLineEdit*>(item1->dataItemContentWidget());       
       
   187         mEdit2->setInputMethodHints(Qt::ImhPreferNumbers);
       
   188 
       
   189     }
       
   190 }
       
   191 
       
   192 void MsgSMSCenterSettingsForm::onPressedCustomButton()
       
   193 {
       
   194    HbMessageBox::question(LOC_SMS_CENTRE_DELETE, this, SLOT(onDialogDeleteMsgCentre(HbAction*)), LOC_BUTTON_DELETE, LOC_BUTTON_CANCEL);
       
   195 }
       
   196 
       
   197 void MsgSMSCenterSettingsForm::onDialogDeleteMsgCentre(HbAction* action)
       
   198 {
       
   199     HbMessageBox *dlg = qobject_cast<HbMessageBox*> (sender()); 
       
   200     if (action == dlg->actions().at(0)) {
       
   201         //delete from m/w -- mView is the index to delete
       
   202                mSettingEngine->deleteSmsMessageCenter(mView);
       
   203                emit deleteMessageCentreAndClose();
       
   204     }   
       
   205 }
       
   206 
       
   207 //eof
       
   208