emailuis/nmailui/src/nmmessagelistview.cpp
changeset 53 bf7eb7911fc5
parent 30 759dc5235cdb
child 54 997a02608b3a
--- a/emailuis/nmailui/src/nmmessagelistview.cpp	Fri Jun 11 13:27:14 2010 +0300
+++ b/emailuis/nmailui/src/nmmessagelistview.cpp	Wed Jun 23 18:00:21 2010 +0300
@@ -55,12 +55,15 @@
 mSyncIcon(NULL),
 mViewReady(false),
 mCurrentFolderType(NmFolderInbox),
-mSettingsLaunched(false)
+mSettingsLaunched(false),
+mPreviousModelCount(0)
 {
     NM_FUNCTION;
 
     // Load view layout
     loadViewLayout();
+    //create toolbar
+    createToolBar();
     // Init tree view
     initTreeView();
     // set title
@@ -172,10 +175,6 @@
     NM_FUNCTION;
 
     if (!mViewReady){
-        // Set mailbox name to title pane
-        setMailboxName();
-        //create toolbar
-        createToolBar();
         // Refresh list
         QMetaObject::invokeMethod(this, "refreshList", Qt::QueuedConnection);
         mViewReady=true;
@@ -229,7 +228,6 @@
                 SIGNAL(longPressed(HbAbstractViewItem*, QPointF)), this,
                 SLOT(showItemContextMenu(HbAbstractViewItem*, QPointF)));
         mMessageListWidget->setFocus();
-        mItemContextMenu = new HbMenu();
     }
 }
 
@@ -314,7 +312,8 @@
         QObject::connect(mMessageListModel, SIGNAL(setNewParam(NmUiStartParam*)),
                 this, SLOT(reloadViewContents(NmUiStartParam*)));
 
-        if (mMessageListModel->rowCount()==0){
+        mPreviousModelCount=mMessageListModel->rowCount();
+        if (mPreviousModelCount==0){
             showNoMessagesText();
         }
         else{
@@ -402,8 +401,15 @@
 void NmMessageListView::showItemContextMenu(HbAbstractViewItem *listViewItem, const QPointF &coords)
 {
     NM_FUNCTION;
-
+   
     if (listViewItem) {
+        // Recreate item context menu each time it is called
+        if (mItemContextMenu){
+            mItemContextMenu->clearActions();
+            delete mItemContextMenu;    
+            mItemContextMenu=NULL;
+        }
+        mItemContextMenu = new HbMenu();
         // Store long press item for later use with response
         mLongPressedItem = mMessageListModel->data(
                 listViewItem->modelIndex(), Qt::DisplayRole).value<NmMessageListModelItem*>();
@@ -574,51 +580,22 @@
         if ( actionResponse.responseCommand() == NmActionResponseCommandNewMail ) {
             // Check that given start response has mailbox and folder id's
             if (actionResponse.mailboxId()!=0){
-                if (mUiEngine.isSendingMessage()) {
-                    // sending is ongoing so just show a note
-                    QString noteText = hbTrId("txt_mail_dialog_still_sending");
-
-                    // get message subject from the message being sent
-                    const NmMessage *message = mUiEngine.messageBeingSent();
-                    if (message) {
-                        noteText = noteText.arg(NmUtilities::truncate(message->envelope().subject(), 20));
-                    }
-                    HbMessageBox::warning(noteText);
-                }
-                else {
-                    NmUiStartParam *startParam = new NmUiStartParam(NmUiViewMessageEditor,
-                            actionResponse.mailboxId(), mStartParam->folderId());
-                    // startParam ownerhips transfers
-                    mApplication.enterNmUiView(startParam);
-                }
+                NmUiStartParam *startParam = new NmUiStartParam(NmUiViewMessageEditor,
+                        actionResponse.mailboxId(), mStartParam->folderId());
+                // startParam ownerhips transfers
+                mApplication.enterNmUiView(startParam);
             }
         }
         if (actionResponse.responseCommand() == NmActionResponseCommandSearch) {
             // Check that the given start response has mailbox and folder IDs.
             if (actionResponse.mailboxId() != 0) {
-                if (mUiEngine.isSendingMessage()) {
-                    // Sending is ongoing so just show a note.
-                    QString noteText = hbTrId("txt_mail_dialog_still_sending");
-
-                    // Get the message subject from the message being sent.
-                    const NmMessage *message = mUiEngine.messageBeingSent();
-
-                    if (message) {
-                        noteText = noteText.arg(
-                            NmUtilities::truncate(message->envelope().subject(), 20));
-                    }
+                NmUiStartParam *startParam =
+                    new NmUiStartParam(NmUiViewMessageSearchList,
+                                       actionResponse.mailboxId(),
+                                       mStartParam->folderId());
 
-                    HbMessageBox::warning(noteText);
-                }
-                else {
-                    NmUiStartParam *startParam =
-                        new NmUiStartParam(NmUiViewMessageSearchList,
-                                           actionResponse.mailboxId(),
-                                           mStartParam->folderId());
-
-                    // startParam ownership transfers.
-                    mApplication.enterNmUiView(startParam);
-                }
+                // startParam ownership transfers.
+                mApplication.enterNmUiView(startParam);
             }
         }
     }
@@ -722,11 +699,10 @@
     Q_UNUSED(parent);
     Q_UNUSED(end);
 
-    // If "no messages" label is shown, hide it and display the message list
-    // widget.
-    if (mNoMessagesLabel && mNoMessagesLabel->isVisible()) {
-        mNoMessagesLabel->hide();
-        mMessageListWidget->show();
+    // Hide no messages if previous model count has been zero
+    // and new items have been added to the list
+    if (mPreviousModelCount==0) {
+        hideNoMessagesText();
     }
 
     // Make sure the top of the list is kept visible by scrolling back to the
@@ -749,6 +725,10 @@
             }
         }
     }
+    // Store model count
+    if (mMessageListModel){
+        mPreviousModelCount=mMessageListModel->rowCount();    
+    }
 }
 
 
@@ -758,8 +738,11 @@
 void NmMessageListView::itemsRemoved()
 {
     NM_FUNCTION;
-
-    if (mMessageListModel && mMessageListModel->rowCount() == 0){
+    // Store model count
+    if (mMessageListModel){
+        mPreviousModelCount=mMessageListModel->rowCount();    
+    }
+    if (mPreviousModelCount == 0){
         showNoMessagesText();
     }
 }