email/imum/Utils/Src/IMSSettingsNoteUi.cpp
branchRCL_3
changeset 27 7fdbb852d323
parent 0 72b543305e3a
equal deleted inserted replaced
26:ebe688cedc25 27:7fdbb852d323
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Contains functions to show notes in UI
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 #include <e32base.h>
       
    22 #include <ImumUtils.rsg>
       
    23 #include <StringLoader.h>       // StringLoader
       
    24 #include <aknnotewrappers.h>    // CAknConfirmationNote
       
    25 #include <aknclearer.h>         // CAknLocalScreenClearer
       
    26 
       
    27 #include "ImumInternalApiImpl.h"
       
    28 #include "ImumInSettingsData.h"
       
    29 #include "ImumInMailboxUtilitiesImpl.h"
       
    30 #include "IMSSettingsNoteUi.h"
       
    31 #include "EmailUtils.H"
       
    32 #include "IMASPageIds.hrh"
       
    33 #include "ImumPanic.h"
       
    34 #include "IMSSettingsBaseUi.h"
       
    35 #include "ImumUtilsLogging.h"
       
    36 #include "EmailFeatureUtils.h"
       
    37 #include "muiuflagger.h"
       
    38 
       
    39 // EXTERNAL DATA STRUCTURES
       
    40 // EXTERNAL FUNCTION PROTOTYPES
       
    41 // CONSTANTS
       
    42 // MACROS
       
    43 // LOCAL CONSTANTS AND MACROS
       
    44 // MODULE DATA STRUCTURES
       
    45 // LOCAL FUNCTION PROTOTYPES
       
    46 // FORWARD DECLARATIONS
       
    47 
       
    48 // ============================ MEMBER FUNCTIONS ===============================
       
    49 
       
    50 // ----------------------------------------------------------------------------
       
    51 // CIMSSettingsNoteUi::CIMSSettingsNoteUi()
       
    52 // ----------------------------------------------------------------------------
       
    53 //
       
    54 CIMSSettingsNoteUi::CIMSSettingsNoteUi(
       
    55     CImumInternalApiImpl& aMailboxApi,
       
    56     CIMSSettingsBaseUI& aDialog )
       
    57     :
       
    58     iDialog( aDialog ),
       
    59     iMailboxApi( aMailboxApi )
       
    60     {
       
    61     IMUM_CONTEXT( CIMSSettingsNoteUi::CIMSSettingsNoteUi, 0, KLogUi );
       
    62     
       
    63     }
       
    64 
       
    65 // ----------------------------------------------------------------------------
       
    66 // CIMSSettingsNoteUi::~CIMSSettingsNoteUi()
       
    67 // ----------------------------------------------------------------------------
       
    68 //
       
    69 CIMSSettingsNoteUi::~CIMSSettingsNoteUi()
       
    70     {
       
    71     IMUM_CONTEXT( CIMSSettingsNoteUi::~CIMSSettingsNoteUi, 0, KLogUi );
       
    72     
       
    73     }
       
    74 
       
    75 // ----------------------------------------------------------------------------
       
    76 // CIMSSettingsNoteUi::ConstructL()
       
    77 // ----------------------------------------------------------------------------
       
    78 //
       
    79 void CIMSSettingsNoteUi::ConstructL()
       
    80     {
       
    81     IMUM_CONTEXT( CIMSSettingsNoteUi::ConstructL, 0, KLogUi );
       
    82     
       
    83     }
       
    84 
       
    85 // ----------------------------------------------------------------------------
       
    86 // CIMSSettingsNoteUi::NewL()
       
    87 // ----------------------------------------------------------------------------
       
    88 //
       
    89 CIMSSettingsNoteUi* CIMSSettingsNoteUi::NewL(
       
    90     CImumInternalApiImpl& aMailboxApi,
       
    91     CIMSSettingsBaseUI& aDialog )
       
    92     {
       
    93     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::NewL, 0, utils, KLogUi );
       
    94     
       
    95     CIMSSettingsNoteUi* self = NewLC( aMailboxApi, aDialog );
       
    96     CleanupStack::Pop( self );
       
    97 
       
    98     return self;
       
    99     }
       
   100 
       
   101 // ----------------------------------------------------------------------------
       
   102 // CIMSSettingsNoteUi::NewLC()
       
   103 // ----------------------------------------------------------------------------
       
   104 //
       
   105 CIMSSettingsNoteUi* CIMSSettingsNoteUi::NewLC(
       
   106     CImumInternalApiImpl& aMailboxApi,
       
   107     CIMSSettingsBaseUI& aDialog )
       
   108     {
       
   109     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::NewLC, 0, utils, KLogUi );
       
   110     
       
   111     CIMSSettingsNoteUi* self =
       
   112         new ( ELeave ) CIMSSettingsNoteUi( aMailboxApi, aDialog );
       
   113     CleanupStack::PushL( self );
       
   114 
       
   115     return self;
       
   116     }
       
   117 
       
   118 /******************************************************************************
       
   119 
       
   120     STATIC FUNCTIONS
       
   121 
       
   122 ******************************************************************************/
       
   123 
       
   124 // ----------------------------------------------------------------------------
       
   125 // CIMSSettingsNoteUi::MakeStringLC()
       
   126 // ----------------------------------------------------------------------------
       
   127 //
       
   128 HBufC* CIMSSettingsNoteUi::MakeStringLC( const TUint aTextResource )
       
   129     {
       
   130     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::MakeStringLC, 0, utils, KLogUi );
       
   131     
       
   132     HBufC* prompt = StringLoader::LoadL( aTextResource );
       
   133     CleanupStack::PushL( prompt );
       
   134 
       
   135     return prompt;
       
   136     }
       
   137 
       
   138 // ----------------------------------------------------------------------------
       
   139 // CIMSSettingsNoteUi::MakeString()
       
   140 // ----------------------------------------------------------------------------
       
   141 //
       
   142 void CIMSSettingsNoteUi::MakeString(
       
   143     TDes& aDest,
       
   144     TInt aResourceId,
       
   145     TInt aValue )
       
   146     {
       
   147     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::MakeString, 0, utils, KLogUi );
       
   148 
       
   149     // To minimize stack usage, use callers buffer to make the string instead
       
   150     // of using StringLoader::Format() and temporary buffer.
       
   151 
       
   152     // Read format string from resource
       
   153     aDest.Zero();
       
   154     StringLoader::Load( aDest, aResourceId );
       
   155 
       
   156     // Convert integer to text representation
       
   157     TBuf<sizeof(TInt) * 4> subs; // CSI: 47 # For conversion.
       
   158     subs.AppendNum( aValue );
       
   159 
       
   160     // Replace tag with supplied int
       
   161     _LIT(KTag, "%N");
       
   162     MakeString( aDest, KTag, subs );
       
   163     }
       
   164 
       
   165 // ----------------------------------------------------------------------------
       
   166 // CIMSSettingsNoteUi::MakeString()
       
   167 // ----------------------------------------------------------------------------
       
   168 //
       
   169 void CIMSSettingsNoteUi::MakeStringL(
       
   170     TDes& aDest,
       
   171     TInt aResourceId,
       
   172     const TDesC& aSubs )
       
   173     {
       
   174     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::MakeString, 0, utils, KLogUi );
       
   175 
       
   176     HBufC* statusText = StringLoader::LoadL(
       
   177         aResourceId,
       
   178         aSubs,CCoeEnv::Static() );
       
   179     aDest.Copy(statusText->Des());
       
   180     delete statusText;
       
   181     }
       
   182 
       
   183 // ----------------------------------------------------------------------------
       
   184 // CIMSSettingsNoteUi::MakeString()
       
   185 // ----------------------------------------------------------------------------
       
   186 //
       
   187 void CIMSSettingsNoteUi::MakeString(
       
   188     TDes& aDest,
       
   189     const TDesC& aTag,
       
   190     const TDesC& aSubs )
       
   191     {
       
   192     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::MakeString, 0, utils, KLogUi );
       
   193 
       
   194     // To minimize stack usage, use callers buffer to make the string instead
       
   195     // of using StringLoader::Format() and temporary buffer.
       
   196 
       
   197     // Replace tag with supplied text
       
   198     TInt pos = aDest.Find( aTag );
       
   199     if ( pos != KErrNotFound)
       
   200         {
       
   201         aDest.Delete( pos, aTag.Length() );
       
   202         TInt room = aDest.MaxLength() - aDest.Length();
       
   203         TInt insertLen = aSubs.Length() <= room ? aSubs.Length():room;
       
   204         const TPtrC replacement( aSubs.Ptr(),  insertLen );
       
   205         aDest.Insert( pos, replacement );
       
   206         }
       
   207     }
       
   208 
       
   209 // ----------------------------------------------------------------------------
       
   210 // CIMSSettingsNoteUi::ShowQuery
       
   211 // ----------------------------------------------------------------------------
       
   212 //
       
   213 EXPORT_C TInt CIMSSettingsNoteUi::ShowQueryL(
       
   214     const TUint aTextResource,
       
   215     const TInt  aDialogResource,
       
   216     const TBool& aClearBackground,
       
   217     const CAknQueryDialog::TTone aTone )
       
   218     {
       
   219     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowQueryL, 0, utils, KLogUi );
       
   220     
       
   221     // Get text to be shown
       
   222     HBufC* prompt = MakeStringLC( aTextResource );
       
   223 
       
   224     // Create dialog and execute the dialog
       
   225     TInt result = CIMSSettingsNoteUi::ShowQueryL(
       
   226         prompt->Des(), aDialogResource, aClearBackground, aTone );
       
   227 
       
   228     CleanupStack::PopAndDestroy( prompt );
       
   229 
       
   230     return result;
       
   231     }
       
   232 
       
   233 // ----------------------------------------------------------------------------
       
   234 // CIMSSettingsNoteUi::ShowQuery
       
   235 // ----------------------------------------------------------------------------
       
   236 //
       
   237 EXPORT_C TInt CIMSSettingsNoteUi::ShowQueryL(
       
   238     const TDesC& aText,
       
   239     const TInt  aDialogResource,
       
   240     const TBool& aClearBackground,
       
   241     const CAknQueryDialog::TTone aTone )
       
   242     {
       
   243     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowQueryL, 0, utils, KLogUi );
       
   244     
       
   245     CAknLocalScreenClearer* localScreenClearer = NULL;
       
   246     if ( aClearBackground )
       
   247         {
       
   248         localScreenClearer = CAknLocalScreenClearer::NewL( EFalse );
       
   249         CleanupStack::PushL( localScreenClearer );
       
   250         CEikonEnv::Static()->EikAppUi()->AddToStackL( 
       
   251         	localScreenClearer, ECoeStackPriorityDefault, 
       
   252         	ECoeStackFlagRefusesAllKeys|ECoeStackFlagRefusesFocus );
       
   253         CleanupStack::PushL( TCleanupItem( &ScreenClearerCleanupOperation, 
       
   254         	localScreenClearer ) );
       
   255         }     
       
   256     
       
   257     // Create dialog and execute the dialog
       
   258     CAknQueryDialog* dlg = CAknQueryDialog::NewL( aTone );
       
   259     TInt button = dlg->ExecuteLD( aDialogResource, aText );    
       
   260     
       
   261     if ( aClearBackground )
       
   262         {        
       
   263         CleanupStack::PopAndDestroy(); // CSI: 47 # TCleanupItem
       
   264         CleanupStack::PopAndDestroy( localScreenClearer );
       
   265         localScreenClearer = NULL;
       
   266         }
       
   267             
       
   268     return button;
       
   269     }
       
   270 
       
   271 // ----------------------------------------------------------------------------
       
   272 // CIMSSettingsNoteUi::ScreenClearerCleanupOperation
       
   273 // ----------------------------------------------------------------------------
       
   274 //
       
   275 void CIMSSettingsNoteUi::ScreenClearerCleanupOperation( TAny* aScreenClearer )
       
   276 	{
       
   277 	CEikonEnv::Static()->EikAppUi()->RemoveFromStack( 
       
   278 		static_cast<CAknLocalScreenClearer*>( aScreenClearer ) );
       
   279 	}
       
   280     
       
   281 // ----------------------------------------------------------------------------
       
   282 // CIMSSettingsNoteUi::ShowNoteL
       
   283 // ----------------------------------------------------------------------------
       
   284 //
       
   285 EXPORT_C void CIMSSettingsNoteUi::ShowNoteL(
       
   286     const TUint      aResource,
       
   287     const TIMSNotes& aNoteType,
       
   288     const TBool      aNoteWaiting )
       
   289     {
       
   290     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowNoteL, 0, utils, KLogUi );
       
   291     
       
   292     // Get text to be shown
       
   293     HBufC* prompt = MakeStringLC( aResource );
       
   294 
       
   295     // Show the note
       
   296     CIMSSettingsNoteUi::ShowNoteL( *prompt, aNoteType, aNoteWaiting );
       
   297 
       
   298     CleanupStack::PopAndDestroy( prompt );
       
   299     }
       
   300 
       
   301 // ----------------------------------------------------------------------------
       
   302 // CIMSSettingsNoteUi::ShowNoteL
       
   303 // ----------------------------------------------------------------------------
       
   304 //
       
   305 EXPORT_C void CIMSSettingsNoteUi::ShowNoteL(
       
   306     const TDesC&      aText,
       
   307     const TIMSNotes& aNoteType,
       
   308     const TBool      aNoteWaiting )
       
   309     {
       
   310     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowNoteL, 0, utils, KLogUi );
       
   311 
       
   312     CAknResourceNoteDialog* note = NewNoteL( aNoteType, aNoteWaiting );
       
   313 
       
   314     // Show the note
       
   315     note->ExecuteLD( aText );
       
   316     }
       
   317 
       
   318 // ----------------------------------------------------------------------------
       
   319 // CIMSSettingsNoteUi::ShowNoteL
       
   320 // ----------------------------------------------------------------------------
       
   321 //
       
   322 EXPORT_C void CIMSSettingsNoteUi::ShowNoteL(
       
   323     TUint aResource,
       
   324     TIMSNotes aNoteType,
       
   325     TBool aNoteWaiting,
       
   326     TInt aTimeOut )
       
   327     {
       
   328     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowNoteL, 0, utils, KLogUi );
       
   329     
       
   330     // Get text to be shown
       
   331     HBufC* prompt = MakeStringLC( aResource );
       
   332 
       
   333     CAknResourceNoteDialog* note = NewNoteL( aNoteType, aNoteWaiting );
       
   334     note->SetTimeout( static_cast<CAknNoteDialog::TTimeout>( aTimeOut ) );                
       
   335 
       
   336     // Show the note
       
   337     note->ExecuteLD( *prompt );
       
   338 
       
   339     CleanupStack::PopAndDestroy( prompt );
       
   340     }
       
   341 
       
   342 /******************************************************************************
       
   343 
       
   344     Error note ui
       
   345 
       
   346 ******************************************************************************/
       
   347 
       
   348 // ----------------------------------------------------------------------------
       
   349 // CIMSSettingsNoteUi::ShowDialog()
       
   350 // ----------------------------------------------------------------------------
       
   351 //
       
   352 TMuiuPageEventResult CIMSSettingsNoteUi::ShowDialog(
       
   353     const CMuiuSettingBase& aBaseItem,
       
   354     const TIMSErrors aError,
       
   355     const TDesC& aNewText )
       
   356     {
       
   357     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowDialog, 0, KLogUi );
       
   358     
       
   359     TMuiuPageEventResult result = EMuiuPageEventResultApproved;
       
   360     TRAP_IGNORE( result = SelectDialogL( aBaseItem, aError, aNewText ) );
       
   361     /*TRAPD( err,
       
   362     // Show error note based on the id
       
   363     switch ( aBaseItem.iItemId.iUid )
       
   364         {
       
   365         case EIMAWProtocol:
       
   366             result = ShowProtocolErrorNoteL( aError );
       
   367             return result;
       
   368 
       
   369         case EIMASOutgoingEmailAddress:
       
   370         case EIMAWEmailAddress:
       
   371         case EIMASUserReplyTo:
       
   372             result = ShowEmailAddressErrorNoteL( aError );
       
   373             return result;
       
   374 
       
   375         case EIMAWReceivingServer:
       
   376         case EIMAWSendingServer:
       
   377         case EIMASIncomingMailServer:
       
   378         case EIMASOutgoingMailServer:
       
   379             result = ShowServerErrorNoteL( aError );
       
   380             return result;
       
   381 
       
   382         case EIMAWIap:
       
   383             result = ShowIapErrorNoteL( aError );
       
   384             return result;
       
   385 
       
   386         case EIMAWMailboxName:
       
   387             result = ShowWizMailboxNameErrorNoteL( aError );
       
   388             return result;
       
   389 
       
   390         case EIMASIncomingMailboxName:
       
   391             result = ShowSetMailboxNameErrorNoteL( aError, aNewText );
       
   392             return result;
       
   393 
       
   394         case EIMASIncomingProtocol:
       
   395             result = ShowProtocolReadOnlyErrorNoteL( aError );
       
   396             return result;
       
   397 
       
   398         case EIMASMailNotifications:
       
   399         case EIMASAORolling:
       
   400             result = ShowAlwaysOnlineErrorNoteL( aError );
       
   401             return result;
       
   402 
       
   403         case EIMASIncomingUserPwd:
       
   404         case EIMASIncomingUserName:
       
   405             result = ShowAlwaysOnlineRemovalQueryL( aError );
       
   406             return result;
       
   407 
       
   408         case EIMASLimitInbox:
       
   409         case EIMASLimitFolders:
       
   410             result = ShowFetchLimitErrorNoteL( aError );
       
   411             return result;
       
   412 
       
   413         default:
       
   414             break;
       
   415         }
       
   416     );*/
       
   417 
       
   418     return result;
       
   419     }
       
   420 
       
   421 // ----------------------------------------------------------------------------
       
   422 // CIMSSettingsNoteUi::SelectDialogL()
       
   423 // ----------------------------------------------------------------------------
       
   424 //
       
   425 TMuiuPageEventResult CIMSSettingsNoteUi::SelectDialogL( 
       
   426     const CMuiuSettingBase& aBaseItem,
       
   427     const TIMSErrors aError,
       
   428     const TDesC& aNewText )
       
   429     {
       
   430     // Show error note based on the id
       
   431     switch ( aBaseItem.iItemId.iUid )
       
   432         {
       
   433         case EIMAWProtocol:
       
   434             return ShowProtocolErrorNoteL( aError );
       
   435 
       
   436         case EIMASOutgoingEmailAddress:
       
   437         case EIMAWEmailAddress:
       
   438         case EIMASUserReplyTo:
       
   439             return ShowEmailAddressErrorNoteL( aError );
       
   440 
       
   441         case EIMAWReceivingServer:
       
   442         case EIMAWSendingServer:
       
   443         case EIMASIncomingMailServer:
       
   444         case EIMASOutgoingMailServer:
       
   445             return ShowServerErrorNoteL( aError );
       
   446 
       
   447         case EIMAWIap:
       
   448             return ShowIapErrorNoteL( aError );
       
   449 
       
   450         case EIMAWMailboxName:
       
   451             return ShowWizMailboxNameErrorNoteL( aError );
       
   452 
       
   453         case EIMASIncomingMailboxName:
       
   454             return ShowSetMailboxNameErrorNoteL( aError, aNewText );
       
   455 
       
   456         case EIMASIncomingProtocol:
       
   457             return ShowProtocolReadOnlyErrorNoteL( aError );
       
   458 
       
   459         case EIMASMailNotifications:
       
   460         case EIMASAORolling:
       
   461             return ShowAlwaysOnlineErrorNoteL( aError );
       
   462 
       
   463         case EIMASIncomingUserPwd:
       
   464         case EIMASIncomingUserName:
       
   465             return ShowAlwaysOnlineRemovalQueryL( aError );
       
   466 
       
   467         case EIMASLimitInbox:
       
   468         case EIMASLimitFolders:
       
   469             return ShowFetchLimitErrorNoteL( aError );
       
   470 
       
   471         default:
       
   472             break;
       
   473         }
       
   474 
       
   475     return EMuiuPageEventResultApproved;
       
   476     }
       
   477 
       
   478 // ----------------------------------------------------------------------------
       
   479 // CIMSSettingsNoteUi::ShowProtocolErrorNoteL()
       
   480 // ----------------------------------------------------------------------------
       
   481 //
       
   482 TMuiuPageEventResult CIMSSettingsNoteUi::ShowProtocolErrorNoteL(
       
   483     const TIMSErrors aError )
       
   484     {
       
   485     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowProtocolErrorNoteL, 0, KLogUi );
       
   486     
       
   487     switch ( aError )
       
   488         {
       
   489         case EIMSItemEmpty:
       
   490             CIMSSettingsNoteUi::ShowQueryL(
       
   491                 R_IMUM_WIZARD_INSERT_PROTOCOL, 
       
   492                 R_EMAIL_INFORMATION_QUERY, 
       
   493                 ETrue );
       
   494             return EMuiuPageEventResultDisapproved;
       
   495 
       
   496         default:
       
   497             break;
       
   498         }
       
   499 
       
   500     return EMuiuPageEventResultApproved;
       
   501     }
       
   502 
       
   503 // ----------------------------------------------------------------------------
       
   504 // CIMSSettingsNoteUi::ShowEmailAddressErrorNoteL()
       
   505 // ----------------------------------------------------------------------------
       
   506 //
       
   507 TMuiuPageEventResult CIMSSettingsNoteUi::ShowEmailAddressErrorNoteL(
       
   508     const TIMSErrors aError )
       
   509     {
       
   510     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowEmailAddressErrorNoteL, 0, KLogUi );
       
   511     
       
   512     // Show notes
       
   513     switch ( aError )
       
   514         {
       
   515         // Incorrect
       
   516         case EIMSItemInvalid:
       
   517             CIMSSettingsNoteUi::ShowNoteL(
       
   518                 R_IMUM_EDIT_OWN_EMAIL_ADDRESS_ERROR_TEXT, 
       
   519                 EIMSInformationNote, ETrue );
       
   520             return EMuiuPageEventResultDisapproved;
       
   521 
       
   522         // Not typed
       
   523         case EIMSItemEmpty:
       
   524             CIMSSettingsNoteUi::ShowQueryL(
       
   525                 R_IMUM_WIZARD_INSERT_EMAIL, 
       
   526                 R_EMAIL_INFORMATION_QUERY,
       
   527                 ETrue );
       
   528             return EMuiuPageEventResultDisapproved;
       
   529 
       
   530         default:
       
   531             break;
       
   532         }
       
   533 
       
   534     return EMuiuPageEventResultApproved;
       
   535     }
       
   536 
       
   537 // ----------------------------------------------------------------------------
       
   538 // CIMSSettingsNoteUi::ShowServerErrorNoteL()
       
   539 // ----------------------------------------------------------------------------
       
   540 //
       
   541 TMuiuPageEventResult CIMSSettingsNoteUi::ShowServerErrorNoteL(
       
   542     const TIMSErrors aError )
       
   543     {
       
   544     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowServerErrorNoteL, 0, KLogUi );
       
   545     
       
   546     switch ( aError )
       
   547         {
       
   548         case EIMSNoError:
       
   549             return EMuiuPageEventResultApproved;
       
   550 
       
   551         default:
       
   552             break;
       
   553         }
       
   554 
       
   555     CIMSSettingsNoteUi::ShowQueryL(
       
   556         R_IMUM_WIZARD_INSERT_SERVER_ADDRESS, 
       
   557         R_EMAIL_INFORMATION_QUERY,
       
   558         ETrue );
       
   559     return EMuiuPageEventResultDisapproved;
       
   560     }
       
   561 
       
   562 // ----------------------------------------------------------------------------
       
   563 // CIMSSettingsNoteUi::ShowIapErrorNoteL()
       
   564 // ----------------------------------------------------------------------------
       
   565 //
       
   566 TMuiuPageEventResult CIMSSettingsNoteUi::ShowIapErrorNoteL(
       
   567     const TIMSErrors aError )
       
   568     {
       
   569     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowIapErrorNoteL, 0, KLogUi );
       
   570     
       
   571     switch ( aError )
       
   572         {
       
   573         case EIMSNoError:
       
   574             return EMuiuPageEventResultApproved;
       
   575 
       
   576         default:
       
   577             break;
       
   578         }
       
   579 
       
   580     return EMuiuPageEventResultDisapproved;
       
   581     }
       
   582 
       
   583 // ----------------------------------------------------------------------------
       
   584 // CIMSSettingsNoteUi::ShowWizMailboxNameErrorNoteL()
       
   585 // ----------------------------------------------------------------------------
       
   586 //
       
   587 TMuiuPageEventResult CIMSSettingsNoteUi::ShowWizMailboxNameErrorNoteL(
       
   588     const TIMSErrors aError )
       
   589     {
       
   590     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowWizMailboxNameErrorNoteL, 0, KLogUi );
       
   591     
       
   592     switch ( aError )
       
   593         {
       
   594         case EIMSMailboxNameEmpty:
       
   595             CIMSSettingsNoteUi::ShowQueryL(
       
   596                 R_MBXS_SETTINGS_MAIL_NEWBOX_NAME_QRY, 
       
   597                 R_EMAIL_INFORMATION_QUERY,
       
   598                 ETrue );
       
   599             return EMuiuPageEventResultDisapproved;
       
   600 
       
   601         case EIMSMailboxNameExists:
       
   602             CIMSSettingsNoteUi::ShowQueryL(
       
   603                 R_MBXS_SETTINGS_MAIL_NEWBOX_RENAME_QRY, 
       
   604                 R_EMAIL_INFORMATION_QUERY,
       
   605                 ETrue );
       
   606             return EMuiuPageEventResultDisapproved;
       
   607 
       
   608         default:
       
   609             break;
       
   610         }
       
   611 
       
   612     return EMuiuPageEventResultApproved;
       
   613     }
       
   614 
       
   615 // ----------------------------------------------------------------------------
       
   616 // CIMSSettingsNoteUi::ShowMailboxAlreadyExistsErrorNoteL()
       
   617 // ----------------------------------------------------------------------------
       
   618 //
       
   619 TBool CIMSSettingsNoteUi::ShowMailboxAlreadyExistsErrorNoteL(
       
   620     const TDesC& aMailboxName )
       
   621     {
       
   622     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowMailboxAlreadyExistsErrorNoteL, 0, KLogUi );
       
   623     
       
   624     TMuiuSettingsText query;
       
   625     MakeStringL( query, R_IMUM_SETTINGS_RENAME_QUERY, aMailboxName );
       
   626 
       
   627     return ShowQueryL( query, R_EMAIL_CONFIRMATION_QUERY, ETrue );
       
   628     }
       
   629 
       
   630 // ----------------------------------------------------------------------------
       
   631 // CIMSSettingsNoteUi::ShowSetMailboxNameErrorNoteL()
       
   632 // ----------------------------------------------------------------------------
       
   633 //
       
   634 TMuiuPageEventResult CIMSSettingsNoteUi::ShowSetMailboxNameErrorNoteL(
       
   635     const TIMSErrors aError,
       
   636     const TDesC& aMailboxName )
       
   637     {
       
   638     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowSetMailboxNameErrorNoteL, 0, KLogUi );
       
   639     
       
   640     switch ( aError )
       
   641         {
       
   642         case EIMSMailboxNameEmpty:
       
   643             CIMSSettingsNoteUi::ShowQueryL(
       
   644                 R_MBXS_SETTINGS_MAIL_NEWBOX_NAME_QRY, 
       
   645                 R_EMAIL_INFORMATION_QUERY,
       
   646                 ETrue );
       
   647             return EMuiuPageEventResultDisapproved;
       
   648 
       
   649         case EIMSMailboxNameExists:
       
   650             return ShowMailboxAlreadyExistsErrorNoteL( aMailboxName ) ?
       
   651                 EMuiuPageEventResultDisapproved : EMuiuPageEventResultCancel;
       
   652 
       
   653         default:
       
   654             break;
       
   655         }
       
   656 
       
   657     return EMuiuPageEventResultApproved;
       
   658 
       
   659     }
       
   660 
       
   661 // ----------------------------------------------------------------------------
       
   662 // CIMSSettingsNoteUi::ShowProtocolReadOnlyErrorNoteL()
       
   663 // ----------------------------------------------------------------------------
       
   664 //
       
   665 TMuiuPageEventResult CIMSSettingsNoteUi::ShowProtocolReadOnlyErrorNoteL(
       
   666     const TIMSErrors aError )
       
   667     {
       
   668     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowProtocolReadOnlyErrorNoteL, 0, KLogUi );
       
   669     
       
   670     switch ( aError )
       
   671         {
       
   672         case EIMSItemInvalid:
       
   673             CIMSSettingsNoteUi::ShowNoteL( 
       
   674                 R_IMUM_EDIT_PROTOCOL_ERROR_TEXT, EIMSErrorNote, EFalse );
       
   675             return EMuiuPageEventResultCancel;
       
   676 
       
   677         default:
       
   678             break;
       
   679         }
       
   680 
       
   681     return EMuiuPageEventResultApproved;
       
   682     }
       
   683 
       
   684 // ----------------------------------------------------------------------------
       
   685 // CIMSSettingsNoteUi::ShowAlwaysOnlineErrorNoteL()
       
   686 // ----------------------------------------------------------------------------
       
   687 //
       
   688 TMuiuPageEventResult CIMSSettingsNoteUi::ShowAlwaysOnlineErrorNoteL(
       
   689     const TIMSErrors aError )
       
   690     {
       
   691     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowAlwaysOnlineErrorNoteL, 0, KLogUi );
       
   692     
       
   693     switch ( aError )
       
   694         {
       
   695         // Access point is set to always ask
       
   696         case EIMSAoAlwaysAsk:
       
   697             CIMSSettingsNoteUi::ShowQueryL(
       
   698                 R_MCE_SETTINGS_ALWAYS_DEFINE_AP, 
       
   699                 R_EMAIL_INFORMATION_QUERY,
       
   700                 ETrue );
       
   701             return EMuiuPageEventResultCancel;
       
   702 
       
   703         // Access point prompts password
       
   704         case EIMSAoIAPPassword:
       
   705             CIMSSettingsNoteUi::ShowQueryL(
       
   706                 R_MCE_SETTINGS_ALWAYS_PROMPTACC, 
       
   707                 R_EMAIL_INFORMATION_QUERY,
       
   708                 ETrue );
       
   709             return EMuiuPageEventResultCancel;
       
   710 
       
   711         // No username or password
       
   712         case EIMSAoNoLogin:
       
   713             CIMSSettingsNoteUi::ShowQueryL(
       
   714                 R_IMUM_SETTINGS_ALWAYS_PROMPTMAIL_SRVR_PSWD,
       
   715                 R_EMAIL_INFORMATION_QUERY,
       
   716                 ETrue );
       
   717             return EMuiuPageEventResultCancel;
       
   718 
       
   719         // Always online is on
       
   720         case EIMSOmaEmnAoOn:
       
   721             CIMSSettingsNoteUi::ShowQueryL(
       
   722                 R_MBXS_SETTINGS_AOL_OFF_QRY, 
       
   723                 R_EMAIL_INFORMATION_QUERY,
       
   724                 ETrue );
       
   725             return EMuiuPageEventResultCancel;
       
   726 
       
   727         // OMA emn is on
       
   728         case EIMSAoOmaEmnOn:
       
   729             CIMSSettingsNoteUi::ShowQueryL(
       
   730                 R_MBXS_SETTINGS_OMA_OFF_QRY, 
       
   731                 R_EMAIL_INFORMATION_QUERY,
       
   732                 ETrue );
       
   733             return EMuiuPageEventResultCancel;
       
   734 
       
   735         // Too many always online mailboxes
       
   736         case EIMSAoManyAlwaysOnline:
       
   737             CIMSSettingsNoteUi::ShowQueryL(
       
   738                 R_MCE_SETTINGS_ALWAYS_MAXLIMIT, R_EMAIL_INFORMATION_QUERY );
       
   739             return EMuiuPageEventResultCancel;
       
   740 
       
   741         // If fetch limit is something else than all, query user
       
   742         case EIMSAoFetchNotAccepted:
       
   743             if ( iMailboxApi.Flags().LF( EmailFeatureAlwaysonlineHeaders ) )
       
   744                 {
       
   745                 return CIMSSettingsNoteUi::ShowQueryL(
       
   746                     R_MCE_SETTINGS_MAIL_ALL_MAILS_FET2,
       
   747                     R_EMAIL_CONFIRMATION_QUERY,
       
   748                     ETrue ) ?
       
   749                         EMuiuPageEventResultApproved : EMuiuPageEventResultCancel;
       
   750                 }
       
   751             break;
       
   752         // Access Point type is CSD
       
   753         case EIMSAoIapTypeCSD:
       
   754             return ShowAoCsdIapError();
       
   755 
       
   756         // Leave occurred
       
   757         case EIMSItemInvalid:
       
   758             return EMuiuPageEventResultCancel;
       
   759 
       
   760         default:
       
   761             break;
       
   762         }
       
   763 
       
   764     return EMuiuPageEventResultApproved;
       
   765     }
       
   766 
       
   767 // ----------------------------------------------------------------------------
       
   768 // CIMSSettingsNoteUi::ShowAoCsdIapError()
       
   769 // ----------------------------------------------------------------------------
       
   770 //
       
   771 TMuiuPageEventResult CIMSSettingsNoteUi::ShowAoCsdIapError()
       
   772     {
       
   773     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowAoCsdIapError, 0, KLogUi );
       
   774     
       
   775     TMsvEntry mailbox;
       
   776      // Get the mailbox
       
   777     TRAP_IGNORE( mailbox = iMailboxApi.MailboxUtilitiesL().GetMailboxEntryL(
       
   778         iDialog.CurrentMailboxId(), 
       
   779         MImumInMailboxUtilities::ERequestReceiving ) );
       
   780 
       
   781     TMuiuSettingsText infonote;
       
   782     TRAP_IGNORE( MakeStringL( infonote, R_MCE_AUTO_CONN_INCORRECT_AP,
       
   783                  mailbox.iDetails ) );
       
   784 
       
   785     // Show the text to user
       
   786     TRAP_IGNORE( CIMSSettingsNoteUi::ShowQueryL(
       
   787         infonote, R_EMAIL_INFORMATION_QUERY, ETrue ) );
       
   788  
       
   789     return EMuiuPageEventResultCancel;
       
   790     }
       
   791 
       
   792 // ----------------------------------------------------------------------------
       
   793 // CIMSSettingsNoteUi::ShowFetchLimitErrorNoteL()
       
   794 // ----------------------------------------------------------------------------
       
   795 //
       
   796 TMuiuPageEventResult CIMSSettingsNoteUi::ShowFetchLimitErrorNoteL(
       
   797     const TIMSErrors aError )
       
   798     {
       
   799     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowFetchLimitErrorNoteL, 0, KLogUi );
       
   800     
       
   801     switch ( aError )
       
   802         {
       
   803         case EIMSItemInvalid:
       
   804             if ( iMailboxApi.Flags().LF( EmailFeatureAlwaysonlineHeaders ) )
       
   805                 {
       
   806                 CIMSSettingsNoteUi::ShowQueryL(
       
   807                     R_MCE_SETTINGS_MAIL_ALL_MAILS_FET, 
       
   808                     R_EMAIL_INFORMATION_QUERY,
       
   809                     ETrue );
       
   810                 return EMuiuPageEventResultDisapproved;
       
   811                 }
       
   812             break;
       
   813         default:
       
   814             break;
       
   815         }
       
   816 
       
   817     return EMuiuPageEventResultApproved;
       
   818     }
       
   819 
       
   820 // ----------------------------------------------------------------------------
       
   821 // CIMSSettingsNoteUi::ShowAlwaysOnlineRemovalQueryL()
       
   822 // ----------------------------------------------------------------------------
       
   823 //
       
   824 TMuiuPageEventResult CIMSSettingsNoteUi::ShowAlwaysOnlineRemovalQueryL(
       
   825     const TIMSErrors aError )
       
   826     {
       
   827     IMUM_CONTEXT( CIMSSettingsNoteUi::ShowAlwaysOnlineRemovalQueryL, 0, KLogUi );
       
   828     
       
   829     switch ( aError )
       
   830         {
       
   831         // Indicate to the user, that it's unwise to remove login information
       
   832         case EIMSAoNoLogin:
       
   833             return CIMSSettingsNoteUi::ShowQueryL(
       
   834                 R_MCE_ALWAYS_CHANGEPROMPT, 
       
   835                 R_EMAIL_CONFIRMATION_QUERY,
       
   836                 ETrue ) ?
       
   837                 EMuiuPageEventResultApproved : EMuiuPageEventResultCancel;
       
   838 
       
   839         default:
       
   840             break;
       
   841         }
       
   842 
       
   843     return EMuiuPageEventResultApproved;
       
   844     }
       
   845 
       
   846 // -----------------------------------------------------------------------------
       
   847 // CIMSSettingsNoteUi::ShowPopupLC
       
   848 // -----------------------------------------------------------------------------
       
   849 //
       
   850 CAknInfoPopupNoteController* CIMSSettingsNoteUi::ShowPopupLC(
       
   851     const TInt aResource,
       
   852     const TInt aAfterMs,
       
   853     const TInt aPopupVisibleTimeMs )
       
   854     {
       
   855     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowPopupLC, 0, utils, KLogUi );
       
   856     
       
   857     CAknInfoPopupNoteController* noteDialog =
       
   858         CAknInfoPopupNoteController::NewL();
       
   859     CleanupStack::PushL( noteDialog );
       
   860     noteDialog->SetTimePopupInView( aPopupVisibleTimeMs );
       
   861     HBufC* prompt = StringLoader::LoadL( aResource );
       
   862     CleanupStack::PushL( prompt );
       
   863     noteDialog->SetTextL( prompt->Des() );
       
   864     CleanupStack::PopAndDestroy( prompt );
       
   865     noteDialog->SetTimeDelayBeforeShow( aAfterMs );
       
   866     noteDialog->ShowInfoPopupNote();
       
   867     return noteDialog;
       
   868     }
       
   869 
       
   870 
       
   871 // -----------------------------------------------------------------------------
       
   872 // CIMSSettingsNoteUi::ShowPopupL
       
   873 // -----------------------------------------------------------------------------
       
   874 //
       
   875 CAknInfoPopupNoteController* CIMSSettingsNoteUi::ShowPopupL(
       
   876     const TInt aResource,
       
   877     const TInt aAfterMilliSeconds,
       
   878     const TInt aPopupVisibleTime )
       
   879     {
       
   880     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::ShowPopupL, 0, utils, KLogUi );
       
   881     
       
   882     CAknInfoPopupNoteController* noteDialog = ShowPopupLC(
       
   883         aResource, aAfterMilliSeconds, aPopupVisibleTime );
       
   884     CleanupStack::Pop( noteDialog );
       
   885     return noteDialog;
       
   886     }
       
   887 
       
   888 // -----------------------------------------------------------------------------
       
   889 // CIMSSettingsNoteUi::NewNoteL
       
   890 // -----------------------------------------------------------------------------
       
   891 //
       
   892 CAknResourceNoteDialog* CIMSSettingsNoteUi::NewNoteL( TIMSNotes aNoteType, TBool aNoteWaiting )
       
   893     {
       
   894     IMUM_STATIC_CONTEXT( CIMSSettingsNoteUi::NewNoteL, 0, utils, KLogUi );
       
   895     
       
   896     switch( aNoteType )
       
   897         {
       
   898         // Confirmation note
       
   899         case EIMSConfirmationNote:
       
   900             return new ( ELeave ) CAknConfirmationNote( aNoteWaiting );
       
   901         // Information note
       
   902         case EIMSInformationNote:
       
   903             return new ( ELeave ) CAknInformationNote( aNoteWaiting );
       
   904         // Error note
       
   905         case EIMSErrorNote:
       
   906             return new ( ELeave ) CAknErrorNote( aNoteWaiting );
       
   907         // Warning note
       
   908         case EIMSWarningNote:
       
   909             return new ( ELeave ) CAknWarningNote( aNoteWaiting );
       
   910         // Wrong note given, leave
       
   911         default:
       
   912             User::Leave( KErrUnknown );
       
   913             return NULL;
       
   914         }
       
   915     }