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 |