emailuis/emailui/src/ncscomposeview.cpp
branchRCL_3
changeset 11 0396474f30f5
parent 10 f5907b1a1053
child 12 4ce476e64c59
equal deleted inserted replaced
10:f5907b1a1053 11:0396474f30f5
   103         CMsvSession& aMsvSession )
   103         CMsvSession& aMsvSession )
   104     {
   104     {
   105     FUNC_LOG;
   105     FUNC_LOG;
   106 
   106 
   107     CNcsComposeView* self = 
   107     CNcsComposeView* self = 
   108         CNcsComposeView::NewLC( aMailClient, aEnv, 	aAppUi,
   108         CNcsComposeView::NewLC( aMailClient, aEnv, aAppUi,
   109                                 aControlGroup, aMsvSession );
   109                                 aControlGroup, aMsvSession );
   110     CleanupStack::Pop( self );
   110     CleanupStack::Pop( self );
   111 
   111 
   112     return self;
   112     return self;
   113     }
   113     }
   158     FUNC_LOG;
   158     FUNC_LOG;
   159     // Attachment list for compose screen, owned by AlfEnv
   159     // Attachment list for compose screen, owned by AlfEnv
   160     CAlfControlGroup& attListControlGroup = 
   160     CAlfControlGroup& attListControlGroup = 
   161         iEnv.NewControlGroupL( KSendAttachmentManagerDisplayGroup );
   161         iEnv.NewControlGroupL( KSendAttachmentManagerDisplayGroup );
   162     CFSEmailUiSendAttachmentsListVisualiser* sendAttachmentVisualiser =
   162     CFSEmailUiSendAttachmentsListVisualiser* sendAttachmentVisualiser =
   163 		CFSEmailUiSendAttachmentsListVisualiser::NewLC(
   163         CFSEmailUiSendAttachmentsListVisualiser::NewLC(
   164             iEnv, &iAppUi, attListControlGroup );
   164             iEnv, &iAppUi, attListControlGroup );
   165     iAppUi.AddViewL( sendAttachmentVisualiser );
   165     iAppUi.AddViewL( sendAttachmentVisualiser );
   166     CleanupStack::Pop( sendAttachmentVisualiser );
   166     CleanupStack::Pop( sendAttachmentVisualiser );
   167 
   167 
   168     iCrHandler = CFSEmailCRHandler::InstanceL(); // singleton, not owned
   168     iCrHandler = CFSEmailCRHandler::InstanceL(); // singleton, not owned
   431         }
   431         }
   432         
   432         
   433     TIMESTAMP( "Editor launched" );
   433     TIMESTAMP( "Editor launched" );
   434     }
   434     }
   435 
   435 
       
   436 // -----------------------------------------------------------------------------
       
   437 // Initialises toolbar items.
       
   438 // -----------------------------------------------------------------------------
       
   439 //
       
   440 void CNcsComposeView::DynInitToolbarL( TInt aResourceId,
       
   441     CAknToolbar* aToolbar )
       
   442     {
       
   443     FUNC_LOG;
       
   444     if ( aResourceId == EFsEmailUiTbCmdExpandActions && aToolbar )
       
   445         {
       
   446         CAknToolbarExtension* ext = aToolbar->ToolbarExtension();
       
   447         if ( iContainer )
       
   448             {
       
   449             // Set correct state for show/hide cc field button.
       
   450             CAknButton* ccButton = Button( EFsEmailUiTbCmdCcField, ext );
       
   451             if ( ccButton )
       
   452                 {
       
   453                 TInt index = iContainer->IsCcFieldVisible() ? 1 : 0;
       
   454                 ccButton->SetCurrentState( index, EFalse );
       
   455 
       
   456                 // Command is dimmed, if there is content in the field.
       
   457                 ccButton->SetDimmed( iContainer->GetCcFieldLength() > 0 );
       
   458                 }
       
   459 
       
   460             // Set correct state for show/hide bcc field button.
       
   461             CAknButton* bccButton = Button( EFsEmailUiTbCmdBccField, ext );
       
   462             if ( bccButton )
       
   463                 {
       
   464                 TInt index = iContainer->IsBccFieldVisible() ? 1 : 0;
       
   465                 bccButton->SetCurrentState( index, EFalse );
       
   466 
       
   467                 // Command is dimmed, if there is content in the field.
       
   468                 bccButton->SetDimmed( iContainer->GetBccFieldLength() > 0 );
       
   469                 }
       
   470             }
       
   471         else
       
   472             {
       
   473             ext->HideItemL( EFsEmailUiTbCmdCcField, ETrue );
       
   474             ext->HideItemL( EFsEmailUiTbCmdBccField, ETrue );
       
   475             }
       
   476 
       
   477         if ( iNewMessage )
       
   478             {
       
   479             // Set correct state for low priority button.
       
   480             TBool lowPriority = iNewMessage->IsFlagSet( EFSMsgFlag_Low );
       
   481             CAknButton* lowPriorityButton = static_cast<CAknButton*>(
       
   482                 ext->ControlOrNull( EFsEmailUiTbCmdLowPriority ) );
       
   483             if ( lowPriorityButton )
       
   484                 {
       
   485                 TInt index = lowPriority ? 1 : 0;
       
   486                 lowPriorityButton->SetCurrentState( index, EFalse ); 
       
   487                 }
       
   488 
       
   489             // Set correct state for high priority button.
       
   490             TBool highPriority = iNewMessage->IsFlagSet( EFSMsgFlag_Important );
       
   491             CAknButton* highPriorityButton = static_cast<CAknButton*>(
       
   492                 ext->ControlOrNull( EFsEmailUiTbCmdHighPriority ) );
       
   493             if ( highPriorityButton )
       
   494                 {
       
   495                 TInt index = highPriority ? 1 : 0;
       
   496                 highPriorityButton->SetCurrentState( index, EFalse );
       
   497                 }
       
   498 
       
   499             // Set correct state for follow up button.
       
   500             TBool followUp = iNewMessage->IsFlagSet( EFSMsgFlag_FollowUp );
       
   501             CAknButton* followUpButton = static_cast<CAknButton*>(
       
   502                 ext->ControlOrNull( EFsEmailUiTbCmdFollowUp ) );
       
   503             if ( followUpButton )
       
   504                 {
       
   505                 TInt index = followUp ? 1 : 0;
       
   506                 followUpButton->SetCurrentState( index, EFalse );
       
   507 
       
   508                 // Hide follow up button, if follow up is not supported.
       
   509                 ext->HideItemL( EFsEmailUiTbCmdFollowUp,
       
   510                     !TFsEmailUiUtility::IsFollowUpSupported( *iMailBox ) );
       
   511                 }
       
   512             }
       
   513         else
       
   514             {
       
   515             ext->HideItemL( EFsEmailUiTbCmdLowPriority, ETrue );
       
   516             ext->HideItemL( EFsEmailUiTbCmdHighPriority, ETrue );
       
   517             ext->HideItemL( EFsEmailUiTbCmdFollowUp, ETrue );
       
   518             }
       
   519         }
       
   520     }
   436 
   521 
   437 // -----------------------------------------------------------------------------
   522 // -----------------------------------------------------------------------------
   438 // CNcsComposeView::OfferToolbarEventL
   523 // CNcsComposeView::OfferToolbarEventL
   439 // -----------------------------------------------------------------------------
   524 // -----------------------------------------------------------------------------
   440 void CNcsComposeView::OfferToolbarEventL( TInt aCommand )
   525 void CNcsComposeView::OfferToolbarEventL( TInt aCommand )
   441     {
   526     {
   442     FUNC_LOG;
   527     FUNC_LOG;
   443     bool attachmentAddition = EFalse;
   528     TBool attachmentAddition = EFalse;
   444     switch ( aCommand )
   529     switch ( aCommand )
   445         {
   530         {
   446         case EFsEmailUiTbCmdSend:
   531         case EFsEmailUiTbCmdSend:
   447             if ( iContainer && iContainer->AreAddressFieldsEmpty() )
   532             if ( iContainer && iContainer->AreAddressFieldsEmpty() )
   448                 {
   533                 {
   451             else
   536             else
   452                 {
   537                 {
   453                 HandleCommandL( ENcsCmdSend );
   538                 HandleCommandL( ENcsCmdSend );
   454                 }
   539                 }
   455             break;
   540             break;
   456         case EFsEmailUiTbCmdAddRecipient:
   541         case EFsEmailUiTbCmdCcField:
   457             if ( iContainer )
   542             {
       
   543             CAknButton* ccFieldButton = Button( EFsEmailUiTbCmdCcField );
       
   544             if ( ccFieldButton )
   458                 {
   545                 {
   459                 iContainer->AppendAddressesL();
   546                 if ( ccFieldButton->StateIndex() )
       
   547                     {
       
   548                     HandleCommandL( ENcsCmdShowCc );
       
   549                     }
       
   550                 else
       
   551                     {
       
   552                     HandleCommandL( ENcsCmdHideCc );
       
   553                     }
   460                 }
   554                 }
   461             break;
   555             break;
       
   556             }
       
   557         case EFsEmailUiTbCmdBccField:
       
   558             {
       
   559             CAknButton* bccFieldButton = Button( EFsEmailUiTbCmdBccField );
       
   560             if ( bccFieldButton )
       
   561                 {
       
   562                 if ( bccFieldButton->StateIndex()  )
       
   563                     {
       
   564                     HandleCommandL( ENcsCmdShowBcc );
       
   565                     }
       
   566                 else
       
   567                     {
       
   568                     HandleCommandL( ENcsCmdHideBcc );
       
   569                     }
       
   570                 }
       
   571             break;
       
   572             }
       
   573         case EFsEmailUiTbCmdLowPriority:
       
   574             {
       
   575             CAknButton* lowPriorityButton = Button( EFsEmailUiTbCmdLowPriority );
       
   576             if ( lowPriorityButton )
       
   577                 {
       
   578                 if ( lowPriorityButton->StateIndex() )
       
   579                     {
       
   580                     CAknButton* highPriorityButton = Button( 
       
   581                         EFsEmailUiTbCmdHighPriority );
       
   582                     if ( highPriorityButton )
       
   583                         {
       
   584                         highPriorityButton->SetCurrentState( 0, ETrue );
       
   585                         }
       
   586                     HandleCommandL( ENcsCmdPriorityLow );
       
   587                     }
       
   588                 else
       
   589                     {
       
   590                     HandleCommandL( ENcsCmdPriorityNormal );
       
   591                     }
       
   592                 }
       
   593             break;
       
   594             }
       
   595         case EFsEmailUiTbCmdHighPriority:
       
   596             {
       
   597             CAknButton* highPriorityButton = Button( EFsEmailUiTbCmdHighPriority );
       
   598             if ( highPriorityButton )
       
   599                 {
       
   600                 if ( highPriorityButton->StateIndex() )
       
   601                     {
       
   602                     CAknButton* lowPriorityButton = Button( 
       
   603                         EFsEmailUiTbCmdLowPriority );
       
   604                     if ( lowPriorityButton )
       
   605                         {
       
   606                         lowPriorityButton->SetCurrentState( 0, ETrue );
       
   607                         }
       
   608                     HandleCommandL( ENcsCmdPriorityHigh );
       
   609                     }
       
   610                 else
       
   611                     {
       
   612                     HandleCommandL( ENcsCmdPriorityNormal );
       
   613                     }
       
   614                 }
       
   615             break;
       
   616             }
       
   617         case EFsEmailUiTbCmdFollowUp:
       
   618             {
       
   619             CAknButton* button = Button( EFsEmailUiTbCmdFollowUp );
       
   620             if ( button && iNewMessage )
       
   621                 {
       
   622                 if ( button->StateIndex() )
       
   623                     {
       
   624                     iNewMessage->SetFlag( EFSMsgFlag_FollowUp );
       
   625                     iNewMessage->ResetFlag( EFSMsgFlag_FollowUpComplete );
       
   626                     iStatusPaneIndicators->SetFollowUpFlag( 
       
   627                         CCustomStatuspaneIndicators::EFollowUp );
       
   628                     }
       
   629                 else
       
   630                     {
       
   631                     iNewMessage->ResetFlag( EFSMsgFlag_FollowUp 
       
   632                         | EFSMsgFlag_FollowUpComplete );
       
   633                     iStatusPaneIndicators->SetFollowUpFlag( 
       
   634                         CCustomStatuspaneIndicators::EFollowUpNone );
       
   635                     }
       
   636                 }
       
   637             break;
       
   638             }
   462         case EFsEmailUiTbCmdInsertAudio:
   639         case EFsEmailUiTbCmdInsertAudio:
   463             iAttachmentAddType = MsgAttachmentUtils::EAudio;
   640             iAttachmentAddType = MsgAttachmentUtils::EAudio;
   464             attachmentAddition = ETrue;
   641             attachmentAddition = ETrue;
   465             break;
   642             break;
   466         case EFsEmailUiTbCmdInsertImage:
   643         case EFsEmailUiTbCmdInsertImage:
   533     if ( iContainer )
   710     if ( iContainer )
   534         {
   711         {
   535         // DimAllOptions if remotesearch is in progress, 
   712         // DimAllOptions if remotesearch is in progress, 
   536         // because it takes you into a different view
   713         // because it takes you into a different view
   537         TBool dimAllOptions = iContainer->IsRemoteSearchInprogress();
   714         TBool dimAllOptions = iContainer->IsRemoteSearchInprogress();
       
   715         SetToolbarItemDimmed( EFsEmailUiTbCmdExpandActions, dimAllOptions );
   538         SetToolbarItemDimmed( EFsEmailUiTbCmdExpandInsert, dimAllOptions );
   716         SetToolbarItemDimmed( EFsEmailUiTbCmdExpandInsert, dimAllOptions );
   539         SetToolbarItemDimmed( EFsEmailUiTbCmdSend,
   717         SetToolbarItemDimmed( EFsEmailUiTbCmdSend, dimAllOptions 
   540                 iContainer->AreAddressFieldsEmpty() );
   718             || iContainer->AreAddressFieldsEmpty() );
   541         SetToolbarItemDimmed( EFsEmailUiTbCmdAddRecipient, dimAllOptions );
       
   542         }
   719         }
   543     }
   720     }
   544 
   721 
   545 
   722 
   546 // -----------------------------------------------------------------------------
   723 // -----------------------------------------------------------------------------
  1943 	// Save message if at least one field committed
  2120 	// Save message if at least one field committed
  1944     if ( iNewMessage || commitToField || commitCcField || commitBccField
  2121     if ( iNewMessage || commitToField || commitCcField || commitBccField
  1945         || commitSubjectField || commitBodyField )
  2122         || commitSubjectField || commitBodyField )
  1946         {
  2123         {
  1947         TInt error = KErrNone;
  2124         TInt error = KErrNone;
  1948         TRAP( error, iNewMessage->SaveMessageL() );
  2125         if(iNewMessage) // Coverity error fix:
       
  2126             {
       
  2127             TRAP( error, iNewMessage->SaveMessageL() );
       
  2128             }
  1949         RefreshToolbar();
  2129         RefreshToolbar();
  1950         }
  2130         }
  1951     }
  2131     }
  1952 
  2132 
  1953 // -----------------------------------------------------------------------------
  2133 // -----------------------------------------------------------------------------
  2952     {
  3132     {
  2953     return !( iFakeSyncGoingOn ||iExecutingDoExitL );
  3133     return !( iFakeSyncGoingOn ||iExecutingDoExitL );
  2954     }
  3134     }
  2955 
  3135 
  2956 // ---------------------------------------------------------------------------
  3136 // ---------------------------------------------------------------------------
       
  3137 // Returns the speficied button from the toolbar extension, or NULL, 
       
  3138 // if the button is not found.
       
  3139 // ---------------------------------------------------------------------------
       
  3140 //
       
  3141 CAknButton* CNcsComposeView::Button( TInt aCmdId, 
       
  3142     CAknToolbarExtension* aExtension )
       
  3143     {
       
  3144     CAknButton* button = NULL;
       
  3145 
       
  3146     // Get toolbar extension.
       
  3147     CAknToolbarExtension* extension = aExtension;
       
  3148     if ( !aExtension )
       
  3149         {
       
  3150         CAknToolbar* toolbar = Toolbar();
       
  3151         if ( toolbar )
       
  3152             {
       
  3153             extension = toolbar->ToolbarExtension();
       
  3154             }
       
  3155         }
       
  3156 
       
  3157     // Get specified button from the extension.
       
  3158     if ( extension )
       
  3159         {
       
  3160         button = static_cast<CAknButton*>( extension->ControlOrNull( aCmdId ) );
       
  3161         }
       
  3162 
       
  3163     return button;
       
  3164     }
       
  3165 
       
  3166 // ---------------------------------------------------------------------------
  2957 // CActiveHelper::NewL()
  3167 // CActiveHelper::NewL()
  2958 // ---------------------------------------------------------------------------
  3168 // ---------------------------------------------------------------------------
  2959 //
  3169 //
  2960 CActiveHelper* CActiveHelper::NewL( CNcsComposeView* aSession )
  3170 CActiveHelper* CActiveHelper::NewL( CNcsComposeView* aSession )
  2961     {
  3171     {