emailuis/emailui/src/FreestyleEmailUiAppui.cpp
branchRCL_3
changeset 18 6b8f3b30d0ec
parent 17 67369d1b217f
child 20 efd4f1afd43e
--- a/emailuis/emailui/src/FreestyleEmailUiAppui.cpp	Tue May 25 12:23:16 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiAppui.cpp	Wed Jun 09 09:22:57 2010 +0300
@@ -878,6 +878,12 @@
         return;
         }
 
+    if ( iActiveMailbox ) 
+        {
+        StartMonitoringL(); // start connect automatically
+        SyncActiveMailBoxL(); // start sync
+        }
+
     // Do nothing if the externally activated view was already active
     if ( iCurrentActiveView->Id() != aViewId )
         {
@@ -1327,6 +1333,14 @@
 	    {
 	    return; //"consume" event
 	    }
+    
+    // to disable deleting message shortcut (bakspace) when fowarding/replying
+    if ( EStdKeyBackspace == key && aEvent.Type() == EEventKeyDown 
+         && iCurrentActiveView == iComposeView )
+        {
+        return; // consume event
+        }
+    
 	//</cmail>
 	if ( EStdKeyNo == key && aEvent.Type() == EEventKeyDown )
 		{
@@ -1412,7 +1426,16 @@
             }
         }
 
-    CAknAppUi::HandleWsEventL(aEvent, aDestination);
+    if ( aEvent.Key()->iCode == EKeyEscape && 
+         iCurrentActiveView == iComposeView &&
+         iComposeView->IsOpeningWaitNoteVisible() )
+        {
+        return;
+        }
+    else
+        {
+        CAknAppUi::HandleWsEventL(aEvent, aDestination);
+        }
 	}
 
 CAlfDisplay& CFreestyleEmailUiAppUi::Display()
@@ -2520,7 +2543,59 @@
 		titlePane->SetSmallPicture( iConnectionIconBitmap, iConnectionIconMask, iConnectionIconBitmap && iConnectionIconMask);
 		}
 	iConnectionStatusIconAnimTimer->Stop();
-	iFakeSyncAnimStopTimer->Stop();
+    }
+
+void CFreestyleEmailUiAppUi::GetConnectionStatusL( 
+        CConnectionStatusQueryExtension::TConnectionStatus& aConnStatus )
+    {
+    aConnStatus = CConnectionStatusQueryExtension::EDisconnected;
+    CFSMailBox* mailbox = GetActiveMailbox();
+    if ( mailbox )
+        {
+        CConnectionStatusQueryExtension* extension( NULL );
+        TRAPD( error, extension = static_cast<CConnectionStatusQueryExtension*>( 
+                mailbox->ExtensionL( KEmailConnectionStatusQueryExtensionUid ) ) );
+        
+        if ( error && error != KErrNotSupported )
+            {
+            User::Leave( error );
+            }
+        
+        if ( extension )
+            {
+            // Query from extension - the new way
+            aConnStatus = extension->ConnectionStatus(
+                                mailbox->GetId(), iForcedConnectionStatus);
+            mailbox->ReleaseExtension( extension );
+            }
+        else
+            {
+            // Retain the old way        
+            TFSMailBoxStatus boxStatus( mailbox->GetMailBoxStatus() );
+            TSSMailSyncState syncState( mailbox->CurrentSyncState() );
+
+            if ( ( boxStatus == EFSMailBoxOnline && iForcedConnectionStatus != EForceToDisconnected ) ||
+                    (iForcedConnectionStatus == EForceToConnected || iForcedConnectionStatus == EForceToSync) )
+                {
+                if (syncState == EmailSyncing || syncState == InboxSyncing ||
+                        syncState == OutboxSyncing || syncState == SentItemsSyncing ||
+                        syncState == DraftsSyncing || syncState == CalendarSyncing ||
+                        syncState == ContactsSyncing || syncState == TasksSyncing ||
+                        syncState == FilesSyncing || iForcedConnectionStatus == EForceToSync )
+                    {
+                    aConnStatus = CConnectionStatusQueryExtension::ESynchronizing;
+                    }
+                else
+                    {
+                    aConnStatus = CConnectionStatusQueryExtension::EConnected;
+                    }
+                }
+            else // EFSMailBoxOffline
+                {
+                aConnStatus = CConnectionStatusQueryExtension::EDisconnected;
+                }            
+            }
+        }
     }
 
 void CFreestyleEmailUiAppUi::UpdateTitlePaneConnectionStatus(
@@ -2531,20 +2606,9 @@
 
     if ( iConnectionStatusVisible )
     	{
-
-    	// Get connection status of the current mailbox
-    	TFSMailBoxStatus connectionStatus = EFSMailBoxOffline;
-    	TSSMailSyncState syncState = Idle;
-		CFSMailBox* mb = GetActiveMailbox();
-		if ( mb )
-			{
-			connectionStatus = mb->GetMailBoxStatus();
-			syncState = mb->CurrentSyncState();
-			}
-
 		TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle );
 		CEikStatusPaneBase::TPaneCapabilities subPaneTitle =
-            StatusPane()->PaneCapabilities( titlePaneUid );
+			StatusPane()->PaneCapabilities( titlePaneUid );
 
 		if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() )
 			{
@@ -2554,44 +2618,42 @@
 
 			// Set connection icon
 			iConnectionStatusIconAnimTimer->Stop();
-			iFakeSyncAnimStopTimer->Stop();
 			iConnectionIconBitmap = 0;
 			iConnectionIconMask = 0;
-			TSize iconSize = LayoutHandler()->statusPaneIconSize();
-			TBool startTimer = EFalse;
-			if ( ( connectionStatus == EFSMailBoxOnline && iForcedConnectionStatus != EForceToDisconnected ) ||
-					(iForcedConnectionStatus == EForceToConnected || iForcedConnectionStatus == EForceToSync) )
-				{
-				if (syncState == EmailSyncing || syncState == InboxSyncing ||
-				        syncState == OutboxSyncing || syncState == SentItemsSyncing ||
-				        syncState == DraftsSyncing || syncState == CalendarSyncing ||
-				        syncState == ContactsSyncing || syncState == TasksSyncing ||
-				        syncState == FilesSyncing || iForcedConnectionStatus == EForceToSync )
-				    {
-				    TRAP_IGNORE( FsTextureManager()->ProvideBitmapL(
+			TBool startTimer = EFalse;			
+
+            // Get connection status of the current mailbox
+            CConnectionStatusQueryExtension::TConnectionStatus connectionStatus;       
+            TRAP_IGNORE( GetConnectionStatusL( connectionStatus ) );
+
+            switch ( connectionStatus )
+			    {
+                case CConnectionStatusQueryExtension::EConnected:
+                    TRAP_IGNORE( FsTextureManager()->ProvideBitmapL(
+                        EStatusTextureConnected, iConnectionIconBitmap, iConnectionIconMask ) );
+                    break;
+                case CConnectionStatusQueryExtension::EDisconnected:
+                    TRAP_IGNORE( FsTextureManager()->ProvideBitmapL(
+                            EStatusTextureDisconnectedGeneral, iConnectionIconBitmap, iConnectionIconMask ) );
+                    break;
+                case CConnectionStatusQueryExtension::ESynchronizing:
+                    TRAP_IGNORE( FsTextureManager()->ProvideBitmapL(
                         EStatusTextureSynchronising, iConnectionIconBitmap, iConnectionIconMask ) );
-				    startTimer = ETrue;
-				    }
-				else
-				    {
-				    TRAP_IGNORE( FsTextureManager()->ProvideBitmapL(
-                        EStatusTextureConnected, iConnectionIconBitmap, iConnectionIconMask ) );
-				    }
-				}
-			else // EFSMailBoxOffline
-				{
-				TRAP_IGNORE( FsTextureManager()->ProvideBitmapL(
-						EStatusTextureDisconnectedGeneral, iConnectionIconBitmap, iConnectionIconMask ) );
-				}
+                    startTimer = ETrue;
+                    break;
+                default:
+                    break;
+			    }
 
 			if ( iConnectionIconBitmap )
 				{
+                TSize iconSize( LayoutHandler()->statusPaneIconSize() );
 				AknIconUtils::SetSize( iConnectionIconBitmap, iconSize, EAspectRatioNotPreserved );
 				}
 			titlePane->SetSmallPicture( iConnectionIconBitmap, iConnectionIconMask, iConnectionIconMask && iConnectionIconBitmap );
 			if (startTimer)
 			    {
-			    iConnectionStatusIconAnimTimer->Start(KConnectionStatusIconRotationInterval);
+			    iConnectionStatusIconAnimTimer->Start( KConnectionStatusIconRotationInterval );
 			    }
             titlePane->DrawNow();
 			}