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(); |
53 iXmlModelProvider->ReloadModelL(); |
54 MMPERF(("CHnMetaDataModel::ConstructL - model reloaded")); |
54 MMPERF(("CHnMetaDataModel::ConstructL - model reloaded")); |
55 |
55 |
56 iCmnPtrs.iLocalization = iLocalization; |
56 iCmnPtrs.iLocalization = iLocalization; |
57 iCmnPtrs.iIdGenerator = &iIdGenerator; |
57 iCmnPtrs.iIdGenerator = &iIdGenerator; |
58 iCmnPtrs.iModel = this; |
58 iCmnPtrs.iModel = this; |
59 iCmnPtrs.iXmlModelProvider = iXmlModelProvider; |
59 iCmnPtrs.iXmlModelProvider = iXmlModelProvider; |
60 iCmnPtrs.iContainer = aSuiteModelContainer; |
60 iCmnPtrs.iContainer = aSuiteModelContainer; |
61 iCmnPtrs.iModelEventObserver = aModelObserver; |
61 iCmnPtrs.iModelEventObserver = aModelObserver; |
62 iCmnPtrs.iBitmapIdCache = iBitmapIdCache; |
62 iCmnPtrs.iBitmapIdCache = iBitmapIdCache; |
63 |
63 |
64 THnMdCommonPointers::SetStatic(&iCmnPtrs); |
64 THnMdCommonPointers::SetStatic(&iCmnPtrs); |
65 |
65 |
66 iMode = EMdModeNormal; |
66 iMode = EMdModeNormal; |
67 iRepositoryWidgetTypeObserver = CHnRepositoryWidgetTypeObserver::NewL( &iCmnPtrs, KMatrixRepositoryUid ); |
67 iRepositoryWidgetTypeObserver = CHnRepositoryWidgetTypeObserver::NewL( &iCmnPtrs, KMatrixRepositoryUid ); |
68 iRepositoryShowFolderObserver = CHnRepositoryShowFolderObserver::NewL( &iCmnPtrs, KCRUidMenu, KMenuShowFolder ); |
68 iRepositoryShowFolderObserver = CHnRepositoryShowFolderObserver::NewL( &iCmnPtrs, KCRUidMenu, KMenuShowFolder ); |
69 iRepositoryZoomObserver = CHnRepositoryZoomObserver::NewL( &iCmnPtrs, KCRUidAvkon, KAknGlobalUiZoom ); |
|
70 MMPERF(("CHnMetaDataModel::ConstructL - rep. observer ready")); |
69 MMPERF(("CHnMetaDataModel::ConstructL - rep. observer ready")); |
71 } |
70 } |
72 |
71 |
73 // --------------------------------------------------------------------------- |
72 // --------------------------------------------------------------------------- |
74 // |
73 // |
75 // --------------------------------------------------------------------------- |
74 // --------------------------------------------------------------------------- |
76 // |
75 // |
77 EXPORT_C CHnMdModel* CHnMdModel::NewL( |
76 EXPORT_C CHnMdModel* CHnMdModel::NewL( |
78 MHnMdModelEventObserver* aModelObserver, |
77 MHnMdModelEventObserver* aModelObserver, |
79 CHnSuiteModelContainer * aSuiteModelContainer ) |
78 CHnSuiteModelContainer * aSuiteModelContainer ) |
80 { |
79 { |
81 CHnMdModel* self = CHnMdModel::NewLC( aModelObserver, |
80 CHnMdModel* self = CHnMdModel::NewLC( aModelObserver, |
82 aSuiteModelContainer ); |
81 aSuiteModelContainer ); |
86 |
85 |
87 // --------------------------------------------------------------------------- |
86 // --------------------------------------------------------------------------- |
88 // |
87 // |
89 // --------------------------------------------------------------------------- |
88 // --------------------------------------------------------------------------- |
90 // |
89 // |
91 EXPORT_C CHnMdModel* CHnMdModel::NewLC( |
90 EXPORT_C CHnMdModel* CHnMdModel::NewLC( |
92 MHnMdModelEventObserver* aModelObserver, |
91 MHnMdModelEventObserver* aModelObserver, |
93 CHnSuiteModelContainer * aSuiteModelContainer ) |
92 CHnSuiteModelContainer * aSuiteModelContainer ) |
94 { |
93 { |
95 CHnMdModel* self = new( ELeave ) CHnMdModel(); |
94 CHnMdModel* self = new( ELeave ) CHnMdModel(); |
96 CleanupStack::PushL( self ); |
95 CleanupStack::PushL( self ); |
112 // |
111 // |
113 CHnMdModel::~CHnMdModel() |
112 CHnMdModel::~CHnMdModel() |
114 { |
113 { |
115 delete iRepositoryWidgetTypeObserver; |
114 delete iRepositoryWidgetTypeObserver; |
116 delete iRepositoryShowFolderObserver; |
115 delete iRepositoryShowFolderObserver; |
117 delete iRepositoryZoomObserver; |
|
118 iLoadedSuites.ResetAndDestroy(); |
116 iLoadedSuites.ResetAndDestroy(); |
119 delete iXmlModelProvider; |
117 delete iXmlModelProvider; |
120 delete iLocalization; |
118 delete iLocalization; |
121 delete iBitmapIdCache; |
119 delete iBitmapIdCache; |
122 } |
120 } |
134 #ifdef _DEBUG |
132 #ifdef _DEBUG |
135 // check if genres match |
133 // check if genres match |
136 CHnMdSuite* lastMdModel = GetLastSuite(); |
134 CHnMdSuite* lastMdModel = GetLastSuite(); |
137 ASSERT( !lastMdModel->SuiteName().Compare( aSuiteName ) ); |
135 ASSERT( !lastMdModel->SuiteName().Compare( aSuiteName ) ); |
138 #endif |
136 #endif |
139 |
137 |
140 TInt countDown( aIterations ); |
138 TInt countDown( aIterations ); |
141 CHnSuiteModel* current = NULL; |
139 CHnSuiteModel* current = NULL; |
142 while( ( current = aMulContainer->GetParentSuiteModel() ) != NULL && |
140 while( ( current = aMulContainer->GetParentSuiteModel() ) != NULL && |
143 countDown > 0 ) |
141 countDown > 0 ) |
144 { |
142 { |
145 current = aMulContainer->GetLastSuiteModel(); |
143 current = aMulContainer->GetLastSuiteModel(); |
146 // pop the suite model |
144 // pop the suite model |
147 aMulContainer->PopSuiteModelL( current->SuiteName() ); |
145 aMulContainer->PopSuiteModelL( current->SuiteName() ); |
148 |
146 |
149 // remove the suite that we are leaving |
147 // remove the suite that we are leaving |
150 DeleteLastSuite(); |
148 DeleteLastSuite(); |
151 countDown--; |
149 countDown--; |
152 } |
150 } |
153 |
151 |
154 current = aMulContainer->GetLastSuiteModel(); |
152 current = aMulContainer->GetLastSuiteModel(); |
155 current->GetItemsOrder()->MarkSuiteUninitialized(); |
153 current->GetItemsOrder()->MarkSuiteUninitialized(); |
156 CHnFilter* filter = CHnFilter::NewLC(); |
154 CHnFilter* filter = CHnFilter::NewLC(); |
157 filter->SetSuiteNameL( current->SuiteName() ); |
155 filter->SetSuiteNameL( current->SuiteName() ); |
158 filter->SetSuiteId( current->CustomId() ); |
156 filter->SetSuiteId( current->CustomId() ); |
202 CleanupStack::Pop( suiteParams ); |
200 CleanupStack::Pop( suiteParams ); |
203 } |
201 } |
204 aModelContainer->PopSuiteModelL( suite->SuiteName() ); |
202 aModelContainer->PopSuiteModelL( suite->SuiteName() ); |
205 DeleteLastSuite(); |
203 DeleteLastSuite(); |
206 } |
204 } |
207 |
205 |
208 TInt err( KErrNone ); |
206 TInt err( KErrNone ); |
209 CHnFilter* filter = CHnFilter::NewLC(); |
207 CHnFilter* filter = CHnFilter::NewLC(); |
210 filter->SetEvaluateSuiteL( ETrue ); |
208 filter->SetEvaluateSuiteL( ETrue ); |
211 |
209 |
212 SetModeL( iMode ); |
210 SetModeL( iMode ); |
213 |
211 |
214 for( TInt i( paramsArray.Count() - 1 ); i >= 0 && !err; i-- ) |
212 for( TInt i( paramsArray.Count() - 1 ); i >= 0 && !err; i-- ) |
215 { |
213 { |
216 CLiwGenericParamList* suiteParams = CLiwGenericParamList::NewL(); |
214 CLiwGenericParamList* suiteParams = CLiwGenericParamList::NewL(); |
217 CleanupStack::PushL(suiteParams); |
215 CleanupStack::PushL(suiteParams); |
218 suiteParams->AppendL( *(paramsArray[ i ])); |
216 suiteParams->AppendL( *(paramsArray[ i ])); |
229 GetLastSuite()->SetModeL( iMode ); |
227 GetLastSuite()->SetModeL( iMode ); |
230 GetLastSuite()->MarkEvaluationL( |
228 GetLastSuite()->MarkEvaluationL( |
231 *filter, *iCmnPtrs.iContainer->GetLastSuiteModel() ); |
229 *filter, *iCmnPtrs.iContainer->GetLastSuiteModel() ); |
232 GetLastSuite()->EvaluateL( *iCmnPtrs.iContainer->GetLastSuiteModel() ); |
230 GetLastSuite()->EvaluateL( *iCmnPtrs.iContainer->GetLastSuiteModel() ); |
233 } |
231 } |
234 |
232 |
235 CleanupStack::PopAndDestroy( filter ); |
233 CleanupStack::PopAndDestroy( filter ); |
236 CleanupStack::PopAndDestroy( ¶msArray ); |
234 CleanupStack::PopAndDestroy( ¶msArray ); |
237 } |
235 } |
238 |
236 |
239 // --------------------------------------------------------------------------- |
237 // --------------------------------------------------------------------------- |
353 { |
351 { |
354 if ( !aJustEvaluatedSuite ) |
352 if ( !aJustEvaluatedSuite ) |
355 { |
353 { |
356 User::Leave( KErrArgument ); |
354 User::Leave( KErrArgument ); |
357 } |
355 } |
358 |
356 |
359 if ( IsForegroundQueued() && ( !iForegroundTriggeringSuite || |
357 if ( IsForegroundQueued() && ( !iForegroundTriggeringSuite || |
360 iForegroundTriggeringSuite == aJustEvaluatedSuite ) ) |
358 iForegroundTriggeringSuite == aJustEvaluatedSuite ) ) |
361 { |
359 { |
362 CLiwGenericParamList* pl = CLiwGenericParamList::NewL(); |
360 CLiwGenericParamList* pl = CLiwGenericParamList::NewL(); |
363 CleanupStack::PushL( pl ); |
361 CleanupStack::PushL( pl ); |
403 |
401 |
404 // --------------------------------------------------------------------------- |
402 // --------------------------------------------------------------------------- |
405 // |
403 // |
406 // --------------------------------------------------------------------------- |
404 // --------------------------------------------------------------------------- |
407 // |
405 // |
408 EXPORT_C TInt CHnMdModel::LoadSuiteL( const TDesC& aGenre, |
406 EXPORT_C TInt CHnMdModel::LoadSuiteL( const TDesC& aGenre, |
409 CLiwGenericParamList* aSuiteParams ) |
407 CLiwGenericParamList* aSuiteParams ) |
410 { |
408 { |
411 TInt err( KErrNone ); |
409 TInt err( KErrNone ); |
412 |
410 |
413 RXmlEngDocument xmlDoc; |
411 RXmlEngDocument xmlDoc; |
414 // Xml model provider takes ownership of xmlDoc. |
412 // Xml model provider takes ownership of xmlDoc. |
415 TRAP( err, iXmlModelProvider->GetModelL( aGenre, xmlDoc ) ); |
413 TRAP( err, iXmlModelProvider->GetModelL( aGenre, xmlDoc ) ); |
416 |
414 |
417 TXmlEngElement element; |
415 TXmlEngElement element; |
421 if ( element.Name() != KContentElementName8 ) |
419 if ( element.Name() != KContentElementName8 ) |
422 { |
420 { |
423 err = KErrCorrupt; |
421 err = KErrCorrupt; |
424 } |
422 } |
425 } |
423 } |
426 |
424 |
427 if ( !err ) |
425 if ( !err ) |
428 { |
426 { |
429 CHnMdSuite* newSuite = CHnMdSuite::NewLC( element, &iCmnPtrs ); |
427 CHnMdSuite* newSuite = CHnMdSuite::NewLC( element, &iCmnPtrs ); |
430 |
428 |
431 if (aSuiteParams) |
429 if (aSuiteParams) |
432 { |
430 { |
433 newSuite->SetSuiteParametersL( *aSuiteParams ); |
431 newSuite->SetSuiteParametersL( *aSuiteParams ); |
434 } |
432 } |
435 |
433 |
436 TInt pos( 0 ); |
434 TInt pos( 0 ); |
437 newSuite->GetSuiteParameters().FindFirst( pos, KSuiteName8); |
435 newSuite->GetSuiteParameters().FindFirst( pos, KSuiteName8); |
438 if ( pos == KErrNotFound ) |
436 if ( pos == KErrNotFound ) |
439 { |
437 { |
440 newSuite->GetSuiteParameters().AppendL( |
438 newSuite->GetSuiteParameters().AppendL( |
441 TLiwGenericParam(KSuiteName8, TLiwVariant( aGenre ) ) ); |
439 TLiwGenericParam(KSuiteName8, TLiwVariant( aGenre ) ) ); |
442 } |
440 } |
443 |
441 |
444 iCmnPtrs.iContainer->PushNewSuiteModelL( newSuite->SuiteName() ); |
442 iCmnPtrs.iContainer->PushNewSuiteModelL( newSuite->SuiteName() ); |
445 iCmnPtrs.iContainer->GetLastSuiteModel()->GetItemsOrder()-> |
443 iCmnPtrs.iContainer->GetLastSuiteModel()->GetItemsOrder()-> |
446 SetSuiteId( iCmnPtrs.iIdGenerator->GetNextId() ); |
444 SetSuiteId( iCmnPtrs.iIdGenerator->GetNextId() ); |
447 |
445 |
448 CleanupStack::Pop( newSuite ); |
446 CleanupStack::Pop( newSuite ); |
449 iLoadedSuites.AppendL( newSuite ); |
447 iLoadedSuites.AppendL( newSuite ); |
450 } |
448 } |
451 else |
449 else |
452 { |
450 { |
453 MMPERF(("CHnMdModel::LoadSuiteL - Error TRAPPED!")); |
451 MMPERF(("CHnMdModel::LoadSuiteL - Error TRAPPED!")); |
454 } |
452 } |
455 |
453 |
456 return err; |
454 return err; |
457 } |
455 } |
458 |
456 |
459 // --------------------------------------------------------------------------- |
457 // --------------------------------------------------------------------------- |
460 // |
458 // |
475 // --------------------------------------------------------------------------- |
473 // --------------------------------------------------------------------------- |
476 // |
474 // |
477 EXPORT_C void CHnMdModel::GetCurrentUriL( TDes& aUri ) |
475 EXPORT_C void CHnMdModel::GetCurrentUriL( TDes& aUri ) |
478 { |
476 { |
479 iXmlModelProvider->ReloadModelL(); |
477 iXmlModelProvider->ReloadModelL(); |
480 |
478 |
481 aUri.Append( KPrefMm ); |
479 aUri.Append( KPrefMm ); |
482 for( TInt i(0); i < iLoadedSuites.Count(); i++ ) |
480 for( TInt i(0); i < iLoadedSuites.Count(); i++ ) |
483 { |
481 { |
484 aUri.Append( iLoadedSuites[ i ]->SuiteName() ); |
482 aUri.Append( iLoadedSuites[ i ]->SuiteName() ); |
485 aUri.Append( KSlash ); |
483 aUri.Append( KSlash ); |