equal
deleted
inserted
replaced
20 #include <ecom/implementationinformation.h> |
20 #include <ecom/implementationinformation.h> |
21 |
21 |
22 // User include files |
22 // User include files |
23 #include "hscontentcontrolfactory.h" |
23 #include "hscontentcontrolfactory.h" |
24 #include "hscontentcontrolecomlistener.h" |
24 #include "hscontentcontrolecomlistener.h" |
|
25 #include "hscontentcontroluninstallmonitor.h" |
25 |
26 |
26 // Local constants |
27 // Local constants |
27 |
28 |
28 // Content controller ECom interface UID |
29 // Content controller ECom interface UID |
29 const TUid KInterfaceUidContentController = { 0x20026F51 }; |
30 const TUid KInterfaceUidContentController = { 0x20026F51 }; |
76 { |
77 { |
77 iHsContentControlEComListener = |
78 iHsContentControlEComListener = |
78 CHsContentControlEComListener::NewL( *this ); |
79 CHsContentControlEComListener::NewL( *this ); |
79 REComSession::ListImplementationsL( |
80 REComSession::ListImplementationsL( |
80 KInterfaceUidContentController, iImplArray ); |
81 KInterfaceUidContentController, iImplArray ); |
|
82 |
|
83 iHsContentControlUninstallMonitor = |
|
84 CHsContentControlUninstallMonitor::NewL( *this ); |
81 } |
85 } |
82 |
86 |
83 // ---------------------------------------------------------------------------- |
87 // ---------------------------------------------------------------------------- |
84 // CHsContentControlFactory::CHsContentControlFactory() |
88 // CHsContentControlFactory::CHsContentControlFactory() |
85 // ---------------------------------------------------------------------------- |
89 // ---------------------------------------------------------------------------- |
95 EXPORT_C CHsContentControlFactory::~CHsContentControlFactory() |
99 EXPORT_C CHsContentControlFactory::~CHsContentControlFactory() |
96 { |
100 { |
97 iImplArray.ResetAndDestroy(); |
101 iImplArray.ResetAndDestroy(); |
98 iImplArray.Close(); |
102 iImplArray.Close(); |
99 iHsContentControlUis.ResetAndDestroy(); |
103 iHsContentControlUis.ResetAndDestroy(); |
|
104 |
100 delete iHsContentControlEComListener; |
105 delete iHsContentControlEComListener; |
|
106 delete iHsContentControlUninstallMonitor; |
101 } |
107 } |
102 |
108 |
103 // --------------------------------------------------------------------------------- |
109 // --------------------------------------------------------------------------------- |
104 // CHsContentControlFactory::GetHsContentController() |
110 // CHsContentControlFactory::GetHsContentController() |
105 // --------------------------------------------------------------------------------- |
111 // --------------------------------------------------------------------------------- |
155 { |
161 { |
156 for ( TInt i = 0; i < iHsContentControlUis.Count(); i++ ) |
162 for ( TInt i = 0; i < iHsContentControlUis.Count(); i++ ) |
157 { |
163 { |
158 CHsContentControlUi* cc( iHsContentControlUis[ i ] ); |
164 CHsContentControlUi* cc( iHsContentControlUis[ i ] ); |
159 |
165 |
160 if ( cc->ContentControlType().CompareF( aControlType ) == 0 ) |
166 if ( cc->ContentControlType().CompareF( aControlType ) == 0 ) |
161 { |
167 { |
162 return cc; |
168 return cc; |
163 } |
169 } |
164 } |
170 } |
165 |
171 |
174 { |
180 { |
175 // ignore event if no plugin loaded. |
181 // ignore event if no plugin loaded. |
176 if ( iHsContentControlUis.Count() > 0 ) |
182 if ( iHsContentControlUis.Count() > 0 ) |
177 { |
183 { |
178 TRAP_IGNORE( CheckPluginChangesL(); ); |
184 TRAP_IGNORE( CheckPluginChangesL(); ); |
|
185 } |
|
186 } |
|
187 |
|
188 // ---------------------------------------------------------------------------- |
|
189 // CHsContentControlFactory::HandleUninstallEvent() |
|
190 // ---------------------------------------------------------------------------- |
|
191 // |
|
192 void CHsContentControlFactory::HandleUninstallEvent( const TUid& aPkgUid ) |
|
193 { |
|
194 // ignore event if no plugin loaded. |
|
195 if ( iHsContentControlUis.Count() > 0 ) |
|
196 { |
|
197 for( TInt index( iHsContentControlUis.Count() - 1 ); index >= 0; --index ) |
|
198 { |
|
199 CHsContentControlUi* cc( iHsContentControlUis[ index ] ); |
|
200 // ImplUid of plugin must match Sis pkg uid |
|
201 if ( cc && cc->ImplUid() == aPkgUid ) |
|
202 { |
|
203 iHsContentControlUis.Remove( index ); |
|
204 delete cc; |
|
205 cc = NULL; |
|
206 break; |
|
207 } |
|
208 } |
179 } |
209 } |
180 } |
210 } |
181 |
211 |
182 // ---------------------------------------------------------------------------- |
212 // ---------------------------------------------------------------------------- |
183 // CHsContentControlFactory::CheckPluginChangesL |
213 // CHsContentControlFactory::CheckPluginChangesL |