messagingappbase/msgeditor/appuisrc/MsgEditorAppUi.cpp
branchRCL_3
changeset 53 696bfeff199e
parent 2 0bf1d54f37d9
child 54 fa1df4b99609
--- a/messagingappbase/msgeditor/appuisrc/MsgEditorAppUi.cpp	Mon Jun 21 15:36:19 2010 +0300
+++ b/messagingappbase/msgeditor/appuisrc/MsgEditorAppUi.cpp	Thu Jul 15 18:34:37 2010 +0300
@@ -205,6 +205,8 @@
     cache.RegisterPluginL( &( iMsgEditorAppUiExtension->iSettingCachePlugin ) );    
     
     iStatusPaneRes = StatusPane()->CurrentLayoutResId();
+    
+    iIterator = NULL;
     }
 
 // ---------------------------------------------------------
@@ -236,7 +238,9 @@
     delete iLock;
     delete iNaviDecorator;
 
-    delete iIterator;
+    // we are referring instance of nvaidecoratoir only
+    // no need to delete, alreday deleted in  delete iNaviDecorator;
+    //delete iIterator;
 
     // delete files from our temp directory.
     if ( iFileMan )
@@ -334,18 +338,25 @@
         }
 
     iMsgNaviDirection = aForward;
+    
+    // Check if next/previous message 
+    __ASSERT_DEBUG( iIterator != NULL, Panic( ENullPointer1 ) );
+     if ( aForward )
+         {
+         iIterator->SetNextMessage();
+         
+         }
+     else
+         {
+         iIterator->SetPreviousMessage();
+         }
+
+     RProperty::Set( KPSUidMuiu, KMuiuKeyNextMsg,
+              iIterator->CurrentMessage().Id() );
+         
 #ifdef RD_MSG_FAST_PREV_NEXT
     // Check if next/previous message can be fast opened by viewer
-    __ASSERT_DEBUG( iIterator != NULL, Panic( ENullPointer1 ) );
-    if ( aForward )
-        {
-        iIterator->SetNextMessage();
-        }
-    else
-        {
-        iIterator->SetPreviousMessage();
-        }
-
+    
     if ( CanFastOpenL( *iIterator) )
         {
         // Load next/previous message
@@ -376,6 +387,8 @@
             }
         else if ( err != KErrNone )
             {
+            // Reset the KMuiuKeyNextMsg to 0 
+            RProperty::Set( KPSUidMuiu, KMuiuKeyNextMsg,0 );
             // Unknown error during quick launch.
             iCoeEnv->HandleError( err );
             iExitMode = MApaEmbeddedDocObserver::ENoChanges;
@@ -409,12 +422,10 @@
         {
         CMsgEditorDocument* doc = Document();
 
-        if ( iIterator == NULL )
-            {
-            iIterator = CMessageIterator::NewL( doc->Session(), doc->Entry() );
-            iIterator->SetMessageIteratorObserver( this );
-            }
-
+        //We should not create iterator here  navi pane iterator
+        //will be refered  in  CMsgEditorAppUi
+         
+        __ASSERT_DEBUG( iIterator != NULL, Panic( ENullPointer1 ) );
         // Next is ETrue if layout is EAknLayoutIdABRW,
         // EFalse if EAknLayoutIdELAF or EAknLayoutIdAPAC
         if ( AknLayoutUtils::LayoutMirrored() )
@@ -453,12 +464,9 @@
     if ( iEikonEnv->StartedAsServerApp() )
         {
         CMsgEditorDocument* doc = Document();
-
-        if ( iIterator == NULL )
-            {
-            iIterator = CMessageIterator::NewL( doc->Session(), doc->Entry() );
-            iIterator->SetMessageIteratorObserver( this );
-            }
+        //We should not create iterator here, navi pane iterator
+        //will be refered  in  CMsgEditorAppUi
+        __ASSERT_DEBUG( iIterator != NULL, Panic( ENullPointer1 ) );
 
         aCurrentIndex = iIterator->CurrentMessageIndex();
         aMsgsInFolder = iIterator->MessagesInFolder();
@@ -1649,6 +1657,12 @@
         CMsgEditorDocument* doc = Document();
         naviPaneControl->SetNavigationIndicatorL( doc->Session(), doc->Entry() );
         
+        // this function will always be called when viwer is launched
+        // always navi decorater will be created.
+        // refer navi decorator iterator instance here
+        iIterator =  naviPaneControl->GetMessageIterator();
+        iIterator->SetMessageIteratorObserver( this );
+        
         iNaviDecorator->SetContainerWindowL( *naviContainer );
         iNaviDecorator->MakeScrollButtonVisible( EFalse );
         iNaviDecorator->SetComponentsToInheritVisibility( ETrue );