diff -r 000000000000 -r ff3b6d0fd310 satui/satplugin/aisatplugininc/caisatplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/satui/satplugin/aisatplugininc/caisatplugin.h Tue Feb 02 01:11:09 2010 +0200 @@ -0,0 +1,257 @@ +/* +* Copyright (c) 2006-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: Plug-in main class +* +*/ + + +#ifndef CAISATPLUGIN_H +#define CAISATPLUGIN_H + +#include +#include +#include + +#include "mpluginapi.h" +#include "caisatengine.h" + +class MAiContentObserver; +class MAiContentItemIterator; + +/** + * Plug-in main class + * + * @since S60 v3.2 + */ +class CAiSatPlugin : public CAiContentPublisher, + public MAiPropertyExtension, + public MPluginAPI + { + +public: + + /** + * Part of the two phased constuction + */ + static CAiSatPlugin* NewL(); + + /** + * Destructor + */ + ~CAiSatPlugin(); + + /** + * Publishes SAT Set Up Idle Mode Text + */ + void PublishSatL(); + +// from base class CAiContentPublisher + + /** + * From CAiContentPublisher + * The method is called by the framework to request the plug-in free all + * memory and CPU resources and close all its open files, e.g. the plug-in + * should unload its engines due backup operation. The method transits the + * plug-in to "Idle" state. + * + * @param aReason Reason for state change, see TAiTransitionChange. + */ + void Stop( TAiTransitionReason aReason ); + + /** + * From CAiContentPublisher + * The method is called by the framework to instruct plug-in that it is + * allowed to consume CPU resources, e.g plug-in is able to run timers, + * perform asynchronous operations, etc. The method transits the plug-in + * to "Alive" state. + * + * @param aReason Reason for state change, see TAiTransitionChange. + */ + void Resume( TAiTransitionReason aReason ); + + /** + * From CAiContentPublisher + * The method is called by the framework to instruct plug-in that it is + * not allowed to consume CPU resources, e.g plug-in MUST stop each + * timers, cancel outstanding asynchronous operations, etc. The method + * transits the plug-in to "Suspendend" state. + * + * @param aReason Reason for state change, see TAiTransitionChange. + */ + void Suspend( TAiTransitionReason aReason ); + + /** + * From CAiContentPublisher + * Adds the content observer / subscriber to plug-in. The plug-in MUST + * maintain a registry of subscribers and send notification to all them + * whenever the plug-in changes state or new content available. + * + * @param aObserver Content observer to register. + */ + void SubscribeL( MAiContentObserver& aObserver ); + + /** + * From CAiContentPublisher + * Configures the plug-in. + * Plug-ins take ownership of the settings array, so it must either + * store it in a member or free it. Framework has put the array in cleanup + * stack so the plugin shouldn't do that. + * If this leaves, the plug-in will be destroyed by AI FW. + * Plug-in must support LaunchByValue-event even if normal shortcuts don't + * work. The only allowed serious enough leave is KErrNotFound from CenRep. + * + * @param aSettings Setting items defined in the UI definition. + */ + void ConfigureL( RAiSettingsItemArray& aSettings ); + + /** + * From CAiContentPublisher + * Returns interface extension. In Series 60 3.1 only event & property + * extensions are supported. See MAiEventExtension & MAiPropertyExtension + * interfaces. + * + * @param aUid UID of the extension interface to access. + * @return The extension interface. Actual type depends on the passed aUid + * argument. + */ + TAny* Extension( TUid aUid ); + +// from base class MAiPropertyExtension + + /** + * From MAiPropertyExtension. + * Read property of publisher plug-in. + * + * @param aProperty Identification of property. + * @return Pointer to property value. + */ + TAny* GetPropertyL( TInt aProperty ); + + /** + * From MAiPropertyExtension. + * Write property value. + * + * @param aProperty Identification of property. + * @param aValue Contains pointer to property value. + */ + void SetPropertyL( TInt aProperty, TAny* aValue ); + + /** + * Receives a notification of the content update event + */ + void NotifyContentUpdate(); + +private: + + /** + * Constructor to use in the object creation. + * Initializes the necessary data. + */ + CAiSatPlugin(); + + /** + * Part of the two phased construction + */ + void ConstructL(); + + /** + * Update idle area when plug in reload. + */ + void UpdateSatL(); + + /** + * Publish a icon to the idle area. + * + * @param aObserver The Active Idle content observer. + * @param aIcon The icon to be published. + * @return The error code. + */ + TInt PublishIcon( MAiContentObserver& aObserver, CGulIcon* aIcon ); + + /** + * Clean setup idle mode icon. + * + * @param aObserver The Active Idle content observer. + * @return The error code. + */ + TInt CleanIcon( MAiContentObserver& aObserver ); + + /** + * Publish a SetUpIdleModeText string. + * + * @param aObserver The Active Idle content observer. + * @param aContent The SetUpIdleModeText string would be published. + * @return The error code. + */ + TInt PublishText( MAiContentObserver& aObserver, + const TDesC& aText ); + + /** + * Clean setup idle mode text. + * + * @param aObserver The Active Idle content observer. + * @return The error code. + */ + TInt CleanText( MAiContentObserver& aObserver ); + +private: // data + + /** + * Iterator for plugin content + * Own + */ + MAiContentItemIterator* iContent; + + /** + * Iterator for plugin resources + * Own + */ + MAiContentItemIterator* iResources; + + /** + * Iterator for plugin events + * Own + */ + MAiContentItemIterator* iEvents; + + /** + * Plugin engine + * Own + */ + CAiSatEngine* iEngine; + + /** + * Array of content observers + */ + RPointerArray iObservers; + + /** + * Information about the content publisher (this plug-in) + */ + TAiPublisherInfo iInfo; + + /** + * Whether the icon is the same with previous one. + */ + TBool iDupIcon; + + /** + * Whether the text is the same with previous one. + */ + TBool iDupText; + }; + +#endif // CAISATPLUGIN_H + +