Revision: 201011 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 31 Mar 2010 21:25:02 +0300
branchRCL_3
changeset 21 c6838af47512
parent 18 a9c7e5670d17
child 22 52d61119153d
Revision: 201011 Kit: 201013
email/imap4mtm/group/messaging_email_imap.history.xml
email/imap4mtm/imapservermtm/src/cimapupsresponsewaiter.cpp
email/imap4mtm/imapsyncmanager/src/cimapfolder.cpp
email/pop3andsmtpmtm/clientmtms/inc/MIUTMSG.H
email/pop3andsmtpmtm/clientmtms/src/MIUTMSG.CPP
email/pop3andsmtpmtm/group/messaging_email.history.xml
email/pop3andsmtpmtm/popservermtm/src/POPS.CPP
email/pop3andsmtpmtm/popservermtm/src/POPSRFSH.CPP
messagingappbase/mce/inc/MceMessageListItemArray.h
messagingappbase/mce/inc/MceOneRowMessageListContainer.h
messagingappbase/mce/src/MceMainViewListItemArray.cpp
messagingappbase/mce/src/MceMessageListItemArray.cpp
messagingappbase/mce/src/MceMessageListView.cpp
messagingappbase/mce/src/MceOneRowMessageListContainer.cpp
messagingappbase/mceextraitems/group/bld.inf
messagingappbase/msgavkon/msgindicatorplugin/group/ABLD.BAT
messagingappbase/msgeditor/appuisrc/MsgEditorShutter.cpp
messagingappbase/msgeditor/viewsrc/MsgAddressControlEditor.cpp
messagingappbase/ncnlist/src/CNcnNotifApiObserver.cpp
messagingappbase/ncnlist/src/NcnOutboxObserver.cpp
messagingappbase/sendui/genericmtmplugin/src/genericmtmplugin.cpp
mobilemessaging/audiomsg/src/audiomessageappui.cpp
mobilemessaging/smsmtm/clientmtm/inc/SMSCLNT.H
mobilemessaging/smsmtm/clientmtm/src/SMSCLNT.CPP
mobilemessaging/smsmtm/group/messaging_sms.history.xml
mobilemessaging/smsmtm/servermtm/src/SMSSERV.CPP
mobilemessaging/smsmtm/servermtm/src/SMSSOUTB.CPP
mobilemessaging/smsui/viewersrc/MsgSmsViewerAppUi.cpp
mobilemessaging/unieditor/application/src/UniEditorAppUi.cpp
--- a/email/imap4mtm/group/messaging_email_imap.history.xml	Mon Mar 15 12:40:06 2010 +0200
+++ b/email/imap4mtm/group/messaging_email_imap.history.xml	Wed Mar 31 21:25:02 2010 +0300
@@ -3,10 +3,18 @@
   <purpose>
     Message Type Module (MTM) plugin to Messaging Framework supporting send/receive/edit of IMAP4 email messages.
   </purpose>
-
-<defect number="DEF144494" title="when finish the mailbox configure, connet manually, after sync commpleted, Unable to perform operations pops up" revision="078">
-	MarkOnOrOfflineL() moved down.
-</defect>
+ 
+  <defect number="DEF144650" title="Gmail freezes when cancelling connection " revision="080">
+    added CMsgActive::DoCancel() in CImapUpsResponseWaiter::DoCancel() 
+  </defect>
+  
+  <defect number="DEF144494" title="when finish the mailbox configure, connet manually, after sync commpleted, Unable to perform operations pops up " revision="079">
+    Moved MarkOnOrOfflineL() API down
+  </defect>
+  
+  <defect number="PDEF143414" title="TRUE - IMAP4 not fully supporting standard email " revision="078">
+    Parsing the server response without [ ].
+  </defect>
 
  <defect number="DEF142209" title="[System Build] components go influenced by sytem marco in MSF00202 tb101sf" revision="077">
     Included missing header file.
--- a/email/imap4mtm/imapservermtm/src/cimapupsresponsewaiter.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/email/imap4mtm/imapservermtm/src/cimapupsresponsewaiter.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -138,4 +138,5 @@
 	{
 	iUpsSubsession.CancelPrompt();
 	iImapProtocolController.CancelAndCleanup();
+	CMsgActive::DoCancel();
 	}
--- a/email/imap4mtm/imapsyncmanager/src/cimapfolder.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/email/imap4mtm/imapsyncmanager/src/cimapfolder.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -688,7 +688,7 @@
 	// * If the remote message is no longer there:
 	//		(1) Then the local message is orphaned (always).
 	// * If the remote message is still there and it is not one of the N most recent:
-	//		(2) If the local message has body parts do nothing.
+	//		(2) If the local message has body parts do nothing. - This Check has been removed as per new CMail UI.
 	//		(3) If the local message does not have body parts, then it is orphaned
 	//		    unless is is a message we have selected for download.
 	// * If the remote message is still there and it is one of the N most recent:
@@ -734,16 +734,12 @@
 					SetEntryL((*iFolderIndex)[localloop].iMsvId);
 					TMsvEmailEntry message(iServerEntry.Entry());
 					// Does message have any downloaded parts?
-					if(!message.Complete() && 
-						!message.BodyTextComplete())
-						{
-						// The local message does not have any body parts and
-						// is not selected for download, so it is orphaned.
-						// See case (3) above.
-						__LOG_FORMAT((iSavedSession->LogId(), "ImapFolder: Local message (%d) is only header and not selected for download, deleting", (*iFolderIndex)[localloop].iMsvId));
-						removeThis = ETrue;
-						iOrphanedMessages++;
-						}
+					// The local message does not have any body parts and
+					// is not selected for download, so it is orphaned.
+					// See case (3) above.
+					__LOG_FORMAT((iSavedSession->LogId(), "ImapFolder: Local message (%d) is only header and not selected for download, deleting", (*iFolderIndex)[localloop].iMsvId));
+					removeThis = ETrue;
+					iOrphanedMessages++;
 					}
 				break;
 				}
--- a/email/pop3andsmtpmtm/clientmtms/inc/MIUTMSG.H	Mon Mar 15 12:40:06 2010 +0200
+++ b/email/pop3andsmtpmtm/clientmtms/inc/MIUTMSG.H	Wed Mar 31 21:25:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
--- a/email/pop3andsmtpmtm/clientmtms/src/MIUTMSG.CPP	Mon Mar 15 12:40:06 2010 +0200
+++ b/email/pop3andsmtpmtm/clientmtms/src/MIUTMSG.CPP	Wed Mar 31 21:25:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1998-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
--- a/email/pop3andsmtpmtm/group/messaging_email.history.xml	Mon Mar 15 12:40:06 2010 +0200
+++ b/email/pop3andsmtpmtm/group/messaging_email.history.xml	Wed Mar 31 21:25:02 2010 +0300
@@ -3,7 +3,17 @@
   <purpose>
     Message Type Module (MTM) plugin to Messaging Framework supporting send/receive/edit of POP3 email messages.
   </purpose>
-  
+   
+    Modified IMAP/POP server MTM API to delete the old messages for new CMail  UI. 
+  </defect>
+   
+    Modified APIs to include embedded images. 
+  </defect>
+
+  <defect number="DEF144968" title="Mail connection is disconnected with mVPN in MCL follow up" revision="157">
+   Handling cancel in   CAPA command 
+  </defect>
+
   <defect number="PDEF137958" title="Denial of Service vulnerability in mail retrieval" revision="156">
    Restricting the field size of the header to 5000, to avoid DOS condition.
   </defect>
--- a/email/pop3andsmtpmtm/popservermtm/src/POPS.CPP	Mon Mar 15 12:40:06 2010 +0200
+++ b/email/pop3andsmtpmtm/popservermtm/src/POPS.CPP	Wed Mar 31 21:25:02 2010 +0300
@@ -208,7 +208,17 @@
 		iSocket->Disconnect();
 		iSocketConnected=EFalse;
 		}
-	iSocket->Cancel();	// clear a pending socket call
+	
+	if(iState == EPopCapabilities || iState == EWaitingForReply)
+	    {
+	    if(iPopCapabilities)
+	        {
+	        iPopCapabilities->Cancel();
+	        }
+	    }
+	
+	iSocket->Cancel();  // clear a pending socket call
+
 	CMsgActive::DoCancel();
 	}
 
--- a/email/pop3andsmtpmtm/popservermtm/src/POPSRFSH.CPP	Mon Mar 15 12:40:06 2010 +0200
+++ b/email/pop3andsmtpmtm/popservermtm/src/POPSRFSH.CPP	Wed Mar 31 21:25:02 2010 +0300
@@ -1536,10 +1536,6 @@
 	// Don't delete email if body exists or if it is an email that is being opened immediately after
 	// the inbox refreshing (See defect PEN-5ESAWM)
 	{
-	if (aEntry.BodyTextComplete())
-		{
-		return EFalse;
-		}
 	// iMessagesToKeep may be Null
 	if (iMessagesToKeep && iMessagesToKeep->Find(aEntry.Id()) != KErrNotFound)
 		{
--- a/messagingappbase/mce/inc/MceMessageListItemArray.h	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/mce/inc/MceMessageListItemArray.h	Wed Mar 31 21:25:02 2010 +0300
@@ -498,6 +498,14 @@
         //FS Email stuff
         TInt CreateEntryIndexL() const;
         TInt GetEntryIndex( TInt aIndex ) const;
+        
+        /**
+         * Check the MTM technology type for Mail Technology 
+         * @param aMtm: Mtm Uid
+         * @return : ETrue if Mtm Technology is Mail
+         *           otherwsie EFalse
+         */
+        TBool IsMailMtmTechnology(TUid aMtm ) const ;
     
     private:    // Data
         CMsvSessionPtr                  iSession;
--- a/messagingappbase/mce/inc/MceOneRowMessageListContainer.h	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/mce/inc/MceOneRowMessageListContainer.h	Wed Mar 31 21:25:02 2010 +0300
@@ -38,7 +38,7 @@
 class CAknsBasicBackgroundControlContext;
 class CPtiEngine;
 class CAknTreeList;
-
+class CMtmUiDataRegistry;
 // CLASS DECLARATION
 
 
@@ -548,6 +548,14 @@
         */
         void HandleOperationCompletedL();
 
+        /**
+         * Check the MTM technology type for Mail Technology 
+         * @param aMtm: Mtm Uid
+         * @return : ETrue if Mtm Technology is Mail
+         *           otherwsie EFalse
+         */
+        TBool IsMailMtmTechnology( TUid aMtm )const;
+        
     private:
 
         CAknSingleColumnStyleTreeList*      iTreeListBox;
@@ -579,6 +587,7 @@
          * KFeatureIdFfEmailFramework is enabled
          */
         TBool                       iEmailFramework;
+        CMtmUiDataRegistry*             iUiRegistry;
     };
 
 #endif
--- a/messagingappbase/mce/src/MceMainViewListItemArray.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/mce/src/MceMainViewListItemArray.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -1053,13 +1053,14 @@
     
     _LIT(KDirAndMceExtraItemsResFileName,"mceextraitems.rsc");
             TFileName fileName; 
+		    fileName.Insert( 0,KDC_APP_RESOURCE_DIR );
+		    fileName.Append( KDirAndMceExtraItemsResFileName );
             TFindFile finder( iCoeEnv->FsSession() );
             //Search Y->A then Z:
-            TInt err = finder.FindByDir( KDirAndMceExtraItemsResFileName, KDC_APP_RESOURCE_DIR );
+		    BaflUtils::NearestLanguageFile(iCoeEnv->FsSession(),fileName);
+		    TInt err = finder.FindByDir(fileName , KDC_APP_RESOURCE_DIR );
             if(err == KErrNone)
-                {
-                fileName = finder.File();
-                BaflUtils::NearestLanguageFile(iCoeEnv->FsSession(),fileName);
+		        {                            
                 RConeResourceLoader resources( *iCoeEnv );
 
                 TInt err = KErrNone;
--- a/messagingappbase/mce/src/MceMessageListItemArray.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/mce/src/MceMessageListItemArray.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -99,6 +99,8 @@
 //cmail update
 #define KUidMsgTypeFsMtmVal               0x2001F406
 
+const TUid KMailTechnologyTypeUid = { 0x10001671 };
+
 // ================= MEMBER FUNCTIONS =======================
 
 // C++ default constructor can NOT contain any code that
@@ -416,8 +418,9 @@
 
     aBuffer.Append( KColumnListSeparator );
 
-    if ( aEntry.iMtm != KSenduiMtmMmsUid &&
-         aEntry.Attachment() )
+         
+    if ( aEntry.Attachment()&& aEntry.iMtm != KSenduiMtmMmsUid 
+         && IsMailMtmTechnology(aEntry.iMtm))
         {
         aBuffer.AppendNum( (TInt) EMceBitmapIndexAttachment );
 	    aBuffer.Append( KColumnListSeparator );
@@ -1596,5 +1599,19 @@
 
     return tmpindex;
     }
-
+// ----------------------------------------------------
+// CMceMessageListItemArray::IsMailMtmTechnology
+// ----------------------------------------------------
+TBool CMceMessageListItemArray::IsMailMtmTechnology(TUid aMtm )const
+    {
+    TBool isMailMtm = EFalse;
+    if ( aMtm.iUid != 0 && aMtm != KUidMsvLocalServiceMtm &&
+            iUiRegistry->IsPresent( aMtm) )
+        {
+        // get MTM technology type
+        TUid technologyType = iUiRegistry->TechnologyTypeUid( aMtm);
+        isMailMtm = ( KMailTechnologyTypeUid == technologyType );
+        }
+    return isMailMtm;
+    }
 //  End of File
--- a/messagingappbase/mce/src/MceMessageListView.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/mce/src/MceMessageListView.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -228,15 +228,7 @@
     // Reset the sort order
     iFolderItemArray->Reset();
        }
-	if ( iMsgListContainer &&
-	     iCurrentListType != GetFolderListBoxType())
-	    {
-	    ListboxTypeChangedL();
-	    }
-	else
-	    {
-	    CreateListboxL();        
-	    }	    
+	    
     if ( iMsgListContainer )
         {
         iMsgListContainer->SetSortTypeL( iSortOrder, iOrdering );
@@ -245,7 +237,6 @@
     TMsvId id = 0;
     TBool editorLaunched = EFalse;
     TBool launchingFromOutside = EFalse;  
-    TInt  msgMtmUid = 0;
     TMsvId service = KMsvLocalServiceIndexEntryId;
     TMsvEntry entry;
     
@@ -273,18 +264,19 @@
         	{
             // Set the folder based on the given ID
             iFolderId = aCustomMessageId.iUid;
-            // this is performance optimization, start to launch viewer before container creation
-            if ( !iMsgListContainer && entry.Id() == KMsvGlobalInBoxIndexEntryId )
-                {
-                if ( LaunchViewerWhenOneUnreadL( msgMtmUid ) > KErrNotFound )
-                    {
-                    editorLaunched = ETrue;
-                    }
-                }
+
         	}
         iMceUi->SetDontExitOnNextOperationComplete();
         }
-
+	if ( iMsgListContainer &&
+	     iCurrentListType != GetFolderListBoxType())
+	    {
+	    ListboxTypeChangedL();
+	    }
+	else
+	    {
+	    CreateListboxL();        
+	    }
     
     
     if ( iMsgListContainer && aPrevViewId == TDRVIEWID )
@@ -1222,7 +1214,7 @@
             switch ( currentEntry.iType.iUid )
                 {
                 case KUidMsvMessageEntryValue:
-                    if ( currentEntry.Parent() != KMsvGlobalOutBoxIndexEntryId )
+                    if (( currentEntry.Parent() != KMsvGlobalOutBoxIndexEntryId) && (iFolderId != KMsvGlobalOutBoxIndexEntryId))
                         {
                         EditEntryL();
                         }
--- a/messagingappbase/mce/src/MceOneRowMessageListContainer.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/mce/src/MceOneRowMessageListContainer.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -59,7 +59,7 @@
 #include <muiumsvuiserviceutilitiesinternal.h>
 
 #include <mce.rsg>
-
+#include <mtudreg.h> 
 // CONSTANTS
 
 const TInt KMceListContainerGranuality = 4;
@@ -79,7 +79,7 @@
 
 //cmail update
 #define KUidMsgTypeCmailMtmVal               0x2001F406
-
+const TUid KMailTechnologyTypeUid = { 0x10001671 };
 // ================= MEMBER FUNCTIONS =======================
 
 // ----------------------------------------------------
@@ -106,6 +106,7 @@
     delete iBgContext;
     delete iSelectedEntries;
     delete iTreeListBox;
+    delete iUiRegistry;
     }
 
 
@@ -207,6 +208,7 @@
     TLocale locale;
     iStartOfWeek = locale.StartOfWeek();
     iDialerEvent = EFalse ;
+    iUiRegistry = CMtmUiDataRegistry::NewL(*aSession); 
     }
 
 
@@ -570,7 +572,9 @@
             EFalse );
 
         TBool attachmentIcon = EFalse; 
-        if ( entry.Attachment() && entry.iMtm != KSenduiMtmMmsUid )
+         
+        if ( entry.Attachment() && entry.iMtm != KSenduiMtmMmsUid 
+             && IsMailMtmTechnology(entry.iMtm ))
             {
             iTreeListBox->SetIcon(
                 itemId,
@@ -2075,7 +2079,9 @@
             foundIcon,
             EFalse );
         TBool attachmentIcon = EFalse;
-        if ( entry.Attachment() && entry.iMtm != KSenduiMtmMmsUid )
+ 
+        if ( entry.Attachment() && entry.iMtm != KSenduiMtmMmsUid  
+             && IsMailMtmTechnology(entry.iMtm ))
             {
             iTreeListBox->SetIcon(
                 treeItemId,
@@ -2534,4 +2540,19 @@
          }
     }
 
+// ----------------------------------------------------
+// CMceOneRowMessageListContainer::IsMailMtmTechnology
+// ----------------------------------------------------
+TBool CMceOneRowMessageListContainer::IsMailMtmTechnology( TUid aMtm )const
+    {
+    TBool isMailMtm = EFalse;
+    if ( aMtm.iUid != 0 && aMtm != KUidMsvLocalServiceMtm &&
+            iUiRegistry->IsPresent( aMtm) )
+        {
+        // get MTM technology type
+        TUid technologyType = iUiRegistry->TechnologyTypeUid( aMtm);
+        isMailMtm = ( KMailTechnologyTypeUid == technologyType );
+        }
+    return isMailMtm;
+    }
 //  End of File
--- a/messagingappbase/mceextraitems/group/bld.inf	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/mceextraitems/group/bld.inf	Wed Mar 31 21:25:02 2010 +0300
@@ -35,6 +35,8 @@
 
 ../rom/mceextraitems.iby            CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(mceextraitems.iby)
 ../rom/mceextraitems_resource.iby   CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(mceextraitems_resource.iby)
+../rom/mceextraitems.iby        		CORE_APP_LAYER_IBY_EXPORT_PATH(mceextraitems.iby)
+../rom/mceextraitems_resource.iby   LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(mceextraitems_resource.iby)
 ../loc/mceextraitems.loc            APP_LAYER_LOC_EXPORT_PATH(mceextraitems.loc)
 
 PRJ_EXTENSIONS
--- a/messagingappbase/msgavkon/msgindicatorplugin/group/ABLD.BAT	Mon Mar 15 12:40:06 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-rem
-rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of the License "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description:  ABLD.BATrem
-
-@ECHO OFF
-
-REM Bldmake-generated batch file - ABLD.BAT
-REM ** DO NOT EDIT **
-
-perl -S ABLD.PL "\s60\app\messaging\messaginguis\msgavkon\msgindicatorplugin\group\\" %1 %2 %3 %4 %5 %6 %7 %8 %9
-if errorlevel==1 goto CheckPerl
-goto End
-
-:CheckPerl
-perl -v >NUL
-if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
-goto End
-
-:End
--- a/messagingappbase/msgeditor/appuisrc/MsgEditorShutter.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/msgeditor/appuisrc/MsgEditorShutter.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -152,6 +152,16 @@
         openEditors--;    
         iOpenAppProperty.Set( openEditors );
         }
+    
+    TInt standAloneEditorCnt = 0; // since only one stand alone editor can be launched
+    iOpenAppStandAloneProperty.Get(KPSUidMsgEditor, KMuiuStandAloneOpenMsgEditors, standAloneEditorCnt);
+
+    if(standAloneEditorCnt > 0)
+        {
+        standAloneEditorCnt--;
+        iOpenAppStandAloneProperty.Set(KPSUidMsgEditor, KMuiuStandAloneOpenMsgEditors, standAloneEditorCnt);
+        }
+
     iOpenAppProperty.Close();
     iOpenAppStandAloneProperty.Close();
     }
@@ -185,9 +195,7 @@
                  
     if((launchtype & EMsgLaunchEditorStandAlone ) && StandAloneEditorCnt > 1 )    
         {
-        StandAloneEditorCnt = 1;
-        err = iOpenAppStandAloneProperty.Set(KPSUidMsgEditor, KMuiuStandAloneOpenMsgEditors, StandAloneEditorCnt);
-         // Run appshutter
+        // Run appshutter
         CAknEnv::RunAppShutter();
         }
     else if ( openEditors  )
--- a/messagingappbase/msgeditor/viewsrc/MsgAddressControlEditor.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/msgeditor/viewsrc/MsgAddressControlEditor.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -224,9 +224,18 @@
      if( numOfEntries > 0 && numOfEntries != aEntryNumber && !setcursorpos)
         {
          TInt  txtlen = TextLength();
-         TInt  curpos = CursorPos();                
-         entryStart = iRichText->CharPosOfParagraph( entryLength, aEntryNumber );
-         curpos+= --entryLength;
+         TInt  curpos = CursorPos();        
+         if ( aEntryNumber ) 
+             {
+             entryStart = iRichText->CharPosOfParagraph( entryLength, aEntryNumber - 1 );         
+             curpos = entryStart + --entryLength ;
+             }
+         else 
+             {
+             entryStart = iRichText->CharPosOfParagraph( entryLength, aEntryNumber );         
+             curpos+= --entryLength;
+             }
+         
          if ( TextView() )
             {
                 if(curpos < txtlen)
--- a/messagingappbase/ncnlist/src/CNcnNotifApiObserver.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/ncnlist/src/CNcnNotifApiObserver.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -38,7 +38,9 @@
 #include <NcnListInternalCRKeys.h>
 #include <muiumsvuiserviceutilitiesinternal.h> // Messaging utilites
 #include <messaginginternalcrkeys.h>
+#include <MIUTSET.H>
 
+const TUid KUidMsgTypeCmailMtmVal = {0x2001F406};
 
 // ================= LOCAL CONSTANTS =======================
 namespace
@@ -1045,42 +1047,45 @@
 										const TUid& aMtmType, 
 										const TUid& aTechnologyType)
     {
-    TNcnMailBoxStatus mailbox( aMsvId );
+    if((aMtmType != KUidMsgTypeCmailMtmVal) &&  (aMtmType != KUidMsgTypeIMAP4) && (aMtmType != KUidMsgTypeSMTP) && (aMtmType != KUidMsgTypePOP3))
+        {
+	    TNcnMailBoxStatus mailbox( aMsvId );
     
-    // if mail box is not already in status array
-    if ( iMailBoxStatusArray.Find( mailbox, 
-            TNcnMailBoxStatus::Match ) == KErrNotFound )
-        {                        
-        // set mailbox fields        
-        mailbox.iMTMType = aMtmType;
-        mailbox.iMailBoxTechnologyType = aTechnologyType;      
+	    // if mail box is not already in status array
+	    if ( iMailBoxStatusArray.Find( mailbox, 
+	            TNcnMailBoxStatus::Match ) == KErrNotFound )
+	        {                        
+	        // set mailbox fields        
+	        mailbox.iMTMType = aMtmType;
+	        mailbox.iMailBoxTechnologyType = aTechnologyType;      
         
-        // set the mailboxes 'highest' values
-        FindHighest_MsvId_ImapId_LatestTime(mailbox.iMailBox,
-        									mailbox.iHighestEMailMsvId ,
-        									mailbox.iHighestIMAPId,
-        									mailbox.iLatestMessageArrival);
+	        // set the mailboxes 'highest' values
+	        FindHighest_MsvId_ImapId_LatestTime(mailbox.iMailBox,
+	        									mailbox.iHighestEMailMsvId ,
+	        									mailbox.iHighestIMAPId,
+	        									mailbox.iLatestMessageArrival);
 		
-		// set the rest of the values
-        mailbox.iUnreadCheckpointMsvId = mailbox.iHighestEMailMsvId;
-        mailbox.iPublishedCheckpointMsvId = mailbox.iHighestEMailMsvId;
-        mailbox.iPublishedCheckpointIMAPId = mailbox.iHighestIMAPId;
-        mailbox.iPublishedCheckpointTimeStamp = mailbox.iLatestMessageArrival;
-        mailbox.iPublishedNewEmailCount = 0;
-        mailbox.iShowIcon = ETrue;
-		//In case the mailbox is IMAP/POP/SyncMl update the notifcation
-		//parameters. 3rd party box's will give these in API
-	    if(	mailbox.iMTMType.iUid == KSenduiMtmImap4UidValue ||
-	    	mailbox.iMTMType.iUid == KSenduiMtmPop3UidValue	||  
-	    	mailbox.iMTMType.iUid == KSenduiMtmSyncMLEmailUidValue )
-			{
-			//This should work, but just in case it does not
-			//use default parameters
-			TRAP_IGNORE(UpdateS60MailBoxNotificationAttributesL(mailbox));
-			}
+			// set the rest of the values
+	        mailbox.iUnreadCheckpointMsvId = mailbox.iHighestEMailMsvId;
+	        mailbox.iPublishedCheckpointMsvId = mailbox.iHighestEMailMsvId;
+	        mailbox.iPublishedCheckpointIMAPId = mailbox.iHighestIMAPId;
+	        mailbox.iPublishedCheckpointTimeStamp = mailbox.iLatestMessageArrival;
+	        mailbox.iPublishedNewEmailCount = 0;
+	        mailbox.iShowIcon = ETrue;
+			//In case the mailbox is IMAP/POP/SyncMl update the notifcation
+			//parameters. 3rd party box's will give these in API
+		    if(	mailbox.iMTMType.iUid == KSenduiMtmImap4UidValue ||
+		    	mailbox.iMTMType.iUid == KSenduiMtmPop3UidValue	||  
+		    	mailbox.iMTMType.iUid == KSenduiMtmSyncMLEmailUidValue )
+				{
+				//This should work, but just in case it does not
+				//use default parameters
+				TRAP_IGNORE(UpdateS60MailBoxNotificationAttributesL(mailbox));
+				}
 		
-        // and finally append mailbox status
-        iMailBoxStatusArray.AppendL( mailbox );
+	        // and finally append mailbox status
+	        iMailBoxStatusArray.AppendL( mailbox );
+            }
         }
     }
 
--- a/messagingappbase/ncnlist/src/NcnOutboxObserver.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/ncnlist/src/NcnOutboxObserver.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -33,7 +33,9 @@
 #include    "NcnModelBase.h"
 #include    "CNcnMsvSessionHandler.h"
 #include    "CNcnMobileSignalStrengthHandler.h"
+#include <MIUTSET.H>
 
+const TUid KUidMsgTypeCmailMtmVal = {0x2001F406};
 // ================= MEMBER FUNCTIONS =======================
 
 // ---------------------------------------------------------
@@ -117,6 +119,30 @@
     // Check messagecount in outbox
     TInt msgCount = iOutboxFolder->Count();
     
+    CMsvEntrySelection *smtpselection = NULL ;
+    CMsvEntrySelection *pop3selection = NULL;
+    CMsvEntrySelection *imapselection = NULL ;
+    CMsvEntrySelection *cmailselection = NULL ;
+
+    smtpselection = iOutboxFolder ->ChildrenWithMtmL( KUidMsgTypeSMTP );
+    CleanupStack::PushL( smtpselection );
+    TInt smtpCount= smtpselection ->Count();
+    
+    pop3selection = iOutboxFolder ->ChildrenWithMtmL( KUidMsgTypePOP3 );
+    CleanupStack::PushL( pop3selection );    
+    TInt pop3Count= pop3selection ->Count();
+
+    imapselection = iOutboxFolder ->ChildrenWithMtmL( KUidMsgTypeIMAP4 );
+    CleanupStack::PushL( imapselection );
+    TInt imapCount= imapselection ->Count();
+    
+    cmailselection = iOutboxFolder ->ChildrenWithMtmL( KUidMsgTypeCmailMtmVal);
+    CleanupStack::PushL( cmailselection );
+    TInt cmailCount= cmailselection ->Count();
+    
+    CleanupStack::Pop( 4 );
+    // Check messagecount in outbox
+    msgCount  = msgCount - (smtpCount+pop3Count+ imapCount+cmailCount);
     // Set msg count to the CR key
     NCN_RDEBUG_INT( _L("CNcnOutboxObserver::CheckOutboxAndNotifyL SetCRInt(KNcnMessageCountInOutbox) %d" ), msgCount );
     User::LeaveIfError( iModel->SetCRInt( 
--- a/messagingappbase/sendui/genericmtmplugin/src/genericmtmplugin.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/messagingappbase/sendui/genericmtmplugin/src/genericmtmplugin.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -80,6 +80,7 @@
 
 const TUint KSeconds = 1000000;
 const TUid KMailTechnologyTypeUid = { 0x10001671 };
+const TUid KUidMsgTypeCmailMtmVal = { 0x2001f406 }; //CMail mtmuid
 
 // ======== LOCAL FUNCTIONS ========
 
@@ -324,7 +325,8 @@
 
         if ( success && ( aMtmUid == KSenduiMtmSmtpUid ||
              aMtmUid == KSenduiMtmMmsUid ||
-             aMtmUid == KSenduiMtmUniMessageUid ))
+             aMtmUid == KSenduiMtmUniMessageUid ||
+             aMtmUid == KUidMsgTypeCmailMtmVal ))
             {
             HBufC* subject = aMessageData->Subject().AllocLC();
             cleanupItems++;
--- a/mobilemessaging/audiomsg/src/audiomessageappui.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/mobilemessaging/audiomsg/src/audiomessageappui.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -276,7 +276,7 @@
 
     iCoeEnv->RootWin().EnableFocusChangeEvents();   // ignore error
     
-    iScreenClearer = CAknLocalScreenClearer::NewLC( EFalse );
+    iScreenClearer = CAknLocalScreenClearer::NewLC( ETrue );
     CleanupStack::Pop( iScreenClearer );    
 AMSLOGGER_WRITE( "CAudioMessageAppUi::ConstructL ends" );    	
     }
--- a/mobilemessaging/smsmtm/clientmtm/inc/SMSCLNT.H	Mon Mar 15 12:40:06 2010 +0200
+++ b/mobilemessaging/smsmtm/clientmtm/inc/SMSCLNT.H	Wed Mar 31 21:25:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
--- a/mobilemessaging/smsmtm/clientmtm/src/SMSCLNT.CPP	Mon Mar 15 12:40:06 2010 +0200
+++ b/mobilemessaging/smsmtm/clientmtm/src/SMSCLNT.CPP	Wed Mar 31 21:25:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -238,8 +238,18 @@
 			{
 			User::Leave(err);
 			}
-
-		iServiceId = 0;
+		TMsvEntry entry;
+		entry.iMtm = KUidMsgTypeSMS;
+	    entry.iType = KUidMsvServiceEntry;
+	    entry.SetReadOnly(EFalse);
+	    entry.SetVisible(EFalse);
+	    entry.iDate.UniversalTime();
+	    entry.iDetails.Set(_L("Default SMS Message"));
+    
+    	CMsvEntry* root = Session().GetEntryL(KMsvRootIndexEntryId);
+	    root->CreateL(entry);
+	   	iServiceId = entry.Id();
+	   	delete root;
 		}
 
 	//Initialise iRealAddressOpen and iRealAddressClose from the SMS resouce file
@@ -1539,7 +1549,6 @@
 
 /** 
 Creates a new outgoing SMS message entry as a child of the current context.
-
 Used by CSendAs::CreateMessageL to create an outgoing SMS message.
 
 @param	
--- a/mobilemessaging/smsmtm/group/messaging_sms.history.xml	Mon Mar 15 12:40:06 2010 +0200
+++ b/mobilemessaging/smsmtm/group/messaging_sms.history.xml	Wed Mar 31 21:25:02 2010 +0300
@@ -4,6 +4,14 @@
     Message Type Module (MTM) plugin to Messaging Framework, supporting sending/receiving/editing of SMS messages.
   </purpose>
 
+<defect number="DEF144773" title="[System Build] Program closed on Auto smoke test in tb92sf_1065" revision="040">
+     Logical error in last code submission in smsclnt.cpp in  void CMsvServer::ConstructL(). Updated those changes accordingly.
+  </defect>
+  
+  <defect number="DEF144509 " title="Bell Mobility Canada -GSM/WCDMA -OTC-SMS-MO-to invalid destination is retried" revision="039">
+     Checking for the error codes to avoid sending messages to invlaid numbers.
+  </defect>
+  
   <defect number="DEF142607 " title="smcm.dll contains ABSENT symbols" revision="038">
      declared classes as non sharable classes
   </defect>
--- a/mobilemessaging/smsmtm/servermtm/src/SMSSERV.CPP	Mon Mar 15 12:40:06 2010 +0200
+++ b/mobilemessaging/smsmtm/servermtm/src/SMSSERV.CPP	Wed Mar 31 21:25:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -19,6 +19,7 @@
 #include "SMSSPAN.H"
 #include "SMSSOUTB.H"
 
+#include <c32comm.h>
 #include <msventry.h>
 #include <smss.rsg>
 #include <smscmds.h>
--- a/mobilemessaging/smsmtm/servermtm/src/SMSSOUTB.CPP	Mon Mar 15 12:40:06 2010 +0200
+++ b/mobilemessaging/smsmtm/servermtm/src/SMSSOUTB.CPP	Wed Mar 31 21:25:02 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -23,6 +23,7 @@
 #include <logsmspdudata.h>
 #include <smsulog.h>
 #include <logwraplimits.h>
+#include <exterror.h>
 
 #include "SMSSendSession.h"
 #include "SMSSPAN.H"
@@ -210,7 +211,15 @@
 			{
 			if (iCurrentMessage)
 				{
-				ReScheduleFailedMessageL();
+				if( (iProgress.iError == KErrGsmSMSShortMessageTransferRejected) || (iProgress.iError == KErrGsmSMSInvalidMandatoryInformation) || (iProgress.iError == KErrGsmSMSUnidentifiedSubscriber) ||
+					(iProgress.iError == KErrGsmSMSUnknownSubscriber) || (iProgress.iError == KErrGsmSMSNetworkOutOfOrder) )
+				    {
+					DoComplete(iProgress.iError);
+				    }
+				else
+				    {
+					ReScheduleFailedMessageL();
+				    }	
 				}
 			else
 				{
--- a/mobilemessaging/smsui/viewersrc/MsgSmsViewerAppUi.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/mobilemessaging/smsui/viewersrc/MsgSmsViewerAppUi.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -246,7 +246,7 @@
         EMbmMuiuQgn_prop_mce_sms_title_mask );
         
             
-	iScreenClearer = CAknLocalScreenClearer::NewLC( EFalse );
+	iScreenClearer = CAknLocalScreenClearer::NewLC( ETrue );
 	CleanupStack::Pop( iScreenClearer );    
     iTypeMsg = CSmsPDU::ESmsDeliver; //for successful launch save the PDU Type.
 
--- a/mobilemessaging/unieditor/application/src/UniEditorAppUi.cpp	Mon Mar 15 12:40:06 2010 +0200
+++ b/mobilemessaging/unieditor/application/src/UniEditorAppUi.cpp	Wed Mar 31 21:25:02 2010 +0300
@@ -2846,6 +2846,16 @@
         }
     
     TUniState currentState = Document()->UniState();
+    if(currentState == EUniMms)
+        {
+        TInt PrevSlidecount = iSmilModel->SlideCount();
+        iSmilModel->RemoveEmptySlides();
+        if( PrevSlidecount != iSmilModel->SlideCount() )
+            {
+            Document()->SetBodyModified( ETrue );
+            CheckBodyForMessageTypeL();  
+            }
+        }
     
     TBool modified( EFalse );
     if ( !VerifyAddressesL( modified ) )
@@ -7455,6 +7465,11 @@
         }
         
     CleanupStack::PopAndDestroy( queryText );
+    if(!ObjectsAvailable() && Document()->CurrentSlide())
+        {
+        DoRemoveSlideL();
+        Document()->SetBodyModified( ETrue ); 
+        }   
     CheckBodyForMessageTypeL();
     MsgLengthToNavipaneL();
     }
@@ -7477,8 +7492,12 @@
             Document()->SetBodyModified( ETrue );
             
             UpdateSmilTextAttaL();
-            }
-        
+            }        
+        if((Document()->UniState() == EUniMms) &&(!ObjectsAvailable() && Document()->CurrentSlide()))
+            {
+            DoRemoveSlideL();
+            Document()->SetBodyModified( ETrue ); 
+            }        
         CheckBodyForMessageTypeL();
         MsgLengthToNavipaneL();
         SetOrRemoveMaxSizeInEdwin();