sl@0: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0: // All rights reserved.
sl@0: // This component and the accompanying materials are made available
sl@0: // under the terms of "Eclipse Public License v1.0"
sl@0: // which accompanies this distribution, and is available
sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0: //
sl@0: // Initial Contributors:
sl@0: // Nokia Corporation - initial contribution.
sl@0: //
sl@0: // Contributors:
sl@0: //
sl@0: // Description:
sl@0: //
sl@0: 
sl@0: #ifndef __LOGCHNGE_H__
sl@0: #define __LOGCHNGE_H__
sl@0: 
sl@0: #include <logwrap.h>
sl@0: 
sl@0: // Classes referenced
sl@0: class TLogConfig;
sl@0: class CLogServRecentList;
sl@0: class CLogServRecentListManager;
sl@0: class MLogServDatabaseTransactionInterface;
sl@0: class CLogDuplicate;
sl@0: class CLogFilter;
sl@0: class RLogEventDbTable;
sl@0: 
sl@0:  
sl@0: /**
sl@0: This class provides functions for updating properties of particular event.
sl@0: The database record holding the event data will be updated.
sl@0:  
sl@0: @see MLogServDatabaseTransactionInterface
sl@0: @see CLogServRecentList
sl@0: @see CLogDuplicate
sl@0: @see CLogEvent
sl@0: @internalComponent
sl@0: */
sl@0: class CLogChangeEvent : public CLogActive
sl@0: 	{
sl@0: public:
sl@0: 	static CLogChangeEvent* NewL(MLogServDatabaseTransactionInterface& aDatabase, TInt aPriority);
sl@0: 	~CLogChangeEvent();
sl@0: 	//
sl@0: public:
sl@0: 	void StartL(const CLogEvent& aEvent, 
sl@0: 	            const CLogServRecentList* aRecentList, 
sl@0: 	            TRequestStatus& aStatus, 
sl@0: 	            const RMessage2& aMessage);
sl@0: 	//
sl@0: private:
sl@0: 	CLogChangeEvent(MLogServDatabaseTransactionInterface& aDatabase, TInt aPriority);
sl@0: 	void ConstructL();
sl@0: 	//
sl@0: 	void DoRunL();
sl@0: 	void DoComplete(TInt& aStatus);
sl@0: 	void ResetDuplicatesL();
sl@0: 	void UpdateDuplicateEventsL();
sl@0: 	void DoChangeEventL();
sl@0: 	void DoChangeL(RLogEventDbTable& aTbl, TLogStringId aDirectionId, TLogStringId aStatusId);
sl@0: 	//
sl@0: 	enum TLogChangeState
sl@0: 		{
sl@0: 		ELogNone = 0,
sl@0: 		ELogChangeEvent,
sl@0: 		ELogPurgeRecent
sl@0: 		};
sl@0: 	//
sl@0: private:
sl@0: 	MLogServDatabaseTransactionInterface& iDatabase;
sl@0: 	CLogEvent* iEvent;
sl@0: 	TLogChangeState iState;
sl@0: 	const CLogServRecentList* iRecentList;
sl@0: 	TInt iOldRecentList;
sl@0: 	//
sl@0: 	CLogDuplicate* iDuplicate;
sl@0: 	CLogFilter* iDuplicateFilter;
sl@0: 	//
sl@0: 	const RMessage2* iMessage;
sl@0: 	};
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: 
sl@0: //**********************************
sl@0: // CLogChangeConfig
sl@0: //**********************************
sl@0: 
sl@0: class CLogChangeConfig : public CLogActive
sl@0: /**
sl@0: @internalComponent
sl@0: */
sl@0: 	{
sl@0: public:
sl@0: 	static CLogChangeConfig* NewL(MLogServDatabaseTransactionInterface& aDatabase, const CLogServRecentListManager& aRecentSetup, TInt aPriority);
sl@0: 	~CLogChangeConfig();
sl@0: 	//
sl@0: public:
sl@0: 	void StartL(const TLogConfig& aConfig, TRequestStatus& aStatus);
sl@0: 	//
sl@0: private:
sl@0: 	CLogChangeConfig(MLogServDatabaseTransactionInterface& aDatabase, const CLogServRecentListManager& aRecentSetup, TInt aPriority);
sl@0: 	//
sl@0: 	void DoRunL();
sl@0: 	void DoComplete(TInt& aStatus);
sl@0: 	//
sl@0: 	enum TLogChangeState
sl@0: 		{
sl@0: 		ELogNone,
sl@0: 		ELogChange,
sl@0: 		ELogPurgeRecent
sl@0: 		};
sl@0: 	//
sl@0: private:
sl@0: 	MLogServDatabaseTransactionInterface& iDatabase;
sl@0: 	const TLogConfig* iConfig;
sl@0: 	const CLogServRecentListManager& iRecentSetup;
sl@0: 	TLogChangeState iState;
sl@0: 	TInt iRecent;
sl@0: 	
sl@0: 	};
sl@0: 
sl@0: #endif