diff -r ecc8def7944a -r 2dc6caa42ec3 emailuis/nmsettingui/src/nmmailboxselectionview.cpp --- a/emailuis/nmsettingui/src/nmmailboxselectionview.cpp Mon May 03 12:23:15 2010 +0300 +++ b/emailuis/nmsettingui/src/nmmailboxselectionview.cpp Fri May 14 15:41:10 2010 +0300 @@ -49,14 +49,14 @@ : CpBaseSettingView(0, parent), mSettingsManager(settingsManager), mSettingsFactory(settingsFactory), - mSignalMapperConnected(false), mRefreshForm(false) { QScopedPointer signalMapper(new QSignalMapper()); - // Connect the form activated signal. - connect(settingForm(), SIGNAL(activated(QModelIndex)), - this, SLOT(formActivate(QModelIndex))); + // Connect the form's activated signal. + HbDataForm *form = qobject_cast(widget()); + connect(form, SIGNAL(activated(QModelIndex)), + this, SLOT(itemActivate(QModelIndex))); QScopedPointer itemHelper(new CpItemDataHelper()); QScopedPointer model(new HbDataFormModel()); @@ -103,32 +103,33 @@ } /*! - Handles the form activate signal. Maps the signal/mailbox item for the - buttons. + Handels the dataform's activated signal when item is shown. + Maps the signal/mailbox item for the buttons. \param index Data model index. */ -void NmMailboxSelectionView::formActivate(const QModelIndex &index) +void NmMailboxSelectionView::itemActivate(const QModelIndex &index) { - NMLOG("NmMailboxSelectionView::formActivate"); - HbWidget *widget = settingForm()->dataFormViewItem(index)->dataItemContentWidget(); - HbDataFormModel *model = static_cast(settingForm()->model()); + NMLOG("NmMailboxSelectionView::itemActivate"); + + HbDataForm *form = qobject_cast(widget()); + HbDataFormModel *model = static_cast(form->model()); NmMailboxEntryItem *item = static_cast(model->itemFromIndex(index)); - HbPushButton *button = static_cast(widget); - + if (!mSignalMapper->mapping(item)) { + + HbDataFormViewItem *viewItem = + static_cast(form->itemByIndex(index)); + HbPushButton *button = + static_cast(viewItem->dataItemContentWidget()); + connect(button, SIGNAL(pressed()), mSignalMapper, SLOT(map())); - + mSignalMapper->setMapping(button, item); - - // Form activate is called as many times as there are items in the view. - // This prevents multiple connections, so that the button click - // will be called only once. - if (!mSignalMapperConnected) { - connect(mSignalMapper, SIGNAL(mapped(QObject *)), this, SLOT(buttonClick(QObject *))); - mSignalMapperConnected = true; - } + + connect(mSignalMapper, SIGNAL(mapped(QObject *)), + this, SLOT(buttonClick(QObject *)), Qt::UniqueConnection); } } @@ -150,7 +151,8 @@ mModel->appendDataFormItem(item.data()); item.take(); } - settingForm()->setModel(mModel); + HbDataForm *form = qobject_cast(widget()); + form->setModel(mModel); } /*!