--- a/menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp Wed Sep 15 12:00:00 2010 +0300
+++ b/menufw/hierarchynavigator/hnmetadatamodel/src/hnrepositoryobserver.cpp Wed Oct 13 14:18:30 2010 +0300
@@ -227,8 +227,9 @@
{
CHnRepositoryObserver::ConstructL( aRepositoryUid );
TInt ret = iRepository->Create( iId, KBlank );
- iNotifyHandler = CCenRepNotifyHandler::NewL( *this, *iRepository,
- CCenRepNotifyHandler::EStringKey, iId );
+ iNotifyHandler = CCenRepNotifyHandler::NewL(
+ *this, *iRepository,
+ CCenRepNotifyHandler::EStringKey, iId );
iNotifyHandler->StartListeningL();
}
@@ -272,128 +273,129 @@
//++Show Folder
if( aId == iId && aNewValue.Length())
- {
+ {
iNotifyType = 0;
- ExtractCRKeyShowFolderName( aNewValue );
+ ExtractCRKeyShowFolderName( aNewValue );
- // iCRKeyFolderItemUid can contain mcs id or uid
- // in case of uid it will be replaced whith id in HandleNotifyL callback
- if( iCRKeyFolderItemUid.Length()>0 )
+ // iCRKeyFolderItemUid can contain mcs id or uid
+ // in case of uid it will be replaced whith id in HandleNotifyL callback
+ if( iCRKeyFolderItemUid.Length()>0 )
+ {
+ if( iCRKeyFolderItemUid.FindF( KHexPrefix8 )==0 )
+ {
+ iNotifyType |= EAPP_UID;
+ }
+ else
+ {
+ iNotifyType |= EAPP_ID;
+ }
+ }
+
+ CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
+ KInData8, KKeyTypeMap, KDefaultParentId8 );
+ CleanupStack::PushL( inDataKey );
+
+ CHnMdBaseKey* filter( NULL );
+ HBufC8* id( NULL );
+ if ( iCRKeyFolderName.Length()>0 && !( iNotifyType & EAPP_UID ) )
{
- if( iCRKeyFolderItemUid.FindF( KHexPrefix8 )==0 )
- {
- iNotifyType |= EAPP_UID;
- }
- else
- {
- iNotifyType |= EAPP_ID;
- }
+ // app group name is known
+ // id is optional
+ id = HnConvUtils::NumToStr8LC( KRootId );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
+
+ filter = HnMdKeyFactory::CreateL(
+ KFilter8, KKeyTypeMap, KStringTrue8 );
+ CleanupStack::PushL( filter );
+ filter->AddSubKeyL( HnMdKeyFactory::CreateL( KMcsAppGroupName8, KKeyTypeString, iCRKeyFolderName ) );
+ filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
+ filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) );
+ }
+ else if( iNotifyType & EAPP_ID )
+ {
+ // no app group name, id is known
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuApplication8 ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, iCRKeyFolderItemUid ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
+ }
+ else if( iNotifyType & EAPP_UID )
+ {
+ // uid is known
+ // app group name is optional
+ id = HnConvUtils::NumToStr8LC( KRootId );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
+
+ filter = HnMdKeyFactory::CreateL(
+ KFilter8, KKeyTypeMap, KStringTrue8 );
+ CleanupStack::PushL( filter );
+ filter->AddSubKeyL( HnMdKeyFactory::CreateL( KUid8, KKeyTypeInteger, iCRKeyFolderItemUid ) );
+ filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuApplication8 ) );
+ filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) );
+ }
+ else
+ {
+ // No app group name, no uid. Search for root.
+ id = HnConvUtils::NumToStr8LC( KRootId );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
+ inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
}
- CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
- KInData8, KKeyTypeMap, KDefaultParentId8 );
- CleanupStack::PushL( inDataKey );
-
- CHnMdBaseKey* filter( NULL );
- HBufC8* id( NULL );
- if ( iCRKeyFolderName.Length()>0 && !( iNotifyType & EAPP_UID ) )
- {
- // app group name is known
- // id is optional
- id = HnConvUtils::NumToStr8LC( KRootId );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
+ RPointerArray< CHnMdBaseKey > data;
+ CleanupClosePushL( data );
+ data.AppendL( inDataKey );
+ if ( filter )
+ {
+ data.AppendL( filter );
+ }
- filter = HnMdKeyFactory::CreateL(
- KFilter8, KKeyTypeMap, KStringTrue8 );
- CleanupStack::PushL( filter );
- filter->AddSubKeyL( HnMdKeyFactory::CreateL( KMcsAppGroupName8, KKeyTypeString, iCRKeyFolderName ) );
- filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
- filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) );
- }
- else if( iNotifyType & EAPP_ID )
- {
- // no app group name, id is known
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuApplication8 ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, iCRKeyFolderItemUid ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
- }
- else if( iNotifyType & EAPP_UID )
- {
- // uid is known
- // app group name is optional
- id = HnConvUtils::NumToStr8LC( KRootId );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KRecursiveSearch8, KKeyTypeBoolean, KStringTrue8 ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KFlatResult8, KKeyTypeBoolean, KStringTrue8 ) );
+ CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL(
+ KServiceContentName, KKeyTypeString, KMatrixMenuData );
+ CleanupStack::PushL( serviceData );
+
+ RPointerArray< CHnMdBaseKey> constructor;
+ CleanupClosePushL( constructor );
+ constructor.AppendL( serviceData );
+ CLiwGenericParamList* constructorLiw = CLiwGenericParamList::NewLC();
+ CLiwGenericParamList* commandLiw = CLiwGenericParamList::NewLC();
+ HnLiwUtils::SetGenericParamListL( constructor, *constructorLiw );
+ HnLiwUtils::SetGenericParamListL( data, *commandLiw );
+
+ TBuf8< KMaxLength > interface( KMCSDataSourceInterface8 );
- filter = HnMdKeyFactory::CreateL(
- KFilter8, KKeyTypeMap, KStringTrue8 );
- CleanupStack::PushL( filter );
- filter->AddSubKeyL( HnMdKeyFactory::CreateL( KUid8, KKeyTypeInteger, iCRKeyFolderItemUid ) );
- filter->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuApplication8 ) );
- filter->AddSubKeyL( HnMdKeyFactory::CreateL( KHidden8, KKeyTypeBoolean, KStringFalse8 ) );
- }
- else
- {
- // No app group name, no uid. Search for root.
- id = HnConvUtils::NumToStr8LC( KRootId );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, *id ) );
- inDataKey->AddSubKeyL( HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
- }
+ delete iServiceHandler;
+ iServiceHandler = NULL;
+ iServiceHandler = CHnServiceHandler::NewL(
+ KMCSService8, interface, KCmdGetList8,
+ EServiceModeAsynchronous, constructorLiw, commandLiw );
- RPointerArray< CHnMdBaseKey > data;
- CleanupClosePushL( data );
- data.AppendL( inDataKey );
- if ( filter )
- {
- data.AppendL( filter );
- }
+ CleanupStack::Pop( commandLiw );
+ CleanupStack::Pop( constructorLiw );
- CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL(
- KServiceContentName, KKeyTypeString, KMatrixMenuData );
- CleanupStack::PushL( serviceData );
+ iServiceHandler->ExecuteL( this );
- RPointerArray< CHnMdBaseKey> constructor;
- CleanupClosePushL( constructor );
- constructor.AppendL( serviceData );
- CLiwGenericParamList* constructorLiw = CLiwGenericParamList::NewLC();
- CLiwGenericParamList* commandLiw = CLiwGenericParamList::NewLC();
- HnLiwUtils::SetGenericParamListL( constructor, *constructorLiw );
- HnLiwUtils::SetGenericParamListL( data, *commandLiw );
-
- TBuf8< KMaxLength > interface( KMCSDataSourceInterface8 );
-
- delete iServiceHandler;
- iServiceHandler = NULL;
- iServiceHandler = CHnServiceHandler::NewL(
- KMCSService8, interface, KCmdGetList8,
- EServiceModeAsynchronous, constructorLiw, commandLiw );
-
- CleanupStack::Pop( commandLiw );
- CleanupStack::Pop( constructorLiw );
-
- iServiceHandler->ExecuteL( this );
-
- CleanupStack::PopAndDestroy( &constructor );
- CleanupStack::PopAndDestroy( serviceData );
- CleanupStack::PopAndDestroy( &data );
- if( filter )
- {
- CleanupStack::PopAndDestroy( filter );
- }
- if( id )
- {
- CleanupStack::PopAndDestroy( id );
- }
- CleanupStack::PopAndDestroy( inDataKey );
- }
+ CleanupStack::PopAndDestroy( &constructor );
+ CleanupStack::PopAndDestroy( serviceData );
+ CleanupStack::PopAndDestroy( &data );
+ if( filter )
+ {
+ CleanupStack::PopAndDestroy( filter );
+ }
+ if( id )
+ {
+ CleanupStack::PopAndDestroy( id );
+ }
+ CleanupStack::PopAndDestroy( inDataKey );
+ }
DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyStringL OUT"));
+
}
// ---------------------------------------------------------------------------
@@ -401,91 +403,91 @@
// ---------------------------------------------------------------------------
//
void CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName( const TDesC& aNewValue )
- {
- DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName IN" ));
- iCRKeyFolderName.Copy( KBlank );
- iCRKeyFolderItemUid.Copy( KBlank );
+ {
+ DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName IN" ));
+ iCRKeyFolderName.Copy( KBlank );
+ iCRKeyFolderItemUid.Copy( KBlank );
- int keyValueLength = aNewValue.Length();
- if( keyValueLength )
- {
- TApaAppGroupName folder;
- TBuf<KTimeStampBufferLength + KUidStringLength + 1> tempBuf;
- TBuf<KTimeStampBufferLength> timeStamp;
+ int keyValueLength = aNewValue.Length();
+ if( keyValueLength )
+ {
+ TApaAppGroupName folder;
+ TBuf<KTimeStampBufferLength + KUidStringLength + 1> tempBuf;
+ TBuf<KTimeStampBufferLength> timeStamp;
- TInt ret = aNewValue.Find( KComma );
- if( ( ret == KErrNotFound ) || ( ret == ( keyValueLength - 1 ) ) )
- {
- DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad CR key value input) OUT" ));
- return; //bad CR key value input
- }
- if( ret > KApaMaxAppGroupName )
- {
- return;
- }
- folder.Copy( aNewValue.Left( ret ) );
- if( aNewValue.Length() - ret > tempBuf.MaxLength() )
- {
- return;
- }
- tempBuf.Copy( aNewValue.Mid( ret + 1 ) );
+ TInt ret = aNewValue.Find( KComma );
+ if( (ret == KErrNotFound )|| ( ret == ( keyValueLength-1 ) ) )
+ {
+ DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad CR key value input) OUT" ));
+ return; //bad CR key value input
+ }
+ if( ret>KApaMaxAppGroupName )
+ {
+ return;
+ }
+ folder.Copy(aNewValue.Left(ret));
+ if( aNewValue.Length()-ret > tempBuf.MaxLength() )
+ {
+ return;
+ }
+ tempBuf.Copy(aNewValue.Mid( ret + 1 ) );
- TInt posUid = tempBuf.Find( KComma );
- if( KErrNotFound != posUid )
- {
- if( posUid > KTimeStampBufferLength )
- {
- return;
- }
- timeStamp.Copy( tempBuf.Left( posUid ) );
- if( tempBuf.Length() - ( posUid + 1 ) > KUidStringLength )
- {
- return;
- }
- iCRKeyFolderItemUid.Copy( tempBuf.Mid( posUid + 1 ) );
- }
- else
- {
- if( tempBuf.Length() > KTimeStampBufferLength )
- {
- return;
- }
- timeStamp.Copy( tempBuf );
- }
+ TInt posUid = tempBuf.Find( KComma );
+ if ( KErrNotFound != posUid )
+ {
+ if( posUid>KTimeStampBufferLength )
+ {
+ return;
+ }
+ timeStamp.Copy( tempBuf.Left(posUid) );
+ if( tempBuf.Length()-(posUid+1) > KUidStringLength )
+ {
+ return;
+ }
+ iCRKeyFolderItemUid.Copy( tempBuf.Mid( posUid + 1 ) );
+ }
+ else
+ {
+ if( tempBuf.Length()>KTimeStampBufferLength )
+ {
+ return;
+ }
+ timeStamp.Copy( tempBuf );
+ }
- TTime currentTime;
- currentTime.HomeTime();
- TTimeIntervalSeconds interval;
+ TTime currentTime;
+ currentTime.HomeTime();
+ TTimeIntervalSeconds interval;
- TTime timeStampTime;
- ret = timeStampTime.Set( timeStamp );
+ TTime timeStampTime;
+ ret = timeStampTime.Set(timeStamp);
- if( ret == KErrGeneral )
- {
- DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad timestamp) OUT" ));
- return; // bad time stamp value
- }
+ if(ret == KErrGeneral )
+ {
+ DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (bad timestamp) OUT" ));
+ return; // bad time stamp value
+ }
- ret = currentTime.SecondsFrom( timeStampTime, interval );
+ ret = currentTime.SecondsFrom( timeStampTime, interval );
- if( interval.Int() < 0 )
- {//negative timestamp is set ahead of current time...!
- DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (negative interval) OUT" ));
- return;
- }
+ if( interval.Int() < 0 )
+ {//negative timestamp is set ahead of current time...!
+ DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (negative interval) OUT" ));
+ return;
+ }
- if( ( interval.Int() ) > KTimeStampCutOff )
- {//positive timestamp but more than 5 seconds
- DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (more than 5 seconds) OUT" ));
- return;
- }
- else
- {
- iCRKeyFolderName.Copy( folder );
- }
- }
- DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName OUT" ));
- }
+ if(( interval.Int()) > KTimeStampCutOff )
+ {//positive timestamp but more than 5 seconds
+ DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName (more than 5 seconds) OUT" ));
+ return;
+ }
+ else
+ {
+ iCRKeyFolderName.Copy(folder);
+ }
+ }
+ DEBUG(( "_MM_:CHnRepositoryShowFolderObserver::ExtractCRKeyShowFolderName OUT" ));
+ }
// ---------------------------------------------------------------------------
//
@@ -545,6 +547,7 @@
//
void CHnRepositoryShowFolderObserver::GetShowFolderGroupNameL()
{
+
CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
KInData8, KKeyTypeMap, KDefaultParentId8 );
CleanupStack::PushL( inDataKey );
@@ -608,13 +611,13 @@
// ---------------------------------------------------------------------------
//
TInt CHnRepositoryShowFolderObserver::HandleNotifyL(
- TInt /*aCmdId*/,
- TInt aEventId,
- CLiwGenericParamList& aEventParamList,
- const CLiwGenericParamList& /*aInParamList*/)
- {
- DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyL IN"));
- if( aEventId == KLiwEventCanceled )
+ TInt /*aCmdId*/,
+ TInt aEventId,
+ CLiwGenericParamList& aEventParamList,
+ const CLiwGenericParamList& /*aInParamList*/)
+ {
+ DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyL IN"));
+ if( aEventId == KLiwEventCanceled )
{
return KErrNotFound;
}
@@ -729,6 +732,7 @@
if ( iCmnPtrs->iContainer->GetLastSuiteModel()->CustomId() != varId.AsTInt64() )
{
iCmnPtrs->iModelEventObserver->HandleModelEventL( KNewSuiteLoadedMdEvent, *paramList );
+ iCmnPtrs->iContainer->GetLastSuiteModel()->RegisterSuiteObserverL( this );
iCmnPtrs->iModel->QueueForeground( CHnMdModel::EWhenCurrentTopSuiteIsEvaluated );
}
else
@@ -765,252 +769,37 @@
CleanupStack::PopAndDestroy( &varId );
}
- DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyL OUT"));
- return KErrNone;
- }
-
-// class CHnRepositoryOpenItemObserver
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CHnRepositoryOpenItemObserver * CHnRepositoryOpenItemObserver::NewL(
- THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId )
- {
- CHnRepositoryOpenItemObserver * self = CHnRepositoryOpenItemObserver::NewLC(
- aCmnPtrs, aRepositoryUid, aId );
- CleanupStack::Pop(self);
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CHnRepositoryOpenItemObserver * CHnRepositoryOpenItemObserver::NewLC(
- THnMdCommonPointers* aCmnPtrs, const TUid aRepositoryUid, const TUint32 aId )
- {
- CHnRepositoryOpenItemObserver * self = new (ELeave) CHnRepositoryOpenItemObserver(
- aCmnPtrs, aId );
- CleanupStack::PushL(self);
- self->ConstructL( aRepositoryUid );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CHnRepositoryOpenItemObserver::ConstructL( const TUid aRepositoryUid )
- {
- CHnRepositoryObserver::ConstructL( aRepositoryUid );
- TInt ret = iRepository->Create( iId, KBlank );
- iNotifyHandler = CCenRepNotifyHandler::NewL( *this, *iRepository,
- CCenRepNotifyHandler::EStringKey, iId );
- iNotifyHandler->StartListeningL();
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CHnRepositoryOpenItemObserver::CHnRepositoryOpenItemObserver(
- THnMdCommonPointers* aCmnPtrs, TUint32 aId ) :
- CHnRepositoryObserver( aCmnPtrs, aId )
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CHnRepositoryOpenItemObserver::~CHnRepositoryOpenItemObserver()
- {
- iRepository->Delete( iId );
- delete iServiceHandler;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CHnRepositoryOpenItemObserver::HandleNotifyString(
- TUint32 aId, const TDesC16& aNewValue )
- {
- TRAP_IGNORE( HandleNotifyStringL( aId, aNewValue ) );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CHnRepositoryOpenItemObserver::HandleNotifyStringL(
- TUint32 aId, const TDesC16& aNewValue )
- {
- DEBUG(("_MM_:CHnRepositoryOpenItemObserver::HandleNotifyStringL IN"));
- DEBUG(("\tID: %d : %S", aId, &aNewValue));
-
- // Open item
- if( aId == iId && aNewValue.Length())
- {
- ShowFolderL( aNewValue );
- }
- }
+ DEBUG(("_MM_:CHnRepositoryShowFolderObserver::HandleNotifyL OUT"));
+ return KErrNone;
+ }
// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
//
-TInt CHnRepositoryOpenItemObserver::HandleNotifyL(
- TInt /*aCmdId*/,
- TInt aEventId,
- CLiwGenericParamList& aEventParamList,
- const CLiwGenericParamList& /*aInParamList*/)
- {
- DEBUG(("_MM_:CHnRepositoryOpenItemObserver::HandleNotifyL IN"));
- if( aEventId == KLiwEventCanceled )
- {
- return KErrNotFound;
- }
- else
- {
- TInt pos( 0 );
- const TLiwGenericParam* first = aEventParamList.FindFirst(
- pos, KReturnValue8() );
- if( pos == KErrNotFound )
- {
- return KErrNotFound;
- }
-
- TInt count = first->Value().AsList()->Count();
- if( count == 0 )
- {
- return KErrNotFound;
- }
-
- TLiwVariant varId;
- varId.PushL();
- TLiwVariant varAppGroupName;
- varAppGroupName.PushL();
- TLiwVariant varSuiteName;
- varSuiteName.PushL();
- TLiwVariant varChildrenCount;
- varChildrenCount.PushL();
+void CHnRepositoryShowFolderObserver::HandleSuiteEventL ( THnCustomSuiteEvent aCustomSuiteEvent,
+ CHnSuiteModel *aModel )
+ {
- HnLiwUtils::GetVariantL( aEventParamList, KIdPath8, 0, varId );
- HnLiwUtils::GetVariantL( aEventParamList, KAppGroupNamePath8, 0, varAppGroupName );
- HnLiwUtils::GetVariantL( aEventParamList, KTitleNamePath8, 0, varSuiteName );
- HnLiwUtils::GetVariantL( aEventParamList, KChildrenCountPath8, 0, varChildrenCount );
-
- CLiwGenericParamList* paramList = CLiwGenericParamList::NewL();
- CleanupStack::PushL( paramList );
-
- CLiwDefaultMap* map = CLiwDefaultMap::NewLC();
-
- paramList->AppendL( TLiwGenericParam( KSuiteName8, TLiwVariant(
- KFolderSuite ) ) );
-
- map->InsertL( KSuiteName8, varSuiteName );
- map->InsertL( KFolderId8, varId );
- map->InsertL( KRemoveLocked8, TLiwVariant( KStringFalse8 ) );
- map->InsertL( KParentFolderId8, varId );
- map->InsertL( KTmpParentFolderId8, varId );
- map->InsertL( KMcsAppGroupName8, varAppGroupName );
-
- paramList->AppendL( TLiwGenericParam( KParams8, TLiwVariant( map ) ) );
-
- CleanupStack::PopAndDestroy( map );
-
- while( iCmnPtrs->iModel->LoadedSuitesCount() > 1 )
+ if ( aCustomSuiteEvent == ESuiteModelInitialized && iCRKeyFolderItemUid.Length() > 0 )
+ {
+ if (iCRKeyFolderItemUid.Length() > 0 )
{
- CHnMdSuite* suite = iCmnPtrs->iModel->GetLastSuite();
- iCmnPtrs->iContainer->PopSuiteModelL( suite->SuiteName() );
- iCmnPtrs->iModel->DeleteLastSuite();
- }
-
- if( iCmnPtrs->iContainer->GetLastSuiteModel()->CustomId()
- != varId.AsTInt64() )
- {
- iCmnPtrs->iModelEventObserver->HandleModelEventL(
- KNewSuiteLoadedMdEvent, *paramList );
- iCmnPtrs->iModel->QueueForeground(
- CHnMdModel::EWhenCurrentTopSuiteIsEvaluated );
+ TLex8 lex( iCRKeyFolderItemUid );
+ TInt64 id (0);
+ TInt err = lex.Val( id );
+ TInt focus( KErrNotFound );
+ // If suite is not null, then find matching item model.
+ CHnItemModel* itemModel = aModel->GetMatchingItemModelL( id, focus );
+ aModel->SetSuiteHighlightL( focus );
}
- else
- {
- iCmnPtrs->iContainer->GetLastSuiteModel()->NotifyObserversL(
- ESuiteModelInitialized );
- CLiwGenericParamList* paramList = CLiwGenericParamList::NewL();
- CleanupStack::PushL( paramList );
- iCmnPtrs->iModelEventObserver->HandleModelEventL(
- KAppGainForeground, *paramList );
- CleanupStack::PopAndDestroy( paramList );
- }
-
- iRepository->Set( iId, KBlank ); // reset key repository to empty string
-
- CleanupStack::PopAndDestroy( paramList );
- CleanupStack::PopAndDestroy( &varChildrenCount );
- CleanupStack::PopAndDestroy( &varSuiteName );
- CleanupStack::PopAndDestroy( &varAppGroupName );
- CleanupStack::PopAndDestroy( &varId );
- }
-
- DEBUG(("_MM_:CHnRepositoryOpenItemObserver::HandleNotifyL OUT"));
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CHnRepositoryOpenItemObserver::ShowFolderL( const TDesC16& aFolderId )
- {
- CHnMdBaseKey* inDataKey = HnMdKeyFactory::CreateL(
- KInData8, KKeyTypeMap, KDefaultParentId8 );
- CleanupStack::PushL( inDataKey );
- inDataKey->AddSubKeyL(
- HnMdKeyFactory::CreateL( KType8, KKeyTypeString, KMenuFolder8 ) );
- inDataKey->AddSubKeyL(
- HnMdKeyFactory::CreateL( KIdParam, KKeyTypeInteger, aFolderId ) );
- inDataKey->AddSubKeyL(
- HnMdKeyFactory::CreateL( KParentOnly8, KKeyTypeBoolean, KStringTrue8 ) );
-
- RPointerArray< CHnMdBaseKey > data;
- CleanupClosePushL( data );
- data.Append( inDataKey );
-
- CHnMdBaseKey* serviceData = HnMdKeyFactory::CreateL(
- KServiceContentName, KKeyTypeString, KMatrixMenuData );
- CleanupStack::PushL( serviceData );
-
- RPointerArray< CHnMdBaseKey> constructor;
- CleanupClosePushL( constructor );
- constructor.Append( serviceData );
- CLiwGenericParamList* constructorLiw = CLiwGenericParamList::NewLC();
- CLiwGenericParamList* commandLiw = CLiwGenericParamList::NewLC();
- HnLiwUtils::SetGenericParamListL( constructor, *constructorLiw );
- HnLiwUtils::SetGenericParamListL( data, *commandLiw );
-
- TBuf8< KMaxLength > interface( KMCSDataSourceInterface8 );
-
- delete iServiceHandler;
- iServiceHandler = NULL;
- iServiceHandler = CHnServiceHandler::NewL(
- KMCSService8, interface, KCmdGetList8,
- EServiceModeAsynchronous, constructorLiw, commandLiw );
-
- CleanupStack::Pop( commandLiw );
- CleanupStack::Pop( constructorLiw );
-
- iServiceHandler->ExecuteL( this );
-
- CleanupStack::PopAndDestroy( &constructor );
- CleanupStack::PopAndDestroy( serviceData );
- CleanupStack::PopAndDestroy( &data );
- CleanupStack::PopAndDestroy( inDataKey );
-
- }
+ iCRKeyFolderItemUid.Copy( KBlank );
+ aModel->UnregisterSuiteObserver( this );
+ CLiwGenericParamList* pl = CLiwGenericParamList::NewL();
+ CleanupStack::PushL( pl );
+ iCmnPtrs->iModelEventObserver->HandleModelEventL( KAppGainForeground, *pl );
+ CleanupStack::PopAndDestroy( pl );
+ }
+ }
// End of File