ipsservices/ipssosplugin/src/cemailsettingsextensionimpl.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 25 May 2010 12:23:16 +0300
branchRCL_3
changeset 17 67369d1b217f
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* Copyright (c) 2009 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:  implementation of settings extension for mailbox
*
*/

#include <cemailaccounts.h>
#include <imapset.h>
#include "ipssetdataapi.h"
#include "ipssetdataextension.h"

#include "emailtrace.h"
#include "cemailsettingsextensionimpl.h"          

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
CEmailSettingsExtension::CEmailSettingsExtension( const TUid& aUid ) : CEmailExtension( aUid )
    {
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
CEmailSettingsExtensionImpl::CEmailSettingsExtensionImpl() : 
    CEmailSettingsExtension( KEmailSettingExtensionUid )
    {
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
CEmailSettingsExtensionImpl::CEmailSettingsExtensionImpl(CMsvSession* aSession) : 
    CEmailSettingsExtension( KEmailSettingExtensionUid )
    {
    iSession = aSession;
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
CEmailSettingsExtensionImpl::~CEmailSettingsExtensionImpl()
    {
    FUNC_LOG
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
void CEmailSettingsExtensionImpl::GetSettingValue( const TDesC& /*aKey*/, TDesC8& /*aValue*/  ) const
    {
    FUNC_LOG

    }
    
// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
void CEmailSettingsExtensionImpl::SetSettingValue( const TDesC& /*aKey*/, const RBuf8& /*aValue*/ )
    {
    FUNC_LOG
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
TBool CEmailSettingsExtensionImpl::IsSetL( const TDesC& aKey )
    {
    FUNC_LOG
        
    TBool ret = EFalse;
    if(!aKey.Compare(EmailSyncInterval))
        {
        // create account api and setting objects
        CEmailAccounts* accounts = CEmailAccounts::NewL();
        CleanupStack::PushL( accounts );
        RArray<TImapAccount> imapBoxes;
        accounts->GetImapAccountsL(imapBoxes);
        TMsvId serviceId = iMailBoxId.Id();
        TBool found = EFalse;
        for(TInt i=0;i<imapBoxes.Count();i++)
        {
            if( serviceId == imapBoxes[i].iImapService)
            {
            found = ETrue;
            break;
            }
        }
        imapBoxes.Reset();
        if(!found)
            {
            RArray<TPopAccount> popBoxes;
            accounts->GetPopAccountsL(popBoxes);
            for(TInt i=0;i<popBoxes.Count();i++)
                {
                if( serviceId == popBoxes[i].iPopService)
                    {
                    found = ETrue;
                    break;
                    }
                }
            popBoxes.Reset();
            }
        if(found)
            {
            //Set new password and signal (possible) ongoing connect operation
            CIpsSetDataApi* api = CIpsSetDataApi::NewL( *iSession );
            CleanupStack::PushL( api );
            CIpsSetDataExtension* extentedSettings = CIpsSetDataExtension::NewL();
            CleanupStack::PushL( extentedSettings );
            api->LoadExtendedSettingsL(serviceId,*extentedSettings);
            TInt syncTime = extentedSettings->InboxRefreshTime();
            if(syncTime == KErrNotFound)
                {
                ret = ETrue;
                }
            else
                {
                ret = EFalse;
                }
            CleanupStack::PopAndDestroy( 2 );
            }
        CleanupStack::PopAndDestroy( );
        }
    return ret;
    
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
TFSMailMsgId CEmailSettingsExtensionImpl::GetMailBoxId( )
    {
    FUNC_LOG
    return iMailBoxId;
    }

// ---------------------------------------------------------------------------
// 
// ---------------------------------------------------------------------------
//
void CEmailSettingsExtensionImpl::SetMailBoxId( const TFSMailMsgId& aMailBoxId )
    {
    FUNC_LOG
    iMailBoxId = aMailBoxId;
    }