emailuis/nmsettingui/src/nmmailboxselectionview.cpp
changeset 75 47d84de1c893
parent 30 759dc5235cdb
equal deleted inserted replaced
72:64e38f08e49c 75:47d84de1c893
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include <QScopedPointer>
    18 #include <QScopedPointer>
    19 #include <QSignalMapper>
    19 #include <QSignalMapper>
    20 #include <hbdataform.h>
    20 #include <HbDataForm>
    21 #include <hbdataformmodel.h>
    21 #include <HbDataFormModel>
    22 #include <hbpushbutton.h>
    22 #include <HbPushButton>
    23 #include <hbdataformviewitem.h>
    23 #include <HbDataFormViewItem>
    24 #include <cpitemdatahelper.h>
    24 #include <cpitemdatahelper.h>
    25 #include <nmmailbox.h>
    25 #include <nmmailbox.h>
    26 
    26 
    27 #include "nmmailboxentryitem.h"
    27 #include "nmmailboxentryitem.h"
    28 #include "nmmailboxselectionview.h"
    28 #include "nmmailboxselectionview.h"
    50   mSettingsManager(settingsManager),
    50   mSettingsManager(settingsManager),
    51   mSettingsFactory(settingsFactory),
    51   mSettingsFactory(settingsFactory),
    52   mRefreshForm(false)
    52   mRefreshForm(false)
    53 {
    53 {
    54     NM_FUNCTION;
    54     NM_FUNCTION;
    55     
    55 
    56     QScopedPointer<QSignalMapper> signalMapper(new QSignalMapper());
    56     QScopedPointer<QSignalMapper> signalMapper(new QSignalMapper());
    57 
    57 
    58     // Connect the form's activated signal.
    58     // Connect the form's activated signal.
    59     HbDataForm *form = qobject_cast<HbDataForm*>(widget());
    59     HbDataForm *form = qobject_cast<HbDataForm*>(widget());
    60     connect(form, SIGNAL(activated(QModelIndex)),
    60     connect(form, SIGNAL(activated(QModelIndex)),
    82     Destructor of NmMailboxSelectionView.
    82     Destructor of NmMailboxSelectionView.
    83 */
    83 */
    84 NmMailboxSelectionView::~NmMailboxSelectionView()
    84 NmMailboxSelectionView::~NmMailboxSelectionView()
    85 {
    85 {
    86     NM_FUNCTION;
    86     NM_FUNCTION;
    87     
    87 
    88     delete mItemDataHelper;
    88     delete mItemDataHelper;
    89     delete mModel;
    89     delete mModel;
    90     delete mSignalMapper;
    90     delete mSignalMapper;
    91 }
    91 }
    92 
    92 
    98 
    98 
    99 */
    99 */
   100 void NmMailboxSelectionView::buttonClick(QObject *item)
   100 void NmMailboxSelectionView::buttonClick(QObject *item)
   101 {
   101 {
   102     NM_FUNCTION;
   102     NM_FUNCTION;
   103     
   103 
   104     NmMailboxEntryItem *entryItem = static_cast<NmMailboxEntryItem *>(item);
   104     NmMailboxEntryItem *entryItem = static_cast<NmMailboxEntryItem *>(item);
   105     const NmId &id = entryItem->id();
   105     const NmId &id = entryItem->id();
   106     const QString &name = entryItem->text();
   106     const QString &name = entryItem->text();
   107     mSettingsFactory.launchSettingView(id, name);
   107     mSettingsFactory.launchSettingView(id, name);
   108 }
   108 }
   109 
   109 
   110 /*!
   110 /*!
   111     Handels the dataform's activated signal when item is shown. 
   111     Handels the dataform's activated signal when item is shown.
   112     Maps the signal/mailbox item for the buttons.
   112     Maps the signal/mailbox item for the buttons.
   113 
   113 
   114     \param index Data model index.
   114     \param index Data model index.
   115 
   115 
   116 */
   116 */
   117 void NmMailboxSelectionView::itemActivate(const QModelIndex &index)
   117 void NmMailboxSelectionView::itemActivate(const QModelIndex &index)
   118 {
   118 {
   119     NM_FUNCTION;
   119     NM_FUNCTION;
   120     
   120 
   121     HbDataForm *form = qobject_cast<HbDataForm*>(widget());
   121     HbDataForm *form = qobject_cast<HbDataForm*>(widget());
   122     HbDataFormModel *model = static_cast<HbDataFormModel *>(form->model());
   122     HbDataFormModel *model = static_cast<HbDataFormModel *>(form->model());
   123     NmMailboxEntryItem *item = static_cast<NmMailboxEntryItem *>(model->itemFromIndex(index));
   123     NmMailboxEntryItem *item = static_cast<NmMailboxEntryItem *>(model->itemFromIndex(index));
   124     
   124 
   125     if (!mSignalMapper->mapping(item)) {
   125     if (item && !mSignalMapper->mapping(item)) {
   126         
   126 
   127         HbDataFormViewItem *viewItem = 
   127         HbDataFormViewItem *viewItem =
   128             static_cast<HbDataFormViewItem *>(form->itemByIndex(index));
   128             static_cast<HbDataFormViewItem *>(form->itemByIndex(index));
   129         HbPushButton *button = 
   129         HbPushButton *button =
   130             static_cast<HbPushButton *>(viewItem->dataItemContentWidget());
   130             static_cast<HbPushButton *>(viewItem->dataItemContentWidget());
   131         
   131 
   132         connect(button, SIGNAL(pressed()), mSignalMapper, SLOT(map()));
   132         connect(button, SIGNAL(pressed()), mSignalMapper, SLOT(map()));
   133     
   133 
   134         mSignalMapper->setMapping(button, item);
   134         mSignalMapper->setMapping(button, item);
   135     
   135 
   136         connect(mSignalMapper, SIGNAL(mapped(QObject *)), 
   136         connect(mSignalMapper, SIGNAL(mapped(QObject *)),
   137             this, SLOT(buttonClick(QObject *)), Qt::UniqueConnection);
   137             this, SLOT(buttonClick(QObject *)), Qt::UniqueConnection);
   138     }
   138     }
   139 }
   139 }
   140 
   140 
   141 /*!
   141 /*!
   145 
   145 
   146 */
   146 */
   147 void NmMailboxSelectionView::populateDataModel(const QList<NmMailbox *> &mailboxList)
   147 void NmMailboxSelectionView::populateDataModel(const QList<NmMailbox *> &mailboxList)
   148 {
   148 {
   149     NM_FUNCTION;
   149     NM_FUNCTION;
   150     
   150 
   151     mModel->clear();
   151     mModel->clear();
   152     foreach (NmMailbox *mailbox, mailboxList) {
   152     foreach (NmMailbox *mailbox, mailboxList) {
   153         NmId id = mailbox->id();
   153         NmId id = mailbox->id();
   154         QScopedPointer<NmMailboxEntryItem> item(
   154         QScopedPointer<NmMailboxEntryItem> item(
   155             new NmMailboxEntryItem(*mItemDataHelper, id, mailbox->name(),
   155             new NmMailboxEntryItem(*mItemDataHelper, id, mailbox->name(),
   156                 mSettingsManager.mailboxIcon(id)));
   156                 mSettingsManager.mailboxIcon(id)));
   157         mModel->appendDataFormItem(item.data());
   157         mModel->appendDataFormItem(item.data());
   158         item.take();
   158         item.take();
   159     }
   159     }
   160     HbDataForm *form = qobject_cast<HbDataForm*>(widget());
   160     HbDataForm *form = qobject_cast<HbDataForm*>(widget());
   161     form->setModel(mModel);
   161     if (form) {
       
   162         form->setModel(mModel);
       
   163 	}
   162 }
   164 }
   163 
   165 
   164 /*!
   166 /*!
   165     Handles mailbox list changes.
   167     Handles mailbox list changes.
   166 
   168 
   169 */
   171 */
   170 void NmMailboxSelectionView::mailboxListChanged(const NmId &mailboxId,
   172 void NmMailboxSelectionView::mailboxListChanged(const NmId &mailboxId,
   171     NmSettings::MailboxEventType type)
   173     NmSettings::MailboxEventType type)
   172 {
   174 {
   173     NM_FUNCTION;
   175     NM_FUNCTION;
   174     
   176 
   175     switch (type) {
   177     switch (type) {
   176         case NmSettings::MailboxDeleted: {
   178         case NmSettings::MailboxDeleted: {
   177             // Search correct item.
   179             // Search correct item.
   178             QModelIndex itemModelIndex;
   180             QModelIndex itemModelIndex;
   179             bool found(false);
   181             bool found(false);
   208 */
   210 */
   209 void NmMailboxSelectionView::mailboxPropertyChanged(const NmId &mailboxId,
   211 void NmMailboxSelectionView::mailboxPropertyChanged(const NmId &mailboxId,
   210     QVariant property, QVariant value)
   212     QVariant property, QVariant value)
   211 {
   213 {
   212     NM_FUNCTION;
   214     NM_FUNCTION;
   213     
   215 
   214     // Search correct item.
   216     // Search correct item.
   215     NmMailboxEntryItem *entryItem = 0;
   217     NmMailboxEntryItem *entryItem = NULL;
   216     const int itemCount(mModel->rowCount());
   218     const int itemCount(mModel->rowCount());
   217     for (int itemIndex(0); itemIndex < itemCount; ++itemIndex) {
   219     for (int itemIndex(0); itemIndex < itemCount; ++itemIndex) {
   218         entryItem = static_cast<NmMailboxEntryItem *>(
   220         entryItem = static_cast<NmMailboxEntryItem *>(
   219             mModel->itemFromIndex(mModel->index(itemIndex, 0)));
   221             mModel->itemFromIndex(mModel->index(itemIndex, 0)));
   220         if (entryItem && (entryItem->id() == mailboxId)) {
   222         if (entryItem && (entryItem->id() == mailboxId)) {