hsappkeyhandler/src/hsappkeyplugin.cpp
changeset 109 e0aa398e6810
parent 73 4bc7b118b3df
child 115 3ab5c078b490
equal deleted inserted replaced
104:9b022b1f357c 109:e0aa398e6810
    18 
    18 
    19 #include <w32std.h>
    19 #include <w32std.h>
    20 #include <eikenv.h>
    20 #include <eikenv.h>
    21 #include <apgtask.h>
    21 #include <apgtask.h>
    22 #include <apgcli.h>
    22 #include <apgcli.h>
       
    23 #include <e32property.h>
    23 #include <hb/hbcore/hbdevicedialogsymbian.h>
    24 #include <hb/hbcore/hbdevicedialogsymbian.h>
    24 #include <hb/hbcore/hbsymbianvariant.h> 
    25 #include <hb/hbcore/hbsymbianvariant.h> 
       
    26 #include <tspropertydefs.h>
       
    27 #include <afactivitylauncher.h>
       
    28 #include <homescreendomainpskeys.h>
    25 #include "hsappkeyplugin.h"
    29 #include "hsappkeyplugin.h"
    26 
    30 
    27 const TUid KHSAppUid  = { 0x20022F35 };
    31 _LIT(KHsActivactionUri, "appto://20022F35?activityname=HsIdleView");
       
    32 _LIT(KAppLibActivactionUri, "appto://20022F35?activityname=AppLibMainView");
    28 _LIT(KTsPluginName, "com.nokia.taskswitcher.tsdevicedialogplugin/1.0");
    33 _LIT(KTsPluginName, "com.nokia.taskswitcher.tsdevicedialogplugin/1.0");
    29 
    34 
    30 
    35 
    31 // ======== MEMBER FUNCTIONS ========
    36 // ======== MEMBER FUNCTIONS ========
    32 
    37 
    44 // ---------------------------------------------------------------------------
    49 // ---------------------------------------------------------------------------
    45 //
    50 //
    46 CHsAppKeyPlugin* CHsAppKeyPlugin::NewL()
    51 CHsAppKeyPlugin* CHsAppKeyPlugin::NewL()
    47 {
    52 {
    48     CHsAppKeyPlugin* self = new (ELeave) CHsAppKeyPlugin;
    53     CHsAppKeyPlugin* self = new (ELeave) CHsAppKeyPlugin;
    49     self->iEikEnv->RootWin().CaptureLongKey(EKeyApplication0, 
       
    50                                             EKeyApplication0, 
       
    51                                             0, 
       
    52                                             0, 
       
    53                                             0, 
       
    54                                             ELongCaptureWaitShort);
       
    55     return self;
    54     return self;
    56 }
    55 }
    57     
    56     
    58 // ---------------------------------------------------------------------------
    57 // ---------------------------------------------------------------------------
    59 // C++ Destructor
    58 // C++ Destructor
   117 {
   116 {
   118     TKeyEvent key;
   117     TKeyEvent key;
   119     key.iCode = EKeyApplication0;
   118     key.iCode = EKeyApplication0;
   120     key.iScanCode = EStdKeyApplication0;
   119     key.iScanCode = EStdKeyApplication0;
   121     key.iModifiers = 0;
   120     key.iModifiers = 0;
       
   121     key.iRepeats = 0;
   122     aKeyEventArray.Append(key);
   122     aKeyEventArray.Append(key);
       
   123     
       
   124     TKeyEvent longkey;
       
   125     longkey.iCode = EKeyApplication0;
       
   126     longkey.iScanCode = EStdKeyApplication0;
       
   127     longkey.iModifiers = 0;
       
   128     longkey.iRepeats = 1;
       
   129     aKeyEventArray.Append(longkey);
       
   130 
   123 }
   131 }
   124 
   132 
   125 // ---------------------------------------------------------------------------
   133 // ---------------------------------------------------------------------------
   126 // 
   134 // 
   127 // ---------------------------------------------------------------------------
   135 // ---------------------------------------------------------------------------
   128 //
   136 //
   129 void CHsAppKeyPlugin::HandleShortPressL()
   137 void CHsAppKeyPlugin::HandleShortPressL()
   130 {    
   138 {   
   131     RWsSession& ws = iEikEnv->WsSession();
   139     RApaLsSession apaLsSession;
   132     TApaTaskList appList(ws);
   140     CleanupClosePushL(apaLsSession);
   133     TApaTask task = appList.FindApp(KHSAppUid);
   141     User::LeaveIfError(apaLsSession.Connect());
   134 
   142     CAfActivityLauncher *activityEnabler = 
   135     if (task.Exists()) {
   143         CAfActivityLauncher::NewLC(apaLsSession, 
   136         task.BringToForeground();
   144                                    iEikEnv->WsSession());
   137     } else {        
   145     TInt state(0);
   138         RApaLsSession apaLsSession;
   146     RProperty::Get(KHsCategoryUid, KHsCategoryStateKey, state);
   139         User::LeaveIfError(apaLsSession.Connect());
   147     if (state == EHomeScreenIdleState) {
   140         CleanupClosePushL(apaLsSession);
   148         activityEnabler->launchActivityL(KAppLibActivactionUri);
   141         
   149     } else {
   142         TApaAppInfo appInfo;
   150         activityEnabler->launchActivityL(KHsActivactionUri);
   143         apaLsSession.GetAppInfo(appInfo, KHSAppUid );
   151     }    
   144         
   152     CleanupStack::PopAndDestroy(activityEnabler);
   145         CApaCommandLine *cmdLine = CApaCommandLine::NewLC();
   153     CleanupStack::PopAndDestroy(&apaLsSession);
   146         cmdLine->SetExecutableNameL(appInfo.iFullName);
       
   147         User::LeaveIfError( apaLsSession.StartApp(*cmdLine));
       
   148     
       
   149         CleanupStack::PopAndDestroy(cmdLine);
       
   150         CleanupStack::PopAndDestroy(&apaLsSession);
       
   151     }
       
   152     delete mDialog;
   154     delete mDialog;
   153     mDialog =0;
   155     mDialog =0;
   154 }
   156 }
   155 
   157 
   156 // ---------------------------------------------------------------------------
   158 // ---------------------------------------------------------------------------
   158 // ---------------------------------------------------------------------------
   160 // ---------------------------------------------------------------------------
   159 //
   161 //
   160 void CHsAppKeyPlugin::HandleLongPressL()
   162 void CHsAppKeyPlugin::HandleLongPressL()
   161 {
   163 {
   162     if( !mDialog ) {
   164     if( !mDialog ) {
   163          mDialog = CHbDeviceDialogSymbian ::NewL();
   165         TInt value( 0 );
   164         
   166         RProperty::Get( TsProperty::KCategory, 
   165         CHbSymbianVariantMap* params = CHbSymbianVariantMap::NewL();
   167                     TsProperty::KVisibilityKey,
   166         
   168                     value );
       
   169         if(!value){
       
   170             mDialog = CHbDeviceDialogSymbian::NewL();
       
   171     
       
   172             CHbSymbianVariantMap* params = CHbSymbianVariantMap::NewL();
   167         if(KErrNone != mDialog->Show(KTsPluginName,*params,this)) {
   173         if(KErrNone != mDialog->Show(KTsPluginName,*params,this)) {
   168             delete mDialog;
   174             delete mDialog;
   169             mDialog = 0;
   175             mDialog = 0;
       
   176             }
       
   177         delete params;
   170         }
   178         }
   171         delete params;
       
   172     }
   179     }
   173 }
   180 }
   174 //  End of File
   181 //  End of File
   175 
   182 
   176 
   183