email/imum/Utils/Src/ImumMboxData.cpp
branchRCL_3
changeset 27 7fdbb852d323
parent 0 72b543305e3a
equal deleted inserted replaced
26:ebe688cedc25 27:7fdbb852d323
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *       Class implementation file
       
    16 *
       
    17 */
       
    18 
       
    19 
       
    20 // INCLUDES
       
    21 #include <smtpset.h>                // CImSmtpSettings
       
    22 #include <pop3set.h>                // CImPop3Settings
       
    23 #include <imapset.h>                // CImImap4Settings
       
    24 #include <iapprefs.h>               // CImIAPPreferences
       
    25 #include <txtrich.h>
       
    26 
       
    27 #include "ImumMboxData.h"
       
    28 #include "ImumMboxDataExtension.h"
       
    29 #include "ImumUtilsLogging.h"
       
    30 
       
    31 // EXTERNAL DATA STRUCTURES
       
    32 // EXTERNAL FUNCTION PROTOTYPES
       
    33 // CONSTANTS
       
    34 const TUint32 KServiceIdNoServiceSpecified = 0U;
       
    35 _LIT( KImasPanicString, "IMAS" );
       
    36 
       
    37 // MACROS
       
    38 // LOCAL CONSTANTS AND MACROS
       
    39 // MODULE DATA STRUCTURES
       
    40 // LOCAL FUNCTION PROTOTYPES
       
    41 // FORWARD DECLARATIONS
       
    42 
       
    43 // ============================ MEMBER FUNCTIONS ===============================
       
    44 
       
    45 // ----------------------------------------------------------------------------
       
    46 // ImasPanic()
       
    47 // ----------------------------------------------------------------------------
       
    48 GLDEF_C void ImasPanic(TImumImasPanic aCode)
       
    49     {
       
    50     User::Panic( KImasPanicString, aCode );
       
    51     }
       
    52 
       
    53 // ----------------------------------------------------------------------------
       
    54 // CMsvImailSignature::CMsvImailSignature()
       
    55 // ----------------------------------------------------------------------------
       
    56 CMsvImailSignature::CMsvImailSignature()
       
    57     {
       
    58     IMUM_CONTEXT( CMsvImailSignature::CMsvImailSignature, 0, KLogData );
       
    59     
       
    60     }
       
    61 
       
    62 // ----------------------------------------------------------------------------
       
    63 // CMsvImailSignature::CMsvImailSignature()
       
    64 // ----------------------------------------------------------------------------
       
    65 CMsvImailSignature::CMsvImailSignature(
       
    66     CRichText*        aRichText,
       
    67     CParaFormatLayer* aParaFormat,
       
    68     CCharFormatLayer* aCharFormat )
       
    69     :
       
    70     iRichText( aRichText ),
       
    71     iParaFormatLayer( aParaFormat ),
       
    72     iCharFormatLayer( aCharFormat )
       
    73     {
       
    74     IMUM_CONTEXT( CMsvImailSignature::CMsvImailSignature, 0, KLogData );
       
    75     
       
    76     }
       
    77 
       
    78 // ----------------------------------------------------------------------------
       
    79 // CMsvImailSignature::~CMsvImailSignature()
       
    80 // ----------------------------------------------------------------------------
       
    81 CMsvImailSignature::~CMsvImailSignature()
       
    82     {
       
    83     IMUM_CONTEXT( CMsvImailSignature::~CMsvImailSignature, 0, KLogData );
       
    84     
       
    85     delete iRichText;
       
    86     delete iParaFormatLayer;
       
    87     delete iCharFormatLayer;
       
    88     }
       
    89 
       
    90 // ----------------------------------------------------------------------------
       
    91 // CMsvImailSignature::CopyL()
       
    92 // ----------------------------------------------------------------------------
       
    93 void CMsvImailSignature::CopyL( const CMsvImailSignature& aSignature )
       
    94     {
       
    95     IMUM_CONTEXT( CMsvImailSignature::CopyL, 0, KLogData );
       
    96     
       
    97     delete iRichText;
       
    98     iRichText = NULL;
       
    99 
       
   100     delete iParaFormatLayer;
       
   101     iParaFormatLayer = NULL;
       
   102 
       
   103     delete iCharFormatLayer;
       
   104     iCharFormatLayer = NULL;
       
   105 
       
   106     if ( aSignature.iParaFormatLayer )
       
   107         {
       
   108         iParaFormatLayer = aSignature.iParaFormatLayer->CloneL();
       
   109         }
       
   110     if ( aSignature.iCharFormatLayer )
       
   111         {
       
   112         iCharFormatLayer = aSignature.iCharFormatLayer->CloneL();
       
   113         }
       
   114     if ( aSignature.iRichText )
       
   115         {
       
   116         __ASSERT_DEBUG(
       
   117             iParaFormatLayer && iCharFormatLayer,
       
   118             ImasPanic( EImasPanicInvalidSignatureSource ) );
       
   119         iRichText = CRichText::NewL( iParaFormatLayer, iCharFormatLayer );
       
   120         iRichText->AppendTakingSolePictureOwnershipL( *aSignature.iRichText );
       
   121         }
       
   122     }
       
   123 
       
   124 // ----------------------------------------------------------------------------
       
   125 // CMsvImailSignature::CreateEmptyRichTextL()
       
   126 // ----------------------------------------------------------------------------
       
   127 void CMsvImailSignature::CreateEmptyRichTextL()
       
   128     {
       
   129     IMUM_CONTEXT( CMsvImailSignature::CreateEmptyRichTextL, 0, KLogData );
       
   130     
       
   131     delete iRichText;
       
   132     iRichText = NULL;
       
   133 
       
   134     delete iParaFormatLayer;
       
   135     iParaFormatLayer = NULL;
       
   136 
       
   137     delete iCharFormatLayer;
       
   138     iCharFormatLayer = NULL;
       
   139 
       
   140     iParaFormatLayer = CParaFormatLayer::NewL();
       
   141     iCharFormatLayer = CCharFormatLayer::NewL();
       
   142     iRichText = CRichText::NewL( iParaFormatLayer, iCharFormatLayer );
       
   143     }
       
   144 
       
   145 ///////////////////////////////////////////////////////////////////////////////
       
   146 // CImumMboxData
       
   147 ///////////////////////////////////////////////////////////////////////////////
       
   148 
       
   149 // ----------------------------------------------------------------------------
       
   150 // CImumMboxData::NewL()
       
   151 // ----------------------------------------------------------------------------
       
   152 //
       
   153 CImumMboxData* CImumMboxData::NewL()
       
   154     {
       
   155     IMUM_STATIC_CONTEXT( CImumMboxData::NewL, 0, utils, KLogData );
       
   156     
       
   157     CImumMboxData* self = NewLC();
       
   158     CleanupStack::Pop( self );
       
   159 
       
   160     return self;
       
   161     }
       
   162 
       
   163 // ----------------------------------------------------------------------------
       
   164 // CImumMboxData::NewLC()
       
   165 // ----------------------------------------------------------------------------
       
   166 //
       
   167 CImumMboxData* CImumMboxData::NewLC()
       
   168     {
       
   169     IMUM_STATIC_CONTEXT( CImumMboxData::NewLC, 0, utils, KLogData );
       
   170     
       
   171     CImumMboxData* self =
       
   172        new ( ELeave ) CImumMboxData();
       
   173     CleanupStack::PushL( self );
       
   174     self->ConstructL();
       
   175 
       
   176     return self;
       
   177     }
       
   178 
       
   179 // ----------------------------------------------------------------------------
       
   180 // CImumMboxData::NewL()
       
   181 // ----------------------------------------------------------------------------
       
   182 //
       
   183 CImumMboxData* CImumMboxData::NewL(
       
   184     const TDesC& aName,
       
   185     CImSmtpSettings* aSmtpSettings,
       
   186     CImPop3Settings* aPop3Settings,
       
   187     CImumMboxDataExtension* aExtendedSettings )
       
   188     {
       
   189     IMUM_STATIC_CONTEXT( CImumMboxData::NewL, 0, utils, KLogData );
       
   190     
       
   191     CImumMboxData* self = NewLC(
       
   192         aName, aSmtpSettings, aPop3Settings, aExtendedSettings );
       
   193     CleanupStack::Pop( self );
       
   194 
       
   195     return self;
       
   196     }
       
   197 
       
   198 // ----------------------------------------------------------------------------
       
   199 // CImumMboxData::NewLC()
       
   200 // ----------------------------------------------------------------------------
       
   201 //
       
   202 CImumMboxData* CImumMboxData::NewLC(
       
   203     const TDesC& aName,
       
   204     CImSmtpSettings* aSmtpSettings,
       
   205     CImPop3Settings* aPop3Settings,
       
   206     CImumMboxDataExtension* aExtendedSettings )
       
   207     {
       
   208     IMUM_STATIC_CONTEXT( CImumMboxData::NewLC, 0, utils, KLogData );
       
   209     
       
   210     CImumMboxData* self =
       
   211         new ( ELeave ) CImumMboxData(
       
   212             aName, aSmtpSettings, aPop3Settings, NULL, aExtendedSettings );
       
   213     CleanupStack::PushL( self );
       
   214     self->ConstructL();
       
   215 
       
   216     return self;
       
   217     }
       
   218 
       
   219 // ----------------------------------------------------------------------------
       
   220 // CImumMboxData::NewL()
       
   221 // ----------------------------------------------------------------------------
       
   222 //
       
   223 CImumMboxData* CImumMboxData::NewL(
       
   224     const TDesC& aName,
       
   225     CImSmtpSettings* aSmtpSettings,
       
   226     CImImap4Settings* aImap4Settings,
       
   227     CImumMboxDataExtension* aExtendedSettings )
       
   228     {
       
   229     IMUM_STATIC_CONTEXT( CImumMboxData::NewL, 0, utils, KLogData );
       
   230     
       
   231     CImumMboxData* self = NewLC(
       
   232         aName, aSmtpSettings, aImap4Settings, aExtendedSettings );
       
   233     CleanupStack::Pop( self );
       
   234 
       
   235     return self;
       
   236     }
       
   237 
       
   238 // ----------------------------------------------------------------------------
       
   239 // CImumMboxData::NewLC()
       
   240 // ----------------------------------------------------------------------------
       
   241 //
       
   242 CImumMboxData* CImumMboxData::NewLC(
       
   243     const TDesC& aName,
       
   244     CImSmtpSettings* aSmtpSettings,
       
   245     CImImap4Settings* aImap4Settings,
       
   246     CImumMboxDataExtension* aExtendedSettings )
       
   247     {
       
   248     IMUM_STATIC_CONTEXT( CImumMboxData::NewLC, 0, utils, KLogData );
       
   249     
       
   250     CImumMboxData* self =
       
   251         new ( ELeave ) CImumMboxData(
       
   252             aName, aSmtpSettings, NULL, aImap4Settings, aExtendedSettings );
       
   253     CleanupStack::PushL( self );
       
   254     self->ConstructL();
       
   255 
       
   256     return self;
       
   257     }
       
   258 
       
   259 // ----------------------------------------------------------------------------
       
   260 // CImumMboxData::ConstructL()
       
   261 // ----------------------------------------------------------------------------
       
   262 //
       
   263 void CImumMboxData::ConstructL()
       
   264     {
       
   265     IMUM_CONTEXT( CImumMboxData::ConstructL, 0, KLogData );
       
   266     
       
   267     InitializeL();
       
   268     }
       
   269 
       
   270 // ----------------------------------------------------------------------------
       
   271 // CImumMboxData::InitializeL()
       
   272 // ----------------------------------------------------------------------------
       
   273 //
       
   274 void CImumMboxData::InitializeL()
       
   275     {
       
   276     IMUM_CONTEXT( CImumMboxData::InitializeL, 0, KLogData );
       
   277     
       
   278         // Create signature
       
   279     if ( !iSignature )
       
   280         {
       
   281         iSignature = new ( ELeave ) CMsvImailSignature;
       
   282         iSignature->CreateEmptyRichTextL();
       
   283         }
       
   284 
       
   285     // Create the base settings
       
   286     if ( !iSmtpSettings )
       
   287         {
       
   288         iSmtpSettings = new ( ELeave ) CImSmtpSettings;
       
   289         }
       
   290 
       
   291     if ( !iPop3Settings )
       
   292         {
       
   293         iPop3Settings = new ( ELeave ) CImPop3Settings;
       
   294         }
       
   295 
       
   296     if ( !iImap4Settings )
       
   297         {
       
   298         iImap4Settings = new ( ELeave ) CImImap4Settings;
       
   299         }
       
   300 
       
   301     // Create IAP preferences separately to both
       
   302     // incoming and outgoing protocols
       
   303     if ( !iIncomingIapPref )
       
   304         {
       
   305         iIncomingIapPref = CImIAPPreferences::NewLC();
       
   306         CleanupStack::Pop( iIncomingIapPref );
       
   307         }
       
   308 
       
   309     if ( !iOutgoingIapPref )
       
   310         {
       
   311         iOutgoingIapPref = CImIAPPreferences::NewLC();
       
   312         CleanupStack::Pop( iOutgoingIapPref );
       
   313         }
       
   314 
       
   315     if ( !iExtendedSettings  )
       
   316         {
       
   317         iExtendedSettings = CImumMboxDataExtension::NewL();
       
   318         }
       
   319     }
       
   320 
       
   321 // ----------------------------------------------------------------------------
       
   322 // CImumMboxData::CImumMboxData()
       
   323 // ----------------------------------------------------------------------------
       
   324 CImumMboxData::CImumMboxData()
       
   325     :
       
   326     iIsImap4( EFalse ),
       
   327     iSignature( NULL ),
       
   328     iMailboxId( KMsvNullIndexEntryId ),
       
   329     iDefaultAccountId( KMsvNullIndexEntryIdValue ),
       
   330     iImap4Settings( NULL ),
       
   331     iPop3Settings( NULL ),
       
   332     iSmtpSettings( NULL ),
       
   333     iExtendedSettings( NULL ),
       
   334     iIncomingIap( KServiceIdNoServiceSpecified ),
       
   335     iIncomingDialogPref( ECommDbDialogPrefDoNotPrompt ),
       
   336     iIncomingIapPref( NULL ),
       
   337     iOutgoingIap( KServiceIdNoServiceSpecified ),
       
   338     iOutgoingDialogPref( ECommDbDialogPrefDoNotPrompt ),
       
   339     iOutgoingIapPref( NULL )
       
   340     {
       
   341     IMUM_CONTEXT( CImumMboxData::CImumMboxData, 0, KLogData );
       
   342     
       
   343     }
       
   344 
       
   345 // ----------------------------------------------------------------------------
       
   346 // CImumMboxData::CImumMboxData()
       
   347 // ----------------------------------------------------------------------------
       
   348 CImumMboxData::CImumMboxData(
       
   349     const TDesC& aName,
       
   350     CImSmtpSettings* aSmtpSettings,
       
   351     CImPop3Settings* aPop3Settings,
       
   352     CImImap4Settings* aImap4Settings,
       
   353     CImumMboxDataExtension* aExtendedSettings )
       
   354     :
       
   355     iIsImap4( EFalse ),
       
   356     iSignature( NULL ),
       
   357     iMailboxId( KMsvNullIndexEntryId ),
       
   358     iDefaultAccountId( KMsvNullIndexEntryIdValue ),
       
   359     iImap4Settings( aImap4Settings ),
       
   360     iPop3Settings( aPop3Settings ),
       
   361     iSmtpSettings( aSmtpSettings ),
       
   362     iExtendedSettings( aExtendedSettings ),
       
   363     iIncomingIap ( KServiceIdNoServiceSpecified ),
       
   364     iIncomingIapPref( NULL ),
       
   365     iOutgoingIap ( KServiceIdNoServiceSpecified ),
       
   366     iOutgoingIapPref( NULL )
       
   367     {
       
   368     IMUM_CONTEXT( CImumMboxData::CImumMboxData, 0, KLogData );
       
   369     
       
   370     iName.Copy( aName );
       
   371     iImap4AccountId.iImapAccountId = KErrNotFound;
       
   372     iPop3AccountId.iPopAccountId = KErrNotFound;
       
   373     }
       
   374 
       
   375 // ----------------------------------------------------------------------------
       
   376 // CImumMboxData::~CImumMboxData()
       
   377 // ----------------------------------------------------------------------------
       
   378 CImumMboxData::~CImumMboxData()
       
   379     {
       
   380     IMUM_CONTEXT( CImumMboxData::~CImumMboxData, 0, KLogData );
       
   381     
       
   382     delete iSignature;
       
   383     iSignature = NULL;
       
   384     delete iSmtpSettings;
       
   385     iSmtpSettings = NULL;
       
   386     delete iPop3Settings;
       
   387     iPop3Settings = NULL;
       
   388     delete iImap4Settings;
       
   389     iImap4Settings = NULL;
       
   390     delete iIncomingIapPref;
       
   391     iIncomingIapPref = NULL;
       
   392     delete iOutgoingIapPref;
       
   393     iOutgoingIapPref = NULL;
       
   394     delete iExtendedSettings;
       
   395     iExtendedSettings = NULL;
       
   396     }
       
   397 
       
   398 // ----------------------------------------------------------------------------
       
   399 // CImumMboxData::CopyL()
       
   400 // ----------------------------------------------------------------------------
       
   401 void CImumMboxData::CopyL(
       
   402     const CImumMboxData& aSettings )
       
   403     {
       
   404     IMUM_CONTEXT( CImumMboxData::CopyL, 0, KLogData );
       
   405     
       
   406     iName.Copy( aSettings.iName );
       
   407     iIsImap4 = aSettings.iIsImap4;
       
   408     iMailboxId = aSettings.iMailboxId;
       
   409     iDefaultAccountId = aSettings.iDefaultAccountId;
       
   410 
       
   411     // Remove any old settings
       
   412     delete iSignature;
       
   413     iSignature = NULL;
       
   414     delete iSmtpSettings;
       
   415     iSmtpSettings = NULL;
       
   416     delete iPop3Settings;
       
   417     iPop3Settings = NULL;
       
   418     delete iImap4Settings;
       
   419     iImap4Settings = NULL;
       
   420     delete iIncomingIapPref;
       
   421     iIncomingIapPref = NULL;
       
   422     delete iOutgoingIapPref;
       
   423     iOutgoingIapPref = NULL;
       
   424     delete iExtendedSettings;
       
   425     iExtendedSettings = NULL;
       
   426 
       
   427     // Mailbox settings
       
   428     iSmtpSettings = new ( ELeave ) CImSmtpSettings;
       
   429     iSmtpSettings->CopyL( *aSettings.iSmtpSettings );
       
   430 
       
   431     iPop3Settings = new ( ELeave ) CImPop3Settings;
       
   432     iPop3Settings->CopyL( *aSettings.iPop3Settings );
       
   433 
       
   434     iImap4Settings = new ( ELeave ) CImImap4Settings;
       
   435     iImap4Settings->CopyL( *aSettings.iImap4Settings );
       
   436 
       
   437     iExtendedSettings = CImumMboxDataExtension::NewL();
       
   438     iExtendedSettings->CopyL( *aSettings.iExtendedSettings );
       
   439 
       
   440     iIncomingIapPref = CImIAPPreferences::NewLC();
       
   441     CleanupStack::Pop( iIncomingIapPref );
       
   442 
       
   443     iOutgoingIapPref = CImIAPPreferences::NewLC();
       
   444     CleanupStack::Pop( iOutgoingIapPref );
       
   445 
       
   446     iSignature = new ( ELeave ) CMsvImailSignature;
       
   447     iSignature->CopyL( *aSettings.iSignature );
       
   448 
       
   449     // Incoming IAP preferences
       
   450     iIncomingIap = aSettings.iIncomingIap;
       
   451 
       
   452     TInt count = aSettings.iIncomingIapPref->NumberOfIAPs();
       
   453     for ( TInt loop = 0; loop < count; loop++ )
       
   454         {
       
   455         iIncomingIapPref->AddIAPL(
       
   456             aSettings.iIncomingIapPref->IAPPreference( loop ) );
       
   457         }
       
   458 
       
   459     // Outgoing IAP preferences
       
   460     iOutgoingIap = aSettings.iOutgoingIap;
       
   461 
       
   462     count = aSettings.iOutgoingIapPref->NumberOfIAPs();
       
   463     for ( TInt loop = 0; loop < count; loop++ )
       
   464         {
       
   465         iOutgoingIapPref->AddIAPL(
       
   466             aSettings.iOutgoingIapPref->IAPPreference( loop ) );
       
   467         }
       
   468     }
       
   469 
       
   470 // ----------------------------------------------------------------------------
       
   471 // CImumMboxData::RelatedMtmSettings()
       
   472 // ----------------------------------------------------------------------------
       
   473 CImBaseEmailSettings& CImumMboxData::RelatedMtmSettings() const
       
   474     {
       
   475     IMUM_CONTEXT( CImumMboxData::RelatedMtmSettings, 0, KLogData );
       
   476     
       
   477     CImBaseEmailSettings* settings = NULL;
       
   478 
       
   479     if( iIsImap4 )
       
   480         {
       
   481         settings = iImap4Settings;
       
   482         }
       
   483     else
       
   484         {
       
   485         settings = iPop3Settings;
       
   486         }
       
   487 
       
   488     __ASSERT_DEBUG( settings, ImasPanic( EImasPanicNoSettings ) );
       
   489     return *settings;
       
   490     }
       
   491 
       
   492 // ----------------------------------------------------------------------------
       
   493 // CImumMboxData::Clean()
       
   494 // ----------------------------------------------------------------------------
       
   495 //
       
   496 void CImumMboxData::Clean()
       
   497     {
       
   498     IMUM_CONTEXT( CImumMboxData::Clean, 0, KLogData );
       
   499     
       
   500     delete iSignature;
       
   501     iSignature = NULL;
       
   502     delete iSmtpSettings;
       
   503     iSmtpSettings = NULL;
       
   504     delete iPop3Settings;
       
   505     iPop3Settings = NULL;
       
   506     delete iImap4Settings;
       
   507     iImap4Settings = NULL;
       
   508     delete iIncomingIapPref;
       
   509     iIncomingIapPref = NULL;
       
   510     delete iOutgoingIapPref;
       
   511     iOutgoingIapPref = NULL;
       
   512     delete iExtendedSettings;
       
   513     iExtendedSettings = NULL;
       
   514     
       
   515     iIsImap4 = EFalse;
       
   516     iName.Zero();
       
   517     iMailboxId = KMsvNullIndexEntryId;
       
   518     }
       
   519 
       
   520 // ----------------------------------------------------------------------------
       
   521 // CImumMboxData::IsOk()
       
   522 // ----------------------------------------------------------------------------
       
   523 //
       
   524 TBool CImumMboxData::IsOk() const
       
   525     {
       
   526     IMUM_CONTEXT( CImumMboxData::IsOk, 0, KLogData );
       
   527     
       
   528     if ( iSignature && iSmtpSettings && iIncomingIapPref &&
       
   529          iOutgoingIapPref && iExtendedSettings &&
       
   530          ( iPop3Settings || iImap4Settings ) )
       
   531         {
       
   532         return ETrue;
       
   533         }
       
   534 
       
   535     return EFalse;
       
   536     }
       
   537 
       
   538 // End of File