email/imum/Utils/Src/ImumInMailboxServicesImpl.cpp
changeset 0 72b543305e3a
equal deleted inserted replaced
-1:000000000000 0:72b543305e3a
       
     1 /*
       
     2 * Copyright (c) 2002 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:  ImumInMailboxServicesImpl.cpp
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include <e32base.h>
       
    21 #include <SendUiConsts.h>
       
    22 #include <muiuemailtools.h>
       
    23 #include <MuiuMsvProgressReporterOperation.h>
       
    24 #include <avkon.mbg>
       
    25 #include <featmgr.h>
       
    26 #include <MessagingDomainCRKeys.h>
       
    27 
       
    28 #include "ImumInternalApiImpl.h"
       
    29 #include "ImumInMailboxServicesImpl.h"
       
    30 #include "ImumInMailboxUtilitiesImpl.h"
       
    31 #include "ImumInSettingsDataImpl.h"
       
    32 #include "ImumPanic.h"
       
    33 #include "ImumDaErrorCodes.h"
       
    34 #include "ImumMboxDefaultData.h"
       
    35 #include "ImumUtilsLogging.h"
       
    36 #include "ImumMboxServiceDeletion.h"
       
    37 
       
    38 // TEMP
       
    39 #include "ImumInSettingsKeys.h"
       
    40 
       
    41 #include "IMSSettingsNoteUi.h"
       
    42 #include "EmailFeatureUtils.h"
       
    43 
       
    44 // EXTERNAL DATA STRUCTURES
       
    45 // EXTERNAL FUNCTION PROTOTYPES
       
    46 // CONSTANTS
       
    47 // MACROS
       
    48 // LOCAL CONSTANTS AND MACROS
       
    49 // MODULE DATA STRUCTURES
       
    50 // LOCAL FUNCTION PROTOTYPES
       
    51 // FORWARD DECLARATIONS
       
    52 
       
    53 // ============================ MEMBER FUNCTIONS ===============================
       
    54 
       
    55 
       
    56 
       
    57 // ================ CLASS CONSTRUCTION ================
       
    58 
       
    59 
       
    60 
       
    61 // ----------------------------------------------------------------------------
       
    62 // CImumInMailboxServicesImpl::CImumInMailboxServicesImpl()
       
    63 // ----------------------------------------------------------------------------
       
    64 //
       
    65 CImumInMailboxServicesImpl::CImumInMailboxServicesImpl( CImumInternalApiImpl& aInternalApi )
       
    66     :
       
    67     iInternalApi( aInternalApi ),
       
    68     iDefaultData( NULL )
       
    69     {
       
    70     IMUM_CONTEXT( CImumInMailboxServicesImpl::CImumInMailboxServicesImpl, 0, KLogInApi );
       
    71     IMUM_IN();
       
    72     IMUM_OUT();
       
    73     }
       
    74 
       
    75 // ----------------------------------------------------------------------------
       
    76 // CImumInMailboxServicesImpl::~CImumInMailboxServicesImpl()
       
    77 // ----------------------------------------------------------------------------
       
    78 //
       
    79 CImumInMailboxServicesImpl::~CImumInMailboxServicesImpl()
       
    80     {
       
    81     IMUM_CONTEXT( CImumInMailboxServicesImpl::~CImumInMailboxServicesImpl, 0, KLogInApi );
       
    82     IMUM_IN();
       
    83 
       
    84     delete iDefaultData;
       
    85     iDefaultData = NULL;
       
    86 
       
    87     IMUM_OUT();
       
    88     }
       
    89 
       
    90 // ----------------------------------------------------------------------------
       
    91 // CImumInMailboxServicesImpl::ConstructL()
       
    92 // ----------------------------------------------------------------------------
       
    93 //
       
    94 void CImumInMailboxServicesImpl::ConstructL()
       
    95     {
       
    96     IMUM_CONTEXT( CImumInMailboxServicesImpl::ConstructL, 0, KLogInApi );
       
    97     IMUM_IN();
       
    98     IMUM_OUT();
       
    99     }
       
   100 
       
   101 // ----------------------------------------------------------------------------
       
   102 // CImumInMailboxServicesImpl::NewL()
       
   103 // ----------------------------------------------------------------------------
       
   104 //
       
   105 CImumInMailboxServicesImpl* CImumInMailboxServicesImpl::NewL(
       
   106     CImumInternalApiImpl& aInternalApi )
       
   107     {
       
   108     IMUM_STATIC_CONTEXT( CImumInMailboxServicesImpl::NewL, 0, utils, KLogInApi );
       
   109     IMUM_IN();
       
   110 
       
   111     CImumInMailboxServicesImpl* self = NewLC( aInternalApi );
       
   112     CleanupStack::Pop( self );
       
   113 
       
   114     IMUM_OUT();
       
   115 
       
   116     return self;
       
   117     }
       
   118 
       
   119 // ----------------------------------------------------------------------------
       
   120 // CImumInMailboxServicesImpl::NewLC()
       
   121 // ----------------------------------------------------------------------------
       
   122 //
       
   123 CImumInMailboxServicesImpl* CImumInMailboxServicesImpl::NewLC(
       
   124     CImumInternalApiImpl& aInternalApi )
       
   125     {
       
   126     IMUM_STATIC_CONTEXT( CImumInMailboxServicesImpl::NewLC, 0, utils, KLogInApi );
       
   127     IMUM_IN();
       
   128 
       
   129     CImumInMailboxServicesImpl* self =
       
   130         new ( ELeave ) CImumInMailboxServicesImpl( aInternalApi );
       
   131     CleanupStack::PushL( self );
       
   132     self->ConstructL();
       
   133 
       
   134     IMUM_OUT();
       
   135 
       
   136     return self;
       
   137     }
       
   138 
       
   139 
       
   140 
       
   141 // ================ INTERFACE IMPLEMENTATION ================
       
   142 
       
   143 
       
   144 
       
   145 // ---------------------------------------------------------------------------
       
   146 // From class MImumInMailboxServices.
       
   147 // CImumInMailboxServicesImpl::CreateSettingsDataL()
       
   148 // ---------------------------------------------------------------------------
       
   149 //
       
   150 CImumInSettingsData* CImumInMailboxServicesImpl::CreateSettingsDataL(
       
   151     const TUid& aProtocol ) const
       
   152     {
       
   153     IMUM_CONTEXT( CImumInMailboxServicesImpl::CreateSettingsDataL, 0, KLogInApi );
       
   154     IMUM_IN();
       
   155 
       
   156     CImumInSettingsData* data = NULL;
       
   157 
       
   158     // Allow empty and valid mailbox mtm's
       
   159     if ( !aProtocol.iUid ||
       
   160          iInternalApi.MailboxUtilitiesL().IsMailMtm( aProtocol, ETrue ) )
       
   161         {
       
   162         CImumInMailboxServicesImpl* me =
       
   163             const_cast<CImumInMailboxServicesImpl*>( this );
       
   164         data = CImumInSettingsDataImpl::NewL(
       
   165             iInternalApi, aProtocol, me->DefaultDataObjectL() );
       
   166         }
       
   167     else
       
   168         {
       
   169         ServiceExceptionL( TImumDaErrorCode::EUnsupportedProtocol );
       
   170         }
       
   171 
       
   172     IMUM_OUT();
       
   173 
       
   174     return data;
       
   175     }
       
   176 
       
   177 // ---------------------------------------------------------------------------
       
   178 // From class MImumInMailboxServices.
       
   179 // CImumInMailboxServicesImpl::CreateSettingsDataL()
       
   180 // ---------------------------------------------------------------------------
       
   181 //
       
   182 CImumInSettingsData* CImumInMailboxServicesImpl::CreateSettingsDataL(
       
   183     const TUid& aProtocol,
       
   184     const TDesC& aEmailAddress,
       
   185     const TDesC& aIncomingServer,
       
   186     const TDesC& aOutgoingServer,
       
   187     const TInt aAccessPoint,
       
   188     const TDesC& aMailboxName ) const
       
   189     {
       
   190     IMUM_CONTEXT( CImumInMailboxServicesImpl::CreateSettingsDataL, 0, KLogInApi );
       
   191     IMUM_IN();
       
   192 
       
   193     CImumInSettingsData* data = CreateSettingsDataL( aProtocol );
       
   194     CleanupStack::PushL( data );
       
   195 
       
   196     data->SetAttr( TImumDaSettings::EKeyMailboxName, aMailboxName );
       
   197     data->SetAttr( TImumDaSettings::EKeyEmailAddress, aEmailAddress );
       
   198     data->GetSetL( 0 ).SetAttr(
       
   199         TImumDaSettings::EKeyServer, aIncomingServer );
       
   200     data->GetSetL( 0 ).SetAttr(
       
   201         TImumDaSettings::EKeyAccessPoint, aAccessPoint );
       
   202 
       
   203     data->GetSetL( 1 ).SetAttr(
       
   204         TImumDaSettings::EKeyServer, aOutgoingServer );
       
   205     data->GetSetL( 1 ).SetAttr(
       
   206         TImumDaSettings::EKeyAccessPoint, aAccessPoint );
       
   207 
       
   208     CleanupStack::Pop( data );
       
   209 
       
   210     IMUM_OUT();
       
   211 
       
   212     return data;
       
   213     }
       
   214 
       
   215 // ---------------------------------------------------------------------------
       
   216 // From class MImumInMailboxServices.
       
   217 // CImumInMailboxServicesImpl::LoadMailboxSettingsL()
       
   218 // ---------------------------------------------------------------------------
       
   219 //
       
   220 CImumInSettingsData* CImumInMailboxServicesImpl::LoadMailboxSettingsL(
       
   221     const TMsvId aMailboxId ) const
       
   222     {
       
   223     IMUM_CONTEXT( CImumInMailboxServicesImpl::LoadMailboxSettingsL, 0, KLogInApi );
       
   224     IMUM_IN();
       
   225 
       
   226     CImumInSettingsData* data = NULL;
       
   227 
       
   228     if ( iInternalApi.MailboxUtilitiesL().IsMailbox( aMailboxId ) )
       
   229         {
       
   230 		// Load settings only in case of IMAP, POP and SMTP
       
   231 		// otherwise a null pointer is returned
       
   232         TMsvEntry receiving = iInternalApi.MailboxUtilitiesL().GetMailboxEntryL(
       
   233         		aMailboxId, MImumInMailboxUtilities::ERequestReceiving );
       
   234 
       
   235         if( !( ( receiving.iMtm.iUid == KSenduiMtmSmtpUidValue )
       
   236         		|| ( receiving.iMtm.iUid == KSenduiMtmImap4UidValue )
       
   237         		|| ( receiving.iMtm.iUid == KSenduiMtmPop3UidValue ) ) )
       
   238         	{
       
   239         	return data;
       
   240         	}
       
   241 
       
   242         data = iInternalApi.SettingsManagerL().LoadEmailSettingsL(
       
   243             aMailboxId );
       
   244         }
       
   245     else
       
   246         {
       
   247         ServiceExceptionL( TImumDaErrorCode::EIdNotRecongnized );
       
   248         }
       
   249 
       
   250     IMUM_OUT();
       
   251 
       
   252     return data;
       
   253     }
       
   254 
       
   255 // ---------------------------------------------------------------------------
       
   256 // From class MImumInMailboxServices.
       
   257 // CImumInMailboxServicesImpl::SaveMailboxSettingsL()
       
   258 // ---------------------------------------------------------------------------
       
   259 //
       
   260 void CImumInMailboxServicesImpl::SaveMailboxSettingsL(
       
   261     CImumInSettingsData& aSettingsData ) const
       
   262     {
       
   263     IMUM_CONTEXT( CImumInMailboxServicesImpl::SaveMailboxSettingsL, 0, KLogInApi );
       
   264     IMUM_IN();
       
   265 
       
   266     ValidateSettingsL( aSettingsData );
       
   267 
       
   268     iInternalApi.SettingsManagerL().SaveEmailSettingsL( aSettingsData );
       
   269 
       
   270     IMUM_OUT();
       
   271     }
       
   272 
       
   273 // ---------------------------------------------------------------------------
       
   274 // From class MImumInMailboxServices.
       
   275 // CImumInMailboxServicesImpl::CreateMailboxL()
       
   276 // ---------------------------------------------------------------------------
       
   277 //
       
   278 TMsvId CImumInMailboxServicesImpl::CreateMailboxL(
       
   279     CImumInSettingsData& aSettingsData ) const
       
   280     {
       
   281     IMUM_CONTEXT( CImumInMailboxServicesImpl::CreateMailboxL, 0, KLogInApi );
       
   282     IMUM_IN();
       
   283 
       
   284     ValidateSettingsL( aSettingsData );
       
   285 
       
   286     IMUM_OUT();
       
   287 
       
   288     return iInternalApi.SettingsManagerL().CreateEmailAccountL( aSettingsData );
       
   289     }
       
   290 
       
   291 // ---------------------------------------------------------------------------
       
   292 // From class MImumInMailboxServices.
       
   293 // CImumInMailboxServicesImpl::RemoveMailboxL()
       
   294 // ---------------------------------------------------------------------------
       
   295 //
       
   296 CMsvOperation* CImumInMailboxServicesImpl::RemoveMailboxL( const TMsvId aMailboxId,
       
   297 														   TRequestStatus& aStatus) const
       
   298     {
       
   299     IMUM_CONTEXT( CImumInMailboxServicesImpl::RemoveMailboxL, 0, KLogInApi );
       
   300     IMUM_IN();
       
   301 
       
   302     CMsvOperation* op = NULL;
       
   303     CMsvSession& session = iInternalApi.MsvSession();
       
   304 
       
   305     //remove mailbox if email settings are not locked.
       
   306     if( !iInternalApi.IsEmailFeatureSupportedL(
       
   307         CImumInternalApi::EMailLockedSettings, R_QTN_SELEC_PROTECTED_SETTING ) )
       
   308         {
       
   309         if ( iInternalApi.MailboxUtilitiesL().IsMailbox( aMailboxId ) )
       
   310             {
       
   311             if ( iInternalApi.SettingsManagerL().CheckAccountDeletionConditionsL(
       
   312                 aMailboxId ) )
       
   313                 {
       
   314                 // The delete will take more than 1 second, set progress note
       
   315                 // visibility delay off.
       
   316 			    CMsvProgressReporterOperation* reporter =
       
   317 		            CMsvProgressReporterOperation::NewL( ETrue,
       
   318 		                ETrue, session, aStatus, EMbmAvkonQgn_note_erased );
       
   319 
       
   320                 // Once delete is started, a cancel option is not offered to the user.
       
   321                 // Set right softkey to empty for a duration CMsvProgressReporterOperation
       
   322                 // runs the progress dialog.
       
   323                 CEikButtonGroupContainer::Current()->SetCommandSetL(
       
   324                     R_AVKON_SOFTKEYS_EMPTY );
       
   325 
       
   326 			    CleanupStack::PushL( reporter );
       
   327 
       
   328 		        op = CImumMBoxServiceDeletion::NewL( session,
       
   329 		    	    reporter->RequestStatus(), *reporter, aMailboxId );
       
   330 
       
   331 			    CleanupStack::PushL( op );
       
   332 
       
   333 		        reporter->SetOperationL( op ); // Takes immediate ownership
       
   334 		        CleanupStack::Pop( op );
       
   335 		        CleanupStack::Pop( reporter );
       
   336         	    op = reporter;
       
   337                 }
       
   338             }
       
   339         else
       
   340             {
       
   341             ServiceExceptionL( TImumDaErrorCode::EIdNotRecongnized );
       
   342             }
       
   343         }
       
   344     IMUM_OUT();
       
   345     return op?op:CMsvCompletedOperation::NewL( session,
       
   346                                                KUidMsvLocalServiceMtm,
       
   347                                                KNullDesC8,
       
   348                                                KMsvLocalServiceIndexEntryId,
       
   349                                                aStatus );
       
   350     }
       
   351 
       
   352 // ---------------------------------------------------------------------------
       
   353 // From class MImumInMailboxServices.
       
   354 // CImumInMailboxServicesImpl::SetDefaultMailboxL()
       
   355 // ---------------------------------------------------------------------------
       
   356 //
       
   357 void CImumInMailboxServicesImpl::SetDefaultMailboxL(
       
   358     const TMsvId aMailboxId ) const
       
   359     {
       
   360     IMUM_CONTEXT( CImumInMailboxServicesImpl::SetDefaultMailboxL, 0, KLogInApi );
       
   361     IMUM1_IN( "aMailboxId = 0x%x", aMailboxId );
       
   362 
       
   363     // Make sure valid mailbox is set as default
       
   364     if ( iInternalApi.MailboxUtilitiesL().IsMailbox( aMailboxId ) )
       
   365         {
       
   366         IMUM0( 0, "Provided id belongs to mailbox, setting as default" );
       
   367         
       
   368         // When selectable email is in use, the default mailbox is stored also 
       
   369         // directly to CenRep.
       
   370         //
       
   371         FeatureManager::InitializeLibL();
       
   372         TBool selectableEmail = 
       
   373             FeatureManager::FeatureSupported( KFeatureIdSelectableEmail );
       
   374         FeatureManager::UnInitializeLib();
       
   375         if( selectableEmail )
       
   376             {
       
   377             CRepository* rep = 
       
   378                 CRepository::NewLC( KCRUidSelectableDefaultEmailSettings );
       
   379             User::LeaveIfError( 
       
   380                 rep->Set( KSelectableDefaultMailAccount, (TInt)aMailboxId ) );
       
   381             CleanupStack::PopAndDestroy( rep );
       
   382             }
       
   383         
       
   384         MuiuEmailTools::SetDefaultSendingMailboxL( aMailboxId );
       
   385         }
       
   386     // No valid mailboxes found, so find the first valid and set it as default
       
   387     else
       
   388         {
       
   389         IMUM0( 0, "Provided ID doesn't belong to mailbox, find first valid" );
       
   390         MImumInHealthServices::RMailboxIdArray mailboxes;
       
   391         iInternalApi.HealthServicesL().GetMailboxList(
       
   392             mailboxes,
       
   393             MImumInHealthServices::EFlagGetHealthy |
       
   394             MImumInHealthServices::EFlagIncludeSmtp );
       
   395 
       
   396         if ( mailboxes.Count() )
       
   397             {
       
   398             IMUM1( 0, "WARNING: Mailboxes in system without default. New default: 0x%x", mailboxes[0] );
       
   399             MuiuEmailTools::SetDefaultSendingMailboxL( mailboxes[0] );
       
   400             }
       
   401 
       
   402         mailboxes.Close();
       
   403         }
       
   404 
       
   405     IMUM_OUT();
       
   406     }
       
   407 
       
   408 // ---------------------------------------------------------------------------
       
   409 // From class MImumInMailboxServices.
       
   410 // CImumInMailboxServicesImpl::SetLastUpdateInfoL()
       
   411 // ---------------------------------------------------------------------------
       
   412 //
       
   413 void CImumInMailboxServicesImpl::SetLastUpdateInfoL( TMsvId aMailboxId,
       
   414     TBool aSuccess, const TTime& aTime ) const
       
   415     {
       
   416     // This function is performance optimization as settings are not converted
       
   417     // to CImumInSettingsData format
       
   418     IMUM_CONTEXT( CImumInMailboxServicesImpl::SetLastUpdateInfoL, 0, KLogInApi );
       
   419     IMUM_IN();
       
   420 
       
   421     // Get account extension ID
       
   422     TMsvEntry mailbox =  iInternalApi.MailboxUtilitiesL().GetMailboxEntryL(
       
   423         aMailboxId, MImumInMailboxUtilities::ERequestReceiving );
       
   424 
       
   425     iInternalApi.SettingsStorerL().SetLastUpdateInfoL( mailbox.iMtmData2,
       
   426         mailbox.iMtm, aSuccess, aTime );
       
   427 
       
   428     IMUM_OUT();
       
   429     }
       
   430 
       
   431 // ================ INTERNAL FUNCTIONALITY ================
       
   432 
       
   433 // ---------------------------------------------------------------------------
       
   434 // CImumInMailboxServicesImpl::FillCompulsorySettingsL()
       
   435 // ---------------------------------------------------------------------------
       
   436 //
       
   437 void CImumInMailboxServicesImpl::FillCompulsorySettingsL(
       
   438     CImumInSettingsData& aSettingsData,
       
   439     const TUid& aProtocol,
       
   440     const TDesC& aEmailAddress,
       
   441     const TDesC& aIncomingServer,
       
   442     const TDesC& aOutgoingServer,
       
   443     const TInt aAccessPoint,
       
   444     const TDesC& aMailboxName ) const
       
   445     {
       
   446     IMUM_CONTEXT( CImumInMailboxServicesImpl::FillCompulsorySettingsL, 0, KLogInApi );
       
   447     IMUM_IN();
       
   448 
       
   449     aSettingsData.SetAttr( TImumDaSettings::EKeyMailboxName, aMailboxName );
       
   450     aSettingsData.SetAttr( TImumDaSettings::EKeyEmailAddress, aEmailAddress );
       
   451 
       
   452     TRAPD( error, aSettingsData.GetSetL( 0 ).SetAttr(
       
   453         TImumDaSettings::EKeyProtocol, aProtocol.iUid ) );
       
   454     if ( error == TImumDaErrorCode::EConnectionIndexOverflow )
       
   455         {
       
   456         aSettingsData.AddSetL( aProtocol );
       
   457         }
       
   458     else
       
   459         {
       
   460         ServiceExceptionL( error );
       
   461         }
       
   462 
       
   463     aSettingsData.GetSetL( 0 ).SetAttr(
       
   464         TImumDaSettings::EKeyServer, aIncomingServer );
       
   465     aSettingsData.GetSetL( 0 ).SetAttr(
       
   466         TImumDaSettings::EKeyAccessPoint, aAccessPoint );
       
   467 
       
   468     TRAP( error, aSettingsData.GetSetL( 1 ).SetAttr(
       
   469         TImumDaSettings::EKeyProtocol,
       
   470         TImumDaSettings::EValueProtocolSmtp ) );
       
   471     if ( error == TImumDaErrorCode::EConnectionIndexOverflow )
       
   472         {
       
   473         aSettingsData.AddSetL( KSenduiMtmSmtpUid );
       
   474         }
       
   475     else
       
   476         {
       
   477         ServiceExceptionL( error );
       
   478         }
       
   479 
       
   480     aSettingsData.GetSetL( 1 ).SetAttr(
       
   481         TImumDaSettings::EKeyServer, aOutgoingServer );
       
   482     aSettingsData.GetSetL( 1 ).SetAttr(
       
   483         TImumDaSettings::EKeyAccessPoint, aAccessPoint );
       
   484 
       
   485     IMUM_OUT();
       
   486     }
       
   487 
       
   488 
       
   489 // ---------------------------------------------------------------------------
       
   490 // CImumInMailboxServicesImpl::ValidateSettingsL()
       
   491 // ---------------------------------------------------------------------------
       
   492 //
       
   493 void CImumInMailboxServicesImpl::ValidateSettingsL(
       
   494     CImumInSettingsData& aSettingsData ) const
       
   495     {
       
   496     IMUM_CONTEXT( CImumInMailboxServicesImpl::ValidateSettingsL, 0, KLogInApi );
       
   497     IMUM_IN();
       
   498 
       
   499     TInt result = aSettingsData.Validate();
       
   500 
       
   501     if ( result )
       
   502         {
       
   503         ServiceExceptionL( result );
       
   504         }
       
   505 
       
   506     IMUM_OUT();
       
   507     }
       
   508 
       
   509 // ---------------------------------------------------------------------------
       
   510 // CImumInMailboxServicesImpl::ServiceExceptionL()
       
   511 // ---------------------------------------------------------------------------
       
   512 //
       
   513 void CImumInMailboxServicesImpl::ServiceExceptionL(
       
   514     const TInt aErrorCode ) const
       
   515     {
       
   516     IMUM_CONTEXT( CImumInMailboxServicesImpl::ServiceExceptionL, 0, KLogInApi );
       
   517     IMUM_IN();
       
   518 
       
   519     IMUM1( 0, "Exception occurred. Error %d", aErrorCode );
       
   520 
       
   521     __ASSERT_DEBUG( EFalse,
       
   522         User::Panic( KImumInMailboxServices, aErrorCode ) );
       
   523 
       
   524     IMUM_OUT();
       
   525     User::Leave( aErrorCode );
       
   526     }
       
   527 
       
   528 // ---------------------------------------------------------------------------
       
   529 // CImumInMailboxServicesImpl::DefaultDataObjectL()
       
   530 // ---------------------------------------------------------------------------
       
   531 //
       
   532 const CImumMboxDefaultData* CImumInMailboxServicesImpl::DefaultDataObjectL()
       
   533     {
       
   534     // Make sure the object exist
       
   535     if ( !iDefaultData )
       
   536         {
       
   537         iDefaultData = CImumMboxDefaultData::NewL( iInternalApi );
       
   538         }
       
   539 
       
   540     return iDefaultData;
       
   541     }
       
   542 
       
   543 // End of File