diff -r 8ee96d21d9bf -r 7e0eff37aedb gssettingsuis/Gs/GSFramework/inc/GSEComNotifier.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gssettingsuis/Gs/GSFramework/inc/GSEComNotifier.h Wed Sep 01 12:20:44 2010 +0100 @@ -0,0 +1,141 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: GS utilities. +* +*/ + + +#ifndef GSECOMNOTIFIER_H +#define GSECOMNOTIFIER_H + +#include +#include + + + +/** + * Utility class to capsulate active object observing ECOM events. + * MGSEComObserver is provided as easy callback when GS related ECOM events + * occur. + * + * @lib GSFramework.lib + * @since S60 5.0 + */ +class MGSEComObserver + { +public: + + /** + * Not really used yet. To provide more extendability. + */ + enum TEComEvent + { + EPluginRemoved, + EPluginAdded + }; + +public: + virtual void HandleEComEvent( TEComEvent aEvent ) = 0; + }; + + +/** + * Utility class capsulating active object for observing ECOM events. + * + * @lib GSFramework.lib + * @since S60 5.0 + */ +NONSHARABLE_CLASS( CGSEComNotifier ) : public CActive + { +public: + + /** + * Two-phased constructor. + * + * @param aObserver Callback object. + * @param aImplInfo Initial list of ECOM interfaces against which new list + * is compared when ECOM events occur. + */ + IMPORT_C static CGSEComNotifier* NewL( MGSEComObserver* aObserver, + RImplInfoPtrArray aImplInfo ); + + /** + * Destructor. + */ + IMPORT_C virtual ~CGSEComNotifier(); + +protected: // from CActive + + /** + * See base class. + */ + void DoCancel(); + + /** + * See base class. + */ + void RunL(); + + /** + * See base class. + */ + TInt RunError( TInt aError ); + +protected: + +private: + + /** + * C++ Constructor. + * + * @param aObserver Callback object. + * @param aImplInfo Initial list of ECOM interfaces against which new list + * is compared when ECOM events occur. + */ + CGSEComNotifier( MGSEComObserver* aObserver, + RImplInfoPtrArray aImplInfo ); + + /** + * 2nd phase constructor. + */ + void ConstructL(); + + /** + * Issues new request. + */ + void IssueRequest(); + + /** + * @return Difference between old and new list of GS-plugins. Negative + * number means plugins are removed, positive means plugins are + * added, 0 means no change in plugin count. + */ + TInt PluginCountDeltaL(); + +private: // data + + // Callback. + MGSEComObserver* iObserver; + + // ECom handle. + REComSession iEComSession; + + // Stored original plugin info. This will be compared against latest info + // for any changes. + RImplInfoPtrArray iOriginalImplInfo; + + }; + + +#endif // GSECOMNOTIFIER_H