imsrv_plat/ximp_presence_data_model_api/inc/presenceobjectfactory.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:54:49 +0200
changeset 0 e6b17d312c8b
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* Copyright (c) 2006, 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:  Interface for XIMP Framework object factory.
*
*/

#ifndef MPRESENCEOBJECTFACTORY_H
#define MPRESENCEOBJECTFACTORY_H

#include <e32std.h>
#include <ximpbase.h>
#include <presencedatamodelifids.hrh>

class MPresenceInfo;
class MPresenceInfoFilter;
class MPresentityGroupInfo;
class MPresenceWatcherInfo;
class MPresenceGrantRequestInfo;
class MPresentityGroupMemberInfo;
class MServicePresenceInfo;
class MPersonPresenceInfo;
class MDevicePresenceInfo;
class MPresenceInfoField;
class MPresenceInfoFieldValueEnum;
class MPresenceInfoFieldValueText;
class MPresenceInfoFieldValueBinary;
class MPresenceBlockInfo;

/**
 * Interface for XIMP Framework presence object factory.
 *
 * Presence object factory is used to instantiate
 * data objects declared in Data Model API.
 *
 * MPresenceObjectFactory interface can be obtained from
 * MPresenceContext or MXIMPProtocolConnectionHost
 * interfaces.
 *
 * @ingroup presencedatamodelapi
 * @since S60 v3.2
 */
class MPresenceObjectFactory : public MXIMPBase
    {
public:

    /** Interface ID for the MPresenceObjectFactory. */
    enum { KInterfaceId = PRES_IF_ID_PRESENCE_OBJECT_FACTORY };


protected:

    /**
     * Protected destructor.
     * Object instancies can't be deleted via this interface.
     */
    virtual ~MPresenceObjectFactory() {}




public: // Group and similar info object types


    /**
     * Instantiates new presentity group info object.
     *
     * @return New group info object instance.
     *         Object ownership is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresentityGroupInfo* NewPresentityGroupInfoLC() = 0;


    /**
     * Instantiates new presentity group member info object.
     *
     * @return New group member info object instance.
     *         Object ownership is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresentityGroupMemberInfo* NewPresentityGroupMemberInfoLC() = 0;


    /**
     * Instantiates new presence watcher info object.
     *
     * @return New watcher info object instance.
     *         Object ownership is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresenceWatcherInfo* NewPresenceWatcherInfoLC() = 0;


    /**
     * Instantiates new presence grant request info object.
     *
     * @return New grant request info object instance.
     *         Object ownership is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresenceGrantRequestInfo* NewPresenceGrantRequestInfoLC() = 0;



public: // Presence information object types


    /**
     * Instantiates new presence info object.
     *
     * @return New presence info instance. Object ownership
     *         is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresenceInfo* NewPresenceInfoLC() = 0;


    /**
     * Instantiates new presence info filter object.
     *
     * @return New presence info filter instance. Object ownership
     *         is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresenceInfoFilter* NewPresenceInfoFilterLC() = 0;

    /**
     * Instantiates new presence person info object.
     *
     * @return New presence person info instance. Object ownership
     *         is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPersonPresenceInfo* NewPersonPresenceInfoLC() = 0;

    /**
     * Instantiates new presence service info object.
     *
     * @return New presence service info instance. Object ownership
     *         is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MServicePresenceInfo* NewServicePresenceInfoLC() = 0;

    /**
     * Instantiates new presence device info object.
     *
     * @return New presence device info instance. Object ownership
     *         is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MDevicePresenceInfo* NewDevicePresenceInfoLC() = 0;

    /**
     * Instantiates new info field object.
     *
     * @return New info field instance. Object ownership
     *         is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresenceInfoField* NewInfoFieldLC() = 0;

    /**
     * Instantiates new enumerated info field value object.
     *
     * @return New info field value instance. Object ownership
     *         is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresenceInfoFieldValueEnum* NewEnumInfoFieldLC() = 0;

    /**
     * Instantiates new textual info field value object.
     *
     * @return New info field value instance. Object ownership
     *         is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresenceInfoFieldValueText* NewTextInfoFieldLC() = 0;

    /**
     * Instantiates new binary info field value object.
     *
     * @return New info field value instance. Object ownership
     *         is returned to caller.
     *
     * @leave KErrNoMemory if failed to allocate memory.
     */
    virtual MPresenceInfoFieldValueBinary* NewBinaryInfoFieldLC() = 0;
    virtual MPresenceBlockInfo* NewPresenceBlockInfoLC() = 0;
    };



#endif // MPRESENCEOBJECTFACTORY_H