35 NmUiStartParam* startParam, |
35 NmUiStartParam* startParam, |
36 NmUiEngine &uiEngine, |
36 NmUiEngine &uiEngine, |
37 NmMailboxListModel &mailboxListModel, |
37 NmMailboxListModel &mailboxListModel, |
38 HbDocumentLoader *documentLoader, |
38 HbDocumentLoader *documentLoader, |
39 QGraphicsItem *parent) |
39 QGraphicsItem *parent) |
40 : NmBaseView(startParam,parent), |
40 : NmBaseView(startParam, application, parent), |
41 mApplication(application), |
41 mApplication(application), |
42 mMailboxListWidget(NULL), |
42 mMailboxListWidget(NULL), |
43 mUiEngine(uiEngine), |
43 mUiEngine(uiEngine), |
44 mListModel(mailboxListModel), |
44 mListModel(mailboxListModel), |
45 mItemContextMenu(NULL), |
45 mItemContextMenu(NULL), |
95 mMailboxListWidget->setItemPrototype(new NmMailboxListViewItem(this)); |
95 mMailboxListWidget->setItemPrototype(new NmMailboxListViewItem(this)); |
96 mMailboxListWidget->setItemRecycling(true); |
96 mMailboxListWidget->setItemRecycling(true); |
97 QObject::connect(mMailboxListWidget, |
97 QObject::connect(mMailboxListWidget, |
98 SIGNAL(activated(const QModelIndex &)), |
98 SIGNAL(activated(const QModelIndex &)), |
99 this, SLOT(itemActivated(const QModelIndex &))); |
99 this, SLOT(itemActivated(const QModelIndex &))); |
100 QObject::connect(mMailboxListWidget, |
|
101 SIGNAL(longPressed(HbAbstractViewItem*, const QPointF&)), |
|
102 this, SLOT(showItemContextMenu(HbAbstractViewItem*,const QPointF&))); |
|
103 mMailboxListWidget->setClampingStyle(HbScrollArea::BounceBackClamping); |
100 mMailboxListWidget->setClampingStyle(HbScrollArea::BounceBackClamping); |
104 mMailboxListWidget->setFrictionEnabled(true); |
101 mMailboxListWidget->setFrictionEnabled(true); |
105 } |
102 } |
106 else { |
103 else { |
107 NMLOG("nmailui: mailboxlistview: List object loading failed"); |
104 NMLOG("nmailui: mailboxlistview: List object loading failed"); |
195 mApplication.enterNmUiView(startParam); |
192 mApplication.enterNmUiView(startParam); |
196 } |
193 } |
197 } |
194 } |
198 |
195 |
199 /*! |
196 /*! |
200 showItemContextMenu. Functions starts fetching item context menu objects |
|
201 from extension. Menu is displayed in view callback funtion. |
|
202 */ |
|
203 void NmMailboxListView::showItemContextMenu(HbAbstractViewItem *item, const QPointF &coords) |
|
204 { |
|
205 if (mItemContextMenu&&item){ |
|
206 // Clear previous items from context menu |
|
207 mItemContextMenu->clearActions(); |
|
208 // Get mailbox meta data |
|
209 NmMailboxMetaData *mailbox = |
|
210 mListModel.data(item->modelIndex(), Qt::DisplayRole).value<NmMailboxMetaData*>(); |
|
211 NmId mailboxId(0); |
|
212 if (mailbox) { |
|
213 mailboxId = mailbox->id(); |
|
214 } |
|
215 // Fetch items from extension based on item |
|
216 NmActionRequest request(this, NmActionContextMenu, NmActionContextViewNone, |
|
217 NmActionContextDataMailbox, mailboxId); |
|
218 NmUiExtensionManager &extMngr = mApplication.extManager(); |
|
219 QList<NmAction*> list; |
|
220 extMngr.getActions(request, list); |
|
221 for (int i=0;i<list.count();i++) { |
|
222 mItemContextMenu->addAction(list[i]); |
|
223 } |
|
224 // Display menu |
|
225 if (mMailboxListWidget){ |
|
226 mMailboxListWidget->setCurrentIndex(item->modelIndex()); |
|
227 mItemContextMenu->setObjectName("MailboxItemContextMenu"); |
|
228 mItemContextMenu->setPreferredPos(coords); |
|
229 mItemContextMenu->open(this, SLOT(contextButton(NmActionResponse&))); |
|
230 } |
|
231 } |
|
232 } |
|
233 |
|
234 /*! |
|
235 Slot. Signaled when menu option is selected |
|
236 */ |
|
237 void NmMailboxListView::contextButton(NmActionResponse &result) |
|
238 { |
|
239 // Handle context menu commands here |
|
240 if (result.menuType()==NmActionContextMenu){ |
|
241 switch (result.responseCommand()){ |
|
242 case NmActionResponseCommandOpen:{ |
|
243 // Check that given start response has mailbox and folder id's |
|
244 if (result.mailboxId()!=0){ |
|
245 // Use standard folder id inbox if folder has not been specified |
|
246 NmId folderId = result.folderId(); |
|
247 if (folderId==0){ |
|
248 folderId=mUiEngine.standardFolderId(result.mailboxId(), |
|
249 NmFolderInbox); |
|
250 } |
|
251 NmUiStartParam *startParam = new NmUiStartParam(NmUiViewMessageList, |
|
252 result.mailboxId(), |
|
253 folderId); |
|
254 mApplication.enterNmUiView(startParam); |
|
255 } |
|
256 } |
|
257 break; |
|
258 default: |
|
259 break; |
|
260 } |
|
261 } |
|
262 } |
|
263 |
|
264 /*! |
|
265 handleActionCommand. From NmMenuObserver, extension manager calls this |
197 handleActionCommand. From NmMenuObserver, extension manager calls this |
266 call to handle menu command in the UI. |
198 call to handle menu command in the UI. |
267 */ |
199 */ |
268 |
200 |
269 void NmMailboxListView::handleActionCommand(NmActionResponse &actionResponse) |
201 void NmMailboxListView::handleActionCommand(NmActionResponse &actionResponse) |