messagingapp/msgsettings/settingsview/src/msgsmscentersettingsform.cpp
branchRCL_3
changeset 57 ebe688cedc25
equal deleted inserted replaced
54:fa1df4b99609 57:ebe688cedc25
       
     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_BUTTON hbTrId("txt_messaging_button_delete_message_centre")
       
    36 #define LOC_SMS_CENTRE_DELETE_DIALOG hbTrId("txt_messaging_dialog_delete_message_centre")
       
    37 #define LOC_MESSAGE_CENTER_SAVED hbTrId("txt_messaging_dpopinfo_message_centre_saved")
       
    38 
       
    39 MsgSMSCenterSettingsForm::MsgSMSCenterSettingsForm(int view,
       
    40                                                    QGraphicsItem *parent) :
       
    41     HbDataForm(parent), mEdit1(0), mEdit2(0), mView(view)
       
    42 {
       
    43     QString heading;
       
    44     if (mView > -1)
       
    45     {
       
    46         //add the custom prototype only for edit items
       
    47         MsgSettingsDataFormCustomItem* customPrototype =
       
    48                 new MsgSettingsDataFormCustomItem(this);
       
    49 
       
    50         QList<HbAbstractViewItem*> protos = this->itemPrototypes();
       
    51         protos.append(customPrototype);
       
    52         this->setItemPrototypes(protos);
       
    53     }
       
    54 
       
    55     bool b = connect(this,
       
    56                      SIGNAL(itemShown(const QModelIndex&)),
       
    57                      this,
       
    58                      SLOT(onItemShown(const QModelIndex&)));
       
    59 
       
    60     QDEBUG_WRITE_FORMAT("MsgSMSCenterSettingsForm::MsgSMSCenterSettingsForm initialized.. ", b)
       
    61 
       
    62     mSettingEngine = new MsgSettingEngine();
       
    63 
       
    64     initSettingModel();
       
    65 }
       
    66 
       
    67 MsgSMSCenterSettingsForm::~MsgSMSCenterSettingsForm()
       
    68 {
       
    69     delete mSettingEngine;
       
    70 }
       
    71 
       
    72 void MsgSMSCenterSettingsForm::initSettingModel()
       
    73 {
       
    74     QDEBUG_WRITE("MsgSMSCenterSettingsForm::initSettingModel");
       
    75     HbDataFormModel *settingsmodel = new HbDataFormModel();
       
    76 
       
    77     if (mView != -1)
       
    78     {
       
    79         mSettingEngine->smsCenterNameAndNumber(mView,
       
    80                                                mCenterName,
       
    81                                                mCenterNumber);
       
    82     }
       
    83 
       
    84     messageCenterName = new HbDataFormModelItem(HbDataFormModelItem::TextItem,
       
    85                                                 LOC_SMS_CENTRE_NAME,
       
    86                                                 0);
       
    87 
       
    88     messageCenterName->setContentWidgetData("text", mCenterName);
       
    89 
       
    90     settingsmodel->appendDataFormItem(messageCenterName,
       
    91                                       settingsmodel->invisibleRootItem());
       
    92 
       
    93     messageCenterNumber
       
    94             = new HbDataFormModelItem(HbDataFormModelItem::TextItem,
       
    95                                       LOC_SMS_CENTRE_NUMBER,
       
    96                                       0);
       
    97 
       
    98     messageCenterNumber->setContentWidgetData("text", mCenterNumber);
       
    99 
       
   100     settingsmodel->appendDataFormItem(messageCenterNumber,
       
   101                                       settingsmodel->invisibleRootItem());
       
   102 
       
   103     if (mView != -1) /// edit case delete button required
       
   104     {
       
   105         //CUSTOM SETTING ITEM HbButton
       
   106         HbDataFormModelItem::DataItemType
       
   107                 customButtonGeneral =
       
   108                         static_cast<HbDataFormModelItem::DataItemType> (
       
   109                                 HbDataFormModelItem::CustomItemBase + 1);
       
   110 
       
   111         HbDataFormModelItem
       
   112                 *deleteMessageCentre =
       
   113                         settingsmodel->appendDataFormItem(
       
   114                                 customButtonGeneral,
       
   115                                 QString(""),
       
   116                                 settingsmodel->invisibleRootItem());
       
   117 
       
   118         deleteMessageCentre->setContentWidgetData("text",LOC_SMS_CENTRE_DELETE_BUTTON);
       
   119         this->addConnection(deleteMessageCentre,SIGNAL(clicked()),
       
   120                             this,SLOT(onPressedCustomButton()));
       
   121     }
       
   122 
       
   123     this->setModel(settingsmodel);
       
   124 }
       
   125 
       
   126 void MsgSMSCenterSettingsForm::commitChanges()
       
   127 {
       
   128     //commit changes
       
   129     QString centerName;
       
   130     QString centerNumber;
       
   131 
       
   132     if (mEdit1)
       
   133         centerName = mEdit1->text();
       
   134 
       
   135     if (mEdit2)
       
   136         centerNumber = mEdit2->text();
       
   137 
       
   138     // check if any of the field are empty
       
   139     // OR the data unchanged, then return dont commit
       
   140     if (centerName.isEmpty() || centerNumber.isEmpty() || (centerName
       
   141             == mCenterName && centerNumber == mCenterNumber))
       
   142     {
       
   143         //if mCenterName or mCenterNumber is empty do not commit.
       
   144         return;
       
   145     }
       
   146 
       
   147     QDEBUG_WRITE("MsgSMSCenterSettingsForm::commitChanges");
       
   148     if (mView == -1)
       
   149     {
       
   150         mSettingEngine->addSmsMessageCenter(centerName, centerNumber);
       
   151     }
       
   152     else
       
   153     {
       
   154         mSettingEngine->editSmsMessageCenter(centerName, centerNumber, mView);
       
   155     }
       
   156     
       
   157     HbNotificationDialog::launchDialog(LOC_MESSAGE_CENTER_SAVED);
       
   158     
       
   159     QDEBUG_WRITE("ex MsgSMSCenterSettingsForm::commitChanges");
       
   160 }
       
   161 
       
   162 void MsgSMSCenterSettingsForm::onItemShown(const QModelIndex& topLeft)
       
   163 {
       
   164 
       
   165     QDEBUG_WRITE("DataForm MsgSMSCenterSettingsForm::onItemShown");
       
   166     HbDataFormModelItem *itemData =
       
   167             static_cast<HbDataFormModel *> (model())->itemFromIndex(topLeft);
       
   168 
       
   169     if (itemData && itemData == messageCenterName && !mEdit1)
       
   170     {
       
   171         QDEBUG_WRITE("messageCenterName updated..");
       
   172         HbDataFormViewItem* item1 = 
       
   173                 static_cast<HbDataFormViewItem*>(this->itemByIndex(topLeft));
       
   174         mEdit1 =  static_cast<HbLineEdit*>(item1->dataItemContentWidget());
       
   175     }
       
   176     else if (itemData && itemData == messageCenterNumber && !mEdit2)
       
   177     {
       
   178         QDEBUG_WRITE("messageCenterNumber updated..");
       
   179         HbDataFormViewItem* item1 = 
       
   180                  static_cast<HbDataFormViewItem*>(this->itemByIndex(topLeft));
       
   181         mEdit2 =  static_cast<HbLineEdit*>(item1->dataItemContentWidget());       
       
   182         mEdit2->setInputMethodHints(Qt::ImhPreferNumbers);
       
   183 
       
   184     }
       
   185 }
       
   186 
       
   187 void MsgSMSCenterSettingsForm::onPressedCustomButton()
       
   188 {
       
   189    HbMessageBox::question(LOC_SMS_CENTRE_DELETE_DIALOG, this,
       
   190                           SLOT(onDialogDeleteMsgCentre(HbAction*)),
       
   191                           HbMessageBox::Delete | HbMessageBox::Cancel);
       
   192 }
       
   193 
       
   194 void MsgSMSCenterSettingsForm::onDialogDeleteMsgCentre(HbAction* action)
       
   195 {
       
   196     HbMessageBox *dlg = qobject_cast<HbMessageBox*> (sender()); 
       
   197     if (action == dlg->actions().at(0)) {
       
   198         //delete from m/w -- mView is the index to delete
       
   199                mSettingEngine->deleteSmsMessageCenter(mView);
       
   200                emit deleteMessageCentreAndClose();
       
   201     }   
       
   202 }
       
   203 
       
   204 //eof
       
   205