diff -r 000000000000 -r f72a12da539e menufw/hierarchynavigator/hnmetadatamodel/src/hnmdsuite.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnmdsuite.cpp Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,881 @@ +/* +* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#include + +#include "hnmdsuite.h" +#include "hnmditem.h" +#include "hnmdmodel.h" +#include "hnstringhandler.h" +#include "hnsuitemodelcontainer.h" +#include "hnitemsorder.h" +#include "hnconvutils.h" +#include "hnliwutils.h" +#include "hnutils.h" +#include "hnfilter.h" +#include "menudebug.h" +#include "hnactionmodel.h" +#include "hnmdaction.h" +#include "hnmdservicecommand.h" +#include "hnmdlocalization.h" +#include "hnmdqueries.h" +#include "hnmdquery.h" +#include "hnrepositorymanager.h" +#include "hnmdbasekey.h" +#include "hninterface.h" +#include "hnservicehandler.h" +#include "hnmdeventmapping.h" + + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +EXPORT_C CLiwGenericParamList& CHnMdSuite::GetSuiteParameters() + { + return *iSuiteParams; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +EXPORT_C void CHnMdSuite::SetSuiteParametersL(CLiwGenericParamList& aParams) + { + iSuiteParams->Reset(); + iSuiteParams->AppendL( aParams ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::ConstructL( TXmlEngElement aElement ) + { + DEBUG(("_MM_: CHnMdSuite::ConstructL IN")); + + // append localization elements + iCmnPtrs->iLocalization->AppendLocalizationsL( aElement ); + + RXmlEngNodeList elements; + CleanupClosePushL( elements ); + aElement.GetChildElements( elements ); + + // suite element was found + TBool suiteFound( EFalse ); + + // one suite per file + TXmlEngElement suiteElement; + while ( elements.HasNext() ) + { + suiteElement = elements.Next(); + if ( !suiteElement.Name().Compare( KSuiteElementName8 ) ) + { + suiteFound = ETrue; + break; + } + } + + if ( suiteFound ) + { + // set event mapping + iEventMapping = CHnMdEventMapping::NewL( suiteElement, iCmnPtrs ); + + // set genre + SetGenreL( suiteElement.AttributeNodeL( KGenreAttrName8 ) ); + + // set widget type + // widget needs to be set before template will be set + SetWidgetTypeL( suiteElement.AttributeNodeL( KWidgetTypeAttrName8 ) ); + + // set template + SetTemplateL( suiteElement.AttributeNodeL( KTemplateAttrName8 ) ); + + // set name + SetTitleL( suiteElement.AttributeNodeL( KTitleAttrName8 ) ); + + // set empty text + SetEmptyTextL( suiteElement.AttributeNodeL( KEmptyTextAttrName8 ) ); + + // set custom identifier + SetCustomIdL( suiteElement ); + + // set entries + CreateItemsL( suiteElement, iCmnPtrs ); + + // set queries + iQueries = CHnMdQueries::NewL( suiteElement ); + + // set cached parameters + iSuiteParams = CLiwGenericParamList::NewL(); + } + else + { + // definiotion of the suite was not found! + DEBUG(("_MM_: CHnMdSuite::ConstructL Suite definition not found!")); + User::Leave( KErrNotFound ); + } + + CleanupStack::PopAndDestroy( &elements ); + DEBUG(("_MM_: CHnMdSuite::ConstructL OUT")); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CHnMdSuite* CHnMdSuite::NewL(TXmlEngElement aElement, + THnMdCommonPointers* aCmnPtrs) + { + CHnMdSuite* self = CHnMdSuite::NewLC( aElement, aCmnPtrs ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CHnMdSuite* CHnMdSuite::NewLC(TXmlEngElement aElement, + THnMdCommonPointers* aCmnPtrs) + { + CHnMdSuite* self = new( ELeave ) CHnMdSuite( aCmnPtrs ); + CleanupStack::PushL( self ); + self->ConstructL( aElement ); + return self; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CHnMdSuite::CHnMdSuite( THnMdCommonPointers* aCmnPtrs ) + : iCmnPtrs( aCmnPtrs ), iAllowableTemplate(NULL) + { + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CHnMdSuite::~CHnMdSuite() + { + iAllowableWidgetType.Close(); + delete iAllowableTemplate; + delete iEventMapping; + iSuiteName.Close(); + iItems.ResetAndDestroy(); + iTemplate.Close(); + iTitle.Close(); + iEmptyText.Close(); + iCustomId8.Close(); + delete iQueries; + delete iSuiteParams; + iAllowedTypes.Close(); + delete iQc; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TInt CHnMdSuite::EvaluateL( CHnSuiteModel & aSuiteModel ) + { + MMPERF(("CHnMdSuite::EvaluateL - START")); + aSuiteModel.GetItemsOrder()->DefineModelItemCountL( iItems.Count() ); + if( iEvaluationNeeded ) + { + EvaluateSuiteItselfL( aSuiteModel ); + MMPERF(("CHnMdSuite::EvaluateL - suite evaluated")); + iEvaluationNeeded = EFalse; + } + for( TInt i( 0 ); i < iItems.Count(); i++ ) + { + CHnMdItem * item = iItems[i]; + item->SetAlternativeTemplateL( GetAlternativeWidgetNumber() ); + item->EvaluateItemL( aSuiteModel, GetSuiteParameters(), i ); + } + + MMPERF(("CHnMdSuite::EvaluateL - items evaluated - DONE")); + return KErrNone; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::MarkEvaluationL( CHnFilter& aFilter, CHnSuiteModel& aSuiteModel ) + { + if (aFilter.HasSuiteId()) + { + if (aSuiteModel.CustomId() == aFilter.SuiteId() ) + { + if ( aFilter.IsEvaluateSuite() ) + { + iEvaluationNeeded = ETrue; + } + for (TInt item(0); item < iItems.Count(); item++) + { + iItems[item]->MarkEvaluationL( aFilter ); + } + } + else + { + for (TInt itemIter(0); itemIter < iItems.Count(); itemIter++) + { + RArray< TInt > ids; + CleanupClosePushL( ids ); + aSuiteModel.GetItemsOrder()->GetIdsForL( itemIter, ids); + for (TInt idsIter(0); idsIter < ids.Count(); idsIter++) + { + if (aFilter.SuiteId() == ids[idsIter]) + { + iItems[itemIter]->MarkEvaluationL( aFilter ); + if (aFilter.IsEvaluateSuite()) + { + iEvaluationNeeded = ETrue; + } + } + } + CleanupStack::PopAndDestroy( &ids ); + } + } + } + else if( aFilter.HasSuiteName() ) + { + if( !SuiteName().Compare( aFilter.SuiteName()) ) + { + if ( aFilter.IsEvaluateSuite() ) + { + iEvaluationNeeded = ETrue; + } + for( TInt i( 0 ); i < iItems.Count(); i++ ) + { + iItems[i]->MarkEvaluationL( aFilter ); + } + } + } + else + { + if( aFilter.IsEvaluateSuite() ) + { + iEvaluationNeeded = ETrue; + } + for( TInt i( 0 ); i < iItems.Count(); i++ ) + { + iItems[i]->MarkEvaluationL( aFilter ); + } + } + } +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::CreateItemsL( TXmlEngElement aElement, + THnMdCommonPointers* aCmnPtrs ) + { + ASSERT( aElement.Name() == KSuiteElementName8 ); + + // construction... + RXmlEngNodeList< TXmlEngElement > elements; + CleanupClosePushL( elements ); + aElement.GetChildElements( elements ); + + TInt elementsCount = elements.Count(); + + for (TInt j = 0; j < elementsCount; j++ ) + { + TXmlEngElement element = elements.Next(); + if ( !element.Name().Compare( KItemElementName8 ) ) + { + CHnMdItem *item = CHnMdItem::NewL( element, aCmnPtrs ); + CleanupStack::PushL( item ); + iItems.AppendL( item ); + CleanupStack::Pop( item ); + } + } + CleanupStack::PopAndDestroy( &elements ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetGenreL(const TDesC& aGenre) + { + iSuiteName.Close(); + iSuiteName.CreateL( aGenre ); + iSuiteName.LowerCase(); + DEBUG16(("\t_MM_: suite attribute (genre): %S", &aGenre )); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetGenreL(TXmlEngAttr aGenre) + { + HBufC* genre = HnConvUtils::Str8ToStrLC( aGenre.Value() ); + SetGenreL(*genre); + // clean up + CleanupStack::PopAndDestroy(genre); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetTemplateL( TXmlEngAttr aTemplate ) + { + SetTemplateL( aTemplate.Value() ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetTemplateL( const TDesC8& aTemplate ) + { + delete iAllowableTemplate; + iAllowableTemplate = NULL; + iAllowableTemplate = new ( ELeave ) CDesC8ArrayFlat( 3 ); + + for (int i = 0; i < HnUtils::GetColumnTextColumnCount( aTemplate ); i++) + { + HBufC8* templateBuf = HnUtils::GetColumnTextLC( i, aTemplate ); + templateBuf->Des().Trim(); + iAllowableTemplate->AppendL( *templateBuf ); + CleanupStack::PopAndDestroy(templateBuf); + } + SetAlternativeTemplateL( GetAlternativeWidgetNumber() ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::AddInternalStateL( CLiwGenericParamList& aParamList ) + { + TLiwGenericParam param; + param.PushL(); + + CLiwDefaultMap* suiteMap = CLiwDefaultMap::NewL(); + suiteMap->PushL(); + + TLiwVariant suiteWidgetTypeVariant; + suiteWidgetTypeVariant.PushL(); + + CLiwDefaultMap* widgetTypeMap = CLiwDefaultMap::NewL(); + widgetTypeMap->PushL(); + + if ( iWidgetType == EGridWidget ) + { + widgetTypeMap->InsertL( KWidgetType8(), KWidgetTypeGrid8() ); + } + else if ( iWidgetType == EListWidget ) + { + widgetTypeMap->InsertL( KWidgetType8(), KWidgetTypeList8() ); + } + else if ( iWidgetType == ECoverFlowWidget ) + { + widgetTypeMap->InsertL( KWidgetType8(), KWidgetTypeCoverFlow8() ); + } + + widgetTypeMap->InsertL( KAllowedTypes8(), iAllowedTypes ); + + suiteWidgetTypeVariant.Set( widgetTypeMap ); + + // add suite widget type + suiteMap->InsertL( KSuite8(), suiteWidgetTypeVariant ); + aParamList.Remove( KMm8 ); + + // set internal state + param.SetNameAndValueL( KMm8, TLiwVariant( suiteMap ) ); + aParamList.AppendL( param ); + + CleanupStack::PopAndDestroy( widgetTypeMap ); + CleanupStack::PopAndDestroy( &suiteWidgetTypeVariant ); + CleanupStack::PopAndDestroy( suiteMap ); + CleanupStack::PopAndDestroy( ¶m ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::DoSetWidgetTypeL( TDesC8 & aConfDes ) + { + if ( !aConfDes.Compare( KWidgetTypeGrid8 )) + { + iAllowableWidgetType.AppendL( EGridWidget ); + } + else if ( !aConfDes.Compare( KWidgetTypeList8 ) ) + { + iAllowableWidgetType.AppendL( EListWidget ); + } + else if ( !aConfDes.Compare( KWidgetTypeCoverFlow8 ) ) + { + iAllowableWidgetType.AppendL( ECoverFlowWidget ); + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +EXPORT_C TInt CHnMdSuite::GetAlternativeWidgetNumber() + { + return iAllowableWidgetType.Find( iWidgetType ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetAlternativeTemplateL( TInt aOption ) + { + iTemplate.Close(); + if (aOption >= 0 && aOption < iAllowableTemplate->Count()) + { + const TDesC8 & val = (*iAllowableTemplate)[aOption]; + iTemplate.CreateL(val.Length()); + iTemplate.Copy(val); + iTemplate.Trim(); + } + else + { + iTemplate.CreateL( KNullDesC8() ); + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetAlternativeTemplateL( CLiwGenericParamList& aParams ) + { + RBuf8 logicalTemplate; + logicalTemplate.CleanupClosePushL(); + if ( KErrNone == HnLiwUtils::GetStringL( + aParams, KTemplatePath8, logicalTemplate ) && + KErrNone != logicalTemplate.Compare( KTemplatePath8 ) && + logicalTemplate.Length() ) + { + SetTemplateL( logicalTemplate ); + } + else + { + SetAlternativeTemplateL( GetAlternativeWidgetNumber() ); + } + CleanupStack::PopAndDestroy( &logicalTemplate ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TBool CHnMdSuite::ReadWidgetTypeFromServiceL( CLiwGenericParamList& aParams, + RBuf8& aWidgetType ) + { + return + HnLiwUtils::GetStringL( aParams, KWidgetTypePath8, aWidgetType ) == KErrNone + && aWidgetType.Compare( KWidgetTypePath8 ) != KErrNone + && aWidgetType.Length(); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetAlternativeWidgetL( CLiwGenericParamList& aParams ) + { + RBuf8 widget; + widget.CleanupClosePushL(); + if ( ReadWidgetTypeFromServiceL( aParams, widget ) ) + { + iAllowableWidgetType.Reset(); + SetWidgetTypeL( widget ); + } + else + { + ReadWidgetTypeL(); + } + CleanupStack::PopAndDestroy( &widget ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetWidgetTypeL( TXmlEngAttr aWidgetType ) + { + TPtrC8 widgetType = aWidgetType.Value(); + DEBUG8(("\t_MM_: suite attribute (widget type): %S", &widgetType)); + + SaveWidgetTypeL( widgetType ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetWidgetTypeL(TDesC8& aWidgetType) + { + iAllowedTypes.Close(); + iAllowedTypes.CreateL(aWidgetType); + const TInt columnCount(HnUtils::GetColumnTextColumnCount(aWidgetType)); + for (TInt i = 0; i < columnCount; i++) + { + HBufC8* type = HnUtils::GetColumnTextLC(i, aWidgetType); + type->Des().Trim(); + DoSetWidgetTypeL(*type); + CleanupStack::PopAndDestroy(type); + } + if (iAllowableWidgetType.Count() <= 0) + { + User::Leave(KErrCorrupt); + } + iWidgetType = iAllowableWidgetType[0]; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SaveWidgetTypeL( TDesC8& aWidgetType ) + { + SetWidgetTypeL( aWidgetType ); + CHnRepositoryManager* repMan = CHnRepositoryManager::NewLC(); + + if ( iAllowableWidgetType.Count() > 0 ) + { + THnSuiteWidgetType crWidgetType( EUnspecified ); + TInt err( repMan->ReadSuiteWidgetTypeL( iSuiteName, crWidgetType ) ); + if( !err || err == KErrNotFound ) + { + TInt found = iAllowableWidgetType.Find( crWidgetType ); + if ( crWidgetType != EUnspecified && found != KErrNotFound ) + { + iWidgetType = crWidgetType; + } + else + { + err = repMan->StoreSuiteWidgetTypeL( iSuiteName, iWidgetType ); + } + } + } + + CleanupStack::PopAndDestroy( repMan ); + } + + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetModeL( TMdMode aMode ) + { + if ( iMode != aMode ) + { + for( TInt i( 0 ); i < iItems.Count() ; i++ ) + { + if( iItems[i]->HasAlternativeModeItem() ) + { + CHnMdItem * currentItem = iItems[i]; + CHnMdItem * newItem = currentItem->TakeAlternativeModeItem(); + newItem->SetAlternativeModeItem( currentItem ); + iItems.InsertL( newItem, i ); + iItems.Remove( i+1 ); + } + } + iMode = aMode; + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TMdMode CHnMdSuite::Mode() + { + return iMode; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetTitleL( TXmlEngAttr aTitle ) + { + iTitle.Close(); + iTitle.CreateL( aTitle.Value().Length() ); + iTitle.Copy( aTitle.Value() ); + DEBUG8(("\t_MM_: suite attribute (name): %S", &iTitle)); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetEmptyTextL( TXmlEngAttr aEmptyText ) + { + iEmptyText.Close(); + iEmptyText.CreateL( aEmptyText.Value().Length() ); + iEmptyText.Copy( aEmptyText.Value() ); + DEBUG8(("\t_MM_: suite attribute (name): %S", &iEmptyText)); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +// +void CHnMdSuite::EvaluateSuiteItselfL( CHnSuiteModel & aSuiteModel ) + { + + DEBUG(("_MM_: CHnMdSuite::EvaluateSuiteItselfL IN")); + iSuiteModel = &aSuiteModel; + //delete old query collector and create new one + //currently running evaluations will be cancelled + delete iQc; + iQc = NULL; + iQc = CHnQueryResultCollector::NewL( *iQueries, GetSuiteParameters() ); + iQc->StartAsynchL( this ); + } +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +EXPORT_C const TDesC& CHnMdSuite::SuiteName() + { + return iSuiteName; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TInt CHnMdSuite::SaveWidgetTypeL() const + { + CHnRepositoryManager *repManager = CHnRepositoryManager::NewLC(); + DEBUG8(("\t_MM_: Saving '%S' widget type to CR: %d", &iSuiteName, iWidgetType)); + TInt ret( repManager->StoreSuiteWidgetTypeL( iSuiteName, iWidgetType ) ); + CleanupStack::PopAndDestroy(repManager); + return ret; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +TInt CHnMdSuite::ReadWidgetTypeL() + { + TInt ret = KErrNone; + + if (iAllowableWidgetType.Count() <= 1) + { + DEBUG8(("\t_MM_: Suite '%S' is allowed to have just one widget: %d ", &iSuiteName, iWidgetType)); + return ret; + } + + CHnRepositoryManager* repManager = CHnRepositoryManager::NewLC(); + THnSuiteWidgetType widgetType( EUnspecified ); + TInt err( repManager->ReadSuiteWidgetTypeL( iSuiteName, widgetType ) ); + if( ( !err || err == KErrNotFound ) && widgetType != EUnspecified ) + { + if ( widgetType == EChangeWidget ) + { + ASSERT( iAllowableWidgetType.Find( iWidgetType ) >= 0 ); + TInt index = (iAllowableWidgetType.Find( iWidgetType ) + 1) + % iAllowableWidgetType.Count(); + iWidgetType = iAllowableWidgetType[index]; + DEBUG8(("\t_MM_: Suite '%S' widget change invoked: %d", &iSuiteName, widgetType)); + SaveWidgetTypeL(); + } + else if ( iAllowableWidgetType.Find( widgetType ) != KErrNotFound ) + { + DEBUG8(("\t_MM_: Suite '%S' sets widget: %d from CR", &iSuiteName, widgetType)); + iWidgetType = widgetType; + } + } + CleanupStack::PopAndDestroy( repManager ); + return ret; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::ResultsCollectedL( CLiwGenericParamList* aResults ) + { + CLiwGenericParamList* queriesResultsList = CLiwGenericParamList::NewLC(); + queriesResultsList->AppendL( *aResults ); + queriesResultsList->AppendL( GetSuiteParameters() ); + + RBuf title; + CleanupClosePushL( title ); + HnLiwUtils::GetStringL( *queriesResultsList, iTitle, title ); + + RBuf suiteTitle; + CleanupClosePushL( suiteTitle ); + HnStringHandler::LocaliseL( suiteTitle, title, iCmnPtrs ); + + DEBUG16( ( "\t_MM_: SetTitleL: %S", &suiteTitle ) ); + iSuiteModel->SetTitleL( suiteTitle ); + + CleanupStack::PopAndDestroy( &suiteTitle ); + CleanupStack::PopAndDestroy( &title ); + + RBuf emptyText; + CleanupClosePushL( emptyText ); + HnLiwUtils::GetStringL( *queriesResultsList, iEmptyText, emptyText ); + + RBuf emptyTextLoc; + CleanupClosePushL( emptyTextLoc ); + HnStringHandler::LocaliseL( emptyTextLoc, emptyText, iCmnPtrs ); + + DEBUG16(("\t_MM_: SetEmptyTestL: %S", &emptyTextLoc)); + iSuiteModel->SetEmptyTextL( emptyTextLoc ); + + CleanupStack::PopAndDestroy( &emptyTextLoc ); + CleanupStack::PopAndDestroy( &emptyText ); + + // set widget type + SetAlternativeWidgetL( *queriesResultsList ); + iSuiteModel->SetWidgetType( iWidgetType ); + + // set custom id + SetCustomIdL( iSuiteModel, *queriesResultsList, 0 ); + + // set exit mode + SetExitModeL(); + + // set template + SetAlternativeTemplateL( *queriesResultsList ); + iSuiteModel->SetTemplateL( iTemplate ); + + // add widget type to aParams + AddInternalStateL( GetSuiteParameters() ); + DEBUG(("\t_MM_: WidgetType: %d", iSuiteModel->WidgetType())); + + // evaluate actions + iEventMapping->FillActionsL( iSuiteModel->GetActions(), + *queriesResultsList ); + + CleanupStack::PopAndDestroy( queriesResultsList ); + + iSuiteModel->RefreshMulModelL( iSuiteModel->GetItemsOrder()->Count() ); + TBool observersNotified = iSuiteModel->SuiteEvaluationFinishedL(); + if ( observersNotified ) + { + iCmnPtrs->iModel->SuiteModelReadyToShowL( iSuiteModel ); + } + + // set uri based highlight + SetUriBasedHighlightL(); + + //DEBUG16(("\t\t_MM_: SetTemplate: ")); + DEBUG(("_MM_: CHnMdSuite::ResultsCollectedL OUT")); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetUriBasedHighlightL() + { + RBuf tmp; + CleanupClosePushL( tmp ); + HnLiwUtils::GetStringL( *iSuiteParams, KParamsUriHighlightSuite, tmp ); + + if ( !tmp.Compare( this->iSuiteName ) ) + { + tmp.Close(); + HnLiwUtils::GetStringL( *iSuiteParams, KParamsUriHighlight, tmp ); + + TLex lexFrag( tmp ); + TInt highLight( 0 ); + if( !( lexFrag.Val( highLight ) ) ) + { + iSuiteModel->SetSuiteHighlightL( highLight ); + } + } + + CleanupStack::PopAndDestroy( &tmp ); + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetCustomIdL( TXmlEngElement aElement ) + { + iCustomId8.Close(); + + if ( aElement.HasAttributeL( KCustomId8 ) ) + { + TPtrC8 av = aElement.AttributeValueL( KCustomId8 ); + iCustomId8.CreateL( av ); + } + else + { + iCustomId8.CreateL( KItemTypeUnknown8 ); + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetCustomIdL( CHnSuiteModel* aSuiteModel, + const CLiwGenericParamList& aParams, TInt aPos ) + { + TInt64 customId( KErrNotFound ); + if ( KErrNone == HnLiwUtils::GetInt64L( + aParams, iCustomId8, aPos, customId ) ) + { + aSuiteModel->SetCustomId( customId ); + } + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CHnMdSuite::SetExitModeL() + { + RBuf exitMode; + CleanupClosePushL( exitMode ); + HnLiwUtils::GetStringL( *iSuiteParams, KExitModeParams, exitMode ); + + if ( !exitMode.Compare( KExitModeHide ) ) + { + iSuiteModel->SetExitMode( EExitModeHide ); + } + else + { + iSuiteModel->SetExitMode( EExitModeNormal ); + } + + CleanupStack::PopAndDestroy( &exitMode ); + } + + +// End of file