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)), |
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)) { |