diff -r f966699dea19 -r ff572dfe6d86 idlehomescreen/widgetmanager/src/wmpersistentwidgetorder.cpp --- a/idlehomescreen/widgetmanager/src/wmpersistentwidgetorder.cpp Fri Feb 19 22:42:37 2010 +0200 +++ b/idlehomescreen/widgetmanager/src/wmpersistentwidgetorder.cpp Fri Mar 12 15:41:49 2010 +0200 @@ -23,6 +23,7 @@ #include #include "wmwidgetdata.h" +#include "wmwidgetorderdata.h" #include "wmpersistentwidgetorder.h" // CONSTANTS @@ -67,6 +68,7 @@ CWmPersistentWidgetOrder::~CWmPersistentWidgetOrder() { CleanupArray(); + iTagArray.Close(); } // --------------------------------------------------------- @@ -107,45 +109,56 @@ // CWmPersistentWidgetOrder::StoreL // --------------------------------------------------------- // -void CWmPersistentWidgetOrder::StoreL( const RWidgetDataValues& aArray ) +void CWmPersistentWidgetOrder::StoreL( const ROrderArray& aArray ) { + // 1. create stream for storing the data to a file TFileName storeFileName; GetStoreFileNameL( storeFileName ); CPermanentFileStore* fileStore = NULL; fileStore = CPermanentFileStore::ReplaceLC( iFs, storeFileName, EFileWrite ); - fileStore->SetTypeL( KPermanentFileStoreLayoutUid ); - RStoreWriteStream writer; - TStreamId id = writer.CreateLC( *fileStore ); - // 2. write all content to the stream - writer.WriteInt32L( aArray.Count() ); - for( TInt i=0; iIsValid() ) + fileStore->SetTypeL( KPermanentFileStoreLayoutUid ); + RStoreWriteStream writer; + TStreamId id = writer.CreateLC( *fileStore ); + + // 2. write all content to the stream + writer.WriteInt32L( aArray.Count() ); + for( TInt i=0; iUid().iUid; + const TDesC16& publisherId = data->PublisherId(); + writer.WriteInt32L( uid ); + writer.WriteInt32L( publisherId.Length() ); + writer.WriteL( publisherId, publisherId.Length() ); + } - TInt32 uid = data->Uid().iUid; - const TDesC16& publisherId = data->HsContentInfo().PublisherId(); - writer.WriteInt32L( uid ); - writer.WriteInt32L( publisherId.Length() ); - writer.WriteL( publisherId, publisherId.Length() ); + // 3. check available space and commit the stream + TInt streamsize = writer.Sink()->SizeL(); + TBool belowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL( + &iFs, streamsize, EDriveC ); + + if( !belowCriticalLevel ) + { + writer.CommitL(); + fileStore->SetRootL(id); + fileStore->CommitL(); + } + + // 4. cleanup + CleanupStack::PopAndDestroy( &writer ); + CleanupStack::PopAndDestroy( fileStore ); } - // 3. check available space and commit the stream - TInt streamsize = writer.Sink()->SizeL(); - TBool belowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL( - &iFs, streamsize, EDriveC ); - if( !belowCriticalLevel ) - { - writer.CommitL(); - fileStore->SetRootL(id); - fileStore->CommitL(); - } - // 4. cleanup - CleanupStack::PopAndDestroy( &writer ); - CleanupStack::PopAndDestroy( fileStore ); + } // --------------------------------------------------------- @@ -157,9 +170,9 @@ for( TInt i=0; i