menucontentsrv/inc/menuclientoperation.h
author kashif.sayed
Fri, 26 Mar 2010 03:06:02 +0530
branchv5backport
changeset 30 f9f9f96b1873
parent 0 79c6a41cd166
permissions -rw-r--r--
user: kashif.sayed added contentcontrolsrv/.cproject added contentcontrolsrv/.project added contentcontrolsrv/group/ABLD.BAT added contentpublishingsrv/.cproject added contentpublishingsrv/.project added contentpublishingsrv/contentharvester/.cproject added contentpublishingsrv/contentharvester/.project added contentpublishingsrv/contentharvester/contentharvesterclient/group/ABLD.BAT added contentpublishingsrv/contentharvester/contentharvesterserver/group/ABLD.BAT added contentpublishingsrv/contentharvester/contentharvesterswiplugin/group/ABLD.BAT added contentpublishingsrv/contentharvester/factorysettingsplugin/group/ABLD.BAT added contentpublishingsrv/contentharvester/group/ABLD.BAT added contentpublishingsrv/group/ABLD.BAT added dependencies/S3libs/cpswrapper.lib added dependencies/S3libs/hscontentcontrol.lib added dependencies/S3libs/hspswrapper.lib added group/ABLD.BAT added homescreenpluginsrv/group/ABLD.BAT added homescreensrv_plat/group/ABLD.BAT added idlefw/group/ABLD.BAT added inc/ccontentmap.h added inc/cpdebug.h added inc/cpglobals.h added inc/cpliwmap.h added inc/cpluginvalidator.h added inc/cpserverdef.h added inc/cpublisherregistrymap.h added inc/mcssathandler.h added menucontentsrv/group/ABLD.BAT added xcfw/group/ABLD.BAT changed dependencies/S3libs/bld.inf

/*
* 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:  Definition of Menu operation subsession
*
*/


#ifndef __MENUCLIENTOPERATION_H__
#define __MENUCLIENTOPERATION_H__

#include "mcsmenuoperation.h"
#include <e32base.h>

class RMenu;
class RMenuBuf;
class CMenuItem;

/**
 *  Menu operation subsession object.
 *  This is a "disposable" object (used only once):
 *  CreateXxx() -> Start() -> Close().
 *  CreateXxx() methods package and send operation data to server side; Start()
 *  invokes the operation asynchronously.
 *  @lib mcsmenu.lib
 *  @since S60 v5.0
 */
NONSHARABLE_CLASS( RMenuOperation ): public RSubSessionBase
    {

public:

    /**
    * Close the operation. Safe to call if not open.
    */
    void Close();

    /**
    * Create a Remove operation.
    * @param aMenu Menu.
    * @param aId Remove this item.
    * @return Error code.
    */
    TInt CreateRemove( RMenu& aMenu, TInt aId );

    /**
    * Create a MoveToFolder operation.
    * @param aMenu Menu.
    * @param aId ID-s of item to be to be moved have been sent in this
    * buffer.
    * @param aMoveBefore. Move the items before this item (if found).
    * If aMoveBefore is not found, the aItem is moved to the end.
    * @return Error code.
    */
    TInt CreateMoveToFolder(
        RMenu& aMenu,
        const RMenuBuf& aItems,
        TInt aFolder,
        TInt aMoveBefore );

    /**
    * Create Reorder operation.
    * @param aMenu Menu.
    * @param aId ID of item to be to be reordered.
    * @param aMoveBefore. Move the item before this item (if found).
    * If aMoveBefore is not found, the aItem is moved to the end.
    * @return Error code.
    */
    TInt CreateReorder( RMenu& aMenu, TInt aId, TInt aMoveBefore );

    /**
    * Create Add operation.
    * @param aMenu Menu.
    * @param aType Type. Maximum length is KMenuMaxTypeLen.
    * @param aChanges Operation data (attributes, etc.) have been sent in this
    * buffer.
    * @param aId ID of item to be created is returned here (ID is reserved,
    * but not yet valid).
    * @return Error code.
    */
    TInt CreateAdd( RMenu& aMenu, const TDesC& aType, const RMenuBuf& aChanges, TInt& aId );

    /**
    * Create Update operation.
    * @param aMenu Menu.
    * @param aId Id.
    * @param aChanges Operation data (attributes, etc.) have been sent in this
    * buffer.
    * @return Error code.
    */
    TInt CreateUpdate( RMenu& aMenu, TInt aId, const RMenuBuf& aChanges );

    /**
    * Cancel operation.
    * NOT safe to call on an unopened operation.
    */
    void Cancel();

    /**
    * Start operation.
    * @param aStatus Completes with error code when operation is done.
    */
    void Start( TRequestStatus &aStatus );

    };

/**
 *  RMenuOperation wrapped as CMenuOperation.
 *  @lib mcsmenu.lib
 *  @since S60 v5.0
 */
NONSHARABLE_CLASS( CMenuClientOperation ): public CMenuOperation
    {

public:

    /**
    * Destructor.
    */
    virtual ~CMenuClientOperation();

    /**
    * Constructor.
    * @param aMenu Menu.
    * @param Priority Active Object priority.
    * @param aStatus Completes with error code when operation is done.
    */
    CMenuClientOperation(
        RMenu &aMenu,
        TInt aPriority,
        TRequestStatus &aObserverStatus );

    /**
    * Construct and start Remove operation.
    * @param aMenu Menu.
    * @param aId Remove this item.
    */
    void RemoveL( TInt aId );

    /**
    * Construct and start a MoveToFolder operation.
    * @param aMenu Menu.
    * @param aId ID-s of item to be to be moved have been sent in this
    * buffer.
    * @param aMoveBefore. Move the items before this item (if found).
    * If aMoveBefore is not found, the aItem is moved to the end.
    */
    void MoveToFolderL( const RMenuBuf& aItems, TInt aFolder, TInt aMoveBefore );

    /**
    * Construct and start Reorder operation.
    * @param aMenu Menu.
    * @param aId ID of item to be to be reordered.
    * @param aMoveBefore. Move the item before this item (if found).
    * If aMoveBefore is not found, the aItem is moved to the end.
    */
    void ReorderL( TInt aId, TInt aMoveBefore );

    /**
    * Construct and start Add operation.
    * @param aMenu Menu.
    * @param aType Type. Maximum length is KMenuMaxTypeLen.
    * @param aChanges Operation data (attributes, etc.) have been sent in this
    * buffer.
    * @return ID of item to be created (ID is reserved, but not yet valid).
    */
    TInt AddL( const TDesC& aType, const RMenuBuf& aChanges );

    /**
    * Construct and start Update operation.
    * @param aMenu Menu.
    * @param aId Id.
    * @param aChanges Operation data (attributes, etc.) have been sent in this
    * buffer.
    */
    void UpdateL( TInt aId, const RMenuBuf& aChanges );

private:

    /**
    * Start operation.
    */
    void Start();

// from base class CActive

    /**
    * Operation completed.
    */
    void RunL();

    /**
    * Cancel operation.
    */
    void DoCancel();

    /**
    * Never called, RunL() is not leaving.
    */
    TInt RunError( TInt /*aError*/ ) { return KErrNone; }

private:    // data

    RMenuOperation iOperation; ///< The operation. Own.

    };

#endif // __MENUCLIENTOPERATION_H__