williamr@2: // Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __LOGVIEW_H__ williamr@2: #define __LOGVIEW_H__ williamr@2: williamr@2: // System includes williamr@2: #include williamr@2: #include williamr@2: williamr@2: // User includes williamr@2: #include williamr@2: williamr@2: // Classes referenced williamr@2: class CLogClient; williamr@2: class CLogGetEventClientOp; williamr@2: class CLogPackage; williamr@2: class CLogViewSetupClientOp; williamr@2: class CLogMaintainClientOp; williamr@2: class CLogViewObserver; williamr@2: class CLogFilterList; williamr@2: class CLogFilter; williamr@2: class CLogViewDuplicate; williamr@2: class CLogViewRemoveEventClientOp; williamr@2: class MLogViewChangeObserver; williamr@2: class CLogViewWindow; williamr@2: williamr@2: williamr@2: //********************************** williamr@2: // CLogView williamr@2: //********************************** williamr@2: williamr@2: class CLogView : public CLogActive williamr@2: /** williamr@2: Navigates a view on the log database. williamr@2: williamr@2: The class provides functions for navigating through a set of events and a williamr@2: function to retrieve the event at the current position within the view. williamr@2: williamr@2: The class cannot be instantiated. Further classes are derived from this class williamr@2: to define and construct views on the log database. williamr@2: williamr@2: The set of events in a view are always ordered so that the first event in williamr@2: a view is the most recent. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C ~CLogView(); williamr@2: // williamr@2: public: williamr@2: inline const CLogEvent& Event() const; williamr@2: // williamr@2: IMPORT_C TBool FirstL(TRequestStatus& aStatus); williamr@2: IMPORT_C TBool LastL(TRequestStatus& aStatus); williamr@2: IMPORT_C TBool NextL(TRequestStatus& aStatus); williamr@2: IMPORT_C TBool PreviousL(TRequestStatus& aStatus); williamr@2: // williamr@2: IMPORT_C TInt CountL(); williamr@2: // williamr@2: IMPORT_C void SetFlagsL(TLogFlags aFlags); williamr@2: // williamr@2: protected: williamr@2: CLogView(CLogClient& aClient, TInt aPriority = CActive::EPriorityStandard); williamr@2: void ConstructL(TInt aType, MLogViewChangeObserver* aObserver = NULL); williamr@2: // williamr@2: inline TBool IsValid() const; williamr@2: void DoCancel(); williamr@2: void ReadEventFromWindowL(); williamr@2: void ReawaitForChanges(); williamr@2: TInt LogViewRecordCount() const; williamr@2: // williamr@2: private: williamr@2: TBool NavigateL(TInt aPosition, TRequestStatus& aStatus); williamr@2: void DoRunL(); williamr@2: void PrepareViewChildrenL(); williamr@2: void NotifyLogServerTerminatedL(); williamr@2: williamr@2: // williamr@2: private: williamr@2: CLogEvent* iEvent; williamr@2: TAny* iSpare1; williamr@2: // williamr@2: protected: williamr@2: CLogClient& iClient; williamr@2: CLogPackage* iPackage; williamr@2: TAny* iSpare2; williamr@2: CLogMaintainClientOp* iMaintain; williamr@2: TLogViewId iViewId; williamr@2: TDes8* iData; williamr@2: TBool iValid; williamr@2: CLogViewWindow* iWindow; williamr@2: // williamr@2: private: williamr@2: TInt iType; williamr@2: MLogViewChangeObserver* iLogViewChangeObserver; williamr@2: CLogViewObserver* iLogViewObserver; williamr@2: friend class CLogViewObserver; williamr@2: }; williamr@2: williamr@2: //********************************** williamr@2: // CLogViewEvent williamr@2: //********************************** williamr@2: williamr@2: williamr@2: class CLogViewEvent : public CLogView williamr@2: /** williamr@2: A view on the event log. williamr@2: williamr@2: The events included in the view are defined using a filter that specifies williamr@2: the constraints that all events in the view must satisfy. Filters are specified williamr@2: using one or more CLogFilter objects. williamr@2: williamr@2: @see CLogFilter williamr@2: @see CLogFilterList williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CLogViewEvent* NewL(CLogClient& aClient, TInt aPriority = CActive::EPriorityStandard); williamr@2: IMPORT_C static CLogViewEvent* NewL(CLogClient& aClient, MLogViewChangeObserver& aObserver, TInt aPriority = CActive::EPriorityStandard); williamr@2: IMPORT_C ~CLogViewEvent(); williamr@2: // williamr@2: public: williamr@2: IMPORT_C TBool SetFilterL(const CLogFilterList& aFilterList, TRequestStatus& aStatus); williamr@2: IMPORT_C TBool SetFilterL(const CLogFilter& aFilter, TRequestStatus& aStatus); williamr@2: IMPORT_C TBool SetFilterParseFilterByFilterL(const CLogFilterList& aFilterList, TRequestStatus& aStatus); williamr@2: // williamr@2: private: williamr@2: CLogViewEvent(CLogClient& aClient, TInt aPriority); williamr@2: void ConstructL(MLogViewChangeObserver* aObserver = NULL); williamr@2: }; williamr@2: williamr@2: //********************************** williamr@2: // CLogViewRecent williamr@2: //********************************** williamr@2: williamr@2: williamr@2: class CLogViewRecent : public CLogView williamr@2: /** williamr@2: A view on a recent event list. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CLogViewRecent* NewL(CLogClient& aClient, TInt aPriority = CActive::EPriorityStandard); williamr@2: IMPORT_C static CLogViewRecent* NewL(CLogClient& aClient, MLogViewChangeObserver& aObserver, TInt aPriority = CActive::EPriorityStandard); williamr@2: IMPORT_C ~CLogViewRecent(); williamr@2: // williamr@2: public: williamr@2: IMPORT_C TBool SetRecentListL(TLogRecentList aList, TRequestStatus& aStatus); williamr@2: IMPORT_C TBool SetRecentListL(TLogRecentList aList, const CLogFilter& aFilter, TRequestStatus& aStatus); williamr@2: IMPORT_C TBool SetRecentListL(TLogRecentList aList, const CLogFilterList& aFilterList, TRequestStatus& aStatus); williamr@2: // williamr@2: IMPORT_C TBool DuplicatesL(CLogViewDuplicate& aView, TRequestStatus& aStatus); williamr@2: IMPORT_C TBool DuplicatesL(CLogViewDuplicate& aView, const CLogFilter& aFilter, TRequestStatus& aStatus); williamr@2: IMPORT_C TBool DuplicatesL(CLogViewDuplicate& aView, const CLogFilterList& aFilterList, TRequestStatus& aStatus); williamr@2: IMPORT_C void ClearDuplicatesL(); williamr@2: // williamr@2: IMPORT_C void RemoveL(TLogId aId); williamr@2: IMPORT_C TBool RemoveL(TRequestStatus& aStatus); williamr@2: // williamr@2: inline TLogRecentList RecentList() const; williamr@2: // williamr@2: private: williamr@2: CLogViewRecent(CLogClient& aClient, TInt aPriority); williamr@2: void ConstructL(MLogViewChangeObserver* aObserver = NULL); williamr@2: void DoRunL(); williamr@2: // williamr@2: TBool DoRemoveL(TRequestStatus& aStatus); williamr@2: // williamr@2: private: williamr@2: TLogRecentList iRecentList; williamr@2: TLogRecentList iCurrentList; williamr@2: TPckgBuf iCurrentListBuf; williamr@2: CLogViewRemoveEventClientOp* iRemove; williamr@2: }; williamr@2: williamr@2: //********************************** williamr@2: // CLogViewDuplicate williamr@2: //********************************** williamr@2: williamr@2: class CLogViewDuplicate : public CLogView williamr@2: /** williamr@2: A view of events that are duplicates of an event in a view of recent events. williamr@2: williamr@2: The view is populated through a call to CLogViewRecent::DuplicatesL(). williamr@2: williamr@2: @see CLogViewRecent::DuplicatesL() williamr@2: @see CLogViewRecent williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CLogViewDuplicate* NewL(CLogClient& aClient, TInt aPriority = CActive::EPriorityStandard); williamr@2: IMPORT_C static CLogViewDuplicate* NewL(CLogClient& aClient, MLogViewChangeObserver& aObserver, TInt aPriority = CActive::EPriorityStandard); williamr@2: IMPORT_C ~CLogViewDuplicate(); williamr@2: // williamr@2: IMPORT_C void RemoveL(TLogId aId); williamr@2: IMPORT_C TBool RemoveL(TRequestStatus& aStatus); williamr@2: // williamr@2: inline TLogId Source() const; williamr@2: // williamr@2: public: williamr@2: // The following are not exported, use CLogViewRecent::DuplicatesL to initialise this view williamr@2: TBool SetEventL(TLogId aId, TRequestStatus& aStatus); williamr@2: TBool SetEventL(TLogId aId, const CLogFilter& aFilter, TRequestStatus& aStatus); williamr@2: TBool SetEventL(TLogId aId, const CLogFilterList& aFilterList, TRequestStatus& aStatus); williamr@2: // williamr@2: private: williamr@2: CLogViewDuplicate(CLogClient& aClient, TInt aPriority); williamr@2: void ConstructL(MLogViewChangeObserver* aObserver = NULL); williamr@2: // williamr@2: TBool DoRemoveL(TRequestStatus& aStatus); williamr@2: // williamr@2: private: williamr@2: TLogId iSourceId; williamr@2: CLogViewRemoveEventClientOp* iRemove; williamr@2: }; williamr@2: williamr@2: #include williamr@2: williamr@2: #endif