diff -r 000000000000 -r 3ce708148e4d omacp/omacpadapters/EmailAdapter/src/CWPEmailItem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omacp/omacpadapters/EmailAdapter/src/CWPEmailItem.cpp Thu Dec 17 08:40:12 2009 +0200 @@ -0,0 +1,241 @@ +/* +* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Email settin data object +* +*/ + + + +// INCLUDE FILES +#include "CWPEmailItem.h" +#include "CWPCharacteristic.h" +#include "CWPParameter.h" +#include "EmailAdapter.pan" +#include "WPEmail.hrh" +#include "Cwplog.h" +#include "../../../group/omacplogger.h" + + +// CONSTANTS +const TInt KArrayGranularity = 10; + + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWPEmailItem::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CWPEmailItem* CWPEmailItem::NewL() + { + CWPEmailItem* self = CWPEmailItem::NewLC(); + CleanupStack::Pop(self); + return self; + } + +CWPEmailItem* CWPEmailItem::NewLC() + { + CWPEmailItem* self = new(ELeave) CWPEmailItem; + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// Destructor +CWPEmailItem::~CWPEmailItem() + { + delete iEmailSettingParams; + } +// Constructor +CWPEmailItem::CWPEmailItem() + { + } +// ----------------------------------------------------------------------------- +// CWPEmailItem::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CWPEmailItem::ConstructL() + { + // average setting contains 10 items + iEmailSettingParams = new(ELeave) CArrayPtrFlat( + KArrayGranularity); + } + + +const TDesC& CWPEmailItem::ParameterValue(TInt aParamID) const + { + TInt count = iEmailSettingParams->Count(); + for (TInt i=0; i < count; ++i) + { + if ( iEmailSettingParams->At(i)->ID() == aParamID ) + { + return iEmailSettingParams->At(i)->Value(); + } + } + return KNullDesC; + } + + +HBufC* CWPEmailItem::AssociatedIapNameL() + { + HBufC* string = NULL; + + if ( iNapDef ) + { + // We have only 1 IAP + CArrayFix* name = new(ELeave) CArrayFixFlat(1); + CleanupStack::PushL(name); + + // iap name + iNapDef->ParameterL(EWPParameterName, name); + + if (name->Count() > 0) + { + // IAP name is found from index 0 + string = name->At(0).AllocL(); + } + + CleanupStack::PopAndDestroy(); // name + } + + return string; + } + +TUint32 CWPEmailItem::AssociatedIapId() + { + TPckgBuf pckg; + pckg() = 0; + + if ( iNapDef ) + { + const TDesC8& data = iNapDef->Data(); + pckg.Copy( data ); + } + + return pckg(); + } + +TBool CWPEmailItem::IsValid() const + { + // Check AppID and IAP + // if IAP not defined, then system tries to use default IAP from CommsDB. + const TDesC& appID = ParameterValue(EWPParameterAppID); + if ( appID == KEmailSettingPortSMTP || + appID == KEmailSettingPortPOP || + appID == KEmailSettingPortIMAP ) + { + LOG("CWPEmailItem::IsValid"); + return ETrue; + } + LOG("CWPEmailItem::IsNotValid"); + return EFalse; + } + +void CWPEmailItem::VisitL(CWPCharacteristic& aCharacteristic) + { + switch ( aCharacteristic.Type() ) + { + case KWPAppAddr: + // FALLTROUGH + case KWPAppAuth: + // FALLTROUGH + case KWPPort: + aCharacteristic.AcceptL( *this ); + LOG1("CWPEmailItem::AcceptL: CWPCharacteristic Type: %d", + aCharacteristic.Type()); + break; + + default: + LOG1("CWPEmailItem::Ignore: CWPCharacteristic Type: %d", + aCharacteristic.Type()); + // do nothing + break; + } + + } + + +void CWPEmailItem::VisitL(CWPParameter& aParameter) + { + switch( aParameter.ID() ) + { + // read these parameters + case EWPParameterAppID: + case EWPParameterName: + case EWPParameterProviderID: + case EWPParameterAddr: + case EWPParameterPortNbr: + case EWPParameterService: + case EWPParameterAAuthType: + case EWPParameterAAuthName: + case EWPParameterAAuthSecret: + case EWPParameterFrom: + iEmailSettingParams->AppendL(&aParameter); + LOG2("CWPEmailItem::AppendL: CWPParameter id: %d value: %S", + aParameter.ID(), &aParameter.Value()); + break; + + case EWPNamedParameter: + { + TPtrC namedParam(aParameter.Name()); + LOGSTRING2( "[Provisioning] CWPEmailItem::VisitL: Parameter Name, %i", namedParam); + + if (namedParam.CompareF(KParamEMN) == 0 || namedParam.CompareF( + KParamCS) == 0 || namedParam.CompareF(KParamLMS) == 0 + || namedParam.CompareF(KParamPOLL) == 0 + || namedParam.CompareF(KParamONLINE) == 0) + { + iEmailSettingParams->AppendL(&aParameter); + LOG2("CWPEmailItem::VisitL: Named Parameter %S: value: %S", &aParameter.Name(), + &aParameter.Value()); + } + break; + } + + default: + LOG2("CWPEmailItem::Ignore: CWPParameter id: %d value: %S", + aParameter.ID(), &aParameter.Value()); + // Do nothing + break; + } + + } + +void CWPEmailItem::VisitLinkL(CWPCharacteristic& aCharacteristic ) + { + if ( aCharacteristic.Type() == KWPNapDef ) + { + // Link to the IAP settings + iNapDef = &aCharacteristic; + LOG("iNapDef is set"); + } + } + +const TDesC& CWPEmailItem::ParameterValue(const TDesC& aParamName) + { + TInt count = iEmailSettingParams->Count(); + for (TInt i=0; i < count; ++i) + { + if ( iEmailSettingParams->At(i)->Name().CompareF(aParamName) == 0 ) + { + return iEmailSettingParams->At(i)->Value(); + } + } + return KNullDesC; + } + +// End of File