diff -r 000000000000 -r ff3acec5bc43 musicplayer_plat/music_content_publisher_plugin_api/inc/mcppluginobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/musicplayer_plat/music_content_publisher_plugin_api/inc/mcppluginobserver.h Thu Dec 17 08:45:05 2009 +0200 @@ -0,0 +1,213 @@ +/* +* Copyright (c) 2008-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: Manages MCP plugins, and content publishing. +* +*/ + + +#ifndef M_MCPPLUGINOBSERVER_H +#define M_MCPPLUGINOBSERVER_H + +class CLiwDefaultMap; +class CMCPPlugin; +class TAknsItemID; + + +/** + * Music Widget and Music Suite Image Destinations. + * + * 9.1 Music Widget has two panels, The left panel contains an image: + * TMCPImageDestination:EMusicWidgetImage1. + * If we publish an empty image here the default icon will be displayed. + * The right panel contains a toolbar with 3 buttons: + * TMCPImageDestination:EMusicWidgetToolbarB1, + * TMCPImageDestination:EMusicWidgetToolbarB2, + * TMCPImageDestination:EMusicWidgetToolbarB3. + * + * 9.1 Music Suite has a top row that displays information about the current + * playing and last played. This row contains an image: + * TMCPImageDestination:EMusicMenuMusicInfoImage1 + */ +enum TMCPImageDestination + { + EMusicWidgetImage1 = 1000 + ,EMusicWidgetToolbarB1 + ,EMusicWidgetToolbarB2 + ,EMusicWidgetToolbarB3 + + ,EMusicMenuMusicInfoImage1 = 1100 + }; + +/** + * Music Widget and Music Suite Text Destinations. + * + * 9.1 Music Widget has two panels, The right panel contains two text items: + * TMCPTextDestination:EMusicWidgetText1, + * TMCPTextDestination:EMusicWidgetDefaultText. + * If we publish a EMusicWidgetDefaultText the toolbar will not be displayed. + * To show the toolbar and the text information row : EMusicWidgetText1 we + * should publish empty text to the EMusicWidgetDefaultText + * + * 9.1 Music Suite has a top row that displays information about the current + * playing and last played. This row contains two lines: + * TMCPTextDestination:EMusicMenuMusicInfoLine1 + * TMCPTextDestination:EMusicMenuMusicInfoLine2 + */ +enum TMCPTextDestination + { + EMusicWidgetText1 = 2000 + ,EMusicWidgetDefaultText + + ,EMusicMenuMusicInfoLine1 = 2100 + ,EMusicMenuMusicInfoLine2 + }; + + +/** + * Music Widget and Music Suite Trigger Destinations. + * + * 9.1 Music Widget has two panels, The left panel contains an image where we + * can install an action: + * TMCPTriggerDestination:EMusicWidgetTrigger1 + * When the toolbar is hiden because there is a default text the panel + * functions as a button where we can install: + * TMCPTriggerDestination:EMusicWidgetTrigger2 + * When there is no default text on the right panel it contains a toolbar with + * 3 buttons where we can install the following actions: + * TMCPTriggerDestination:EMusicWidgetTB1Trigger, + * TMCPTriggerDestination:EMusicWidgetTB2Trigger, + * TMCPTriggerDestination:EMusicWidgetTB3Trigger. + * + * 9.1 Music Suite has a top row that displays information about the current + * playing and last played, when this item is selected the following action + * will be triggered: + * TMCPTriggerDestination:EMusicMenuMusicInfoTrigger + */ +enum TMCPTriggerDestination + { + EMusicWidgetTrigger1 = 3000 + ,EMusicWidgetTrigger2 + ,EMusicWidgetTB1Trigger + ,EMusicWidgetTB2Trigger + ,EMusicWidgetTB3Trigger + + ,EMusicMenuMusicInfoTrigger =3100 + }; + +/** + * Observer interface, to be implemented by the Music Content Publisher. + * This interface is to be used to inform the music content publisher of + * changes on the plugin that need to be propagated to the Music Widget UI + * or the Music suite UI. + * @since S60 5.0 + */ +class MMCPPluginObserver + { +public: + + /** + * Called when an image needs to be updated. + * + * @since S60 5.0 + * @param aPlugin Where the mesage is coming from. + * @param aDestination Where the image is to be placed. + * @param aImagePath Source path of the Image. + */ + virtual void PublishImageL(CMCPPlugin* aPlugin, + TMCPImageDestination aDestination, + const TDesC& aImagePath) = 0; + + /** + * Called when an image needs to be updated. + * + * @since S60 5.0 + * @param aPlugin Where the mesage is coming from. + * @param aDestination Where the image is to be placed. + * @param aBitmapHandle Bitmap handle to the image. + * the bitmaps should be preseverd by the plugins. + * @param aMaskBitmapHandle Mask Bitmap handle for the image. + */ + virtual void PublishImageL(CMCPPlugin* aPlugin, + TMCPImageDestination aDestination, + TInt aBitmapHandle, + TInt aMaskBitmapHandle = NULL) = 0; + + /** + * Called when an image needs to be updated. + * + * @since S60 5.0 + * @param aPlugin Where the mesage is coming from. + * @param aDestination Where the image is to be placed. + * @param aID major and minor Skin ID info. + * @param aFilename fallback mif/mbm file. + * @param aFileBitmapId bitmap id within the fallback file. + * @param aFileMaskId mask id within the fallback file. + * NOTE:This keeps a cache of the skined incons, sizes are + * calculated on the observer based on the widget version. + */ + virtual void PublishImageL(CMCPPlugin* aPlugin, + TMCPImageDestination aDestination, + const TAknsItemID& aID, + const TDesC& aFilename, + const TInt aFileBitmapId, + const TInt aFileMaskId ) = 0; + + /** + * Called when a text needs to be updated. + * + * @since S60 5.0 + * @param aPlugin Where the mesage is coming from. + * @param aDestination Where the text is to be placed. + * @param aText Descriptor containing the text. + */ + virtual void PublishTextL( CMCPPlugin* aPlugin, + TMCPTextDestination aDestination, + const TDesC& aText ) = 0; + + /** + * Called when an action needs to be updated. + * + * @since S60 5.0 + * @param aPlugin Where the mesage is coming from. + * @param aDestination Destination trigger that should launch the action. + * @param aTrigerMap LIW Map containint the action that can be interpreted + * by the specified action handler plugin. + */ + virtual void PublishActionL( CMCPPlugin* aPlugin, + TMCPTriggerDestination aDestination, + CLiwDefaultMap* aTrigerMap ) = 0; + + /** + * Called when a plugin becomes active. + * + * @since S60 5.0 + * @param aPlugin Where the mesage is coming from. + */ + virtual void BecameActiveL( CMCPPlugin* aPlugin ) = 0; + + /** + * Called when a plugin becomes active. + * + * @since S60 5.0 + * @param aDst The image destination. + * @return The size of the image destination. + * NOTE: this should be used to query the size of the image destination. + * Resizing is responsibility of the plugin in the case of + * bitmap handle publishing. + */ + virtual TSize GetImageDestinationSize(TMCPImageDestination aDst) = 0; + + }; + +#endif /*MCPPLUGINOBSERVER_H*/