diff -r 9b022b1f357c -r e0aa398e6810 hsappkeyhandler/src/hsappkeyplugin.cpp --- a/hsappkeyhandler/src/hsappkeyplugin.cpp Tue Jul 06 14:37:10 2010 +0300 +++ b/hsappkeyhandler/src/hsappkeyplugin.cpp Wed Aug 18 10:05:49 2010 +0300 @@ -20,11 +20,16 @@ #include #include #include +#include #include #include +#include +#include +#include #include "hsappkeyplugin.h" -const TUid KHSAppUid = { 0x20022F35 }; +_LIT(KHsActivactionUri, "appto://20022F35?activityname=HsIdleView"); +_LIT(KAppLibActivactionUri, "appto://20022F35?activityname=AppLibMainView"); _LIT(KTsPluginName, "com.nokia.taskswitcher.tsdevicedialogplugin/1.0"); @@ -46,12 +51,6 @@ CHsAppKeyPlugin* CHsAppKeyPlugin::NewL() { CHsAppKeyPlugin* self = new (ELeave) CHsAppKeyPlugin; - self->iEikEnv->RootWin().CaptureLongKey(EKeyApplication0, - EKeyApplication0, - 0, - 0, - 0, - ELongCaptureWaitShort); return self; } @@ -119,7 +118,16 @@ key.iCode = EKeyApplication0; key.iScanCode = EStdKeyApplication0; key.iModifiers = 0; + key.iRepeats = 0; aKeyEventArray.Append(key); + + TKeyEvent longkey; + longkey.iCode = EKeyApplication0; + longkey.iScanCode = EStdKeyApplication0; + longkey.iModifiers = 0; + longkey.iRepeats = 1; + aKeyEventArray.Append(longkey); + } // --------------------------------------------------------------------------- @@ -127,28 +135,22 @@ // --------------------------------------------------------------------------- // void CHsAppKeyPlugin::HandleShortPressL() -{ - RWsSession& ws = iEikEnv->WsSession(); - TApaTaskList appList(ws); - TApaTask task = appList.FindApp(KHSAppUid); - - if (task.Exists()) { - task.BringToForeground(); - } else { - RApaLsSession apaLsSession; - User::LeaveIfError(apaLsSession.Connect()); - CleanupClosePushL(apaLsSession); - - TApaAppInfo appInfo; - apaLsSession.GetAppInfo(appInfo, KHSAppUid ); - - CApaCommandLine *cmdLine = CApaCommandLine::NewLC(); - cmdLine->SetExecutableNameL(appInfo.iFullName); - User::LeaveIfError( apaLsSession.StartApp(*cmdLine)); - - CleanupStack::PopAndDestroy(cmdLine); - CleanupStack::PopAndDestroy(&apaLsSession); - } +{ + RApaLsSession apaLsSession; + CleanupClosePushL(apaLsSession); + User::LeaveIfError(apaLsSession.Connect()); + CAfActivityLauncher *activityEnabler = + CAfActivityLauncher::NewLC(apaLsSession, + iEikEnv->WsSession()); + TInt state(0); + RProperty::Get(KHsCategoryUid, KHsCategoryStateKey, state); + if (state == EHomeScreenIdleState) { + activityEnabler->launchActivityL(KAppLibActivactionUri); + } else { + activityEnabler->launchActivityL(KHsActivactionUri); + } + CleanupStack::PopAndDestroy(activityEnabler); + CleanupStack::PopAndDestroy(&apaLsSession); delete mDialog; mDialog =0; } @@ -160,15 +162,20 @@ void CHsAppKeyPlugin::HandleLongPressL() { if( !mDialog ) { - mDialog = CHbDeviceDialogSymbian ::NewL(); - - CHbSymbianVariantMap* params = CHbSymbianVariantMap::NewL(); - + TInt value( 0 ); + RProperty::Get( TsProperty::KCategory, + TsProperty::KVisibilityKey, + value ); + if(!value){ + mDialog = CHbDeviceDialogSymbian::NewL(); + + CHbSymbianVariantMap* params = CHbSymbianVariantMap::NewL(); if(KErrNone != mDialog->Show(KTsPluginName,*params,this)) { delete mDialog; mDialog = 0; + } + delete params; } - delete params; } } // End of File