menufw/hierarchynavigator/hnmetadatamodel/src/hnmdmodel.cpp
branchRCL_3
changeset 26 1b758917cafc
parent 1 5315654608de
equal deleted inserted replaced
25:137ebc85284b 26:1b758917cafc
    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( &paramsArray );
       
   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 // ---------------------------------------------------------------------------