locationtriggering/ltserver/ltserverlogic/inc/lbttriggermodifyaooperation.h
author hgs
Wed, 03 Nov 2010 23:28:39 +0530
changeset 56 4e949f03ecc5
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  Active Object operation for serving server logic requests
hgs
parents:
diff changeset
    15
*				 for modification or deletion of triggers.
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#ifndef C_LBTTRIGGERMODIFYOOPERATION_H
hgs
parents:
diff changeset
    21
#define C_LBTTRIGGERMODIFYOOPERATION_H
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
// INCLUDE FILES
hgs
parents:
diff changeset
    24
#include <e32base.h>
hgs
parents:
diff changeset
    25
#include <lbtcommon.h>
hgs
parents:
diff changeset
    26
#include "lbtaooperationbase.h"
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
// FORWARD DECLARATIONS
hgs
parents:
diff changeset
    29
class MLbtAOObserver;
hgs
parents:
diff changeset
    30
class CLbtContainer;
hgs
parents:
diff changeset
    31
class CLbtContainerTriggerEntry;
hgs
parents:
diff changeset
    32
class CLbtSettingsManager;
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
/**
hgs
parents:
diff changeset
    35
 * Class declaration of active object operation
hgs
parents:
diff changeset
    36
 * to service client requests. This object services
hgs
parents:
diff changeset
    37
 * requests which require listing of triggers.
hgs
parents:
diff changeset
    38
 * The IPC messages are provided to
hgs
parents:
diff changeset
    39
 * this class to service the request asynchronously
hgs
parents:
diff changeset
    40
 *
hgs
parents:
diff changeset
    41
 * @since S60 v4.0
hgs
parents:
diff changeset
    42
 */
hgs
parents:
diff changeset
    43
class CLbtTriggerModifyAOOperation : public CLbtAOOperationBase
hgs
parents:
diff changeset
    44
	{
hgs
parents:
diff changeset
    45
	public:
hgs
parents:
diff changeset
    46
	
hgs
parents:
diff changeset
    47
		/**
hgs
parents:
diff changeset
    48
	     * Instantiates a new object of 
hgs
parents:
diff changeset
    49
	     * CLbtTriggerModifyAOOperation
hgs
parents:
diff changeset
    50
	     *
hgs
parents:
diff changeset
    51
	     * @param[in] aObserver reference to the active
hgs
parents:
diff changeset
    52
	     * object observer
hgs
parents:
diff changeset
    53
	     * @param[in] aMessage the IPC request which the active 
hgs
parents:
diff changeset
    54
	     * object has to service. The active object takes responsibility
hgs
parents:
diff changeset
    55
	     * of completing this IPC request
hgs
parents:
diff changeset
    56
	     * @param aContainer reference to the container which holds
hgs
parents:
diff changeset
    57
	     * the reference to the logic processor
hgs
parents:
diff changeset
    58
	     */
hgs
parents:
diff changeset
    59
	    static CLbtTriggerModifyAOOperation* NewL( MLbtAOObserver& aObserver,
hgs
parents:
diff changeset
    60
				    							   const RMessage2& aMessage,
hgs
parents:
diff changeset
    61
				    							   CLbtContainer& aContainer,
hgs
parents:
diff changeset
    62
				    							   TInt aClientType,
hgs
parents:
diff changeset
    63
				    							   CLbtSettingsManager& aSettingsManager );
hgs
parents:
diff changeset
    64
	    
hgs
parents:
diff changeset
    65
	    /**
hgs
parents:
diff changeset
    66
	     * Destructor
hgs
parents:
diff changeset
    67
	     *
hgs
parents:
diff changeset
    68
	     */
hgs
parents:
diff changeset
    69
	    ~CLbtTriggerModifyAOOperation();
hgs
parents:
diff changeset
    70
	    
hgs
parents:
diff changeset
    71
	private:
hgs
parents:
diff changeset
    72
	
hgs
parents:
diff changeset
    73
		/**
hgs
parents:
diff changeset
    74
	     * 2nd phase constuctor for instantiating member variables
hgs
parents:
diff changeset
    75
	     *
hgs
parents:
diff changeset
    76
	     */
hgs
parents:
diff changeset
    77
		void ConstructL();
hgs
parents:
diff changeset
    78
		
hgs
parents:
diff changeset
    79
		/**
hgs
parents:
diff changeset
    80
	     * Default C++ Constructor
hgs
parents:
diff changeset
    81
	     *
hgs
parents:
diff changeset
    82
	     * @param[in] aObserver reference to the active object observer
hgs
parents:
diff changeset
    83
	     * @param[in] aMessage the IPC request which the active 
hgs
parents:
diff changeset
    84
	     * object has to service. The active object takes responsibility
hgs
parents:
diff changeset
    85
	     * of completing this IPC request
hgs
parents:
diff changeset
    86
	     * @param aContainer reference to the container which holds
hgs
parents:
diff changeset
    87
	     * the reference to the logic processor
hgs
parents:
diff changeset
    88
	     */
hgs
parents:
diff changeset
    89
	    CLbtTriggerModifyAOOperation( MLbtAOObserver& aObserver, 
hgs
parents:
diff changeset
    90
				    				  const RMessage2& aMessage,
hgs
parents:
diff changeset
    91
				    				  CLbtContainer& aContainer,
hgs
parents:
diff changeset
    92
				    				  TInt aClientType ,
hgs
parents:
diff changeset
    93
				    				  CLbtSettingsManager& aSettingsManager );
hgs
parents:
diff changeset
    94
	
hgs
parents:
diff changeset
    95
	public: // From CLbtAOOperationBase
hgs
parents:
diff changeset
    96
	
hgs
parents:
diff changeset
    97
	    /**
hgs
parents:
diff changeset
    98
	     * Starts the AO operation of serving the request	     
hgs
parents:
diff changeset
    99
	     *
hgs
parents:
diff changeset
   100
	     */ 
hgs
parents:
diff changeset
   101
		void StartOperationL();
hgs
parents:
diff changeset
   102
		
hgs
parents:
diff changeset
   103
		/**
hgs
parents:
diff changeset
   104
	     * Cancels Modify Operation.	     
hgs
parents:
diff changeset
   105
	     *
hgs
parents:
diff changeset
   106
	     */
hgs
parents:
diff changeset
   107
	     void CancelModifyOperation();
hgs
parents:
diff changeset
   108
				
hgs
parents:
diff changeset
   109
		/**
hgs
parents:
diff changeset
   110
		 * Returns the trigger id of the trigger which is being modified
hgs
parents:
diff changeset
   111
		 *
hgs
parents:
diff changeset
   112
		 * @return the trigger id of the trigger being modified. If the 
hgs
parents:
diff changeset
   113
		 * operation object modifies multiple triggers then KLbtNullTriggerId
hgs
parents:
diff changeset
   114
		 * is returned
hgs
parents:
diff changeset
   115
		 */
hgs
parents:
diff changeset
   116
		TLbtTriggerId GetTriggerId();
hgs
parents:
diff changeset
   117
hgs
parents:
diff changeset
   118
    public:
hgs
parents:
diff changeset
   119
        RPointerArray<CLbtContainerTriggerEntry>& GetUpdatedTriggerList();
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    private:
hgs
parents:
diff changeset
   122
    
hgs
parents:
diff changeset
   123
        void ListTriggersL();
hgs
parents:
diff changeset
   124
        void UpdateTriggersL();
hgs
parents:
diff changeset
   125
        CLbtTriggerEntry* CreateTriggerEntryLC( TInt aType );
hgs
parents:
diff changeset
   126
        CLbtTriggerFilterBase* CreateTriggerFilterLC( TInt aType );
hgs
parents:
diff changeset
   127
        CLbtTriggerFilterBase* InternalizeFilterFromIpcLC( 
hgs
parents:
diff changeset
   128
            const RMessage2& aMessage, 
hgs
parents:
diff changeset
   129
            const TInt aIpcSlot );
hgs
parents:
diff changeset
   130
        CLbtTriggerEntry* InternalizeTriggerFromIpcLC( 
hgs
parents:
diff changeset
   131
            const RMessage2& aMessage, 
hgs
parents:
diff changeset
   132
            const TInt aIpcSlot );
hgs
parents:
diff changeset
   133
        void HandleUpdateTriggerStateOpL();
hgs
parents:
diff changeset
   134
        void HandleModifyTriggerStateOpL();
hgs
parents:
diff changeset
   135
        void HandleDeleteTriggerOpL();
hgs
parents:
diff changeset
   136
        TBool CheckEnabledTriggerCap();
hgs
parents:
diff changeset
   137
hgs
parents:
diff changeset
   138
    protected: // From CActive
hgs
parents:
diff changeset
   139
    	void RunL();
hgs
parents:
diff changeset
   140
    	void DoCancel();
hgs
parents:
diff changeset
   141
hgs
parents:
diff changeset
   142
    private: // Data
hgs
parents:
diff changeset
   143
        enum TLbtModifyReqProcessingState
hgs
parents:
diff changeset
   144
            {
hgs
parents:
diff changeset
   145
            ENone = 0,
hgs
parents:
diff changeset
   146
            EListTriggers,
hgs
parents:
diff changeset
   147
            EUpdateTriggers
hgs
parents:
diff changeset
   148
            };
hgs
parents:
diff changeset
   149
	private: // Data
hgs
parents:
diff changeset
   150
		
hgs
parents:
diff changeset
   151
		// The id of the trigger being modified (valid only if one trigger is being modified)
hgs
parents:
diff changeset
   152
		TLbtTriggerId iTriggerId;
hgs
parents:
diff changeset
   153
				
hgs
parents:
diff changeset
   154
		// Container trigger entry object
hgs
parents:
diff changeset
   155
		CLbtContainerTriggerEntry* iContainerEntry;
hgs
parents:
diff changeset
   156
		
hgs
parents:
diff changeset
   157
		// The state of the request processing
hgs
parents:
diff changeset
   158
		TLbtModifyReqProcessingState iState;
hgs
parents:
diff changeset
   159
		
hgs
parents:
diff changeset
   160
		// The pointer array which will be populated by the container
hgs
parents:
diff changeset
   161
		// based on the search
hgs
parents:
diff changeset
   162
		RPointerArray<CLbtContainerTriggerEntry> iUpdatedTriggerList;
hgs
parents:
diff changeset
   163
		
hgs
parents:
diff changeset
   164
		// Settings manager
hgs
parents:
diff changeset
   165
		CLbtSettingsManager& iSettingsManager;
hgs
parents:
diff changeset
   166
		
hgs
parents:
diff changeset
   167
		// Fire on updation flag
hgs
parents:
diff changeset
   168
		TLbtFireOnUpdate iFireOnUpdate;
hgs
parents:
diff changeset
   169
	};
hgs
parents:
diff changeset
   170
hgs
parents:
diff changeset
   171
#endif // C_LBTTRIGGERMODIFYOOPERATION_H