emailuis/nmailui/src/nmmailboxlistview.cpp
changeset 27 9ba4404ef423
parent 23 2dc6caa42ec3
child 30 759dc5235cdb
equal deleted inserted replaced
23:2dc6caa42ec3 27:9ba4404ef423
    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)