diff -r 000000000000 -r b8ed18f6c07b mmlibs/mmfw/Effect/inc/mmf/plugin/MmfGlblAudioEffectPlugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmlibs/mmfw/Effect/inc/mmf/plugin/MmfGlblAudioEffectPlugin.h Thu Oct 07 22:34:12 2010 +0100 @@ -0,0 +1,234 @@ + +// MmfGlblAudioEffectPlugin.h + +// Copyright (c) 2005-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: +// + +#ifndef MMFGLBLAUDIOEFFECTPLUGIN_H +#define MMFGLBLAUDIOEFFECTPLUGIN_H + +#include + +/** +@publishedPartner +@released +@file +*/ + +/** +Implementation of CMmfGlobalAudioEffect. +This is the base interface for plugins that provide for global effects. It is intended +to be exclusively called from CMmfGlobalAudioEffect itself. + */ + +class MMmfGlobalAudioImpl + { + friend class CMmfGlobalAudioEffect; + +public: + /** + Release object. + Equivalent of destructor - called to request data to be deleted. + */ + virtual void Release()=0; + +protected: + /* + Provide implementation of CMmfGlobalAudioEffect::Capability() + @param aCurrentOnly + If true, capabilities are for current situation only - see text + @return Capability settings, as given in TCapabilityFlags + @see CMmfGlobalAudioEffect::Capability() + */ + virtual TUint Capability(TBool aCurrentOnly)=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::RequestNotificationL() + @param aEventUid + Uid specifying event for which notification is requested + + @leave KErrNotSupported + If Observer passed during construction was NULL. + The Uid is not recognised. + The feature is simply not supported in this implementation. + @see CMmfGlobalAudioEffect::RequestNotificationL() + */ + virtual void RequestNotificationL(TUid aEventUid)=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::IsEnabled() + @return True if SetEnabledL(ETrue), or similar, has been called on this effect + @see CMmfGlobalAudioEffect::IsEnabled() + */ + virtual TBool IsEnabled() const=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::IsActive() + @return True if the effect is in use + @see CMmfGlobalAudioEffect::IsActive() + */ + virtual TBool IsActive() const=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::SetEnabledL() + @param aValue + If true, enables this specific effect. If false, disables it. + @see CMmfGlobalAudioEffect::SetEnabledL() + */ + virtual void SetEnabledL(TBool aValue)=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::SettingsByUidL() + @return The Uid used by SetSettingsByUidL() + @leave KErrNotSupported + The settings cannot be expressed as a Uid (usually means SetSettingsByUidL() was not the last + thing to change them). + @see CMmfGlobalAudioEffect::SettingsByUidL() + */ + virtual TUid SettingsByUidL() const=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::SetSettingsByUidL() + @param aPresetUid + Uid representing the preset in question + @leave KErrNotSupported + This implementation does not support presets for this effect + @leave KErrUnknown + The value of aUid does not correspond to a known preset + @see CMmfGlobalAudioEffect::SetSettingsByUidL() + */ + virtual void SetSettingsByUidL(TUid aPresetUid)=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::SettingsByDesL() + @return HBufC8 containing current settings + @leave KErrNotSupported + This implementation does not support expressing settings in descriptor form + @see CMmfGlobalAudioEffect::SettingsByDesL() + */ + virtual HBufC8* SettingsByDesL() const=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::SetSettingsByDesL() + @param aParam + Descriptor value to use + @leave KErrNotSupported + This implementation does not support expressing settings in descriptor form + @leave KErrCorrupt + Value in descriptor does not correspond to known format + @see CMmfGlobalAudioEffect::SetSettingsByDesL() + */ + virtual void SetSettingsByDesL(const TDesC8& aParam)=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::KnownPresetsL() + @see CMmfGlobalAudioEffect::KnownPresetsL() + @leave KErrNotSupported + This feature may not be supported in some circumstances + */ + virtual MMmfGlobalAudioPresetList* KnownPresetsL()=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::ExtractValuesL() + Extract the settings into a struct + Note that the implementation should check the size of the supplied package buffer, to check + it is as expected. + @param aPackageBuf + This should be a package buffer wrapping the appropriate class/struct, and will be + specific to a particular CMmfGlobalAudioEffect derivitive. + @leave KErrNotSupported + This will only be supported by some child classes, and even then will not + be supported by all implementations. + @leave KErrArgument + Passed package buffer is not the expected size. + @see CMmfGlobalAudioEffect::ExtractValuesL() + */ + virtual void ExtractValuesL(TDes8& aPackageBuf)=0; + + /** + Provide implementation of CMmfGlobalAudioEffect::SetByValuesL(). + Note that the implementation should check the size of the supplied package buffer, to check + it is as expected. + @param aPackageBuf + This should be a package buffer wrapping the appropriate class/struct, and will be + specific to a particular CMmfGlobalAudioEffect derivitive. + @leave KErrNotSupported + This will only be supported by some child classes, and even then will not + be supported by all implementations. + @leave KErrArgument + Passed package buffer is not the expected size, or individual values are out of range + @see CMmfGlobalAudioEffect::SetByValuesL() + */ + virtual void SetByValuesL(const TDesC8& aPackageBuf)=0; + + /** + Request extension feature. + This is intended to provide additional features, should a particular global effect + need it. In typical use, the global effect will make a call to this interface on + construction. Repeatedly calling this interface will have no additional effect - + if the interface has already been setup internally, then no further activity will + take place. + @param aInterfaceUid + Used to indicate which interface is required. + @return Standard error code. KErrNotSupported is used to indicate that the particular + plugin is used. + */ + virtual TInt CreateCustomInterface(TUid aInterfaceUid)=0; + + + /** + Return previously created extension. + This returns a custom interface, used to provide additional features for a certain + global effect. This should only be used if CreateCustomInterface() has already + been called for the same UID value. This means that any construction for that interface + has already been called, and thus this call cannot fail. Typically the returned class + will be another Mixin.No transfer of ownership is implied. + + @param aInterfaceUid + Used to indicate which interface is required. + @return The requested interface, or NULL if not known. + @see CreateCustomInterface() + */ + virtual TAny* CustomInterface(TUid aInterfaceUid)=0; + + + /** + Pass destructor key. + Called on construction so plugin takes responsibility to call REComSession::DestroyedImplementation() + @param aDestructorKey + The Uid returned by REComSession::CreateImplementationL() or similar + */ + virtual void PassDestructorKey(TUid aDestructorKey)=0; + + /** + Complete construction. + Pass additional values from the construction phase, used subsequently by the plugin. + @param aParent + The CMmfGlobalAudioEffect that created this object + @param aObserver + Observer as passed to CMmfGlobalAudioEffect::BaseConstructL() + @see CMmfGlobalAudioEffect::BaseConstructL() + */ + virtual void CompleteConstructL(CMmfGlobalAudioEffect* aParent, MMmfGlobalAudioEffectObserver* aObserver)=0; + +private: + static MMmfGlobalAudioImpl* NewL(TUid aImplementationUid, + CMmfGlobalAudioEffect* aParent, + MMmfGlobalAudioEffectObserver* aObserver); + + }; + + +#endif // MMFGLBLAUDIOEFFECTPLUGIN_