diff -r 000000000000 -r 79c6a41cd166 idlefw/plugins/shortcutplugin/inc/caiscutengine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/shortcutplugin/inc/caiscutengine.h Thu Dec 17 08:54:17 2009 +0200 @@ -0,0 +1,667 @@ +/* +* Copyright (c) 2005-2006 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: Shortcut plug-in engine class. +* +*/ + + +#ifndef CAISCUTENGINE_H +#define CAISCUTENGINE_H + +#include // For MApaAppListServObserver +#include // For MMsvSessionObserver +#include // For RFavouritesDb +#include // For MFavouritesDbObserver +#include +#ifdef __WEB_WIDGETS +#include +#endif + +#include + +#include "aiscutdefs.h" +#include "taiscutparser.h" +#include "aicontentpublisher.h" + +class CCoeEnv; +class CVwsSessionWrapper; +class CActiveFavouritesDbNotifier; +class CAiScutPlugin; +class CAiScutShortcut; +class CRepository; +class CAiScutRepositoryWatcher; +class CAiScutTargetShutter; +class CKeyLockPolicyApi; + +/** + * Defines the different scenarios of shortcut access checking. + */ +enum TScutAccessCheckType +{ + EScutCheckMailbox, + EScutCheckApp, + EScutCheckBkm, + EScutCheckAll +}; + +/** + * Defines which default can be used, when daulting is needed (uninstall/mem card removed) + */ +enum TScutDefault +{ + EScutUserDefined = 0, + EScutDefaultToPlatform, + EScutDefaultToTheme +}; + +enum TScutLockKey + { + EScutFirstLockKey, + EScutSecondLockKey +}; + +/** + * Shortcut plug-in engine class. + * + * Handles most of plug-in activity. + * + * @since S60 v3.2 + */ +class CAiScutEngine : public CBase + , public MMsvSessionObserver + , public MApaAppListServObserver + , public MFavouritesDbObserver +{ + +public: + + /** + * First phase contructor. + * + * @since S60 v3.2 + * @param aPlugin Reference to the main plug-in class + */ + static CAiScutEngine* NewL(CAiScutPlugin& aPlugin); + + virtual ~CAiScutEngine(); + + // from base class MMsvSessionObserver + + /** + * Handles an event from the message server + * + * @since S60 v3.2 + * @param aEvent Indicates the event type. + * @param aArg1 Event type-specific argument value + * @param aArg2 Event type-specific argument value + * @param aArg3 Event type-specific argument value + */ + void HandleSessionEventL( + TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3); + + // from base class MApaAppListServObserver + + /** + * From MApaAppListServObserver. + * Handles a change in the application list + * + * @since S60 v3.2 + * @param aEvent Event id + */ + void HandleAppListEvent(TInt aEvent); + + /** + * Resumes the engine + * + * @since S60 v3.2 + */ + virtual void ResumeL(TBool aPublishAll, TAiTransitionReason aReason); + + /** + * Suspends the engine + * + * @since S60 v3.2 + */ + void Suspend(); + + /** + * + */ + static TInt HandleShortcutsChanged(TAny* aPtr); + + /** + * + */ + static TInt HandleHiddenAppsChanged(TAny* aPtr); + + /** + * + */ + TBool IsHidden(const TUid& aAppUid) const; + + /** + * Handles an event sent by the AI framework + * + * @since S60 v3.2 + * @param aEvent Event (service) id + * @param aParam Event parameter(s) + */ + virtual void HandleAiEventL(TInt aEvent, const TDesC& aParam); + + /** + * Called by the timer. Retries the access check for shortcuts. + * + * @since S60 v3.2 + */ + void RetryAccessCheck(); + + /** + * Checks if application is midlet or widget. + * @param aUid Application uid + * @since S60 v3.2 + */ + TBool IsNonNative(const TUid& aUid); + + TBool IsHiddenFromFSW( const TUid& aAppUid ); +#ifdef __WEB_WIDGETS + /** + * Ask client session if given UID is widget. + */ + TBool IsWidget(const TUid& aUid); +#endif + + /** + * Handles call state changes (non-static version). + * + * @since S60 v3.2 + */ + void HandleCallStateChange(); + + /** + * Merges the user defined shortcuts with the defaults. + * @param aType shortcut type + * @param aRecreateAll forces the recreation of shortcuts + * @since S60 v3.2 + */ + void MergeShortcuts(TShortcutType aType, TBool aRecreateAll); + + /** + *Get Application title + */ + TBool GetAppTitle( + const TUid& aAppUid, + const TUid& aViewId, + TDes& aTitle, + TAiScutAppTitleType aType); + + /** + * Returns the application architecture server session owned by the engine + * + * @since S60 v3.2 + * @return Reference to RApaLsSession + */ + inline RApaLsSession& ApaSession(); + + /** + * Returns reference to the bookmark database owned by the engine + * + * @since S60 v3.2 + * @return Reference to RFavouritesDb + */ + inline RFavouritesDb& FavouritesDb(); + + /** + * Returns the message server session owned by the engine + * + * @since S60 v3.2 + * @return Pointer to CMsvSession + */ + inline CMsvSession* MsvSession(); + + /** + * Returns a pointer to view server session wrapper. + * + * @since S60 v3.2 + * @return Pointer to view server session wrapper + */ + inline CVwsSessionWrapper* VwsSession(); + + /** + * Returns a pointer to the coe environment + * + * @since S60 v3.2 + * @return Pointer to coe environment + */ + inline CCoeEnv* Env(); + + /** + * Creates the shortcuts merging the defaults with user defined ones. + * + * @since S60 v3.2 + */ + void CreateShortcutsL(); + +protected: + + + /** + * C++ constructor + * + * @since S60 v3.2 + * @param aPlugin Reference to the main plug-in class + */ + CAiScutEngine(CAiScutPlugin& aPlugin); + + void ConstructL(); + +protected: + + /** + * Merges the user defined shortcuts with the defaults. + * Leaving version + * @param aType shortcut type + * @param aRecreateAll forces the recreation of shortcuts + * @since S60 v3.2 + */ + void MergeShortcutsL(TShortcutType aType, TBool aRecreateAll); + + /** + * Checks shortcut accessibility. If the AppArc server or message server + * respond that they are not ready, a timer is launched to check later. + * + * @since S60 v3.2 + * @param aCheckType Specifies which kind of shortcuts should check its access + * @param aPublishAll All shortcuts are published + */ + void CheckAccessAndPublish(TInt aCheckType, TBool aPublishAll); + + /** + * Tells each shortcut to check whether or not its target is accessible. + * Shortcuts will revert to the default setting if the user setting is + * not accessible. + * + * @since S60 v3.2 + * @param aCheckType Specifies which kind of shortcuts should check its access + * @param aPublishAll All shortcuts are published + */ + void CheckAccessAndPublishL(TInt aCheckType, TBool aPublishAll); + + /** + * Finds the shortcut object with the given id + * + * @since S60 v3.2 + * @param aId Shortcut id + * @return Shortcut index or KErrNotFound + */ + TInt FindShortcutIndex(TInt32 aId); + + /** + * Handles the shortcut launch by index. + * + * @since S60 v3.2 + * @param aParam Index of the shortcut to launch + */ + void HandleLaunchByIndexL(const TDesC& aParam); + + /** + * Handles the special launching of a shortcut. The + * launching can be done based on the location of + * the shortcut (sk, toolbar item etc) or based on the + * application it points to. Currently when this function is + * called to a shortcut that points to appshell the fastswap + * window is opened + * + * @since s60 v5.0 + * @param aParam Index of the shortcut to perform the special launch + */ + void HandleLaunchByIndexAlternateL(const TDesC& aParam); + /** + * Handles the shortcut launch by value + * + * @since S60 v3.2 + * @param aParam Value of the shortcut to launch + */ + void HandleLaunchByValueL(const TDesC& aParam); + + /** + * Shows the plug-in settings dialog. + * + * @since S60 v3.2 + */ + void ShowSettingsL(const TDesC& aParam); + + /** + * Shows the plug-in setting. + * + * @since S60 v5.0 + */ + void ShowSettingL(const TDesC& aParam); + + /** + * Opens the fast swap window + * + * @since S60 v5.0 + */ + void OpenFastSwap(); + /** + * Handles PS commands from WSPlugin. + * + * @since S60 v3.2 + */ + static TInt HandlePSCommand(TAny* aAny); + + /** + * Handles call state changes. + * + * @since S60 v3.2 + */ + static TInt CallStateChangeCallback(TAny* aPtr); + + /** + * Callback for delay timer + */ + static TInt DelayTimerCallBack(TAny *aSelf ); + + + /** + * Get soft key uid + * + * @since S60 v3.2 + * @param aSoftkeyId shortcut index + */ + TUid SoftkeyUid(TUint32 aSoftkeyId); + + /** + *Check softkey delay is required + * + * @since S60 v3.2 + * @param AppUid application uid + */ + TBool IsDelayRequired(TUid aAppUid); + + /** + * Handles PS commands from WSPlugin (leaving version). + * + * @since S60 v3.2 + */ + void DoHandlePSCommandL(); + + /** + * Activates phone/video call application + * + * @since S60 v3.2 + */ + void ActivateTopMostApp(); + + /** + * Check MsvSession is Needed + */ + TBool IsMsvSessionNeeded(); + + /** + * Check Bookmark Observer is Needed + */ + TBool IsBookmarkObserverNeeded(); + + /** + * Load application titles list + */ + void LoadAppTitleListL(); + + /** + * Get hidden applications + */ + void GetHiddenAppsL(); + + void CheckForThemeDefaultReinstalledL(); + + TBool IsLockKey( TInt aScanCode, TScutLockKey aLockKey ) const; + + TInt AddOverrideIcon( TAiScutIcon &aIcon ); + + /** + * Starts a delay timer that calls HandleLaunchByIndexL() after + * a short delay. Delay is read from cenrep with the key KAIKeyLockTimeout + * + * @param aParam The parameter to pass to HandleLaunchByIndexL() + * + */ + void DelayedLaunchByIndexL( const TDesC &aParam ); +private: // From MFavouritesDbObserver + + /** + * Handles database event. + * @param aEvent Database event. + */ + void HandleFavouritesDbEventL(RDbNotifier::TEvent aEvent); + +protected: // data + + /** + * Shortcut objects. + * Own. + */ + RAiShortcutArray iShortcuts; + + /** + * Shortcut objects for storing theme default scuts. + * Own. + */ + RAiShortcutInfoArray iThemeShortcuts; + + /** + * Flags for shortcuts to indicate whether platform or theme default is used. + */ + RArray iDefaultUsed; + + /** + * Central Repository session. + * Own. + */ + CRepository* iRepository; + + /** + * Notifier for changes in the application list + * (installations / uninstallations). + * Own. + */ + CApaAppListNotifier* iAppNotifier; + + /** + * Notifier for changes in the shortcut settings. + * Own. + */ + CAiScutRepositoryWatcher* iSettingsNotifier; + + /** + * Message server session. + * Own. + */ + CMsvSession* iMsvSession; + + /** + * Timer that performs the availability check after a given delay. + * Own + */ + CPeriodic* iTimer; + + /** + * Reference to the plug-in. + * Not own. + */ + CAiScutPlugin& iPlugin; + + /** + * Application architecture server session. + */ + RApaLsSession iApaSession; + + /** + * Bookmark database session. + * Own. + */ + RFavouritesSession iBookmarkSess; + + /** + * Bookmark database. + * Own. + */ + RFavouritesDb iBookmarkDb; + + /** + * Bookmark database change observer. + * Own. + */ + CActiveFavouritesDbNotifier* iBookmarkDbObserver; + + /** + * View server session wrapper. + * Own + */ + CVwsSessionWrapper* iVwsSession; + + /** + * Flag to indicate that all shortcus are to be published. Used when resuming. + */ + TBool iPublishAll; + + /** + *Call key event observer + * Own + */ + MAiPSPropertyObserver* iKeyEventObserver; + + /** + * Call state PS observer. + * Own. + */ + MAiPSPropertyObserver* iCallStateObserver; + + /** + * Call state + */ + TBool iActiveCall; + + /** + * First keylock key + */ + TInt iFirstLockKey; + + /** + * First keylock key pressed flag to ensure first lock has been + * pressed when skipping key lock. Enabling the correct response to + * skip command. + */ + TBool iFirstLockKeyPressed; + + /** + * Second keylock key + */ + TInt iSecondLockKey; + + /** + * Resource loader for common text resources. + */ + RConeResourceLoader iResourceLoaderTexts; + + /** + * Resource loader for sendui text resources. + */ + RConeResourceLoader iResourceLoaderSendUi; + + /** + * Coe environment. + * Not own. + */ + CCoeEnv* iEnv; + + /** + * Array of UIDs which are hidden from the TARM + */ + RArray iHiddenApps; + + /** + * Central repository object for Hidden Apps + * Own + */ + CRepository* iHiddenAppsRepository; + + /** + * Central repository change handler for Hidden Apps + * Own + */ + CAiScutRepositoryWatcher* iHiddenAppsNotifier; + + /** + * Application titles list + */ + RArray iAppTitleList; + + /** + * Own + */ + CAiScutTargetShutter* iScutShutter; + + /** + * + */ + TBool iSoftkeyAppRunning; + +#ifdef __WEB_WIDGETS + /** + * Widget registry client session to check if UID means widget. + */ + RWidgetRegistryClientSession iWidgetRegistry; + TBool iWidgetRegistryConnected; +#endif + /** + * for parsing the icon overrides and softkeys + */ + TAiScutParser iParser; + + /** + * Override icons and softkeyicons are held here + */ + RArray iIcons; + + /** + * For checking keylock buttons + * Own + */ + CKeyLockPolicyApi *iKeylockApi; + /** + * Timer user to delay the launching + * of specific shortcuts. + * Own + */ + CPeriodic *iDelayTimer; + + /** + * Command passed to HandleLaunchByIndexL() + * when delayed launching is used + * Own + */ + HBufC *iDelayedLaunchCmd; + + /** + * Delayed launching delay. Read from cenrep + */ + TInt iDelayTimerDelay; +}; + +#include "caiscutengine.inl" + +#endif // CAISCUTENGINE_H + +// End of File.