13 * |
13 * |
14 * Description: Launches GS views. |
14 * Description: Launches GS views. |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 #include "GSLauncher.h" |
18 #include <GSLauncher.h> |
19 |
19 |
20 #include <e32property.h> |
|
21 #include <w32std.h> |
|
22 #include <apgcli.h> |
|
23 #include <viewcli.h> |
|
24 #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS |
|
25 #include <viewclipartner.h> |
|
26 #endif |
|
27 |
|
28 #include <gsfwviewuids.h> |
|
29 #include <s32mem.h> |
|
30 |
|
31 |
|
32 const TUid KGSMessageViewLaunch = { 0x1 }; |
|
33 const TInt KGSApaMsgLength = 1024; |
|
34 |
20 |
35 // ======== MEMBER FUNCTIONS ======== |
21 // ======== MEMBER FUNCTIONS ======== |
36 // --------------------------------------------------------------------------- |
22 // --------------------------------------------------------------------------- |
37 // description_if_needed |
23 // description_if_needed |
38 // --------------------------------------------------------------------------- |
24 // --------------------------------------------------------------------------- |
56 // description_if_needed |
42 // description_if_needed |
57 // --------------------------------------------------------------------------- |
43 // --------------------------------------------------------------------------- |
58 // |
44 // |
59 EXPORT_C CGSLauncher* CGSLauncher::NewL() |
45 EXPORT_C CGSLauncher* CGSLauncher::NewL() |
60 { |
46 { |
61 CGSLauncher* self = CGSLauncher::NewLC(); |
47 return NULL; |
62 CleanupStack::Pop( self ); |
|
63 return self; |
|
64 } |
48 } |
65 |
49 |
66 // --------------------------------------------------------------------------- |
50 // --------------------------------------------------------------------------- |
67 // description_if_needed |
51 // description_if_needed |
68 // --------------------------------------------------------------------------- |
52 // --------------------------------------------------------------------------- |
69 // |
53 // |
70 EXPORT_C CGSLauncher* CGSLauncher::NewLC() |
54 EXPORT_C CGSLauncher* CGSLauncher::NewLC() |
71 { |
55 { |
72 CGSLauncher* self = new( ELeave ) CGSLauncher; |
56 return NULL; |
73 CleanupStack::PushL( self ); |
|
74 self->ConstructL(); |
|
75 return self; |
|
76 } |
57 } |
77 |
58 |
78 |
59 |
79 // --------------------------------------------------------------------------- |
60 // --------------------------------------------------------------------------- |
80 // description_if_needed |
61 // description_if_needed |
86 |
67 |
87 // --------------------------------------------------------------------------- |
68 // --------------------------------------------------------------------------- |
88 // implementation_description |
69 // implementation_description |
89 // --------------------------------------------------------------------------- |
70 // --------------------------------------------------------------------------- |
90 // |
71 // |
91 EXPORT_C void CGSLauncher::LaunchGSViewL( const TUid aTarget, |
72 EXPORT_C void CGSLauncher::LaunchGSViewL( const TUid /*aTarget*/, |
92 const TUid aCustomMessageId, |
73 const TUid /*aCustomMessageId*/, |
93 const TDesC8& aCustomMessage ) |
74 const TDesC8& /*aCustomMessage*/ ) |
94 { |
75 { |
95 RProperty prop; |
|
96 RWsSession ws; |
|
97 User::LeaveIfError(ws.Connect()); |
|
98 CleanupClosePushL( ws ); |
|
99 |
|
100 TApaTaskList l(ws); |
|
101 TApaTask gs = l.FindApp(KUidGS); |
|
102 |
|
103 // GS not running, launch via avkon |
|
104 if ( !gs.Exists() ) |
|
105 { |
|
106 CVwsSessionWrapper* wsw = CVwsSessionWrapper::NewLC(); |
|
107 const TVwsViewId viewId( KUidGS, aTarget ); |
|
108 wsw->CreateActivateViewEvent( viewId,aCustomMessageId, aCustomMessage ); |
|
109 CleanupStack::PopAndDestroy( wsw ); |
|
110 } |
|
111 else |
|
112 { |
|
113 // GS running, send parameters in string |
|
114 // Pachage custom message |
|
115 CBufFlat* buffer = CBufFlat::NewL( KGSApaMsgLength ); // etc |
|
116 CleanupStack::PushL( buffer ); |
|
117 RBufWriteStream stream( *buffer ); |
|
118 stream << aTarget; |
|
119 // In case none plugin needs custom message currently, set it to NULL. |
|
120 stream << aCustomMessageId; |
|
121 stream << aCustomMessage; |
|
122 // stream << TUid::Uid(0); |
|
123 // stream << KNullDesC8; |
|
124 stream.CommitL(); |
|
125 stream.Close(); |
|
126 TPtr8 pBuffer( buffer->Ptr( 0 ) ); |
|
127 |
|
128 gs.SendMessage( KGSMessageViewLaunch, pBuffer ); |
|
129 CleanupStack::PopAndDestroy( buffer ); |
|
130 gs.BringToForeground(); |
|
131 } |
|
132 CleanupStack::PopAndDestroy( &ws ); |
|
133 } |
76 } |
134 |
77 |
135 |
78 |