diff -r 61bc0f252b2b -r bac7acad7cb3 camera_plat/active_palette_2_api/inc/activepalette2ui.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camera_plat/active_palette_2_api/inc/activepalette2ui.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,275 @@ +/* +* Copyright (c) 2007-2009 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: Interface class for AP2 +* +*/ + + +/** + * @file ActivePalette2UI.h + * Interface class for AP2 + */ + +#ifndef _ACTIVE_PALETTE_2_UI_H +#define _ACTIVE_PALETTE_2_UI_H + + +#include + +class CCoeControl; +class CHuiControl; +class CBitmapContext; +class MActivePalette2Observer; +class TActivePalette2NavigationKeys; +class TActivePalette2ItemVisible; + +/** +* The interface for the Active Palette. The ActivePalette2Factory is used to instantiate +* objects that provide this interface. +*/ +class MActivePalette2UI + { +public: + /** + * Installs an item to the AP. + * @param aItemVisible The ID and visibility of the new item + * @param aPluginUid The UID of the plugin to handle this item + * @param aCustomDataDes Descriptor data to pass to the plugin + * @return Standard error code + */ + virtual TInt InstallItemL(const TActivePalette2ItemVisible& aItemVisible, + const TUid& aPluginUid, + const TDesC8& aCustomDataDes) = 0; + + /** + * Installs an item to the AP. + * @param aItemVisible The ID and visibility of the new item + * @param aPluginUid The UID of the plugin to handle this item + * @param aCustomDataInt Integer data to pass to the plugin + * @return Standard error code + */ + virtual TInt InstallItemL(const TActivePalette2ItemVisible& aItemVisible, + const TUid& aPluginUid, + TInt aCustomDataInt = 0) = 0; + + /** + * Installs an item to the AP. + * @param aItemVisible The ID and visibility of the new item + * @param aPluginUid The UID of the plugin to handle this item + * @param aCustomDataInt Integer data to pass to the plugin + * @param aCustomDataDes Descriptor data to pass to the plugin + * @return Standard error code + */ + virtual TInt InstallItemL(const TActivePalette2ItemVisible& aItemVisible, + const TUid& aPluginUid, + TInt aCustomDataInt, + const TDesC8& aCustomDataDes) = 0; + + /** + * Removes an item + * @param aItemId The resource ID of the item to install + * @return Standard error code + */ + virtual TInt RemoveItem(TInt aItemId) = 0; + + /** + * Sets the visibility of an item + * @param aItemId The item's ID + * @param aIsVisible The visibility state + * @return Standard error code + */ + virtual TInt SetItemVisibility(TInt aItemId, TBool aIsVisible) = 0; + + /** + * Find out the visibility of a specified item + * @param aItemId The item's ID + * @param aIsVisible On return, indicates the visibility of the item + * @return Standard error code + */ + virtual TInt GetItemVisibility(TInt aItemId, TBool& aIsVisible) const = 0; + + /** + * Gets the list of currently installed items. + * The list will include all items, both visible and invisible. + * @see SetItemList() + * + * @param aItemVisibleList On return, will contain the item list. + * @return Standard error code + */ + virtual TInt GetItemList(RArray& aItemVisibleList) const = 0; + + /** + * Sets the order and visibility of installed items. + * aItemVisibleList may be incomplete (i.e. not all installed item IDs must be present). + * In this case, the non-specified items will be shuffled down to the end of the AP, + * whilst retaining their relative order. + * If the item that was in focus before the call is still visible, it retains the focus, + * else the first visible item gains focus. + * + * @see GetItemList() + * + * @param aItemVisibleList The list describing the order and visibility of the items + * @return Standard error code + */ + virtual TInt SetItemList(const RArray& aItemVisibleList) = 0; + + /** + * Sends a message to the specified item's handling plugin + * @param aItemId The item's ID + * @param aMessageId Message ID + * @param aDataDes Custom data passed as a descriptor + * @return Error code + */ + virtual TInt SendMessage(TInt aItemId, TInt aMessageId, const TDesC8& aDataDes) = 0; + + /** + * Sends a message to the specified item's handling plugin + * @param aItemId The item's ID + * @param aMessageId Message ID + * @param aDataInt Custom data passed as an integer + * @return Standard error code + */ + virtual TInt SendMessage(TInt aItemId, TInt aMessageId, TInt aDataInt) = 0; + + /** + * Gets the currently focussed item + * @param aItemId On return, will contain the ID of the item in focus + * @return Standard error code + */ + virtual TInt GetCurrentItem(TInt& aItemId) const = 0; + + /** + * Sets the currently focussed item + * @param aItemId The ID of the item to focus + * @return Standard error code + */ + virtual TInt SetCurrentItem(TInt aItemId) = 0; + + /** + * Hides or shows the palette. + * After calling this function, and until the transition (if any) is complete, the AP will + * not accept any user input. + * + * @see SetPaletteVisibilityAnimationDuration() + * @see GetPaletteVisibilityAnimationDuration() + * + * @param aVisible If ETrue, shows the AP, otherwise hides it + * @param aAnimated Whether the transition should be animated. If not, the change is made as soon + * as aDelayedStartMilliseconds has passed + * @param aDelayedStartMilliseconds An optional pause before the transition begins. + * @return Standard error code + */ + virtual TInt SetPaletteVisibility(TBool aVisible, TBool aAnimated, TInt aDelayedStartMilliseconds = 0) = 0; + + /** + * Sets the duration of the SetPaletteVisibility animation. + * + * @see SetPaletteVisibility() + * @see GetPaletteVisibilityAnimationDuration() + * + * @param aTimeInMilliseconds How long the animation should take, in milliseconds + * @return Standard error code + */ + virtual TInt SetPaletteVisibilityAnimationDuration(TInt aTimeInMilliseconds) = 0; + + /** + * Gets the duration of the SetPaletteVisibility animation. + * + * @see SetPaletteVisibility() + * @see SetPaletteVisibilityAnimationDuration() + * + * @param aTimeInMilliseconds On return, will contain how long the animation will take, in milliseconds + * @return Standard error code + */ + virtual TInt GetPaletteVisibilityAnimationDuration(TInt& aTimeInMilliseconds) const = 0; + + /** + * Move the AP. + * @param aTopLeft Point specifying where to move the AP to + */ + virtual void LocateTo(const TPoint& aTopLeft) = 0; + + /** + * Returns the top left point of the AP + * @return A TPoint indicating the top left point of the AP + */ + virtual TPoint Location() const = 0; + + /** + * Returns the underlying CCoeControl, if any. + * @return A valid CCoeControl pointer if the underlying implementation is a CCoeControl; NULL otherwise. + */ + virtual CCoeControl* CoeControl() = 0; + + /** + * Returns the underlying CHuiControl, if any. + * @return A valid CHuiControl pointer if the underlying implementation is a CHuiControl; NULL otherwise. + */ + virtual CHuiControl* HuiControl() = 0; + + /** + * Sets the graphics context to draw to. + * If called with aGc being non-NULL, the AP will be rendered to the supplied context + * in future drawing operations. If called with NULL, the screen's GC will be used instead. + * Calls to this will only have an effect if a CCoeControl-based AP has been created. + * + * @see RenderActivePalette() + * + * @param aGc The graphics context to draw to + */ + virtual void SetGc(CBitmapContext* aGc = NULL) = 0; + + /** + * Forces the AP to draw itself to the supplied aRect. + * Uses the context previously set by SetGc, if any; uses the screen's context otherwise. + * Calls to this will only have an effect if a CCoeControl-based AP has been created. + * + * @see SetGc() + * + * @param aRect The rect to render to + */ + virtual void RenderActivePalette(const TRect& aRect) const = 0; + + /** + * Sets the active palette observer used for callbacks. Calls to this function replace the previously + * set observer. SetObserver(NULL) may be called to remove the previously set observer without specifying + * a new observer + * + * @param aObserver The new observer to use + */ + virtual void SetObserver(MActivePalette2Observer* aObserver) = 0; + + /** + * Gets a list of available external plugins. + * + * @param aPluginList On return, will contain a list a valid plugin UIDs + * @return Standard error code + */ + virtual TInt GetAvailablePlugins(RArray& aPluginList) const = 0; + + /** + * Sets the keys the user will press to navigate the AP. This sets the scancodes responded to when + * CCoeControl::OfferKeyEvent, CHuiControl::OfferEvent or similar are called. + * + * @param aNavigationKeys The new navigation keys + */ + virtual void SetNavigationKeys(const TActivePalette2NavigationKeys& aNavigationKeys) = 0; + + /** + * Destructor. Will clean up all installed plugins. + */ + virtual ~MActivePalette2UI() {}; +}; + +#endif // _ACTIVE_PALETTE_2_UI_H