// AGMOBSCT.H
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//

#if !defined (__AGMOBSCT_H__)
#define __AGMOBSCT_H__

#if !defined(__AGMOBSRV_H__)
#include "agmobsrv.h"
#endif

#if !defined(__S32STRM_H__)
#include <s32strm.h>
#endif

//--------------------------------------CAgnObsInfo---------------------------------------------
class CAgnObsInfo : public CBase
	{
public:
	static CAgnObsInfo* NewL();
	~CAgnObsInfo();
	void SetObserverName(const TFileName& aObserverName);
	void SetObserver(CAgnObserver* aObserver);	
	void SetLibrary(RLibrary aLibrary);   
	void SetIsLoaded(TBool aIsLoaded);
	const TFileName& ObserverName() const;
	CAgnObserver* Observer() const;
	RLibrary Library() const;
	TBool IsLoaded() const;
private:
	void ConstructL();
private:
	TFileName		iObserverName;
	CAgnObserver*	iObserver;
	RLibrary		iLibrary;
	TBool			iIsLoaded; // i.e. does it have lots of dosh
	};

//--------------------------------------CAgnObsController------------------------------------------

class CAgnObsController : public CBase
	{
public:
	enum {EGranularity=32}; // Indicates array granularity

	static CAgnObsController* NewL();
	~CAgnObsController();
	void Enabled(TBool aEnabled);
	TBool IsEnabled();
	TInt IsInstalled(const TFileName& aObserverName);
	void InstallObserverL(const TFileName& aObserverName,const CAgnObserver* aObserver);
	CAgnObsInfo* UninstallObserver(TInt aObserverPosition);
	void UndoUninstallObserverL(CAgnObsInfo* aInfo);
	CAgnObserver* LoadObserverL(const TFileName& aObserverName);
	TInt NumberOfObserversInstalled();
	TInt NumberOfObserversLoaded();
	TInt IsLoaded(const TFileName& aObserverName);
	void Send(TInt aFunction,CAgnEntry* aEntry);
	void Send(TInt aFunction,CAgnTodoList* aTodoList);
	void Reset();
	void ExternalizeL(RWriteStream& aStream) const;
	void InternalizeL(RReadStream& aStream);
private:
	CAgnObsController();
	void ConstructL();
private:
	CArrayPtrFlat<CAgnObsInfo>* iObserverList;
	TBool iEnabled;
	};

#endif





