ipsservices/ipssossettings/src/ipssetuidialog.cpp
changeset 0 8466d47a6819
child 3 a4d6f1ea0416
equal deleted inserted replaced
-1:000000000000 0:8466d47a6819
       
     1 /*
       
     2 * Copyright (c) 2007 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: This file implements class CIpsSetUiDialogCtrl.
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include "emailtrace.h"
       
    20 #include <e32base.h>
       
    21 //<cmail>
       
    22 //#include <aputils.h> not used in cmail
       
    23 //</cmail>
       
    24 #include <ipssossettings.rsg>
       
    25 #include <akntitle.h>
       
    26 #include <txtrich.h>    // crichtext
       
    27 #include <SendUiConsts.h>
       
    28 #include <StringLoader.h>
       
    29 #include <AknQueryDialog.h>
       
    30 #include <layoutmetadata.cdl.h>
       
    31 
       
    32 #include <featmgr.h>
       
    33 //</cmail>
       
    34 
       
    35 //<cmail>
       
    36 #include "CFSMailCommon.h"
       
    37 //</cmail>
       
    38 
       
    39 #include "ipssetui.h"
       
    40 #include "ipssetuiitemaccesspoint.h"
       
    41 #include "ipssetutilspageids.hrh"
       
    42 #include "ipssetdata.h"
       
    43 #include "ipssetdatasignature.h"
       
    44 #include "ipssetutilsexception.h"
       
    45 #include "ipssetutilsconsts.h"
       
    46 #include "ipssetuifoldersubscription.h"
       
    47 #include "ipssetutils.h"
       
    48 #include "ipsplgsossettings.hrh"
       
    49 #include "ipssetuiitemlink.h"
       
    50 #include "ipssetuiitemextlink.h"
       
    51 #include "ipssetuidialog.h"
       
    52 //<cmail>
       
    53 #include "ipsplgconnectandrefreshfolderlist.h"
       
    54 #include "ipssetutilsoperationwait.h"
       
    55 
       
    56 class MFSMailRequestObserver;
       
    57 class CIpsPlgTimerOperation;
       
    58 //</cmail>
       
    59 
       
    60 //<cmail>
       
    61 #include "ipssetdataextension.h"
       
    62 //</cmail>
       
    63 
       
    64 #include "FreestyleEmailUiConstants.h"
       
    65 #include <csxhelp/cmail.hlp.hrh>
       
    66 
       
    67 // All day mask
       
    68 const TUint KIpsSetUiAllDays = 0x7F;
       
    69 const TInt KIpsSetDefaultLimit = 30;
       
    70 const TInt KIpsSetDefaultSizeLimit = 1;
       
    71 
       
    72 // ----------------------------------------------------------------------------
       
    73 // CIpsSetUiDialogCtrl::NewL()
       
    74 // ----------------------------------------------------------------------------
       
    75 //
       
    76 CIpsSetUiDialogCtrl* CIpsSetUiDialogCtrl::NewL(
       
    77     CIpsSetUi& aDialog,
       
    78     CEikFormattedCellListBox& aListBox,
       
    79     CAknTitlePane& aTitlePane,
       
    80     CEikButtonGroupContainer& aButtons,
       
    81     CMsvSession& aSession,
       
    82     TUint64& aFlags )
       
    83     {
       
    84     FUNC_LOG;
       
    85     CIpsSetUiDialogCtrl* self = NewLC(
       
    86         aDialog, aListBox, aTitlePane, aButtons, aSession ,aFlags );
       
    87     CleanupStack::Pop( self );
       
    88     return self;
       
    89     }
       
    90 
       
    91 // ----------------------------------------------------------------------------
       
    92 // CIpsSetUiDialogCtrl::NewLC()
       
    93 // ----------------------------------------------------------------------------
       
    94 //
       
    95 CIpsSetUiDialogCtrl* CIpsSetUiDialogCtrl::NewLC(
       
    96     CIpsSetUi& aDialog,
       
    97     CEikFormattedCellListBox& aListBox,
       
    98     CAknTitlePane& aTitlePane,
       
    99     CEikButtonGroupContainer& aButtons,
       
   100     CMsvSession& aSession,
       
   101     TUint64& aFlags )
       
   102     {
       
   103     FUNC_LOG;
       
   104     CIpsSetUiDialogCtrl* self = new ( ELeave ) CIpsSetUiDialogCtrl(
       
   105             aDialog, aListBox, aTitlePane, aSession ,aFlags );
       
   106     CleanupStack::PushL( self );
       
   107     self->ConstructL( aButtons );
       
   108     return self;
       
   109     }
       
   110 
       
   111 // ----------------------------------------------------------------------------
       
   112 // CIpsSetUiDialogCtrl::ConstructL()
       
   113 // ----------------------------------------------------------------------------
       
   114 //
       
   115 void CIpsSetUiDialogCtrl::ConstructL(
       
   116     CEikButtonGroupContainer& aButtons )
       
   117     {
       
   118     FUNC_LOG;
       
   119     iData = CIpsSetData::NewL();
       
   120 #ifndef _DEBUG
       
   121     iData->LoadL( iDialog.MailboxId(), iSession );
       
   122 #else
       
   123     TRAPD( dataErr, iData->LoadL( iDialog.MailboxId(), iSession ) );
       
   124     if ( dataErr != KErrNone )
       
   125         {
       
   126         }
       
   127 #endif
       
   128    
       
   129     //<cmail>
       
   130     const CIpsSetDataExtension* extSet = iData->ExtendedSettings();
       
   131     if ( extSet->DataHidden() )
       
   132         {
       
   133         iFlags |= EIpsSetUiHideAccountData;
       
   134         }
       
   135     //</cmail>   
       
   136    
       
   137     TBool mskEnabled( AknLayoutUtils::MSKEnabled() && 
       
   138                       Layout_Meta_Data::IsMSKEnabled() );
       
   139                       
       
   140     CIpsSetUiBaseDialog::ConstructL( aButtons, R_IPS_SET_MAIN_MENU, mskEnabled );
       
   141     iFlags |= EIpsSetUiMainSettingsMenu;
       
   142 
       
   143     SetMainMBoxMenuTitlePaneTextL( iData->MailboxName(), ETrue );
       
   144       
       
   145 #ifdef _DEBUG // to prevent compiler warning in urel
       
   146     TInt error = KErrNone;
       
   147 #endif // _DEBUG
       
   148     __ASSERT_DEBUG( error == KErrNone, User::Panic( KIpsSetGenPanicLit, error ) );
       
   149     }
       
   150 
       
   151 // ----------------------------------------------------------------------------
       
   152 // CIpsSetUiDialogCtrl::CIpsSetUiDialogCtrl()
       
   153 // ----------------------------------------------------------------------------
       
   154 //
       
   155 CIpsSetUiDialogCtrl::CIpsSetUiDialogCtrl(
       
   156     CIpsSetUi& aDialog,
       
   157     CEikFormattedCellListBox& aListBox,
       
   158     CAknTitlePane& aTitlePane,
       
   159     CMsvSession& aSession,
       
   160     TUint64& aFlags )
       
   161     :
       
   162     CIpsSetUiBaseDialog( aListBox, aTitlePane ),
       
   163     iDialog( aDialog ),
       
   164     iSession( aSession ),
       
   165     iFlags( aFlags )
       
   166     {
       
   167     FUNC_LOG;
       
   168     }
       
   169 
       
   170 // ----------------------------------------------------------------------------
       
   171 // CIpsSetUiDialogCtrl::~CIpsSetUiDialogCtrl()
       
   172 // ----------------------------------------------------------------------------
       
   173 //
       
   174 CIpsSetUiDialogCtrl::~CIpsSetUiDialogCtrl()
       
   175     {
       
   176     FUNC_LOG;
       
   177     delete iData;
       
   178     iData = NULL;
       
   179     iSignature.Close();
       
   180     }
       
   181 //<cmail>
       
   182 // ----------------------------------------------------------------------------
       
   183 // CIpsSetUiDialogCtrl::InitUserData()
       
   184 // ----------------------------------------------------------------------------
       
   185 //
       
   186 void CIpsSetUiDialogCtrl::InitUserData( CIpsSetUiItem& aBaseItem )
       
   187     {
       
   188     FUNC_LOG;
       
   189     switch ( aBaseItem.iItemId.iUid )
       
   190         {
       
   191         case EIpsSetUiMainMailboxSettings:
       
   192         case EIpsSetUiMainWhatToSync:
       
   193         case EIpsSetUiMainWhenToSync:
       
   194         case EIpsSetUiAdvancedIncomingSettings:
       
   195         case EIpsSetUiAdvancedOutgoingSettings:
       
   196             // Menu items do not contain any user data
       
   197             break;
       
   198 
       
   199         case EIpsSetUiMailboxEmailAddress:
       
   200             InitAnyItem( aBaseItem, 0, iData->EmailAddress() );
       
   201             break;
       
   202 
       
   203         case EIpsSetUiMailboxReplyToAddress:
       
   204             InitAnyItem( aBaseItem, 0, iData->ReplyToAddress() );
       
   205             break;
       
   206 
       
   207         case EIpsSetUiMailboxMailboxName:
       
   208             InitAnyItem( aBaseItem, 0, iData->MailboxName() );
       
   209             break;
       
   210 
       
   211         case EIpsSetUiMailboxMyName:
       
   212             InitAnyItem( aBaseItem, 0, iData->MyName() );
       
   213             break;
       
   214 
       
   215         case EIpsSetUiMailboxIncludeSignature:
       
   216             InitAnyItem( aBaseItem, iData->IncludeSignature(), KNullDesC );
       
   217             break;
       
   218 
       
   219         case EIpsSetUiIncomingUserName:
       
   220             InitAnyItem( aBaseItem, 0, iData->UserName( ETrue ) );        
       
   221             if ( iFlags & EIpsSetUiHideAccountData )
       
   222                 {
       
   223                 SetHideItem( ETrue, aBaseItem, EFalse );        
       
   224                 }
       
   225             break;
       
   226 
       
   227         case EIpsSetUiOutgoingUserName:
       
   228             InitAnyItem( aBaseItem, 0, iData->UserName( EFalse ) );        
       
   229             if ( iFlags & EIpsSetUiHideAccountData )
       
   230                 {
       
   231                 SetHideItem( ETrue, aBaseItem, EFalse );        
       
   232                 }
       
   233             break;
       
   234 
       
   235         case EIpsSetUiIncomingUserPwd:
       
   236             InitAnyItem( aBaseItem, 0, iData->UserPwd( ETrue ) );
       
   237             break;
       
   238 
       
   239         case EIpsSetUiOutgoingUserPwd:
       
   240             InitLogin( aBaseItem, iData->UserPwd( EFalse ) );
       
   241             break;
       
   242 
       
   243         case EIpsSetUiIncomingMailServer:
       
   244             InitAnyItem( aBaseItem, 0, iData->MailServer( ETrue ) );
       
   245             if ( iFlags & EIpsSetUiHideAccountData )
       
   246                 {
       
   247                 SetHideItem( ETrue, aBaseItem, EFalse );
       
   248                 }                            
       
   249             break;
       
   250 
       
   251         case EIpsSetUiOutgoingMailServer:
       
   252             InitAnyItem( aBaseItem, 0, iData->MailServer( EFalse ) );
       
   253             if ( iFlags & EIpsSetUiHideAccountData )
       
   254                 {
       
   255                 SetHideItem( ETrue, aBaseItem, EFalse );
       
   256                 }                                        
       
   257             break;
       
   258 
       
   259         case EIpsSetUiIncomingSecurity:
       
   260             InitSecuritySetting( aBaseItem, iData->Security( ETrue ) );
       
   261             break;
       
   262 
       
   263         case EIpsSetUiOutgoingSecurity:
       
   264             InitSecuritySetting( aBaseItem, iData->Security( EFalse ) );
       
   265             break;
       
   266 
       
   267         case EIpsSetUiIncomingPort:
       
   268             InitPort( aBaseItem );
       
   269             if ( iFlags & EIpsSetUiHideAccountData )
       
   270                 {
       
   271                 SetHideItem( ETrue, aBaseItem, EFalse );
       
   272                 }                            
       
   273             break;
       
   274 
       
   275         case EIpsSetUiOutgoingPort:
       
   276             InitPort( aBaseItem );
       
   277             if ( iFlags & EIpsSetUiHideAccountData )
       
   278                 {
       
   279                 SetHideItem( ETrue, aBaseItem, EFalse ); 
       
   280                 }                                        
       
   281             break;
       
   282 
       
   283         case EIpsSetUiIncomingAPop:
       
   284             InitAnyItem( aBaseItem, iData->APop(), KNullDesC );
       
   285             break;
       
   286 
       
   287         case EIpsSetUiOutgoingUserAuthentication:
       
   288             if ( iFlags & EIpsSetUiHideAccountData )
       
   289                 {
       
   290                 InitAnyItem( aBaseItem, CIpsSetData::EUseIncoming, KNullDesC );
       
   291                 SetHideItem( ETrue, aBaseItem, EFalse );
       
   292                 }
       
   293             else
       
   294                 {
       
   295                 InitAnyItem( aBaseItem, iData->UserAuthentication(), KNullDesC );
       
   296                 }    
       
   297             break;
       
   298 
       
   299         case EIpsSetUiWhatImapPath:
       
   300             InitAnyItem( aBaseItem, 0, iData->ImapPath() );
       
   301             break;
       
   302 
       
   303         case EIpsSetUiWhatRetrievePop3:
       
   304         case EIpsSetUiWhatRetrievePop3EditCustom:
       
   305             InitRetrieve(
       
   306                 aBaseItem,
       
   307                 iData->RetrieveLimit( CIpsSetData::EPop3Limit ) );
       
   308             break;
       
   309 
       
   310         case EIpsSetUiWhatRetrieveImap4Inbox:
       
   311         case EIpsSetUiWhatRetrieveImap4InboxEditCustom:
       
   312             InitRetrieve(
       
   313                 aBaseItem,
       
   314                 iData->RetrieveLimit( CIpsSetData::EImap4Inbox ) );
       
   315             break;
       
   316 
       
   317         case EIpsSetUiWhatRetrieveImap4Folders:
       
   318         case EIpsSetUiWhatRetrieveImap4FolderEditCustom:
       
   319             InitRetrieve(
       
   320                 aBaseItem,
       
   321                 iData->RetrieveLimit( CIpsSetData::EImap4Folders ) );
       
   322             break;
       
   323 
       
   324         case EIpsSetUiWhenSchedule:
       
   325             InitAnyItem( aBaseItem, iData->Schedule(), KNullDesC );
       
   326             break;
       
   327 
       
   328         case EIpsSetUiWhenRoaming:
       
   329             InitRoaming( aBaseItem, iData->Roaming() );
       
   330             break;
       
   331 
       
   332         // these have leaving init functions
       
   333         case EIpsSetUiMailboxSignature:
       
   334         case EIpsSetUiOutgoingIap:
       
   335         case EIpsSetUiIncomingIap:
       
   336         case EIpsSetUiWhatDownloadSize:
       
   337         case EIpsSetUiWhatDownloadSizeEditPlus:
       
   338         case EIpsSetUiWhenDays:
       
   339         case EIpsSetUiWhenHours:
       
   340         case EIpsSetUiWhenHoursEditCustomizeFrom:
       
   341         case EIpsSetUiWhenHoursEditCustomizeTo:
       
   342             {
       
   343             TRAP_IGNORE( InitUserDataL( aBaseItem ) );
       
   344             }
       
   345             break;
       
   346 
       
   347         default:
       
   348             break;
       
   349         }
       
   350     }
       
   351 //</cmail>
       
   352 // ----------------------------------------------------------------------------
       
   353 // CIpsSetUiDialogCtrl::InitUserDataL()
       
   354 // ----------------------------------------------------------------------------
       
   355 //
       
   356 void CIpsSetUiDialogCtrl::InitUserDataL( CIpsSetUiItem& aBaseItem )
       
   357     {
       
   358     FUNC_LOG;
       
   359     switch ( aBaseItem.iItemId.iUid )
       
   360         {
       
   361         case EIpsSetUiMailboxSignature:
       
   362             InitSignatureL( aBaseItem );
       
   363             break;
       
   364 
       
   365         case EIpsSetUiOutgoingUserPwd:
       
   366             InitLogin( aBaseItem, iData->UserPwd( EFalse ) );
       
   367             break;
       
   368 
       
   369         case EIpsSetUiOutgoingIap:
       
   370         case EIpsSetUiIncomingIap:
       
   371             InitIapL( aBaseItem );
       
   372             break;
       
   373 
       
   374         case EIpsSetUiWhatDownloadSize:
       
   375         case EIpsSetUiWhatDownloadSizeEditPlus:
       
   376             InitDownloadSizeL( aBaseItem, iData->DownloadSize() );
       
   377             break;
       
   378 
       
   379         case EIpsSetUiWhenDays:
       
   380             InitAnyItem( aBaseItem, iData->Days(), KNullDesC );
       
   381             HandleEventDaysL( aBaseItem );
       
   382             break;
       
   383 
       
   384         case EIpsSetUiWhenHours:
       
   385         case EIpsSetUiWhenHoursEditCustomizeFrom:
       
   386         case EIpsSetUiWhenHoursEditCustomizeTo:
       
   387             InitHoursL(
       
   388                 aBaseItem,
       
   389                 iData->Hours( ETrue ).Int64(),
       
   390                 iData->Hours( EFalse ).Int64() );
       
   391             break;
       
   392 
       
   393         default:
       
   394             break;
       
   395         }
       
   396     }
       
   397 
       
   398 // ---------------------------------------------------------------------------
       
   399 // CIpsSetUiDialogCtrl::InitDownloadSizeL()
       
   400 // ---------------------------------------------------------------------------
       
   401 //
       
   402 void CIpsSetUiDialogCtrl::InitDownloadSizeL(
       
   403     CIpsSetUiItem& aBaseItem,
       
   404     const TInt aValue )
       
   405     {
       
   406     FUNC_LOG;
       
   407     if ( aBaseItem.iItemId.iUid == EIpsSetUiWhatDownloadSizeEditPlus )
       
   408         {
       
   409         InitAnyItem( aBaseItem, aValue, KNullDesC );
       
   410         }
       
   411     else // EIpsSetUiWhatDownloadSize
       
   412         {
       
   413         CIpsSetUiItem& item =
       
   414             *GetItem( TUid::Uid( EIpsSetUiWhatDownloadSizeEditPlus ) );
       
   415         if ( aValue == KErrNotFound )
       
   416             {
       
   417             InitAnyItem( aBaseItem, CIpsSetData::EWholeBody, KNullDesC );
       
   418             InitAnyItem( item, KIpsSetDefaultSizeLimit, KNullDesC );
       
   419             }
       
   420         else if ( aValue >= 0 )
       
   421             {
       
   422             InitAnyItem( aBaseItem, CIpsSetData::EHeadersPlus, KNullDesC );
       
   423             HandleDownloadSizeL( aBaseItem );
       
   424             }
       
   425         else
       
   426             {
       
   427             InitAnyItem( aBaseItem, CIpsSetData::EHeaders, KNullDesC );
       
   428             InitAnyItem( item, KIpsSetDefaultSizeLimit, KNullDesC );
       
   429             }
       
   430         }
       
   431     }
       
   432 
       
   433 // ----------------------------------------------------------------------------
       
   434 // CIpsSetUiDialogCtrl::GetHelpContext()
       
   435 // ----------------------------------------------------------------------------
       
   436 //
       
   437 void CIpsSetUiDialogCtrl::GetHelpContext( TCoeHelpContext& aContext ) const
       
   438     {
       
   439     FUNC_LOG;
       
   440     aContext.iMajor = KFSEmailUiUid;
       
   441     aContext.iContext = KFSE_HLP_LAUNCHER_GRID;
       
   442     }
       
   443 
       
   444 // ---------------------------------------------------------------------------
       
   445 // CIpsSetUiDialogCtrl::HandleSettingPageEventL()
       
   446 // ---------------------------------------------------------------------------
       
   447 //
       
   448 void CIpsSetUiDialogCtrl::HandleSettingPageEventL(
       
   449     CAknSettingPage* /* aSettingPage */,
       
   450     TAknSettingPageEvent /* aEventType */ )
       
   451     {
       
   452     FUNC_LOG;
       
   453     }
       
   454 
       
   455 // ---------------------------------------------------------------------------
       
   456 // CIpsSetUiDialogCtrl::OkToExitL()
       
   457 // ---------------------------------------------------------------------------
       
   458 //
       
   459 TBool CIpsSetUiDialogCtrl::OkToExitL( const TInt /* aButtonId */ )
       
   460     {
       
   461     FUNC_LOG;
       
   462     // Save settings only when closing (back key pressed)
       
   463     if ( iFlags & EIpsSetUiShouldClose )
       
   464         {
       
   465         iFlags |= EIpsSetUiAllowSave;
       
   466         }
       
   467 
       
   468     return ETrue;
       
   469     }
       
   470 
       
   471 // ----------------------------------------------------------------------------
       
   472 // CIpsSetUiDialogCtrl::EventHandlerL()
       
   473 // ----------------------------------------------------------------------------
       
   474 //
       
   475 TBool CIpsSetUiDialogCtrl::EventHandlerL( const TInt aCommandId )
       
   476     {
       
   477     FUNC_LOG;
       
   478     TBool ok = ETrue;
       
   479 
       
   480     switch ( aCommandId )
       
   481         {
       
   482         // Show help dialog
       
   483         case EAknCmdHelp:
       
   484             iDialog.LaunchHelpL();
       
   485             break;
       
   486 
       
   487         // User has pressed ok key
       
   488         case EAknSoftkeyOpen:
       
   489         case EAknSoftkeySelect:
       
   490         case EAknSoftkeyOk:
       
   491             KeyPressOKButtonL( aCommandId );
       
   492             break;
       
   493 
       
   494         case EAknSoftkeyOptions:
       
   495             iFlags |= EIpsSetUiOpenOptionsMenu;
       
   496             iDialog.LaunchMenuL();
       
   497             break;
       
   498 
       
   499         case EAknSoftkeyShow:
       
   500         case EAknSoftkeyDone:
       
   501         case EAknSoftkeyBack:
       
   502             KeyPressSoftkeyL( aCommandId );
       
   503             break;
       
   504 
       
   505         case EAknSoftkeyCancel:
       
   506 		
       
   507 //<cmail>
       
   508             iFlags |= EIpsSetUiShouldClose;
       
   509             break;
       
   510 //</cmail>
       
   511 
       
   512         // Emergency exit           
       
   513 
       
   514         case EAknCmdExit:
       
   515             iFlags |= EIpsSetUiShouldExit;
       
   516             iDialog.DoQuitL();
       
   517             break;
       
   518 
       
   519         default:
       
   520             ok = EFalse;
       
   521             break;
       
   522         }
       
   523 
       
   524     return ok;
       
   525     }
       
   526 
       
   527 // ----------------------------------------------------------------------------
       
   528 // CIpsSetUiDialogCtrl::KeyPressSoftkeyL()
       
   529 // ----------------------------------------------------------------------------
       
   530 //
       
   531 TBool CIpsSetUiDialogCtrl::KeyPressSoftkeyL(
       
   532     const TInt aButton )
       
   533     {
       
   534     FUNC_LOG;
       
   535     if ( aButton == EAknSoftkeyBack )
       
   536         {
       
   537         if ( iFlags & EIpsSetUiMainSettingsMenu )
       
   538             {
       
   539             iFlags |= EIpsSetUiShouldClose;
       
   540             SetSettingsMenuTitlePaneText( EFalse );
       
   541             iDialog.DoQuitL();
       
   542             }
       
   543         else
       
   544             {
       
   545             // Go backwards to previous setting page
       
   546             // Panic if any error
       
   547             TInt error( KErrNone );
       
   548             TRAP( error, HandleStackBackwardL() );
       
   549             IPS_ASSERT_DEBUG( error == KErrNone, error, EDialogCtrl );
       
   550             }
       
   551         }
       
   552 
       
   553     return ETrue;
       
   554     }
       
   555 
       
   556 // ----------------------------------------------------------------------------
       
   557 // CIpsSetUiDialogCtrl::KeyPressOKButtonL()
       
   558 // ----------------------------------------------------------------------------
       
   559 //
       
   560 TBool CIpsSetUiDialogCtrl::KeyPressOKButtonL( const TInt aButton )
       
   561     {
       
   562     FUNC_LOG;
       
   563     // Get the currently selected item
       
   564     CIpsSetUiItem* base = CurrentItem();
       
   565     IPS_ASSERT_DEBUG( error == KErrNone, KErrNotFound, EDialogCtrl );
       
   566 
       
   567     // When Options->Change is selected, then the menu should
       
   568     // be opened, no matter what
       
   569     if ( aButton == EAknSoftkeySelect )
       
   570         {
       
   571         base->iItemFlags.SetFlag32( KIpsSetUiFlagOneTimeForceViewOpen );
       
   572         }
       
   573     else
       
   574         {
       
   575         base->iItemFlags.ClearFlag32( KIpsSetUiFlagOneTimeForceViewOpen );
       
   576         }
       
   577 
       
   578     TIpsSetUiPageResult result = OpenSettingPageL( *base );
       
   579 
       
   580     if( base->iItemId == TUid::Uid( EIpsSetUiWhatImapPath ) )
       
   581         {
       
   582         //save folder path immediately
       
   583         iData->SetImapPathL( CurrentItem()->Text() );
       
   584         iData->SaveL( iSession );
       
   585         }
       
   586 
       
   587     return ETrue;
       
   588     }
       
   589 
       
   590 // ----------------------------------------------------------------------------
       
   591 // CIpsSetUiDialogCtrl::EventSubArrayChangeL()
       
   592 // ----------------------------------------------------------------------------
       
   593 //
       
   594 TInt CIpsSetUiDialogCtrl::EventSubArrayChangeL(
       
   595     CIpsSetUiItem& aBaseItem )
       
   596     {
       
   597     FUNC_LOG;
       
   598     if ( aBaseItem.iItemResourceId == R_IPS_SET_MAIN_MENU )
       
   599         {
       
   600         iFlags |= EIpsSetUiMainSettingsMenu;
       
   601         iFlags &= ~EIpsSetUiSettingsMenuItem;
       
   602         }
       
   603     else if ( aBaseItem.iItemResourceId == R_IPS_SET_MENU_ADVANCED_MAILBOX_SETTINGS )
       
   604         {
       
   605         iFlags &= ~EIpsSetUiSettingsMenuItem;
       
   606         }
       
   607     else
       
   608         {
       
   609         iFlags &= ~EIpsSetUiMainSettingsMenu;
       
   610         }
       
   611 
       
   612     return KErrNone;
       
   613     }
       
   614 
       
   615 // ---------------------------------------------------------------------------
       
   616 // CIpsSetUiDialogCtrl::ProcessCommandL()
       
   617 // ---------------------------------------------------------------------------
       
   618 //
       
   619 void CIpsSetUiDialogCtrl::ProcessCommandL( TInt aCommandId )
       
   620     {
       
   621     FUNC_LOG;
       
   622     EventHandlerL( aCommandId );
       
   623     }
       
   624 
       
   625 // ---------------------------------------------------------------------------
       
   626 // CIpsSetUiDialogCtrl::DynInitMenuPaneL()
       
   627 // ---------------------------------------------------------------------------
       
   628 //
       
   629 void CIpsSetUiDialogCtrl::DynInitMenuPaneL(
       
   630         /*TInt aResourceId,*/
       
   631         CEikMenuPane* aMenuPane )
       
   632     {
       
   633     FUNC_LOG;
       
   634 	if ( FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) )
       
   635 		{
       
   636 		// remove help support in pf5250
       
   637 		aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue);      
       
   638 		}
       
   639     }
       
   640 
       
   641 
       
   642 // ---------------------------------------------------------------------------
       
   643 // CIpsSetUiDialogCtrl::StoreSettingsToAccountL()
       
   644 // ---------------------------------------------------------------------------
       
   645 //
       
   646 void CIpsSetUiDialogCtrl::StoreSettingsToAccountL()
       
   647     {
       
   648     FUNC_LOG;
       
   649     // Save all settings at once.
       
   650     iData->SetEmailAddressL(
       
   651         GetItem( TUid::Uid( EIpsSetUiMailboxEmailAddress ) )->Text() );
       
   652     iData->SetReplyToAddressL(
       
   653         GetItem( TUid::Uid( EIpsSetUiMailboxReplyToAddress ) )->Text() );
       
   654     iData->SetMailboxName(
       
   655         GetItem( TUid::Uid( EIpsSetUiMailboxMailboxName ) )->Text() );
       
   656     iData->SetMyNameL(
       
   657         GetItem( TUid::Uid( EIpsSetUiMailboxMyName ) )->Text() );
       
   658     iData->SetIncludeSignature(
       
   659         GetItem( TUid::Uid( EIpsSetUiMailboxIncludeSignature ) )->Value() );
       
   660     iData->SetSignatureL(
       
   661         GetItem( TUid::Uid( EIpsSetUiMailboxSignature ) )->Text() );
       
   662     iData->SetUserNameL(
       
   663         GetItem( TUid::Uid( EIpsSetUiIncomingUserName ) )->Text(),
       
   664         GetItem( TUid::Uid( EIpsSetUiOutgoingUserName ) )->Text() );
       
   665     iData->SetUserPwdL(
       
   666         GetItem( TUid::Uid( EIpsSetUiIncomingUserPwd ) )->Text(),
       
   667         GetItem( TUid::Uid( EIpsSetUiOutgoingUserPwd ) )->Text() );
       
   668     iData->SetMailServerL(
       
   669         GetItem( TUid::Uid( EIpsSetUiIncomingMailServer ) )->Text(),
       
   670         GetItem( TUid::Uid( EIpsSetUiOutgoingMailServer ) )->Text() );
       
   671     iData->SetIapL(
       
   672         GetIapChoiceL( TUid::Uid( EIpsSetUiIncomingIap ) ),
       
   673         GetIapChoiceL( TUid::Uid( EIpsSetUiOutgoingIap ) ) );
       
   674     iData->SetSecurity(
       
   675         GetItem( TUid::Uid( EIpsSetUiIncomingSecurity ) )->Value(),
       
   676         GetItem( TUid::Uid( EIpsSetUiOutgoingSecurity ) )->Value() );
       
   677     iData->SetPort(
       
   678         GetItem( TUid::Uid( EIpsSetUiIncomingPortBtnEditor ) )->Value(),
       
   679         GetItem( TUid::Uid( EIpsSetUiOutgoingPortBtnEditor ) )->Value() );
       
   680     iData->SetAPop(
       
   681         GetItem( TUid::Uid( EIpsSetUiIncomingAPop ) )->Value() );
       
   682     iData->SetUserAuthentication(
       
   683         GetItem( TUid::Uid( EIpsSetUiOutgoingUserAuthentication ) )->Value() );
       
   684     iData->SetImapPathL(
       
   685         GetItem( TUid::Uid( EIpsSetUiWhatImapPath ) )->Text() );
       
   686     iData->SetDownloadSizeL(
       
   687         GetItem( TUid::Uid( EIpsSetUiWhatDownloadSize ) )->Value(),
       
   688         GetItem( TUid::Uid( EIpsSetUiWhatDownloadSizeEditPlus ) )->Value() );
       
   689     StoreRetrievalLimit();
       
   690 
       
   691     iData->SetSchedule(
       
   692         GetItem( TUid::Uid( EIpsSetUiWhenSchedule ) )->Value(),
       
   693         GetItem( TUid::Uid( EIpsSetUiWhenRoaming ) )->Value() );
       
   694     iData->SetDays(
       
   695         GetItem( TUid::Uid( EIpsSetUiWhenDays ) )->Value() );
       
   696     iData->SetHours(
       
   697         GetItem( TUid::Uid(
       
   698             EIpsSetUiWhenHoursEditCustomizeFrom ) )->Value(),
       
   699         GetItem( TUid::Uid(
       
   700             EIpsSetUiWhenHoursEditCustomizeTo ) )->Value() );
       
   701 
       
   702     iData->SaveL( iSession );
       
   703     }
       
   704 
       
   705 // ---------------------------------------------------------------------------
       
   706 // CIpsSetUiDialogCtrl::StoreRetrievalLimit()
       
   707 // ---------------------------------------------------------------------------
       
   708 //
       
   709 void CIpsSetUiDialogCtrl::StoreRetrievalLimit()
       
   710     {
       
   711     FUNC_LOG;
       
   712     // Retrieve radio button values
       
   713     TInt popBtn = GetItem( TUid::Uid( EIpsSetUiWhatRetrievePop3 ) )->Value();
       
   714     TInt inboxBtn = GetItem( TUid::Uid(
       
   715         EIpsSetUiWhatRetrieveImap4Inbox ) )->Value();
       
   716     TInt folderBtn = GetItem( TUid::Uid(
       
   717         EIpsSetUiWhatRetrieveImap4Folders ) )->Value();
       
   718 
       
   719     // Retrieve editor values
       
   720     TInt popValue = GetItem(
       
   721         TUid::Uid( EIpsSetUiWhatRetrievePop3EditCustom ) )->Value();
       
   722     TInt inboxValue = GetItem( TUid::Uid(
       
   723             EIpsSetUiWhatRetrieveImap4InboxEditCustom ) )->Value();
       
   724     TInt folderValue = GetItem( TUid::Uid(
       
   725             EIpsSetUiWhatRetrieveImap4FolderEditCustom ) )->Value();
       
   726 
       
   727     iData->SetRetrieveLimit(
       
   728         popBtn == CIpsSetData::EAll ? KIpsSetMaxFetchHeadersDefaultLimit : popValue,
       
   729         inboxBtn == CIpsSetData::EAll ? KIpsSetMaxFetchHeadersDefaultLimit : inboxValue,
       
   730         folderBtn == CIpsSetData::EAll ? KIpsSetMaxFetchHeadersDefaultLimit : folderValue );
       
   731     }
       
   732 
       
   733 // ---------------------------------------------------------------------------
       
   734 // CIpsSetUiDialogCtrl::GetIapPref()
       
   735 // ---------------------------------------------------------------------------
       
   736 //
       
   737 TImIAPChoice CIpsSetUiDialogCtrl::GetIapPref( const TInt aItemId )
       
   738     {
       
   739     FUNC_LOG;
       
   740     CIpsSetUiItemAccessPoint* ap =
       
   741         static_cast<CIpsSetUiItemAccessPoint*>( GetItem( aItemId ) );
       
   742     TImIAPChoice choice;
       
   743     //<cmail> different from FS since CIpsSetUiItemAccessPoint has differnet implementation
       
   744     //choice.iIAP = ap->iIapWapId; //In FS
       
   745     choice.iIAP = ap->iIapId;    // In cmail
       
   746     //</cmail>
       
   747     choice.iDialogPref = ap->iIapPref;
       
   748     return choice;
       
   749     }
       
   750 
       
   751 // ---------------------------------------------------------------------------
       
   752 // CIpsSetUiDialogCtrl::OfferKeyEventL()
       
   753 // ---------------------------------------------------------------------------
       
   754 //
       
   755 TKeyResponse CIpsSetUiDialogCtrl::OfferKeyEventL(
       
   756     const TKeyEvent& aKeyEvent,
       
   757     TEventCode aType )
       
   758     {
       
   759     FUNC_LOG;
       
   760     TBool ok = EFalse;
       
   761 
       
   762     // Handle the key events for wizard
       
   763     if ( aType == EEventKey )
       
   764         {
       
   765         switch ( aKeyEvent.iCode )
       
   766             {
       
   767             // Ignore left and right keys
       
   768             case EKeyLeftArrow:
       
   769             case EKeyRightArrow:
       
   770                 ok = ETrue;
       
   771                 break;
       
   772 
       
   773             // Selection key
       
   774             case EKeyOK:
       
   775             case EKeyEnter:
       
   776                 ok = EventHandlerL( EAknSoftkeyOk );
       
   777                 break;
       
   778 
       
   779             // Red button
       
   780             case EKeyPhoneEnd:
       
   781                 ok = EventHandlerL( EAknSoftkeyCancel );
       
   782                 break;
       
   783 
       
   784             default:
       
   785                 break;
       
   786             }
       
   787         }
       
   788 
       
   789     TKeyResponse ret = ok ? EKeyWasConsumed : EKeyWasNotConsumed;
       
   790     ret = ( ret == EKeyWasNotConsumed ) ?
       
   791         CIpsSetUiBaseDialog::OfferKeyEventL( aKeyEvent, aType ) :
       
   792         EKeyWasNotConsumed;
       
   793 
       
   794     if ( aType == EEventKeyDown )
       
   795         {
       
   796         ret = EKeyWasConsumed;
       
   797         }
       
   798 
       
   799     return ret;
       
   800     }
       
   801 
       
   802 // ---------------------------------------------------------------------------
       
   803 // From class CIpsSetUiBaseArray.
       
   804 // CIpsSetUiDialogCtrl::CreateCustomItemToArrayLC()
       
   805 // ---------------------------------------------------------------------------
       
   806 //
       
   807 CIpsSetUiItem* CIpsSetUiDialogCtrl::CreateCustomItemToArrayLC(
       
   808     const TUid& aId )
       
   809     {
       
   810     FUNC_LOG;
       
   811     CIpsSetUiItem* uiItem = NULL;
       
   812     switch ( aId.iUid )
       
   813         {
       
   814         case EIpsSetUiIncomingIap:
       
   815         case EIpsSetUiOutgoingIap:
       
   816             {
       
   817             uiItem = CIpsSetUiItemAccessPoint::NewLC();
       
   818             }
       
   819             break;
       
   820         case EIpsSetUiWhatFolderSync:
       
   821             {
       
   822             uiItem = CIpsSetUiItemLinkExt::NewLC();
       
   823             }
       
   824             break;
       
   825         default:
       
   826             break;
       
   827         }
       
   828     return uiItem;
       
   829     }
       
   830 
       
   831 // ---------------------------------------------------------------------------
       
   832 // From class CIpsSetUiBaseDialog.
       
   833 // CIpsSetUiDialogCtrl::EventItemEditStartsL()
       
   834 // ---------------------------------------------------------------------------
       
   835 //
       
   836 TIpsSetUiEventResult CIpsSetUiDialogCtrl::EventItemEditStartsL( CIpsSetUiItem& aBaseItem )
       
   837     {
       
   838     FUNC_LOG;
       
   839     switch ( aBaseItem.iItemId.iUid )
       
   840         {
       
   841         case EIpsSetUiIncomingIap:
       
   842         case EIpsSetUiOutgoingIap:
       
   843             return HandleAccessPointOpeningL( aBaseItem );
       
   844 
       
   845         case EIpsSetUiIncomingPort:
       
   846         case EIpsSetUiOutgoingPort:
       
   847             return HandlePort();
       
   848 
       
   849         case EIpsSetUiWhatFolderSync:
       
   850             return HandleEventSubscribeFoldersL();
       
   851 
       
   852         default: break;
       
   853         }
       
   854 
       
   855     return EIpsSetUiPageEventResultApproved;
       
   856     }
       
   857 
       
   858 // ----------------------------------------------------------------------------
       
   859 // CIpsSetUiDialogCtrl::HandleEventSubscribeFoldersL()
       
   860 // ----------------------------------------------------------------------------
       
   861 //
       
   862 TIpsSetUiEventResult CIpsSetUiDialogCtrl::HandleEventSubscribeFoldersL()
       
   863     {
       
   864     FUNC_LOG;
       
   865     // <cmail>
       
   866     // Run the dialog
       
   867     CAknQueryDialog* confDialog = CAknQueryDialog::NewL();
       
   868     if( confDialog->ExecuteLD( R_IPS_SET_CONNECT_FOR_UPDATE ) )
       
   869     	{
       
   870     	CMsvEntrySelection* mySelection=new (ELeave) CMsvEntrySelection;
       
   871     	CleanupStack::PushL(mySelection);
       
   872 
       
   873     	MFSMailRequestObserver* dummyFSObserver = NULL;
       
   874     	CIpsPlgTimerOperation* timer = NULL;
       
   875     	TFSMailMsgId mailboxId;
       
   876     	CIpsPlgConnectAndRefreshFolderList* op = NULL;
       
   877     	
       
   878     	// Create a waiter, which shows wait dialog
       
   879     	CIpsSetUtilsOperationWait* wait = CIpsSetUtilsOperationWait::NewLC();
       
   880 
       
   881     	
       
   882     	mailboxId.SetId( iDialog.MailboxId() );
       
   883     	mySelection->AppendL( iDialog.MailboxId() );
       
   884     	
       
   885     	op = CIpsPlgConnectAndRefreshFolderList::NewL( 
       
   886     			iSession, 
       
   887     			CActive::EPriorityStandard, 
       
   888     			wait->iStatus,//status,
       
   889     			iDialog.MailboxId(), 
       
   890     			mailboxId, 
       
   891     			*mySelection, 
       
   892     			*dummyFSObserver, 
       
   893     			*timer );
       
   894     	CleanupStack::PushL(op);
       
   895 
       
   896     	wait->StartAndShowWaitDialogL();
       
   897     	CleanupStack::PopAndDestroy(3, mySelection); // op, wait, myselection
       
   898     	}
       
   899     iDialog.SetIgnoreOneBackKey(EFalse); //<cmail>
       
   900     // </cmail>
       
   901     
       
   902     CIpsSetUiSubscriptionDialog* subDlg =
       
   903     CIpsSetUiSubscriptionDialog::NewL(
       
   904     		iFlags, iDialog.MailboxId(), iSession, iTitlePane,
       
   905     		*iMainMBoxMenuTitleText );
       
   906 
       
   907     subDlg->PrepareLC( R_IPS_SET_FOLDER_SUBSRCIPTION_DIALOG );
       
   908     subDlg->RunLD();
       
   909     	    
       
   910     return EIpsSetUiPageEventResultDisapproved;
       
   911     }
       
   912 
       
   913 // ---------------------------------------------------------------------------
       
   914 // CIpsSetUiDialogCtrl::HandleAccessPointOpeningL()
       
   915 // ---------------------------------------------------------------------------
       
   916 //
       
   917 TIpsSetUiEventResult CIpsSetUiDialogCtrl::HandleAccessPointOpeningL(
       
   918     CIpsSetUiItem& aBaseItem )
       
   919     {
       
   920     FUNC_LOG;
       
   921     // OMG, here we go...
       
   922     CIpsSetUiItemAccessPoint& apItem =
       
   923         *static_cast<CIpsSetUiItemAccessPoint*>( &aBaseItem );
       
   924 
       
   925     // Continue at your own risk... think twice!
       
   926     apItem.LaunchL();
       
   927 
       
   928     return EIpsSetUiPageEventResultDisapproved;
       
   929     }
       
   930 
       
   931 // ---------------------------------------------------------------------------
       
   932 // CIpsSetUiDialogCtrl::HandlePort()
       
   933 // ---------------------------------------------------------------------------
       
   934 //
       
   935 TIpsSetUiEventResult CIpsSetUiDialogCtrl::HandlePort()
       
   936     {
       
   937     FUNC_LOG;
       
   938     SetSettingPageResource(
       
   939         EIpsSetUiNumber, R_IPS_SETUI_SETTINGS_DIALOG_FIVE_DIGITS );
       
   940 
       
   941     return EIpsSetUiPageEventResultApproved;
       
   942     }
       
   943 
       
   944 // ---------------------------------------------------------------------------
       
   945 // From class CIpsSetUiBaseDialog.
       
   946 // CIpsSetUiDialogCtrl::EventItemEditEndsL()
       
   947 // ---------------------------------------------------------------------------
       
   948 //
       
   949 TInt CIpsSetUiDialogCtrl::EventItemEditEndsL( CIpsSetUiItem& aBaseItem )
       
   950     {
       
   951     FUNC_LOG;
       
   952     switch ( aBaseItem.iItemId.iUid )
       
   953         {
       
   954         case EIpsSetUiMailboxIncludeSignature:
       
   955             SetHideItem(
       
   956                 aBaseItem.Value() == EIpsSetUiOff,
       
   957                 TUid::Uid( EIpsSetUiMailboxSignature ),
       
   958                 EFalse );
       
   959             break;
       
   960         case EIpsSetUiIncomingSecurity:
       
   961             HandleEventPort( *GetItem( TUid::Uid( EIpsSetUiIncomingPort ) ) );
       
   962             break;
       
   963         case EIpsSetUiOutgoingSecurity:
       
   964             HandleEventPort( *GetItem( TUid::Uid( EIpsSetUiOutgoingPort ) ) );
       
   965             break;
       
   966         case EIpsSetUiIncomingPort:
       
   967         case EIpsSetUiOutgoingPort:
       
   968             HandleEventPort( aBaseItem );
       
   969             break;
       
   970 
       
   971         case EIpsSetUiIncomingUserName:
       
   972         case EIpsSetUiIncomingUserPwd:
       
   973             HandleEventAuthentication( *GetItem(
       
   974                 TUid::Uid( EIpsSetUiOutgoingUserAuthentication ) ), EFalse );
       
   975             break;
       
   976 
       
   977         case EIpsSetUiOutgoingUserAuthentication:
       
   978             HandleEventAuthentication( aBaseItem, EFalse );
       
   979             break;
       
   980 
       
   981         case EIpsSetUiWhenDays:
       
   982             HandleEventDaysL( aBaseItem );
       
   983             break;
       
   984 
       
   985         case EIpsSetUiWhenSchedule:
       
   986             HandleEventSchedule( aBaseItem );
       
   987             break;
       
   988 
       
   989         case EIpsSetUiWhatDownloadSize:
       
   990             HandleDownloadSizeL( aBaseItem );
       
   991             break;
       
   992 
       
   993         case EIpsSetUiWhatRetrievePop3:
       
   994         case EIpsSetUiWhatRetrieveImap4Inbox:
       
   995         case EIpsSetUiWhatRetrieveImap4Folders:
       
   996             HandleEmailsToRetrieve( aBaseItem );
       
   997             break;
       
   998 
       
   999         default: break;
       
  1000         }
       
  1001 
       
  1002     return KErrNone;
       
  1003     }
       
  1004 
       
  1005 // ---------------------------------------------------------------------------
       
  1006 // CIpsSetUiDialogCtrl::HandleEmailsToRetrieve()
       
  1007 // ---------------------------------------------------------------------------
       
  1008 //
       
  1009 void CIpsSetUiDialogCtrl::HandleEmailsToRetrieve( CIpsSetUiItem& aBaseItem )
       
  1010     {
       
  1011     FUNC_LOG;
       
  1012     CIpsSetUiItemLink* linkArray = static_cast<CIpsSetUiItemLink*>( &aBaseItem );
       
  1013 
       
  1014     CIpsSetUiItem* subItem =
       
  1015         GetSubItem( *linkArray, linkArray->Value() );
       
  1016 
       
  1017     TInt retlimit = 0;
       
  1018 
       
  1019     switch( subItem->iItemId.iUid )
       
  1020         {
       
  1021         case EIpsSetUiWhatRetrieveImap4InboxBtnCustom:
       
  1022             {
       
  1023             retlimit = GetItem( TUid::Uid(
       
  1024                 EIpsSetUiWhatRetrieveImap4InboxEditCustom ) )->Value();
       
  1025             break;
       
  1026             }
       
  1027         case EIpsSetUiWhatRetrieveImap4FolderBtnCustom:
       
  1028             {
       
  1029             retlimit = GetItem( TUid::Uid(
       
  1030                 EIpsSetUiWhatRetrieveImap4FolderEditCustom ) )->Value();
       
  1031             break;
       
  1032             }
       
  1033         case EIpsSetUiWhatRetrievePop3BtnCustom:
       
  1034             {
       
  1035             retlimit = GetItem( TUid::Uid(
       
  1036                 EIpsSetUiWhatRetrievePop3EditCustom ) )->Value();
       
  1037             break;
       
  1038             }
       
  1039         default:
       
  1040             {
       
  1041             retlimit = KErrNotFound;
       
  1042             break;
       
  1043             }
       
  1044         }
       
  1045 
       
  1046     if( retlimit >= 0)
       
  1047         {
       
  1048         CIpsSetUiItemLink& linkItem =
       
  1049             *static_cast<CIpsSetUiItemLink*>( &aBaseItem );
       
  1050         linkItem.iItemSettingText->Num( retlimit );
       
  1051         }
       
  1052     }
       
  1053 
       
  1054 // ---------------------------------------------------------------------------
       
  1055 // CIpsSetUiDialogCtrl::HandleDownloadSizeL()
       
  1056 // ---------------------------------------------------------------------------
       
  1057 //
       
  1058 void CIpsSetUiDialogCtrl::HandleDownloadSizeL( CIpsSetUiItem& aBaseItem )
       
  1059     {
       
  1060     FUNC_LOG;
       
  1061     CIpsSetUiItemLink* linkArray = static_cast<CIpsSetUiItemLink*>( &aBaseItem );
       
  1062 
       
  1063     CIpsSetUiItem* subItem =
       
  1064         GetSubItem( *linkArray, linkArray->Value() );
       
  1065 
       
  1066     if ( subItem->iItemId.iUid == EIpsSetUiWhatDownloadSizeBtnPlus )
       
  1067         {
       
  1068         RBuf resourceText;
       
  1069         resourceText.CreateL( KIpsSetUiMaxSettingsLongTextLength );
       
  1070         RBuf finalText;
       
  1071         finalText.CreateL( KIpsSetUiMaxSettingsLongTextLength );
       
  1072 
       
  1073         TInt size = GetItem( TUid::Uid(
       
  1074             EIpsSetUiWhatDownloadSizeEditPlus ) )->Value();
       
  1075 
       
  1076         // <cmail> ipssossettings to use correct loc strings in menus
       
  1077         StringLoader::Load(
       
  1078             resourceText,
       
  1079             R_FSE_SETTINGS_MAIL_RETRIEVE_LESS_VALUE_PROMPT_MENU );
       
  1080         StringLoader::Format( finalText, resourceText, KErrNotFound, size );
       
  1081         // </cmail>
       
  1082 
       
  1083         CIpsSetUiItemLink& linkItem =
       
  1084             *static_cast<CIpsSetUiItemLink*>( &aBaseItem );
       
  1085         linkItem.iItemSettingText->Copy(
       
  1086             finalText.Left( KIpsSetUiMaxSettingsLongTextLength ) );
       
  1087 
       
  1088         resourceText.Close();
       
  1089         finalText.Close();
       
  1090         }
       
  1091     }
       
  1092 
       
  1093 // ---------------------------------------------------------------------------
       
  1094 // CIpsSetUiDialogCtrl::HandleEventSchedule()
       
  1095 // ---------------------------------------------------------------------------
       
  1096 //
       
  1097 void CIpsSetUiDialogCtrl::HandleEventSchedule( CIpsSetUiItem& aBaseItem )
       
  1098     {
       
  1099     FUNC_LOG;
       
  1100     SetHideItem( aBaseItem.Value() == CIpsSetData::EManual,
       
  1101         TUid::Uid( EIpsSetUiWhenRoaming ), ETrue );
       
  1102     }
       
  1103 
       
  1104 // ---------------------------------------------------------------------------
       
  1105 // CIpsSetUiDialogCtrl::HandleEventDaysL()
       
  1106 // ---------------------------------------------------------------------------
       
  1107 //
       
  1108 void CIpsSetUiDialogCtrl::HandleEventDaysL( CIpsSetUiItem& aBaseItem )
       
  1109     {
       
  1110     FUNC_LOG;
       
  1111     TInt resource = aBaseItem.Value() == KIpsSetUiAllDays ?
       
  1112         R_FSE_SETTINGS_MAIL_CONN_DAYS_ALL :
       
  1113         R_FSE_SETTINGS_MAIL_CONN_DAYS_SELECTED;
       
  1114 
       
  1115     HBufC* text = StringLoader::LoadL( resource );
       
  1116 
       
  1117     CIpsSetUiItemLink& linkItem =
       
  1118         *static_cast<CIpsSetUiItemLink*>( &aBaseItem );
       
  1119     linkItem.iItemSettingText->Copy(
       
  1120         text->Left( KIpsSetUiMaxSettingsLongTextLength ) );
       
  1121 
       
  1122     delete text;
       
  1123     text = NULL;
       
  1124     }
       
  1125 
       
  1126 // ---------------------------------------------------------------------------
       
  1127 // CIpsSetUiDialogCtrl::HandleEventPort()
       
  1128 // ---------------------------------------------------------------------------
       
  1129 //
       
  1130 void CIpsSetUiDialogCtrl::HandleEventPort( CIpsSetUiItem& aBaseItem )
       
  1131     {
       
  1132     FUNC_LOG;
       
  1133     TInt customport = 0;
       
  1134     // When default key is set, set the port in editor to correct value
       
  1135     if ( aBaseItem.Value() == EIpsSetUiDefault )
       
  1136         {
       
  1137         TInt port = 0;
       
  1138         // Handle incoming port
       
  1139         if ( aBaseItem.iItemId.iUid == EIpsSetUiIncomingPort )
       
  1140             {
       
  1141             // Determine the default port
       
  1142             TUid id = TUid::Uid( EIpsSetUiIncomingSecurity );
       
  1143             port = IpsSetUtils::GetDefaultSecurityPort(
       
  1144                 GetItem( id )->Value(),
       
  1145                 ETrue,
       
  1146                 iData->Protocol() == KSenduiMtmImap4Uid );
       
  1147 
       
  1148             // Set the port number to editor
       
  1149             id = TUid::Uid( EIpsSetUiIncomingPortBtnEditor );
       
  1150             GetItem( id )->SetValue( port );
       
  1151             }
       
  1152         // Handle outgoing port
       
  1153         else
       
  1154             {
       
  1155             // Determine the default port
       
  1156             TUid id = TUid::Uid( EIpsSetUiOutgoingSecurity );
       
  1157             port = IpsSetUtils::GetDefaultSecurityPort(
       
  1158                 GetItem( id )->Value(),
       
  1159                 EFalse,
       
  1160                 iData->Protocol() == KSenduiMtmImap4Uid );
       
  1161 
       
  1162             // Set the port number to editor
       
  1163             id = TUid::Uid( EIpsSetUiOutgoingPortBtnEditor );
       
  1164             GetItem( id )->SetValue( port );
       
  1165             }
       
  1166         }
       
  1167     //custom port settings
       
  1168     else
       
  1169         {
       
  1170         //in
       
  1171         if ( aBaseItem.iItemId.iUid == EIpsSetUiIncomingPort )
       
  1172             {
       
  1173             customport = GetItem( TUid::Uid(
       
  1174                 EIpsSetUiIncomingPortBtnEditor ) )->Value();
       
  1175             }
       
  1176         //out
       
  1177         else
       
  1178             {
       
  1179             customport = GetItem( TUid::Uid(
       
  1180                 EIpsSetUiOutgoingPortBtnEditor ) )->Value();
       
  1181             }
       
  1182         CIpsSetUiItemLink& linkItem =
       
  1183             *static_cast<CIpsSetUiItemLink*>( &aBaseItem );
       
  1184         linkItem.iItemSettingText->Num( customport );
       
  1185         }
       
  1186     }
       
  1187 
       
  1188 // ---------------------------------------------------------------------------
       
  1189 // CIpsSetUiDialogCtrl::HandleEventAuthentication()
       
  1190 // ---------------------------------------------------------------------------
       
  1191 //
       
  1192 void CIpsSetUiDialogCtrl::HandleEventAuthentication(
       
  1193     CIpsSetUiItem& aBaseItem,
       
  1194     const TBool aForceClear )
       
  1195     {
       
  1196     FUNC_LOG;
       
  1197     // Based on the authentication status...
       
  1198     CIpsSetUiItem& username =
       
  1199         *GetItem( TUid::Uid( EIpsSetUiOutgoingUserName ) );
       
  1200     CIpsSetUiItem& password =
       
  1201         *GetItem( TUid::Uid( EIpsSetUiOutgoingUserPwd ) );
       
  1202 
       
  1203     // ...hide the username&password -fields and clear them or...
       
  1204     if ( aBaseItem.Value() == CIpsSetData::ENoAuth )
       
  1205         {
       
  1206         SetHideItem( ETrue, username );
       
  1207         SetHideItem( ETrue, password, ETrue );
       
  1208         username.SetText( KNullDesC );
       
  1209         password.SetText( KNullDesC );
       
  1210         }
       
  1211     // ...copy the username&password from incoming settings or...
       
  1212     else if ( aBaseItem.Value() == CIpsSetData::EUseIncoming )
       
  1213         {
       
  1214         SetHideItem( ETrue, username );
       
  1215         SetHideItem( ETrue, password, ETrue );
       
  1216         username.SetText( GetItem( TUid::Uid(
       
  1217             EIpsSetUiIncomingUserName ) )->Text() );
       
  1218         password.SetText( GetItem(
       
  1219             TUid::Uid( EIpsSetUiIncomingUserPwd ) )->Text() );
       
  1220         }
       
  1221     // ...unhide username&password -fields and clear them.
       
  1222     else
       
  1223         {
       
  1224         SetHideItem( EFalse, username );
       
  1225         SetHideItem( EFalse, password, ETrue );
       
  1226 
       
  1227         // Do not clear the fields, when using own authentication and
       
  1228         // incoming username/password has changed
       
  1229         if ( aForceClear )
       
  1230             {
       
  1231             username.SetText( KNullDesC );
       
  1232             password.SetText( KNullDesC );
       
  1233             }
       
  1234         }
       
  1235     }
       
  1236 
       
  1237 // ---------------------------------------------------------------------------
       
  1238 // CIpsSetUiDialogCtrl::InitSignatureL()
       
  1239 // ---------------------------------------------------------------------------
       
  1240 //
       
  1241 void CIpsSetUiDialogCtrl::InitSignatureL(
       
  1242     CIpsSetUiItem& aBaseItem )
       
  1243     {
       
  1244     FUNC_LOG;
       
  1245     iSignature.CreateL( KIpsSetUiMaxSettingsSignatureLength );
       
  1246     iData->Signature().iRichText->Extract(
       
  1247         iSignature, 0, KIpsSetUiMaxSettingsSignatureLength );
       
  1248     InitAnyItem( aBaseItem, 0, iSignature );
       
  1249     iSignature.Close();
       
  1250 
       
  1251     // Make sure the signature should be shown
       
  1252     CIpsSetUiItem* item =
       
  1253         GetItem( TUid::Uid( EIpsSetUiMailboxIncludeSignature ) );
       
  1254     SetHideItem(
       
  1255         ( item->Value() == EIpsSetUiOff ),
       
  1256         aBaseItem,
       
  1257         ETrue );
       
  1258     }
       
  1259 
       
  1260 // ---------------------------------------------------------------------------
       
  1261 // CIpsSetUiDialogCtrl::InitPort()
       
  1262 // ---------------------------------------------------------------------------
       
  1263 //
       
  1264 void CIpsSetUiDialogCtrl::InitPort( CIpsSetUiItem& aItem )
       
  1265     {
       
  1266     FUNC_LOG;
       
  1267     TBool incoming( aItem.iItemId.iUid == EIpsSetUiIncomingPort );
       
  1268 
       
  1269     // If the port is same as default port, set the default port -radiobutton
       
  1270     // on, otherwise check the custom button
       
  1271     TUid id = TUid::Uid(
       
  1272         incoming ? EIpsSetUiIncomingSecurity : EIpsSetUiOutgoingSecurity );
       
  1273     TInt defaultPort = IpsSetUtils::GetDefaultSecurityPort(
       
  1274         GetItem( id )->Value(),
       
  1275         incoming,
       
  1276         iData->Protocol() == KSenduiMtmImap4Uid );
       
  1277     TInt port = iData->Port( incoming );
       
  1278     TInt button = ( defaultPort == port ) ? EIpsSetUiDefault : EIpsSetUiCustom;
       
  1279 
       
  1280     // Finally initialize items (both radiobutton editor and value editor)
       
  1281     InitAnyItem( aItem, button, KNullDesC );
       
  1282     InitAnyItem( PortItem( incoming, ETrue ), port, KNullDesC );
       
  1283     HandleEventPort( aItem );
       
  1284     }
       
  1285 
       
  1286 
       
  1287 // ---------------------------------------------------------------------------
       
  1288 // CIpsSetUiDialogCtrl::PortItem()
       
  1289 // ---------------------------------------------------------------------------
       
  1290 //
       
  1291 CIpsSetUiItem& CIpsSetUiDialogCtrl::PortItem(
       
  1292     const TBool aIncoming,
       
  1293     const TBool aEditor )
       
  1294     {
       
  1295     FUNC_LOG;
       
  1296     if ( aIncoming )
       
  1297         {
       
  1298         return *GetItem( TUid::Uid( aEditor ?
       
  1299             EIpsSetUiIncomingPortBtnEditor : EIpsSetUiIncomingPort ) );
       
  1300         }
       
  1301     else
       
  1302         {
       
  1303         return *GetItem( TUid::Uid( aEditor ?
       
  1304             EIpsSetUiOutgoingPortBtnEditor : EIpsSetUiOutgoingPort ) );
       
  1305         }
       
  1306     }
       
  1307 
       
  1308 // ----------------------------------------------------------------------------
       
  1309 // From class CIpsSetUiBaseArray.
       
  1310 // CIpsSetUiBaseArray::IsHidden()
       
  1311 // ----------------------------------------------------------------------------
       
  1312 //
       
  1313 TInt CIpsSetUiDialogCtrl::IsHidden(
       
  1314     const CIpsSetUiItem& aItem ) const
       
  1315     {
       
  1316     FUNC_LOG;
       
  1317     // The setting can be protocol specific, so make required protocol checks
       
  1318     TBool onlyPop = aItem.iItemFlags.Flag32( KIpsSetUiFlagPop3Only );
       
  1319     TBool onlyImap = aItem.iItemFlags.Flag32( KIpsSetUiFlagImap4Only );
       
  1320 
       
  1321     if ( onlyPop || onlyImap )
       
  1322         {
       
  1323         TBool isImap = ( iData->Protocol() == KSenduiMtmImap4Uid );
       
  1324         return ( isImap == onlyPop || !isImap == onlyImap ) ?
       
  1325             KErrNotSupported : CIpsSetUiBaseArray::IsHidden( aItem );
       
  1326         }
       
  1327     else
       
  1328         {
       
  1329         return CIpsSetUiBaseArray::IsHidden( aItem );
       
  1330         }
       
  1331     }
       
  1332 
       
  1333 // ---------------------------------------------------------------------------
       
  1334 // CIpsSetUiDialogCtrl::GetIapChoiceL()
       
  1335 // ---------------------------------------------------------------------------
       
  1336 //
       
  1337 TImIAPChoice CIpsSetUiDialogCtrl::GetIapChoiceL( const TUid& aId ) const
       
  1338     {
       
  1339     FUNC_LOG;
       
  1340     CIpsSetUiItemAccessPoint* iapItem =
       
  1341         static_cast<CIpsSetUiItemAccessPoint*>( GetItem( aId ) );
       
  1342 
       
  1343     TImIAPChoice choice;
       
  1344     choice.iIAP = 0;
       
  1345     choice.iDialogPref = iapItem->iIapPref;
       
  1346     
       
  1347     //<cmail> ap utils are not used in cmail
       
  1348     // look into this later
       
  1349     //TRAPD(error, choice.iIAP = iapItem->ApUtils().IapIdFromWapIdL(
       
  1350     //    iapItem->GetWapIdL( iapItem->Value() ) ) );
       
  1351     TRAPD(error, choice.iIAP = iapItem->GetIapIdL() );
       
  1352     //<cmail>
       
  1353     
       
  1354 
       
  1355 
       
  1356     if ( error )
       
  1357         {
       
  1358         //force to always ask
       
  1359         choice.iIAP = 0;
       
  1360         choice.iDialogPref = ECommDbDialogPrefPrompt;
       
  1361         }
       
  1362 
       
  1363     return choice;
       
  1364     }
       
  1365 
       
  1366 // ---------------------------------------------------------------------------
       
  1367 // CIpsSetUiDialogCtrl::InitIapL()
       
  1368 // ---------------------------------------------------------------------------
       
  1369 //
       
  1370 void CIpsSetUiDialogCtrl::InitIapL( CIpsSetUiItem& aBaseItem )
       
  1371     {
       
  1372     FUNC_LOG;
       
  1373     CIpsSetUiItemAccessPoint* iapItem =
       
  1374         static_cast<CIpsSetUiItemAccessPoint*>( &aBaseItem );
       
  1375     iapItem->InitL( iData->Iap(
       
  1376         aBaseItem.iItemId.iUid == EIpsSetUiIncomingIap ) );
       
  1377     }
       
  1378 
       
  1379 // ---------------------------------------------------------------------------
       
  1380 // CIpsSetUiDialogCtrl::InitRetrieve()
       
  1381 // ---------------------------------------------------------------------------
       
  1382 //
       
  1383 void CIpsSetUiDialogCtrl::InitRetrieve(
       
  1384     CIpsSetUiItem& aBaseItem,
       
  1385     const TInt aValue )
       
  1386     {
       
  1387     FUNC_LOG;
       
  1388     TInt id = aBaseItem.iItemId.iUid;
       
  1389 
       
  1390     // Initialize radiobutton editor
       
  1391     if ( id == EIpsSetUiWhatRetrievePop3 ||
       
  1392          id == EIpsSetUiWhatRetrieveImap4Inbox ||
       
  1393          id == EIpsSetUiWhatRetrieveImap4Folders )
       
  1394         {
       
  1395         TInt button = ( aValue == KIpsSetMaxFetchHeadersDefaultLimit ) ?
       
  1396             EIpsSetUiDefault : EIpsSetUiCustom;
       
  1397         InitAnyItem( aBaseItem, button, KNullDesC );
       
  1398         HandleEmailsToRetrieve( aBaseItem );
       
  1399         }
       
  1400     // Initialize value editor
       
  1401     else if ( id == EIpsSetUiWhatRetrievePop3EditCustom ||
       
  1402         id == EIpsSetUiWhatRetrieveImap4InboxEditCustom ||
       
  1403         id == EIpsSetUiWhatRetrieveImap4FolderEditCustom )
       
  1404         {
       
  1405         InitAnyItem(
       
  1406             aBaseItem,
       
  1407             ( aValue == KIpsSetMaxFetchHeadersDefaultLimit ) 
       
  1408                 ? KIpsSetDefaultLimit : aValue,
       
  1409             KNullDesC );
       
  1410         }
       
  1411     }
       
  1412 
       
  1413 // ---------------------------------------------------------------------------
       
  1414 // CIpsSetUiDialogCtrl::InitHoursL()
       
  1415 // ---------------------------------------------------------------------------
       
  1416 //
       
  1417 void CIpsSetUiDialogCtrl::InitHoursL(
       
  1418     CIpsSetUiItem& aBaseItem,
       
  1419     const TInt64 aStartTime,
       
  1420     const TInt64 aStopTime )
       
  1421     {
       
  1422     FUNC_LOG;
       
  1423     // Initialize hour items
       
  1424     if ( aBaseItem.iItemId.iUid == EIpsSetUiWhenHours )
       
  1425         {
       
  1426         if ( aStartTime == aStopTime )
       
  1427             {
       
  1428             HBufC* plaa = StringLoader::LoadL(
       
  1429                 R_FSE_SETTINGS_MAIL_CONN_HOURS_ALL );
       
  1430             InitAnyItem( aBaseItem, CIpsSetData::EAllDay, *plaa );
       
  1431 
       
  1432             delete plaa;
       
  1433             plaa = NULL;
       
  1434             }
       
  1435         else
       
  1436             {
       
  1437             RBuf plaa;
       
  1438             plaa.CreateL( KIpsSetUiMaxPasswordLength );
       
  1439             FormatTimeStringL( plaa, aStartTime, aStopTime );
       
  1440             InitAnyItem( aBaseItem, CIpsSetData::ECustomHours, plaa );
       
  1441 
       
  1442             plaa.Close();
       
  1443             }
       
  1444         }
       
  1445     else if ( aBaseItem.iItemId.iUid == EIpsSetUiWhenHoursEditCustomizeFrom )
       
  1446         {
       
  1447         CIpsSetUiItem* timeItem = static_cast<CIpsSetUiItem*>( &aBaseItem );
       
  1448         timeItem->SetValue( aStartTime );
       
  1449         }
       
  1450     else // EIpsSetUiWhenHoursEditCustomizeTo
       
  1451         {
       
  1452         CIpsSetUiItem* timeItem = static_cast<CIpsSetUiItem*>( &aBaseItem );
       
  1453         timeItem->SetValue( aStopTime );
       
  1454         }
       
  1455     }
       
  1456 
       
  1457 // ----------------------------------------------------------------------------
       
  1458 // CIpsSetUiDialogCtrl::FormatTimeStringL()
       
  1459 // ----------------------------------------------------------------------------
       
  1460 //
       
  1461 void CIpsSetUiDialogCtrl::FormatTimeStringL(
       
  1462     TDes& aText,
       
  1463     const TInt64 aStartTime,
       
  1464     const TInt64 aStopTime ) const
       
  1465     {
       
  1466     FUNC_LOG;
       
  1467     // Define variables for time
       
  1468     TTime thisTime = aStartTime;
       
  1469     TTime nextTime = aStopTime;
       
  1470 
       
  1471     HBufC* format = StringLoader::LoadLC(
       
  1472         R_QTN_TIME_USUAL_WITH_ZERO );
       
  1473 
       
  1474     // Copy the time to text
       
  1475     RBuf timeText1;
       
  1476     RBuf timeText2;
       
  1477     timeText1.CreateL( KIpsSetUiMaxPasswordLength );
       
  1478     timeText2.CreateL( KIpsSetUiMaxPasswordLength );
       
  1479     thisTime.FormatL( timeText1, *format );
       
  1480     nextTime.FormatL( timeText2, *format );
       
  1481     CleanupStack::PopAndDestroy( format );
       
  1482     format = NULL;
       
  1483 
       
  1484     RBuf tempText1;
       
  1485     RBuf tempText2;
       
  1486     tempText1.CreateL( KIpsSetUiMaxPasswordLength );
       
  1487     tempText2.CreateL( KIpsSetUiMaxPasswordLength );
       
  1488 
       
  1489     // Load the template
       
  1490     StringLoader::Load(
       
  1491         tempText1, R_FSE_SETTINGS_MAIL_CONN_HOURS_BETWEEN2 );
       
  1492 
       
  1493     // Fetch the times
       
  1494     StringLoader::Format( tempText2, tempText1, 0, timeText1 );
       
  1495     StringLoader::Format( tempText1, tempText2, 1, timeText2 );
       
  1496 
       
  1497     // Finally copy the text to text
       
  1498     aText.Copy( tempText1 );
       
  1499 
       
  1500     timeText1.Close();
       
  1501     timeText2.Close();
       
  1502     tempText1.Close();
       
  1503     tempText2.Close();
       
  1504     }
       
  1505 
       
  1506 // ---------------------------------------------------------------------------
       
  1507 // CIpsSetUiDialogCtrl::InitLogin()
       
  1508 // ---------------------------------------------------------------------------
       
  1509 //
       
  1510 void CIpsSetUiDialogCtrl::InitLogin(
       
  1511     CIpsSetUiItem& aBaseItem,
       
  1512     const TDesC& aLogin )
       
  1513     {
       
  1514     FUNC_LOG;
       
  1515     InitAnyItem( aBaseItem, 0, aLogin );
       
  1516     CIpsSetUiItem& auth =
       
  1517         *GetItem( TUid::Uid( EIpsSetUiOutgoingUserAuthentication ) );
       
  1518     SetHideItem( auth.Value() != CIpsSetData::EOwnOutgoing, aBaseItem );
       
  1519     }
       
  1520 
       
  1521 // ---------------------------------------------------------------------------
       
  1522 // CIpsSetUiDialogCtrl::InitRoaming()
       
  1523 // ---------------------------------------------------------------------------
       
  1524 //
       
  1525 void CIpsSetUiDialogCtrl::InitRoaming(
       
  1526     CIpsSetUiItem& aBaseItem,
       
  1527     const TInt aValue )
       
  1528     {
       
  1529     FUNC_LOG;
       
  1530     InitAnyItem( aBaseItem, aValue, KNullDesC );
       
  1531     CIpsSetUiItem& interaval =
       
  1532         *GetItem( TUid::Uid( EIpsSetUiWhenSchedule ) );
       
  1533     SetHideItem( interaval.Value() == CIpsSetData::EManual, aBaseItem );
       
  1534     }
       
  1535 
       
  1536 //<cmail>
       
  1537 // ---------------------------------------------------------------------------
       
  1538 // CIpsSetUiDialogCtrl::InitSecuritySetting
       
  1539 // ---------------------------------------------------------------------------
       
  1540 //
       
  1541 void CIpsSetUiDialogCtrl::InitSecuritySetting(
       
  1542     CIpsSetUiItem& aBaseItem,
       
  1543     const TInt aValue )
       
  1544     {
       
  1545     InitAnyItem( aBaseItem, aValue, KNullDesC );    
       
  1546         
       
  1547     if ( iFlags & EIpsSetUiHideAccountData )
       
  1548         {
       
  1549         //editing security settings in hidden mode is prohibited
       
  1550         aBaseItem.iItemFlags.SetFlag32( KIpsSetUiFlagReadOnly );
       
  1551         }
       
  1552     else 
       
  1553         {
       
  1554         aBaseItem.iItemFlags.ClearFlag32( KIpsSetUiFlagReadOnly );
       
  1555         }
       
  1556     }
       
  1557     
       
  1558 //</cmail>
       
  1559 
       
  1560 // ---------------------------------------------------------------------------
       
  1561 // From class CIpsSetUiBaseDialog.
       
  1562 // CIpsSetUiDialogCtrl::SettingLaunchMultilineEditorL()
       
  1563 // ---------------------------------------------------------------------------
       
  1564 //
       
  1565 TIpsSetUiEventResult CIpsSetUiDialogCtrl::SettingLaunchMultilineEditorL(
       
  1566     CIpsSetUiItem& /* aBaseItem */,
       
  1567     TIpsSetUiUpdateMode& /* aUpdateMode */ )
       
  1568     {
       
  1569     FUNC_LOG;
       
  1570     CIpsSetUiItem* sub1 = GetItem( TUid::Uid(
       
  1571         EIpsSetUiWhenHoursEditCustomizeFrom ) );
       
  1572     CIpsSetUiItem* sub2 = GetItem( TUid::Uid(
       
  1573         EIpsSetUiWhenHoursEditCustomizeTo ) );
       
  1574 
       
  1575     // Take times
       
  1576     TTime thisTime = sub1->Value();
       
  1577     TTime nextTime = sub2->Value();
       
  1578 
       
  1579     // Set default values to start with, if setting has been 'always on' before
       
  1580     if( thisTime == nextTime )
       
  1581         {
       
  1582         thisTime = KIpsSetDataTimeDialogDefaultStart;
       
  1583         nextTime = KIpsSetDataTimeDialogDefaultStop;
       
  1584         }
       
  1585 
       
  1586     CAknMultiLineDataQueryDialog* multiLineDlg =
       
  1587         CAknMultiLineDataQueryDialog::NewL( thisTime, nextTime );
       
  1588 
       
  1589     // Execute the dialog
       
  1590     if ( multiLineDlg->ExecuteLD( R_IPS_SETUI_SETTINGS_DIALOG_HOURS_QUERY ) )
       
  1591         {
       
  1592         sub1->SetValue( thisTime.Int64() );
       
  1593         sub2->SetValue( nextTime.Int64() );
       
  1594 
       
  1595         CIpsSetUiItem& radio = *GetItem( TUid::Uid( EIpsSetUiWhenHours ) );
       
  1596         InitHoursL( radio, thisTime.Int64(), nextTime.Int64() );
       
  1597 
       
  1598         return EIpsSetUiPageEventResultApproved;
       
  1599         }
       
  1600     else
       
  1601         {
       
  1602         return EIpsSetUiPageEventResultCancel;
       
  1603         }
       
  1604     }
       
  1605 
       
  1606 // End of File
       
  1607