48 MMPERF(("CHnMetaDataModel::ConstructL - localization ready")); |
48 MMPERF(("CHnMetaDataModel::ConstructL - localization ready")); |
49 iXmlModelProvider = CHnXmlModelProvider::NewL(); |
49 iXmlModelProvider = CHnXmlModelProvider::NewL(); |
50 MMPERF(("CHnMetaDataModel::ConstructL - bitmap and mask ids cache ready")); |
50 MMPERF(("CHnMetaDataModel::ConstructL - bitmap and mask ids cache ready")); |
51 iBitmapIdCache = CHnBitmapIdCache::NewL(); |
51 iBitmapIdCache = CHnBitmapIdCache::NewL(); |
52 MMPERF(("CHnMetaDataModel::ConstructL - model privider ready")); |
52 MMPERF(("CHnMetaDataModel::ConstructL - model privider ready")); |
53 iXmlModelProvider->ReloadModelL(); |
|
54 MMPERF(("CHnMetaDataModel::ConstructL - model reloaded")); |
|
55 |
53 |
56 iCmnPtrs.iLocalization = iLocalization; |
54 iCmnPtrs.iLocalization = iLocalization; |
57 iCmnPtrs.iIdGenerator = &iIdGenerator; |
55 iCmnPtrs.iIdGenerator = &iIdGenerator; |
58 iCmnPtrs.iModel = this; |
56 iCmnPtrs.iModel = this; |
59 iCmnPtrs.iXmlModelProvider = iXmlModelProvider; |
57 iCmnPtrs.iXmlModelProvider = iXmlModelProvider; |
163 |
161 |
164 // --------------------------------------------------------------------------- |
162 // --------------------------------------------------------------------------- |
165 // |
163 // |
166 // --------------------------------------------------------------------------- |
164 // --------------------------------------------------------------------------- |
167 // |
165 // |
168 EXPORT_C void CHnMdModel::HandleSisInstallationEventL( |
|
169 CHnSuiteModelContainer* /*aModelContainer*/ ) |
|
170 { |
|
171 iXmlModelProvider->ReloadModelL(); |
|
172 } |
|
173 |
|
174 // --------------------------------------------------------------------------- |
|
175 // |
|
176 // --------------------------------------------------------------------------- |
|
177 // |
|
178 void CHnMdModel::ReloadStackSuitesL( CHnSuiteModelContainer* aModelContainer ) |
|
179 { |
|
180 RPointerArray< CLiwGenericParamList > paramsArray; |
|
181 CleanupResetAndDestroyPushL( paramsArray ); |
|
182 |
|
183 TBool rootDisplayed( iLoadedSuites.Count() == 1 ); |
|
184 while( iLoadedSuites.Count() > 0 ) |
|
185 { |
|
186 // break loop to leave root suite on the stack |
|
187 if( ( iLoadedSuites.Count() == 1 && paramsArray.Count() > 0 ) |
|
188 || rootDisplayed ) |
|
189 { |
|
190 break; |
|
191 } |
|
192 |
|
193 CHnMdSuite* suite = GetLastSuite(); |
|
194 if( iXmlModelProvider->SuiteExistsL( suite->SuiteName() ) ) |
|
195 { |
|
196 CLiwGenericParamList* suiteParams = CLiwGenericParamList::NewL(); |
|
197 CleanupStack::PushL( suiteParams ); |
|
198 suiteParams->AppendL( suite->GetSuiteParameters() ); |
|
199 paramsArray.Append( suiteParams ); |
|
200 CleanupStack::Pop( suiteParams ); |
|
201 } |
|
202 aModelContainer->PopSuiteModelL( suite->SuiteName() ); |
|
203 DeleteLastSuite(); |
|
204 } |
|
205 |
|
206 TInt err( KErrNone ); |
|
207 CHnFilter* filter = CHnFilter::NewLC(); |
|
208 filter->SetEvaluateSuiteL( ETrue ); |
|
209 |
|
210 SetModeL( iMode ); |
|
211 |
|
212 for( TInt i( paramsArray.Count() - 1 ); i >= 0 && !err; i-- ) |
|
213 { |
|
214 CLiwGenericParamList* suiteParams = CLiwGenericParamList::NewL(); |
|
215 CleanupStack::PushL(suiteParams); |
|
216 suiteParams->AppendL( *(paramsArray[ i ])); |
|
217 TInt pos( 0 ); |
|
218 const TLiwGenericParam* param = suiteParams->FindFirst( pos, KSuiteName8 ); |
|
219 if ( param && pos >= 0) |
|
220 { |
|
221 TPtrC suiteName; |
|
222 param->Value().Get( suiteName ); |
|
223 err = LoadSuiteL( suiteName, suiteParams ); |
|
224 } |
|
225 CleanupStack::PopAndDestroy( suiteParams ); |
|
226 |
|
227 GetLastSuite()->SetModeL( iMode ); |
|
228 GetLastSuite()->MarkEvaluationL( |
|
229 *filter, *iCmnPtrs.iContainer->GetLastSuiteModel() ); |
|
230 GetLastSuite()->EvaluateL( *iCmnPtrs.iContainer->GetLastSuiteModel() ); |
|
231 } |
|
232 |
|
233 CleanupStack::PopAndDestroy( filter ); |
|
234 CleanupStack::PopAndDestroy( ¶msArray ); |
|
235 } |
|
236 |
|
237 // --------------------------------------------------------------------------- |
|
238 // |
|
239 // --------------------------------------------------------------------------- |
|
240 // |
|
241 EXPORT_C void CHnMdModel::DeleteLastSuite() |
166 EXPORT_C void CHnMdModel::DeleteLastSuite() |
242 { |
167 { |
243 CHnMdSuite* tmpPtr = GetLastSuite(); |
168 CHnMdSuite* tmpPtr = GetLastSuite(); |
244 iLoadedSuites.Remove( iLoadedSuites.Count() - 1 ); |
169 iLoadedSuites.Remove( iLoadedSuites.Count() - 1 ); |
245 delete tmpPtr; |
170 delete tmpPtr; |
246 } |
|
247 // --------------------------------------------------------------------------- |
|
248 // |
|
249 // --------------------------------------------------------------------------- |
|
250 // |
|
251 EXPORT_C void CHnMdModel::ReleaseLocalization() |
|
252 { |
|
253 iLocalization->ReleaseResourceFiles(); |
|
254 iXmlModelProvider->ResetCache(); |
|
255 } |
|
256 // --------------------------------------------------------------------------- |
|
257 // |
|
258 // --------------------------------------------------------------------------- |
|
259 // |
|
260 EXPORT_C void CHnMdModel::ReloadLocalizationL() |
|
261 { |
|
262 iLocalization->ReloadResourceFilesL(); |
|
263 } |
171 } |
264 |
172 |
265 // --------------------------------------------------------------------------- |
173 // --------------------------------------------------------------------------- |
266 // |
174 // |
267 // --------------------------------------------------------------------------- |
175 // --------------------------------------------------------------------------- |
459 // --------------------------------------------------------------------------- |
367 // --------------------------------------------------------------------------- |
460 // |
368 // |
461 EXPORT_C TBool CHnMdModel::SuiteModelExistsL( const TDesC8& aSuiteModel ) |
369 EXPORT_C TBool CHnMdModel::SuiteModelExistsL( const TDesC8& aSuiteModel ) |
462 { |
370 { |
463 TBool res( EFalse ); |
371 TBool res( EFalse ); |
464 HBufC* suiteName = HnConvUtils::Str8ToStrLC( aSuiteModel ); |
372 if( !aSuiteModel.Compare( KFolderSuite8 ) || |
465 res = iXmlModelProvider->SuiteExistsL( *suiteName ) || |
373 !aSuiteModel.Compare( KRoot8 ) ) |
466 aSuiteModel.Compare( KRoot8 ) == KErrNone ; |
374 { |
467 CleanupStack::PopAndDestroy( suiteName ); |
375 res = ETrue; |
|
376 } |
468 return res; |
377 return res; |
469 } |
|
470 |
|
471 // --------------------------------------------------------------------------- |
|
472 // |
|
473 // --------------------------------------------------------------------------- |
|
474 // |
|
475 EXPORT_C void CHnMdModel::GetCurrentUriL( TDes& aUri ) |
|
476 { |
|
477 iXmlModelProvider->ReloadModelL(); |
|
478 |
|
479 aUri.Append( KPrefMm ); |
|
480 for( TInt i(0); i < iLoadedSuites.Count(); i++ ) |
|
481 { |
|
482 aUri.Append( iLoadedSuites[ i ]->SuiteName() ); |
|
483 aUri.Append( KSlash ); |
|
484 } |
|
485 } |
378 } |
486 |
379 |
487 // --------------------------------------------------------------------------- |
380 // --------------------------------------------------------------------------- |
488 // |
381 // |
489 // --------------------------------------------------------------------------- |
382 // --------------------------------------------------------------------------- |