ipsservices/ipssossettings/inc/ipssetdatastorer.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 14 Apr 2010 15:42:15 +0300
branchRCL_3
changeset 17 8592a65ad3fb
parent 0 8466d47a6819
permissions -rw-r--r--
Revision: 201013 Kit: 201015

/*
* Copyright (c) 2007 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:  Defines an API to create and edit mailbox settings
*
*/



#ifndef IPSSETDATASTORER_H
#define IPSSETDATASTORER_H

#include <msvstd.h>             // TMsvId

class CRepository;
class CIpsSetDataExtension;
class CIpsSetDataCtrlCenrep;
class CEmailAccounts;
class CImImap4Settings;
class CImPop3Settings;
class CImSmtpSettings;

/**
 * Storer parameters.
 *
 * @since FS v1.0
 * @lib IpsSosSettings.lib
 */
class TIpsSetDataStorerParams
    {
public: 
    TIpsSetDataStorerParams(
        const TUint32& aAccountId,
        const TUid& aMtmId );
        
    TUint32 AccountId() const;
    TUid MtmId() const;

private:
    TUint32 iAccountId;
    TUid    iMtmId;
    };

/**
 * Class which stores the data to Central Repository.
 *
 * @since FS v1.0
 * @lib IpsSosSettings.lib
 */
class CIpsSetDataStorer : public CBase
    {
public:

    /**
     * Destructor
     */
    virtual ~CIpsSetDataStorer();

    /**
     * Creates the settings storer object
     */
    static CIpsSetDataStorer* NewL();

    /**
     * Creates the settings storer object
     */
    static CIpsSetDataStorer* NewLC();

public: 

    /**
     * Creates settings to store.
     *
     * @param aMailboxId Receiving mailbox ID.
     * @param aAccountId Id of the account to be used.
     * @param aProtocol Protocol of the settings.
     * @param aExtendedMailSettings Extended email settings object.
     */
    TInt CreateExtendedSettings(
        const TMsvId aMailboxId,
        const TUint32 aAccountId,
        const TUid& aProtocol,
        CIpsSetDataExtension& aExtendedMailSettings,
        const TBool aPopulateDefaults = ETrue );

    /**
     * Deletes extended settings.
     */
    TInt DeleteExtendedSettingsL(
        const TMsvEntry& aMailbox );

    /**
     * Deletes extended settings.
     *
     * @param aAccountId Id of the account to be used
     * @param aMtmId Current receiving MTM ID.
     * @return KErrNone if deleted successfully, else system wide error code.
     */
    TInt DeleteExtendedSettingsL(
        const TUint32 aAccountId,
        const TUid& aMtmId );

    /**
     * Saves the Extended settings to the Central Repository
     *
     * @param aExtendedMailSettings Extended email settings object.
     * @return KErrNone, if saving has been successful
     */
    TInt SaveExtendedSettings(
        const CIpsSetDataExtension& aExtendedMailSettings );

    /**
     * Saves the protocol related settings to Central Repository.
     *
     * @param aAccountId Id of the account to be used
     * @param aImap4Settings Imap4 setting object.
     */
    TInt SaveImap4Settings(
        const TUint32 aAccountId,
        const CImImap4Settings& aImap4Settings );

    /**
     * Saves the protocol related settings to Central Repository.
     *
     * @param aAccountId Id of the account to be used
     * @param aPop3Settings Pop3 setting object.
     */
    TInt SavePop3Settings(
        const TUint32 aAccountId,
        const CImPop3Settings& aPop3Settings );

    /**
     * Saves the protocol related settings to Central Repository.
     *
     * @param aAccountId Id of the account to be used
     * @param aSmtpSettings Smtp setting object.
     */
    TInt SaveSmtpSettings(
        const TUint32 aAccountId,
        const CImSmtpSettings& aSmtpSettings );

    /**
     * Loads the Extended settings from the Central Repository
     *
     * @param aParams Id of the account to be used
     * @param aExtendedSettings Settings object
     * @return KErrNone, if loading has been successful
     */
    TInt LoadExtendedSettings(
        const TIpsSetDataStorerParams& aParams,
        CIpsSetDataExtension& aExtendedMailSettings );

    /**
     * Loads protocol spesific settings from Central Repository.
     *
     * @param aAccountId Id of the account to be used
     * @param aImap4Settings Imap4 setting object.
     */
    TInt LoadImap4Settings(
        const TUint32 aAccountId,
        CImImap4Settings& aImap4Settings );

    /**
     * Loads protocol spesific settings from Central Repository.
     *
     * @param aAccountId Id of the account to be used
     * @param aPop3Settings Pop3 setting object.
     */
    TInt LoadPop3Settings(
        const TUint32 aAccountId,
        CImPop3Settings& aPop3Settings );

    /**
     * Loads protocol spesific settings from Central Repository.
     *
     * @param aAccountId Id of the account to be used
     * @param aSmtpSettings Smtp setting object.
     */
    TInt LoadSmtpSettings(
        const TUint32 aAccountId,
        CImSmtpSettings& aSmtpSettings );
    
    /**
     * Saves the Extended settings to the Central Repository
     *
     * @param aExtendedSettings, Settings object
     * @return KErrNone, if saving has been successful
     */
    void SaveExtendedSettingsL(
        const CIpsSetDataExtension& aExtendedMailSettings );

    /**
     * Loads the Extended settings from the Central Repository
     *
     * @param aAccountId Id of the account to be used
     * @param aMtmId Current receiving MTM ID.
     * @param aExtendedSettings Settings object
     */
    void LoadExtendedSettingsL(
        const TUint32 aAccountId,
        const TUid& aMtmId,
        CIpsSetDataExtension& aExtendedMailSettings );
        
    
    /**
     * @return Symbian settings API.
     */
    CEmailAccounts* AccountsL();

private: 

    /**
     * Default constructor
     */
    CIpsSetDataStorer();

    /**
     * ConstructL
     */
    void ConstructL();

private: 

    /**
     * Create extended settings to Central Repository.
     *
     * @param aExtendedMailSettings Extended email settings object.
     */
    void CreateExtendedSettingsL(
        const CIpsSetDataExtension& aExtendedMailSettings );

    /**
     * 
     *
     */
    TInt SolveOutgoingLoginMethodL(
        const TUint32 aAccountId,
        const TUid& aMtmId );


public:

    /**
     * Extended settings key collection.
     */
    enum TIpsSetDataCommonSettings
        {
        EIpsSetDataCommonSetStatusFlagsH = 0x00,
        EIpsSetDataCommonSetStatusFlagsL,
        EIpsSetDataCommonSetMailboxId,
        EIpsSetDataCommonSetAccountId,
        EIpsSetDataCommonSetExtensionId,
        EIpsSetDataCommonSetProtocol,
        EIpsSetDataCommonSetEmailAddress,
        EIpsSetDataExtSetEmailNotif,
        EIpsSetDataExtSetIndicators,
        EIpsSetDataExtSetHideMsgs,
        EIpsSetDataExtSetOpenHtmlMail,
        EIpsSetDataAoVersion,
        EIpsSetDataAoOnlineState,
        EIpsSetDataAoWeekDays,
        EIpsSetDataAoTimeStartH,
        EIpsSetDataAoTimeStartL,
        EIpsSetDataAoTimeStopH,
        EIpsSetDataAoTimeStopL,
        EIpsSetDataAoInboxRefreshTime,
        EIpsSetDataAoUpdateMode,
        EIpsSetDataAoLastSuccessfulUpdateH,
        EIpsSetDataAoLastSuccessfulUpdateL,
        EIpsSetDataAoLastUpdateFailed,
        EIpsSetDataAoUpdateSuccessfulWithCurSettings,
        /* Move the own settings somewhere very far away in the key space */
        EIpsSetDataFsOutgoingLogin      = 0xFA ,
        EIpsSetDataLastModifiedH,
        EIpsSetDataLastModifiedL,
        EIpsSetDataLastSyncStatus,
        //<cmail>        
        EIpsSetDataHideUserNameAndAddress,
        //</cmail>
        EIpsSetDateEmnReceivedButNotSyncedFlag,
		EIpsSetDataFirstEMNReceivedFlag,
        EIpsSetDataKeyLast
        };

private:
    /**
     * Repository for smtp settings
     * Owned.
     */
    CRepository*    iCenRepSmtp;

    /**
     * Repository for extended mail settings
     * Owned.
     */
    CRepository*    iCenRepExtMail;

    /**
     * Repository for always online settings
     * Owned.
     */
    CRepository*    iCenRepAlwaysOnline;

    /**
     * Repository for default settings data
     * Owned.
     */
    CRepository*    iCenRepDefaultData;

    /**
     * Pointer to accounts handler
     * Owned.
     */
    CEmailAccounts* iAccounts;

    /**
     * Class to handle Central Repository operations
     * Owned.
     */
    CIpsSetDataCtrlCenrep* iCenRepControl;

    };

#endif      // IPSSETDATASTORER_H

// End of File