13 * |
13 * |
14 * Description: Engine class for Device Status Plug-in |
14 * Description: Engine class for Device Status Plug-in |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 |
18 // System includes |
|
19 |
|
20 // User includes |
|
21 #include <aicontentobserver.h> |
19 #include "aidevicestatuspluginengine.h" |
22 #include "aidevicestatuspluginengine.h" |
20 #include "aipublisherfactory.h" |
23 #include "aipublisherfactory.h" |
21 #include "aidevicestatuspublisher.h" |
24 #include "aidevicestatuspublisher.h" |
22 |
25 |
|
26 // ======== MEMBER FUNCTIONS ======== |
|
27 // ---------------------------------------------------------------------------- |
|
28 // CAiDeviceStatusPluginEngine::CAiDeviceStatusPluginEngine |
|
29 // |
|
30 // ---------------------------------------------------------------------------- |
|
31 // |
23 CAiDeviceStatusPluginEngine::CAiDeviceStatusPluginEngine( |
32 CAiDeviceStatusPluginEngine::CAiDeviceStatusPluginEngine( |
24 MAiContentObserver& aObserver, |
33 MAiContentObserver& aObserver, CHsContentPublisher& aExtension, |
25 MAiPropertyExtension& aExtension, |
34 MAiPublishPrioritizer& aPrioritizer ) |
26 MAiPublishPrioritizer& aPrioritizer ) |
35 : iContentObserver( &aObserver ), iExtension( &aExtension ), |
27 : iContentObserver( &aObserver ), |
36 iPrioritizer( &aPrioritizer ) |
28 iExtension( &aExtension ), |
|
29 iPrioritizer( &aPrioritizer ) |
|
30 { |
37 { |
31 } |
38 } |
32 |
39 |
33 |
40 // ---------------------------------------------------------------------------- |
|
41 // CAiDeviceStatusPluginEngine::ConstructL |
|
42 // |
|
43 // ---------------------------------------------------------------------------- |
|
44 // |
34 void CAiDeviceStatusPluginEngine::ConstructL() |
45 void CAiDeviceStatusPluginEngine::ConstructL() |
35 { |
46 { |
36 // Instantiate all publishers via factory |
47 // Instantiate all publishers via factory |
37 MAiDeviceStatusPublisher* publisher = AiPublisherFactory::CreateProfilePublisherL(); |
48 MAiDeviceStatusPublisher* publisher = AiPublisherFactory::CreateDatePublisherL(); |
38 CleanupStack::PushL( publisher ); |
|
39 AddPublisherL( publisher ); |
|
40 CleanupStack::Pop( publisher ); |
|
41 |
|
42 publisher = AiPublisherFactory::CreateDatePublisherL(); |
|
43 CleanupStack::PushL( publisher ); |
49 CleanupStack::PushL( publisher ); |
44 AddPublisherL( publisher ); |
50 AddPublisherL( publisher ); |
45 CleanupStack::Pop( publisher ); |
51 CleanupStack::Pop( publisher ); |
46 |
52 |
47 publisher = AiPublisherFactory::CreateSimRegPublisherL(); |
53 publisher = AiPublisherFactory::CreateSimRegPublisherL(); |
88 CleanupStack::PushL( publisher ); |
94 CleanupStack::PushL( publisher ); |
89 AddPublisherL( publisher ); |
95 AddPublisherL( publisher ); |
90 CleanupStack::Pop( publisher ); |
96 CleanupStack::Pop( publisher ); |
91 |
97 |
92 // Subscribe all publishers once they are instantiated |
98 // Subscribe all publishers once they are instantiated |
93 const TInt count = iPublishers.Count(); |
99 const TInt count( iPublishers.Count() ); |
94 |
100 |
95 for( TInt i( 0 ); i < count; i++ ) |
101 for ( TInt i( 0 ); i < count; i++ ) |
96 { |
102 { |
97 iPublishers[i]->Subscribe( *iContentObserver, |
103 iPublishers[i]->Subscribe( |
98 *iExtension, |
104 *iContentObserver, *iExtension, *iPrioritizer, *this ); |
99 *iPrioritizer, |
|
100 *this ); |
|
101 } |
105 } |
102 } |
106 } |
103 |
107 |
104 |
108 // ---------------------------------------------------------------------------- |
|
109 // CAiDeviceStatusPluginEngine::NewL |
|
110 // |
|
111 // ---------------------------------------------------------------------------- |
|
112 // |
105 CAiDeviceStatusPluginEngine* CAiDeviceStatusPluginEngine::NewL( |
113 CAiDeviceStatusPluginEngine* CAiDeviceStatusPluginEngine::NewL( |
106 MAiContentObserver& aObserver, |
114 MAiContentObserver& aObserver, CHsContentPublisher& aExtension, |
107 MAiPropertyExtension& aExtension, |
115 MAiPublishPrioritizer& aPrioritizer ) |
108 MAiPublishPrioritizer& aPrioritizer) |
|
109 { |
116 { |
110 CAiDeviceStatusPluginEngine* self = |
117 CAiDeviceStatusPluginEngine* self = |
111 new( ELeave ) CAiDeviceStatusPluginEngine( aObserver, |
118 new( ELeave ) CAiDeviceStatusPluginEngine( aObserver, aExtension, aPrioritizer ); |
112 aExtension, |
119 |
113 aPrioritizer); |
|
114 CleanupStack::PushL( self ); |
120 CleanupStack::PushL( self ); |
115 self->ConstructL(); |
121 self->ConstructL(); |
116 CleanupStack::Pop( self ); |
122 CleanupStack::Pop( self ); |
117 return self; |
123 return self; |
118 } |
124 } |
119 |
125 |
|
126 // ---------------------------------------------------------------------------- |
|
127 // CAiDeviceStatusPluginEngine::~CAiDeviceStatusPluginEngine |
|
128 // |
|
129 // ---------------------------------------------------------------------------- |
|
130 // |
120 |
131 |
121 CAiDeviceStatusPluginEngine::~CAiDeviceStatusPluginEngine() |
132 CAiDeviceStatusPluginEngine::~CAiDeviceStatusPluginEngine() |
122 { |
133 { |
123 iPublishers.ResetAndDestroy(); |
134 iPublishers.ResetAndDestroy(); |
124 } |
135 } |
125 |
136 |
126 |
137 // ---------------------------------------------------------------------------- |
127 void CAiDeviceStatusPluginEngine::AddPublisherL( MAiDeviceStatusPublisher* aPublisher ) |
138 // CAiDeviceStatusPluginEngine::AddPublisherL |
|
139 // |
|
140 // ---------------------------------------------------------------------------- |
|
141 // |
|
142 void CAiDeviceStatusPluginEngine::AddPublisherL( |
|
143 MAiDeviceStatusPublisher* aPublisher ) |
128 { |
144 { |
129 //Add publisher to list. |
145 //Add publisher to list. |
130 if( aPublisher ) |
146 if ( aPublisher ) |
131 { |
147 { |
132 CleanupDeletePushL( aPublisher ); |
148 CleanupDeletePushL( aPublisher ); |
133 User::LeaveIfError( iPublishers.Append( aPublisher ) ); |
149 User::LeaveIfError( iPublishers.Append( aPublisher ) ); |
134 CleanupStack::Pop(aPublisher);//aPublisher |
150 CleanupStack::Pop(aPublisher);//aPublisher |
135 } |
151 } |
136 } |
152 } |
137 |
153 |
138 |
154 // ---------------------------------------------------------------------------- |
|
155 // CAiDeviceStatusPluginEngine::ResumePublishersL |
|
156 // |
|
157 // ---------------------------------------------------------------------------- |
|
158 // |
139 void CAiDeviceStatusPluginEngine::ResumePublishersL() |
159 void CAiDeviceStatusPluginEngine::ResumePublishersL() |
140 { |
160 { |
141 const TInt count = iPublishers.Count(); |
161 const TInt count( iPublishers.Count() ); |
142 |
162 |
143 for( TInt i( 0 ); i < count; i++ ) |
163 for ( TInt i( 0 ); i < count; i++ ) |
144 { |
164 { |
145 iPublishers[i]->ResumeL(); |
165 iPublishers[i]->ResumeL(); |
146 } |
166 } |
147 } |
167 } |
148 |
168 |
149 |
169 // ---------------------------------------------------------------------------- |
|
170 // CAiDeviceStatusPluginEngine::RefreshPublishersL |
|
171 // |
|
172 // ---------------------------------------------------------------------------- |
|
173 // |
150 void CAiDeviceStatusPluginEngine::RefreshPublishersL( TBool aClean ) |
174 void CAiDeviceStatusPluginEngine::RefreshPublishersL( TBool aClean ) |
151 { |
175 { |
152 iContentObserver->StartTransaction( KImplUidDevStaPlugin ); |
176 iContentObserver->StartTransaction( KImplUidDevStaPlugin ); |
153 |
177 |
154 const TInt count = iPublishers.Count(); |
178 const TInt count( iPublishers.Count() ); |
155 |
179 |
156 for( TInt i( 0 ); i < count; i++ ) |
180 for ( TInt i( 0 ); i < count; i++ ) |
157 { |
181 { |
158 iPublishers[i]->RefreshL( aClean ); |
182 iPublishers[i]->RefreshL( aClean ); |
159 } |
183 } |
160 |
184 |
161 iContentObserver->Commit( KImplUidDevStaPlugin ); |
185 iContentObserver->Commit( KImplUidDevStaPlugin ); |
162 } |
186 } |
163 |
187 |
164 |
188 // ---------------------------------------------------------------------------- |
|
189 // CAiDeviceStatusPluginEngine::RefreshPublishersL |
|
190 // |
|
191 // ---------------------------------------------------------------------------- |
|
192 // |
165 TBool CAiDeviceStatusPluginEngine::RefreshPublishersL( TInt aContentId, |
193 TBool CAiDeviceStatusPluginEngine::RefreshPublishersL( TInt aContentId, |
166 TBool aClean ) |
194 TBool aClean ) |
167 { |
195 { |
168 TBool success = EFalse; |
196 TBool success( EFalse ); |
169 |
197 |
170 iContentObserver->StartTransaction( KImplUidDevStaPlugin ); |
198 iContentObserver->StartTransaction( KImplUidDevStaPlugin ); |
171 |
199 |
172 const TInt count = iPublishers.Count(); |
200 const TInt count( iPublishers.Count() ); |
173 |
201 |
174 for( TInt i( 0 ); i < count; i++ ) |
202 for ( TInt i( 0 ); i < count; i++ ) |
175 { |
203 { |
176 if( iPublishers[i]->RefreshL( aContentId, aClean ) ) |
204 if ( iPublishers[i]->RefreshL( aContentId, aClean ) ) |
177 { |
205 { |
178 success = ETrue; |
206 success = ETrue; |
179 } |
207 } |
180 } |
208 } |
181 |
209 |
189 } |
217 } |
190 |
218 |
191 return success; |
219 return success; |
192 } |
220 } |
193 |
221 |
194 |
222 // ---------------------------------------------------------------------------- |
|
223 // CAiDeviceStatusPluginEngine::SuspendPublishersL |
|
224 // |
|
225 // ---------------------------------------------------------------------------- |
|
226 // |
|
227 TBool CAiDeviceStatusPluginEngine::SuspendPublishersL( TInt aContentId, |
|
228 TBool aClean ) |
|
229 { |
|
230 TBool success( EFalse ); |
|
231 |
|
232 const TInt count( iPublishers.Count() ); |
|
233 |
|
234 for ( TInt i( 0 ); i < count; i++ ) |
|
235 { |
|
236 if ( iPublishers[i]->SuspendL( aContentId, aClean ) ) |
|
237 { |
|
238 success = ETrue; |
|
239 } |
|
240 } |
|
241 |
|
242 return success; |
|
243 } |
|
244 |
|
245 // ---------------------------------------------------------------------------- |
|
246 // CAiDeviceStatusPluginEngine::RefreshPriorizedPublishersL |
|
247 // |
|
248 // ---------------------------------------------------------------------------- |
|
249 // |
195 TBool CAiDeviceStatusPluginEngine::RefreshPriorizedPublishersL( TInt aContentId, |
250 TBool CAiDeviceStatusPluginEngine::RefreshPriorizedPublishersL( TInt aContentId, |
196 TInt aPriority ) |
251 TInt aPriority ) |
197 { |
252 { |
198 iContentObserver->StartTransaction( KImplUidDevStaPlugin ); |
253 iContentObserver->StartTransaction( KImplUidDevStaPlugin ); |
199 TBool success = EFalse; |
254 |
200 const TInt count = iPublishers.Count(); |
255 TBool success( EFalse ); |
201 |
256 |
202 for( TInt i( 0 ); i < count; i++ ) |
257 const TInt count( iPublishers.Count() ); |
203 { |
258 |
204 if( iPublishers[i]->RefreshContentWithPriorityL( aContentId, |
259 for ( TInt i( 0 ); i < count; i++ ) |
205 aPriority ) ) |
260 { |
|
261 MAiDeviceStatusPublisher* publisher( iPublishers[i] ); |
|
262 |
|
263 if( publisher->RefreshContentWithPriorityL( aContentId, aPriority ) ) |
206 { |
264 { |
207 success = ETrue; |
265 success = ETrue; |
208 break; |
266 break; |
209 } |
267 } |
210 } |
268 } |
|
269 |
211 if ( success ) |
270 if ( success ) |
212 { |
271 { |
213 iContentObserver->Commit( KImplUidDevStaPlugin ); |
272 iContentObserver->Commit( KImplUidDevStaPlugin ); |
214 } |
273 } |
215 else |
274 else |
216 { |
275 { |
217 iContentObserver->CancelTransaction( KImplUidDevStaPlugin ); |
276 iContentObserver->CancelTransaction( KImplUidDevStaPlugin ); |
218 } |
277 } |
|
278 |
219 return success; |
279 return success; |
220 } |
280 } |
221 |
281 |
|
282 // End of file |