emailuis/emailui/src/ncscomposeview.cpp
branchRCL_3
changeset 11 0396474f30f5
parent 10 f5907b1a1053
child 12 4ce476e64c59
--- a/emailuis/emailui/src/ncscomposeview.cpp	Fri Mar 12 15:41:14 2010 +0200
+++ b/emailuis/emailui/src/ncscomposeview.cpp	Mon Mar 15 12:39:10 2010 +0200
@@ -105,7 +105,7 @@
     FUNC_LOG;
 
     CNcsComposeView* self = 
-        CNcsComposeView::NewLC( aMailClient, aEnv, 	aAppUi,
+        CNcsComposeView::NewLC( aMailClient, aEnv, aAppUi,
                                 aControlGroup, aMsvSession );
     CleanupStack::Pop( self );
 
@@ -160,7 +160,7 @@
     CAlfControlGroup& attListControlGroup = 
         iEnv.NewControlGroupL( KSendAttachmentManagerDisplayGroup );
     CFSEmailUiSendAttachmentsListVisualiser* sendAttachmentVisualiser =
-		CFSEmailUiSendAttachmentsListVisualiser::NewLC(
+        CFSEmailUiSendAttachmentsListVisualiser::NewLC(
             iEnv, &iAppUi, attListControlGroup );
     iAppUi.AddViewL( sendAttachmentVisualiser );
     CleanupStack::Pop( sendAttachmentVisualiser );
@@ -433,6 +433,91 @@
     TIMESTAMP( "Editor launched" );
     }
 
+// -----------------------------------------------------------------------------
+// Initialises toolbar items.
+// -----------------------------------------------------------------------------
+//
+void CNcsComposeView::DynInitToolbarL( TInt aResourceId,
+    CAknToolbar* aToolbar )
+    {
+    FUNC_LOG;
+    if ( aResourceId == EFsEmailUiTbCmdExpandActions && aToolbar )
+        {
+        CAknToolbarExtension* ext = aToolbar->ToolbarExtension();
+        if ( iContainer )
+            {
+            // Set correct state for show/hide cc field button.
+            CAknButton* ccButton = Button( EFsEmailUiTbCmdCcField, ext );
+            if ( ccButton )
+                {
+                TInt index = iContainer->IsCcFieldVisible() ? 1 : 0;
+                ccButton->SetCurrentState( index, EFalse );
+
+                // Command is dimmed, if there is content in the field.
+                ccButton->SetDimmed( iContainer->GetCcFieldLength() > 0 );
+                }
+
+            // Set correct state for show/hide bcc field button.
+            CAknButton* bccButton = Button( EFsEmailUiTbCmdBccField, ext );
+            if ( bccButton )
+                {
+                TInt index = iContainer->IsBccFieldVisible() ? 1 : 0;
+                bccButton->SetCurrentState( index, EFalse );
+
+                // Command is dimmed, if there is content in the field.
+                bccButton->SetDimmed( iContainer->GetBccFieldLength() > 0 );
+                }
+            }
+        else
+            {
+            ext->HideItemL( EFsEmailUiTbCmdCcField, ETrue );
+            ext->HideItemL( EFsEmailUiTbCmdBccField, ETrue );
+            }
+
+        if ( iNewMessage )
+            {
+            // Set correct state for low priority button.
+            TBool lowPriority = iNewMessage->IsFlagSet( EFSMsgFlag_Low );
+            CAknButton* lowPriorityButton = static_cast<CAknButton*>(
+                ext->ControlOrNull( EFsEmailUiTbCmdLowPriority ) );
+            if ( lowPriorityButton )
+                {
+                TInt index = lowPriority ? 1 : 0;
+                lowPriorityButton->SetCurrentState( index, EFalse ); 
+                }
+
+            // Set correct state for high priority button.
+            TBool highPriority = iNewMessage->IsFlagSet( EFSMsgFlag_Important );
+            CAknButton* highPriorityButton = static_cast<CAknButton*>(
+                ext->ControlOrNull( EFsEmailUiTbCmdHighPriority ) );
+            if ( highPriorityButton )
+                {
+                TInt index = highPriority ? 1 : 0;
+                highPriorityButton->SetCurrentState( index, EFalse );
+                }
+
+            // Set correct state for follow up button.
+            TBool followUp = iNewMessage->IsFlagSet( EFSMsgFlag_FollowUp );
+            CAknButton* followUpButton = static_cast<CAknButton*>(
+                ext->ControlOrNull( EFsEmailUiTbCmdFollowUp ) );
+            if ( followUpButton )
+                {
+                TInt index = followUp ? 1 : 0;
+                followUpButton->SetCurrentState( index, EFalse );
+
+                // Hide follow up button, if follow up is not supported.
+                ext->HideItemL( EFsEmailUiTbCmdFollowUp,
+                    !TFsEmailUiUtility::IsFollowUpSupported( *iMailBox ) );
+                }
+            }
+        else
+            {
+            ext->HideItemL( EFsEmailUiTbCmdLowPriority, ETrue );
+            ext->HideItemL( EFsEmailUiTbCmdHighPriority, ETrue );
+            ext->HideItemL( EFsEmailUiTbCmdFollowUp, ETrue );
+            }
+        }
+    }
 
 // -----------------------------------------------------------------------------
 // CNcsComposeView::OfferToolbarEventL
@@ -440,7 +525,7 @@
 void CNcsComposeView::OfferToolbarEventL( TInt aCommand )
     {
     FUNC_LOG;
-    bool attachmentAddition = EFalse;
+    TBool attachmentAddition = EFalse;
     switch ( aCommand )
         {
         case EFsEmailUiTbCmdSend:
@@ -453,12 +538,104 @@
                 HandleCommandL( ENcsCmdSend );
                 }
             break;
-        case EFsEmailUiTbCmdAddRecipient:
-            if ( iContainer )
+        case EFsEmailUiTbCmdCcField:
+            {
+            CAknButton* ccFieldButton = Button( EFsEmailUiTbCmdCcField );
+            if ( ccFieldButton )
                 {
-                iContainer->AppendAddressesL();
+                if ( ccFieldButton->StateIndex() )
+                    {
+                    HandleCommandL( ENcsCmdShowCc );
+                    }
+                else
+                    {
+                    HandleCommandL( ENcsCmdHideCc );
+                    }
+                }
+            break;
+            }
+        case EFsEmailUiTbCmdBccField:
+            {
+            CAknButton* bccFieldButton = Button( EFsEmailUiTbCmdBccField );
+            if ( bccFieldButton )
+                {
+                if ( bccFieldButton->StateIndex()  )
+                    {
+                    HandleCommandL( ENcsCmdShowBcc );
+                    }
+                else
+                    {
+                    HandleCommandL( ENcsCmdHideBcc );
+                    }
                 }
             break;
+            }
+        case EFsEmailUiTbCmdLowPriority:
+            {
+            CAknButton* lowPriorityButton = Button( EFsEmailUiTbCmdLowPriority );
+            if ( lowPriorityButton )
+                {
+                if ( lowPriorityButton->StateIndex() )
+                    {
+                    CAknButton* highPriorityButton = Button( 
+                        EFsEmailUiTbCmdHighPriority );
+                    if ( highPriorityButton )
+                        {
+                        highPriorityButton->SetCurrentState( 0, ETrue );
+                        }
+                    HandleCommandL( ENcsCmdPriorityLow );
+                    }
+                else
+                    {
+                    HandleCommandL( ENcsCmdPriorityNormal );
+                    }
+                }
+            break;
+            }
+        case EFsEmailUiTbCmdHighPriority:
+            {
+            CAknButton* highPriorityButton = Button( EFsEmailUiTbCmdHighPriority );
+            if ( highPriorityButton )
+                {
+                if ( highPriorityButton->StateIndex() )
+                    {
+                    CAknButton* lowPriorityButton = Button( 
+                        EFsEmailUiTbCmdLowPriority );
+                    if ( lowPriorityButton )
+                        {
+                        lowPriorityButton->SetCurrentState( 0, ETrue );
+                        }
+                    HandleCommandL( ENcsCmdPriorityHigh );
+                    }
+                else
+                    {
+                    HandleCommandL( ENcsCmdPriorityNormal );
+                    }
+                }
+            break;
+            }
+        case EFsEmailUiTbCmdFollowUp:
+            {
+            CAknButton* button = Button( EFsEmailUiTbCmdFollowUp );
+            if ( button && iNewMessage )
+                {
+                if ( button->StateIndex() )
+                    {
+                    iNewMessage->SetFlag( EFSMsgFlag_FollowUp );
+                    iNewMessage->ResetFlag( EFSMsgFlag_FollowUpComplete );
+                    iStatusPaneIndicators->SetFollowUpFlag( 
+                        CCustomStatuspaneIndicators::EFollowUp );
+                    }
+                else
+                    {
+                    iNewMessage->ResetFlag( EFSMsgFlag_FollowUp 
+                        | EFSMsgFlag_FollowUpComplete );
+                    iStatusPaneIndicators->SetFollowUpFlag( 
+                        CCustomStatuspaneIndicators::EFollowUpNone );
+                    }
+                }
+            break;
+            }
         case EFsEmailUiTbCmdInsertAudio:
             iAttachmentAddType = MsgAttachmentUtils::EAudio;
             attachmentAddition = ETrue;
@@ -535,10 +712,10 @@
         // DimAllOptions if remotesearch is in progress, 
         // because it takes you into a different view
         TBool dimAllOptions = iContainer->IsRemoteSearchInprogress();
+        SetToolbarItemDimmed( EFsEmailUiTbCmdExpandActions, dimAllOptions );
         SetToolbarItemDimmed( EFsEmailUiTbCmdExpandInsert, dimAllOptions );
-        SetToolbarItemDimmed( EFsEmailUiTbCmdSend,
-                iContainer->AreAddressFieldsEmpty() );
-        SetToolbarItemDimmed( EFsEmailUiTbCmdAddRecipient, dimAllOptions );
+        SetToolbarItemDimmed( EFsEmailUiTbCmdSend, dimAllOptions 
+            || iContainer->AreAddressFieldsEmpty() );
         }
     }
 
@@ -1945,7 +2122,10 @@
         || commitSubjectField || commitBodyField )
         {
         TInt error = KErrNone;
-        TRAP( error, iNewMessage->SaveMessageL() );
+        if(iNewMessage) // Coverity error fix:
+            {
+            TRAP( error, iNewMessage->SaveMessageL() );
+            }
         RefreshToolbar();
         }
     }
@@ -2954,6 +3134,36 @@
     }
 
 // ---------------------------------------------------------------------------
+// Returns the speficied button from the toolbar extension, or NULL, 
+// if the button is not found.
+// ---------------------------------------------------------------------------
+//
+CAknButton* CNcsComposeView::Button( TInt aCmdId, 
+    CAknToolbarExtension* aExtension )
+    {
+    CAknButton* button = NULL;
+
+    // Get toolbar extension.
+    CAknToolbarExtension* extension = aExtension;
+    if ( !aExtension )
+        {
+        CAknToolbar* toolbar = Toolbar();
+        if ( toolbar )
+            {
+            extension = toolbar->ToolbarExtension();
+            }
+        }
+
+    // Get specified button from the extension.
+    if ( extension )
+        {
+        button = static_cast<CAknButton*>( extension->ControlOrNull( aCmdId ) );
+        }
+
+    return button;
+    }
+
+// ---------------------------------------------------------------------------
 // CActiveHelper::NewL()
 // ---------------------------------------------------------------------------
 //