gsprofilesrv_plat/profiles_engine_api/inc/MProfileEngineExtended.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:52:52 +0200
changeset 0 8c5d936e5675
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:  Extended profile engine interface.
*
*/



#ifndef __MPROFILEENGINEEXTENDED_H__
#define __MPROFILEENGINEEXTENDED_H__

//  INCLUDES
#include <MProfileEngine.h>

// DATA TYPES
enum TProfileUtilityObjectType
    {
    EProfileUtilityObjectPresenceTool      = 0
    };

// FUNCTION PROTOTYPES
class MProfileEngineExtended;
class MProfilesLocalFeatures;

/**
* Create extended profile engine, ownership transfered.
*
*  @lib ProfileEng.lib
*  @since 2.0
*/
IMPORT_C MProfileEngineExtended* CreateProfileEngineExtendedL();

/**
* Create extended profile engine, ownership transfered.
*
*  @param aFs An open file server session, ownership is NOT transferred.
*  aFs must remain connected for the lifetime of the returned object.
*  @lib ProfileEng.lib
*  @since 3.0
*/
IMPORT_C MProfileEngineExtended* CreateProfileEngineExtendedL( RFs* aFs );

// FORWARD DECLARATIONS
class MProfileExtended;
class MProfilePresence;

// CLASS DECLARATION

/**
*  Extended profile engine interface.
*  This interface extend MProfileEngine interface and
*  offers methods to get profile settings and store profile settings.
*
*  @lib N/A
*  @since 2.0
*/
class MProfileEngineExtended : public MProfileEngine
    {
    protected:  // Destructor

        virtual ~MProfileEngineExtended() {};

    public: // New functions

        /**
        * Create extended profile, ownership transfered.
        * @since 2.0
        * @param aId Profile ID
        * @return Instance of the MProfileExtended
        */
        virtual MProfileExtended* ProfileLC( TInt aId ) = 0;

        /**
        * Create extended profile, ownership transfered.
        * @since 2.0
        * @param aId Profile ID
        * @return Instance of the MProfileExtended
        */
        virtual MProfileExtended* ProfileL( TInt aId ) = 0;

        /**
        * Store profile settings. Leaves with KErrAccessDenied if one or more
        * of the settings of the target profile is/are read-only.
        * @since 2.0
        * @param aProfile Profile
        */
        virtual void CommitChangeL( MProfileExtended& aProfile ) = 0;

        /**
        * Send presence settings.
        * @since 2.1
        * @param aProfile Profile
        */
        virtual void SendPresenceSettingsL(
            const MProfilePresence& aPresence ) = 0;

        /**
        * Delete profile.
        * @since 2.1
        * @param aId Profile ID
        * @return Error code
        */
        virtual TInt DeleteProfileL( TInt aId ) = 0;

        /**
        * Create new profile, ownership transfered.
        * @since 2.1
        * @return Instance of the MProfileExtended
        */
        virtual MProfileExtended* CreateProfileL() = 0;

        /**
        * Returns is profile default profile.
        * @since 2.0
        * @param aId Profile ID
        * @return Is profile default profile
        */
        virtual TBool IsDefaultProfile( TInt aId ) = 0;

        /**
        * Returns locally variated features of Profiles.
        * @since 2.6
        */
        virtual MProfilesLocalFeatures& LocalFeatures() = 0;

        /**
         * Returns an utility object needed for a specific task. The returned
         * object can be generally of any class and the caller must know what
         * it wants and cast the returned object to the correct class.
         * The ownership is not transferred.
         * @param aType the type of the utility object to be returned.
         * @param aImpl the utility object needed by the client on return, NULL
         * if there isn't any of the given type
         */
        virtual void GetProfileUtilityObject(
                TProfileUtilityObjectType aType, TAny*& aImpl ) = 0;

        /**
        * Set timed active profile. When the time expires the profile which was
        * active before calling this method will be reactivated.
        * If ID is incorrect then leave with KErrNotFound.
        * @since 3.2
        * @param aId Profile ID
        * @param aTime time when the profile activation expires
        */
        virtual void SetActiveProfileTimedL( TInt aId, TTime aTime ) = 0;

    };

#endif      // __MPROFILEENGINEEXTENDED_H__

// End of File