omacp/omacpadapters/EmailAdapter/src/CWPEmailItem.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:40:12 +0200
changeset 0 3ce708148e4d
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* 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<CWPParameter>(
        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<TPtrC>* name = new(ELeave) CArrayFixFlat<TPtrC>(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<TUint32> 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