williamr@2: /* williamr@2: * Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@2: * under the terms of the License "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@2: * 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: Declaration of CActiveFavouritesDbNotifier. williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef ACTIVE_FAVOURITES_DB_NOTIFIER_H williamr@2: #define ACTIVE_FAVOURITES_DB_NOTIFIER_H williamr@2: williamr@2: // INCLUDES williamr@2: williamr@2: #include williamr@2: #include williamr@4: #include williamr@2: williamr@2: // FORWARD DECLARATION williamr@2: williamr@2: class RFavouritesDb; williamr@2: class MFavouritesDbObserver; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * ActiveFavouritesDbNotifier is an Active object encapsulating a favourites database notifier. williamr@2: * Once this notifier is Start()-ed, it keeps watching the database and notifies the williamr@2: * observer, until the database is closed by all clients (i.e. released by williamr@2: * DBMS), or it is DoCancel()-led. williamr@2: */ williamr@2: class CActiveFavouritesDbNotifier : public CActive williamr@2: { williamr@2: public: // Constructor and destructor williamr@2: williamr@2: /** williamr@2: * Constructor. williamr@2: * @since 0.9 williamr@2: * @param aDb The favourites database to watch for. williamr@2: * @param aObserver The Observer to be notified about database events. williamr@2: */ williamr@2: IMPORT_C CActiveFavouritesDbNotifier( RFavouritesDb& aDb, MFavouritesDbObserver& aObserver ); williamr@2: williamr@2: /** williamr@2: * Destructor. williamr@2: */ williamr@2: IMPORT_C virtual ~CActiveFavouritesDbNotifier(); williamr@2: williamr@2: protected: // from CActive williamr@2: williamr@2: /** williamr@2: * Invoked when the outstanding request completes. williamr@2: * @since 0.9 williamr@2: * @return void williamr@2: */ williamr@2: IMPORT_C void RunL(); williamr@2: williamr@2: /** williamr@2: * Cancel any outstading request. It's implementation of the Cancel protocol; williamr@2: * @since 0.9 williamr@2: * @return void williamr@2: */ williamr@2: IMPORT_C void DoCancel(); williamr@2: williamr@2: public: // new methods williamr@2: williamr@2: /** williamr@2: * Start the notifier. The notification request is automatically williamr@2: * renewed until it is cancelled, or the database is closed by williamr@2: * all clients (i.e. released by DBMS). williamr@2: * @since 0.9 williamr@2: * @return Error code. williamr@2: */ williamr@2: IMPORT_C TInt Start(); williamr@2: williamr@2: private: williamr@2: williamr@2: /** williamr@2: * Request database change notification from the Favourites Engine. williamr@2: * @since 0.9 williamr@2: * @return void williamr@2: */ williamr@2: void NotifyChange(); williamr@2: williamr@2: private: // data williamr@2: williamr@2: RFavouritesDbNotifier iNotifier; ///< Notifier object. williamr@2: RFavouritesDb& iDb; ///< Handle to the database. williamr@2: MFavouritesDbObserver* iObserver; ///< Pointer to observer. williamr@2: }; williamr@2: williamr@2: #endif williamr@2: williamr@2: // End of File