diff -r 000000000000 -r 2f259fa3e83a classicui_pub/application_framework_api/inc/AknAppUi.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/classicui_pub/application_framework_api/inc/AknAppUi.h Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,870 @@ +/* +* Copyright (c) 2002-2007 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 __AKNAPPUI_H__ +#define __AKNAPPUI_H__ + +// INCLUDES +#include +#include +#include +#include +#include +#include + +// FORWARD DECLARATIONS +class CEikButtonGroupContainer; +class CAknAppShutter; +class CAknAppUiExtension; +class CAknWsEventMonitor; +class CAknKeySoundSystem; +class CAknAppUiBaseExtension; +class CAknTouchPane; +class CAknToolbar; +class CAknPointerEventModifier; + +// MACROS +#define iAvkonAppUi ((CAknAppUi*)CEikonEnv::Static()->EikAppUi()) +#define iAvkonAppUiBase ((CAknAppUiBase*)CEikonEnv::Static()->EikAppUi()) + +/** +* Avkon key resolver interface +* +* @since S60 3.1 +*/ +class MAknAliasKeyCodeResolver + { +public: + /** + * Resolves keyboard layout dependent keycode for the given event + * + * @since S60 3.1 + * @param aCode reference to variable to contain new keycode + * @param aKeyEvent reference to original, complete, event + * @param aType indicating original event type + * @return KErrNone on success, otherwise system wide error codes + */ + virtual TInt GetAliasKeyCode(TUint& aCode, const TKeyEvent& aKeyEvent,TEventCode aType)=0; + }; + +// CLASS DECLARATION + +/** +* Abstract Avkon application UI base class +* +* @since S60 3.0 +*/ +class CAknAppUiBase : public CEikAppUi + { +private: + friend class CAknAppUi; + enum + { + EAppOrientationSpecifiedFlag = 0x00010000, // In area reserved for System Guis + EAppOrientationLandscapeFlag = 0x00020000, + EAppOrientationAutomaticFlag = 0x00040000, + EAknEnableSkinFlag = 0x00080000, + // Since 3.0 + EAknDisableHighlightAnimationFlag = 0x00100000, + EAknEnableMSKflag = 0x00200000, + /** + * When enabled, avkon does not complete startup effect + * application has to do it by itself. + * + * @since S60 3.2 + * + */ + EAknExplicitStartupEffectCompletionFlag = 0x00400000, + + /** + * Application supports touch (doesn't need keyboard). If the flag + * is missing and compatibility mode is enabled in a device, + * application is run in a compatibility mode (QVGA window with a + * virtual keypad. + * + * @since S60 5.0 + */ + EAknTouchCompatibleFlag = 0x00800000, + + /** + * Application supports single click. + * + * @since S60 5.2 + */ + EAknSingleClickCompatibleFlag = 0x01000000 + }; + + public: + + enum TAppUiOrientation + { + /** + * Use the default device screen rotation of the product for this + * application. This is the default rotation setting for an + * application, and it should be used by nearly all applications. + */ + EAppUiOrientationUnspecified, + /** + * Use a portrait screen rotation for this application. + * This should only be used when an application specifically wants + * portrait rotation. The device will select an appropriate portrait + * rotation, if one is available. + */ + EAppUiOrientationPortrait, + /** + * Use a landscape screen rotation for this application. + * This should only be used when an application specifically wants + * landscape rotation. The device will select an appropriate landscape + * rotation, if one is available. + */ + EAppUiOrientationLandscape, + /** + * Use the normal device screen rotation for this application. + * Both portrait and landscape screen rotations are possible. The + * application rotation follows device screen rotation. + */ + EAppUiOrientationAutomatic + }; + enum + { + /** + * Flag indicating that default skin parameters should be provided by + * UI controls created within the scope of this AppUi instance. + * This value (or binary combination with some other values) should + * be given as a parameter to BaseConstructL in case + * the application wants to enable default skin parameters for all + * the Avkon controls supporting them. + * + * Note: The value can be queried by using + * AknsUtils::AvkonSkinEnabled() from AknSkins.lib. + * + * @since S60 2.0 + */ + EAknEnableSkin = EAknEnableSkinFlag, + EAppOrientationPortrait = EAppOrientationSpecifiedFlag, + EAppOrientationLandscape = EAppOrientationSpecifiedFlag + | EAppOrientationLandscapeFlag, + EAppOrientationAutomatic = EAppOrientationSpecifiedFlag + | EAppOrientationAutomaticFlag, + // Since 3.0 + EAknDisableHighlightAnimation = EAknDisableHighlightAnimationFlag, + // Since 3.1 + EAknEnableMSK = EAknEnableMSKflag, + // Since 3.2 + EAknExplicitStartupEffectCompletion = EAknExplicitStartupEffectCompletionFlag, + // Since 5.0 + EAknTouchCompatible = EAknTouchCompatibleFlag, + // Since 5.2 + EAknSingleClickCompatible = EAknSingleClickCompatibleFlag + }; + enum TKeyEventFlag + { + EDisableSendKeyShort = 0x01, // Short press of send key + EDisableSendKeyLong = 0x02 // Long press of send key + }; + +public: + /** + * Destructor. + */ + IMPORT_C ~CAknAppUiBase(); + + /** + * C++ Default constructor. + */ + IMPORT_C CAknAppUiBase(); +public: + + /** + * Initialises this Avkon base app UI with standard values. + * @c aAppUiFlags values are common with + * @c CEikAppUi::BaseConstructL(aAppUiFlags). + * @param aAppUiFlags Application user interface flags. + */ + IMPORT_C void BaseConstructL( TInt aAppUiFlags ); + + /** + * Handles changes in keyboard focus when an application switches to, + * or from, the foreground. This function calls + * @c CEikAppUi::HandleForegroundEventL. + * @param aForeground @c ETrue if the application is in the foreground, + * otherwise @c EFalse. + */ + IMPORT_C void HandleForegroundEventL(TBool aForeground); + +public: // From CEikAppUi + + /** + * From @c CEikAppUi. Completes construction. The implementation of + * @c ConstructL() in @c CAknAppUiBase simply calls @c BaseConstructL(). + */ + IMPORT_C void ConstructL(); // virtual + + /** + * From @c CEikAppUi. Closes the app UI. + */ + IMPORT_C void Exit(); //virtual + + /** + * From @c CEikAppUi. Sets whether the windows are faded. + * @param aFaded @c ETrue if windows are faded, otherwise windows are + * unfaded. + */ + IMPORT_C void SetFadedL(TBool aFaded); // virtual + + /** + * From @c CEikAppUi. Handles a change to the application's resources which + * are shared across the environment. This function calls + * @c CEikAppUi::HandleResourceChangeL except when @c aType is + * @c KEikDynamicLayoutVariantSwitch. + * @param aType The type of resources that have changed. + */ + IMPORT_C void HandleResourceChangeL(TInt aType); // virtual + + /** + * From @c CEikAppUi. Gets the total area of the screen available to the + * application. This includes the space that is available for a toolbar, + * toolband or title band, if the application requires them. + * @return The total area of the screen available to the application. + */ + IMPORT_C TRect ApplicationRect() const; //virtual + +public: // from CCoeAppUiBase + + /** + * From @c CCoeAppUiBase. Performs pre-exit processing by calling + * @c CEikAppUi::PrepareToExit() to ensure the application will exit + * cleanly. + */ + IMPORT_C void PrepareToExit(); +public: // New Functions + /** + * Determines whether the system is faded. + * @return @c ETrue if system is faded + */ + IMPORT_C TBool IsFaded() const; + + /** + * Returns the object which allows events to be spyed upon in addition to + * normal event handling. + * @return Pointer to window server event monitor object. + */ + IMPORT_C CAknWsEventMonitor* EventMonitor() const; + + /** + * Gets a pointer to KeySound API object. + * @return Pointer to KeySound API object. + */ + IMPORT_C CAknKeySoundSystem* KeySounds() const; + + /** + * Determines whether the application is full screen application. + * @return @c ETrue if the application is full screen application. + */ + IMPORT_C TBool IsFullScreenApp() const; + + /** + * Determines whether the application is layout aware. + * @return @c ETrue if the application is layout aware. + */ + IMPORT_C TBool IsLayoutAwareApp() const; + + /** + * Determines whether the application has MSK enabled. + * @return @c ETrue if the application has MSK enabled. + * + * @since 3.1 + */ + TBool IsMSKEnabledApp() const; + + /** + * Determines whether the application is closing. + * In practice this means that CEikonEnv has been destroyed. + * @return @c ETrue if the application is closing. + * + * @since 3.2 + */ + TBool IsAppClosing() const; + + /** + * Set application layout aware. + * @param aLayoutAwareApp @c ETrue if the application is layout aware, + * @c EFlase otherwise. + */ + IMPORT_C void SetLayoutAwareApp(TBool aLayoutAwareApp); + + /** + * Determines whether the application is foreground. + * @return @c ETrue if the application is foreground. + */ + IMPORT_C TBool IsForeground() const; + + /** + * Determines whether the application is partially foreground. + * @return @c ETrue if the application is partially foreground. + */ + IMPORT_C TBool IsPartialForeground() const; + + /** + * Gets the application screen orientation. + * @return Application screen orientation. + */ + IMPORT_C TAppUiOrientation Orientation() const; + + /** + * Tests whether it is possible for this app to have a + * practical effect on the screen orientation, through + * SetOrientationL(). + * @since S60 3.2 + * @return ETrue if SetOrientationL can change the orientation, EFalse otherwise. + */ + IMPORT_C TBool OrientationCanBeChanged() const; + + /** + * Sets the application screen orientation. + * Note: this API has no effect on non-full-screen app UIs. + * @param aOrientation application screen orientation. + */ + IMPORT_C void SetOrientationL(TAppUiOrientation aOrientation); + + /** + * Find the window group ID of the application below this application. + * @return the window group ID of the application below this application. + */ + TInt FindAppWgIdBelowMeL(); + + /** + * Simply return @c KEikPartialForeground if @c aPartialFg == @c ETrue, + * otherwise if @c aForeground == @c ETrue then return @c EEventFocusGained + * else return @c EEventFocusLost. + * @return if @c aPartialFg then return KEikPartialForeground. + */ + TInt EventForForegroundState(TBool aPartialFg, TBool aForeground); + + /** + * Determines whether the thread owning this application window group is + * foreground. + * @return @c ETrue if the thread owning this application window group is + * foreground, @c EFlase otherwise. + */ + TBool ThreadIsForeground() const; + + /** + * Simulates an event being received from wserv + * @param aEvent the event id being simulated. + */ + void SimulateWsEventL(TInt aEvent); + + /** + * Gets the application local zoom + * @return Application local zoom + * @since 3.1 + */ + IMPORT_C TAknUiZoom LocalUiZoom() const; + + /** + * Sets the application local zoom. However, in order to have any + * effect, it may be necessary to make a subsequent call to + * @c ApplyLayoutChangeL. + * + * @param aZoom application local zoom + * @since 3.1 + */ + IMPORT_C void SetLocalUiZoom(TAknUiZoom aZoom); + + /* + * Can be used to apply changes to settings that affect the current layout, + * such as changes to the local zoom. Optionally reports the change + * to the layout to all controls in the application. There are a number of + * different possible usages of this API: + *
    + *
  • Can be used to immediately change the local zoom, by passing in + * ETrue for the reporting parameter.
  • + *
  • Can be called before BaseConstructL without leaving, the effect + * is the same as passing EFalse for the reporting parameter, as + * the correct layout data is picked up later on during control layout.
  • + *
  • Can be used by implementors of the + * @c MAknSettingCacheUpdatePlugin interface, in order to set the local + * zoom whilst updating the settings cache. By passing in EFalse for the + * reporting parameter, the layout switch is deferred to the usual + * processing in @c UpdateSettingCacheAndForwardEventL.
  • + *
  • Can be used by controls that require a different local zoom to + * the underlying application, such as a dialog. By not + * reporting the change during construction, the dialog will lay itself out + * correctly. However, the dialog must then report the change back to the + * app zoom level when it closes, ignoring the resulting resource changed + * layout switch event.
  • + *
+ * + * @param aReportChange if this is true, then the layout event will be + * reported to controls on the control stack + * @since 3.1 + */ + IMPORT_C void ApplyLayoutChangeL(TBool aReportChange); + + /** + * Checks if application UI has full or partial foreground status. + * @since 3.2 + * @return ETrue if application UI has full or partial foreground status. + * Otherwise EFalse. + */ + TBool HasFullOrPartialForeground() const; + + /** + * Sets the flags for default key event handling + * @since 5.0 + * @param aFlags which can be a combination of flags + * declared in enumeration TKeyEventFlag + */ + IMPORT_C void SetKeyEventFlags( const TInt aFlags ); + + /** + * Returns a pointer to appui's pointer event modifier. This method is + * intended for internal usage only. + * + * @since S60 v5.0 + * @return pointer event modifier + */ + IMPORT_C CAknPointerEventModifier* PointerEventModifier(); + + /** + * Checks if the application is touch compatible i.e. it has been + * constructed with the flag EAknTouchCompatible. + * + * @since S60 v5.0 + * @return ETrue if the application is touch compatible + */ + IMPORT_C TBool IsTouchCompatible() const; + + /** + * Checks if the application is single click compatible i.e. + * it has been constructed with the flag EAknSingleClickCompatible. + * + * @since S60 v5.0 + * @return ETrue if the application is single click compatible + */ + IMPORT_C TBool IsSingleClickCompatible() const; + +protected: // From CCoeAppUiBase + /** + * From @c CCoeAppUiBase. + * Calls CCoeAppUi::HandleScreenDeviceChangedL(). + */ + IMPORT_C virtual void HandleScreenDeviceChangedL(); // was Reserved_1() + +protected: // From CCoeAppUi + + /** + * From @c CCoeAppUi. Handles an application specific event. + * @param aType The type of the event that occurred. This should be a + * unique identifier constant. + * @param aEvent The window server event that occurred. + */ + IMPORT_C virtual void HandleApplicationSpecificEventL(TInt aType, + const TWsEvent& aEvent); + +protected: // New functions + /** + * Set the application to be a full screen application. + * @param aIsFullScreen is @c ETrue if the application is a full screen + * application, @c EFlase otherwise. + */ + IMPORT_C void SetFullScreenApp(TBool aIsFullScreen); + + /** + * Replace current key sound server with new one. + * @param aUid ID of the new key sound server. + */ + IMPORT_C void ReplaceKeySoundsL( TInt aUid ); + +protected: // from MObjectProvider + IMPORT_C virtual TTypeUid::Ptr MopSupplyObject(TTypeUid aId); + +public: // not exported + void SetScreenModeL(TInt aModeNumber); + TInt ScreenMode() const; + +private: + void UpdateSettingCacheAndForwardEventL( TInt aEventId ); + // Method tests on aError. If < KErrNone, it calls CCoeEnv::SetAppUi in order to pass + // ownership to the environment. CCoeEnv then will delete the AppUi at the usual point in the destruct order + void SetAppUiAndLeaveIfErrorL( TInt aError ); + TBool AlwaysForwardEvent( TInt aEventId ); + void RelinquishPriorityToForegroundAppLC(); + +private: + // Avkon app ui class flags + TBitFlags iAknFlags; + + // Added for Avkon. Monitor events for emergency call support + CAknWsEventMonitor* iEventMonitor; + + // Added for Avkon. Provides access to keysound server. + // Moved from CAknAppUi, because CEikSrvUi needs it as well + CAknKeySoundSystem* iKeySounds; + + CAknAppUiBaseExtension* iAppUiBaseExtension; + }; + +/** +* Abstract Avkon application UI class +* +* @since S60 0.9 +*/ + +class CAknAppUi : public CAknAppUiBase, MEikStatusPaneObserver, + public MCoeViewDeactivationObserver, + public MAknTouchPaneObserver + { +public: + + /** + * Initialises this Avkon app UI with standard values. @c aAppUiFlags + * values are common with @c CEikAppUi::BaseConstructL(aAppUiFlags). + * Additionally those @c aAppUiFlags values can be bitwise ORed with + * @c EAknEnableSkin flag to provide default skin parameters for this AppUi + * instance. + * @param aAppUiFlags Application user interface flags. + */ + IMPORT_C void BaseConstructL(TInt aAppUiFlags=EStandardApp); + + /** + * Destructor. + */ + IMPORT_C ~CAknAppUi(); + +public: // From CEikAppUi + /** + * From @c CEikAppUi. Completes construction. The implementation of + * @c ConstructL() in @c CAknAppUi simply calls @c BaseConstructL(). + */ + IMPORT_C void ConstructL(); // virtual + +public: + /** + * Gets a pointer to the status pane. + * @return Pointer to the status pane + */ + IMPORT_C CEikStatusPane* StatusPane(); + /** + * Gets a pointer to the Command Button Area. + * @return Pointer to the CBA + */ + IMPORT_C CEikButtonGroupContainer* Cba(); + + /** + * Gets a pointer to the touch pane. + * @return Pointer to the the touch pane + * @since S60 5.0 + */ + IMPORT_C CAknTouchPane* TouchPane(); + + /** + * Gets a pointer to the application toolbar. + * @return Pointer to the applicaton toolbar or NULL + * @since S60 3.1 + */ + IMPORT_C CAknToolbar* PopupToolbar() const; + + /** + * Gets a pointer to the current toolbar( view toolbar is priority ). + * @return Pointer to the current toolbar or NULL + * @since S60 3.1 + */ + IMPORT_C CAknToolbar* CurrentPopupToolbar() const; + + /** + * Gets a pointer to the current fixed toolbar( view toolbar is priority ). + * @return Pointer to the current fixed toolbar or NULL + * @since S60 5.0 + */ + IMPORT_C CAknToolbar* CurrentFixedToolbar() const; + + + /** + * Hides popup toolbar if it is visible + * @since S60 3.1 + */ + void StopDisplayingPopupToolbar(); + + + /** + * Processes user commands. + * This function passes @c aCommand (except values @c EAknSoftkeyOptions, + * @c EAknCmdExit, @c EEikCmdCanceled) to user derived @c HandleCommandL. + * @param aCommand A command ID. + */ + IMPORT_C void ProcessCommandL(TInt aCommand); + + + /** + * Handles errors. + * @param aError The error code. + * @param aExtErr For extended error messages. Not used. + * @param aErrorText Error text. Not used. + * @param aContextText Text describing the context of the error. Not used. + * @return @c ENoDisplay if Error handled proper way, else + * @c EErrorNotHandled + */ + IMPORT_C TErrorHandlerResponse HandleError (TInt aError, + const SExtendedError& aExtErr, TDes& aErrorText, TDes& aContextText); + + /** + * Run the application shutter if it exists. + */ + IMPORT_C void RunAppShutter(); + + /** + * Determines whether the application shutter is active. + * @return @c ETrue if application shutter is active. + */ + IMPORT_C TBool IsAppShutterRunning() const; + + /** + * Determines whether the application is hidden in background. + * (i.e. HideInBackground has been called and application has not + * yet been activated) + * @return @c ETrue if application is hidden in background. + */ + TBool IsAppHiddenInBackground() const; + +public: // MCoeViewDeactivationObserver + + /** + * From @c MCoeViewDeactivationObserver. + * Handles the deactivation of the view identified by + * @c aViewIdToBeDeactivated before the newly activated view with id + * @c aNewlyActivatedViewId is marked as current. + * Default implementation calls @c iAvkonEnv->CloseAllIntermediateStates() + * without using @c aViewIdToBeDeactivated and @c aNewlyActivatedViewId. + * @param aViewIdToBeDeactivated + * @param aNewlyActivatedViewId + */ + IMPORT_C virtual void HandleViewDeactivation( + const TVwsViewId& aViewIdToBeDeactivated, + const TVwsViewId &aNewlyActivatedViewId); + +public: // from CCoeAppUiBase + + /** + * From @c CCoeAppUiBase. Performs pre-exit processing to ensure the + * application will exit cleanly. + */ + IMPORT_C void PrepareToExit(); + +public: // from MAknTouchPaneObserver + + /** + * From @MAknTouchPaneObserver. + * Handles a change in the size or position of touch pane. + */ + IMPORT_C void HandleTouchPaneSizeChange(); + +protected: + // from MEikStatusPaneObserver + /** + * From @c MEikStatusPaneObserver. Handles a change in the position or size + * of the screen area occupied by the status pane. + */ + IMPORT_C void HandleStatusPaneSizeChange(); + + // from CCoeAppUi + /** + * From @c CCoeAppUi. Handles system events generated by the window server. + * @param aEvent The window server event that occurred. + */ + IMPORT_C void HandleSystemEventL(const TWsEvent& aEvent); + +protected: // formerly from MTopSetMember, now reserved + IMPORT_C virtual void Reserved_MtsmPosition(); + IMPORT_C virtual void Reserved_MtsmObject(); +protected: + + /** + * Handles changes in keyboard focus when an application switches to, + * or from, the foreground. + * @param aForeground @c ETrue if the application is in the foreground, + * otherwise @c EFalse. + */ + IMPORT_C void HandleForegroundEventL(TBool aForeground); + + /** + * Handles window server events. + * @param aEvent The window server event that occurred. + * @param aDestination The control associated with the event. + */ + IMPORT_C void HandleWsEventL(const TWsEvent& aEvent, + CCoeControl* aDestination); + + /** + * Set key block mode. + * In default mode, the S60 Developer Platform blocks simultaneous key + * presses. + * @param aMode @c ENoKeyBlock if no key block, otherwise + * @c EDefaultBlockMode + */ + IMPORT_C void SetKeyBlockMode(TAknKeyBlockMode aMode); + IMPORT_C void HandleErrorL(TInt aError, HBufC** aErrorDesc, TBool aShowNote = ETrue ); + +#ifdef _DEBUG + + /** + * Prints out information about the control and all its subcontrols to + * RDebug console. + * @param aControl object to be printed. + * @param aLevel positioning constant. + * @param aDebug stream for printing. + */ + void DumpControl(CCoeControl* aControl, TInt aLevel, RDebug& aDebug); +#endif + /** + * Try to set window server buffer size to @c KAknDefaultWsBufferSize. + */ + void DecideWsClientBufferSizesL(); + +private: + void UpdateKeyBlockMode(); + TBool SimulateHashKeyMarkingEvent(const TWsEvent& aEvent); + +private: + TBool iDumpNextControl; + CAknAppShutter* iAppShutter;// May be set to NULL by the app shutter itself + TAknKeyBlockMode iBlockMode; + CAknAppUiExtension * iExtension; + +public: + /** + * Hide application from Fast-swap window. + * @since S60 2.6 + * @param aHide @c ETrue if application is hided from Fast-swap window, otherwise + * @c EFalse + */ + IMPORT_C void HideApplicationFromFSW(TBool aHide=ETrue); + + /** + * Gets keyboard layout specific keycode. Uses given resolver + * SetAliasKeyCodeResolverL() if set, by default + * fetches alternative code from avkon server. + * + * @since S60 3.1 + * @param aCode reference to variable to contain new keycode + * @param aKeyEvent reference to original, complete, event + * @param aType indicating original event type + */ + IMPORT_C void GetAliasKeyCodeL(TUint& aCode, const TKeyEvent& aKeyEvent,TEventCode aType); + + /** + * Sets custom resolver for keycode aliases + * Creates iExtension if it doesn't exist + * @since S60 3.1 + * @param aHandler instance implementing MAknAliasKeyCodeResolver + */ + IMPORT_C void SetAliasKeyCodeResolverL(MAknAliasKeyCodeResolver* aResolver); + + /** + * This is same as RWindowGroup::CaptureKey, except that this version takes + * S60 keymappings into account and captures the key that produces requested + * aKeyCode according to S60 keymappings. Standard RWindowgroup::CaptureKey + * functionality takes place before S60 AppUi framework and has no knowledge + * of S60 keymappings. + * Note: This method requires same capabilites as RWindowGroup::CaptureKey() + * + * @since S60 V3.2 + * @param aKeycode The key code for the key to be captured. Key codes for + * special keys are defined in TKeyCode. + * @param aModifier Mask Only the modifier keys in this mask are tested against + * the states specified in aModifier. + * @param aModifier The key is captured only when the modifier keys specified in + * aModifierMask match these states, where 1=modifier set, + * and 0=modifier not set. Modifier key states are defined + * in TEventModifier. + * @return A handle identifying the capture key, or one of the system-wide error + * codes (if <0). Handles should be kept in order to be passed to + * CancelCaptureKey() later. + */ + IMPORT_C TInt32 CaptureKey(TUint aKeycode, TUint aModifierMask, TUint aModifier); + + /** + * This is same as RWindowGroup::CaptureKey, except that this version takes + * S60 keymappings into account and captures the key that produces requested + * aKeyCode according to S60 keymappings. This version leaves instead of returning + * an error code. Standard RWindowgroup::CaptureKey functionality takes place + * before S60 AppUi framework and has no knowledge of S60 keymappings. + * Note: This method requires same capabilites as RWindowGroup::CaptureKey() + * + * @since S60 V3.2 + * @param aKeycode The key code for the key to be captured. Key codes for + * special keys are defined in TKeyCode. + * @param aModifier Mask Only the modifier keys in this mask are tested against + * the states specified in aModifier. + * @param aModifier The key is captured only when the modifier keys specified in + * aModifierMask match these states, where 1=modifier set, + * and 0=modifier not set. Modifier key states are defined + * in TEventModifier. + * @param aHandle identifying the capture key. Handles should be kept in order + * to be passed to CancelCaptureKey() later. + */ + IMPORT_C void CaptureKeyL(TUint aKeycode, TUint aModifierMask, TUint aModifier, TInt32& aHandle); + + /** + * This tells the application if it is allowed to hide itself in the + * background in response to a user (menu or softkey) exit command, + * instead of actually exiting. + * If the application appears to exit, but actually leaves itself in + * memory, it may appear to start faster next time the user activates it. + * + * @since S60 V5.0 + * @return ETrue if the application can hide itself in the background, + * EFalse if it must exit properly by calling Exit(). + */ + IMPORT_C TBool ExitHidesInBackground() const; + + /** + * Hide the running instance of this application from the user, which + * makes it appear as if the application has exited. + * This is done by placing the application in the background, behind + * all other apps, and removing the application from the Fast Swap Window. + * When the application comes to the foreground again, it will be + * restored to the Fast Swap Window (in HandleForegroundEventL). If the + * application is not supposed to be in the Fast Swap Window, it will have + * to remove itself again. + * @since S60 V5.0 + */ + IMPORT_C void HideInBackground(); + + /** + * Disables next key sound (and repeated key sounds until pointer up event). + * + * @since S60 V5.0 + * @param aScanCode Scan code of disabled key. + */ + IMPORT_C void DisableNextKeySound( TInt aScanCode ); + +private: + TBool ExitHidesInBackgroundL() const; + }; + + + +#endif + + + + + + +