idlefw/plugins/mcsplugin/publisher/src/mcsplugindata.cpp
branchRCL_3
changeset 8 d0529222e3f0
parent 1 844b978f8d5e
child 11 bd874ee5e5e2
equal deleted inserted replaced
4:1a2a00e78665 8:d0529222e3f0
   121     RPointerArray<CItemMap> settings;
   121     RPointerArray<CItemMap> settings;
   122     TCleanupItem settingsCleanupItem( ItemMapArrayCleanupFunc, &settings );
   122     TCleanupItem settingsCleanupItem( ItemMapArrayCleanupFunc, &settings );
   123     CleanupStack::PushL( settingsCleanupItem );
   123     CleanupStack::PushL( settingsCleanupItem );
   124     iPluginSettings->GetSettingsL( iInstanceUid, settings );
   124     iPluginSettings->GetSettingsL( iInstanceUid, settings );
   125     TInt count = settings.Count();
   125     TInt count = settings.Count();
   126     for( TInt i = 0; i < count; i++ )
   126     TBool wasEmpty = !iData.Count();
       
   127     
       
   128     for ( TInt i = 0; i < count; i++ )
   127        {
   129        {
   128         CItemMap* itemMap = settings[i];
   130         CItemMap* itemMap = settings[ i ];
   129         RPointerArray<HSPluginSettingsIf::CPropertyMap>& properties
   131         RPointerArray<HSPluginSettingsIf::CPropertyMap>& properties
   130             = itemMap->Properties();
   132             = itemMap->Properties();
   131         TMenuItem item = CreateMenuItemL( properties );
   133         TMenuItem item = CreateMenuItemL( properties );
   132         TMCSData data;
   134         TMCSData data;
   133         TInt id = -1;
   135 
   134         
   136         if ( wasEmpty )
   135         if ( count == iData.Count() )
   137             {
   136             {
   138             // list of shortcut slot was empty
   137             id = iData[i].MenuItem().Id();
   139             // we append the shortcut data slots one-by-one to the list
   138             }
   140             data.SetMenuItem( item );
   139                    
   141             data.SetDirty( ETrue );
   140         if ( id > 0 )
   142             iData.AppendL( data );
   141             {
   143             }
       
   144         else 
       
   145             {
       
   146             // check for updates in existing shortcut data slot
       
   147             // if menuitem id has changed, replace the item and 
       
   148             // set as dirty
       
   149             TInt id = -1;
       
   150             id = iData[ i ].MenuItem().Id();
       
   151             
   142             if ( item.Id() != id )
   152             if ( item.Id() != id )
   143                 {
   153                 {
   144                 data.SetMenuItem( item );
   154                 data.SetMenuItem( item );
   145                 data.SetDirty( ETrue );
   155                 data.SetDirty( ETrue );
   146                 iData.Remove( i );
   156                 iData.Remove( i );
   147                 iData.InsertL( data, i );
   157                 iData.InsertL( data, i );
   148                 }
   158                 }
   149         	}
   159             }
   150         else
   160         }
   151             {
   161     
   152             data.SetMenuItem( item );
   162         CleanupStack::PopAndDestroy(); // settingsCleanupItem 
   153             data.SetDirty( ETrue );
   163     }
   154             iData.AppendL( data );
   164 
   155         	}
       
   156         }
       
   157     
       
   158         CleanupStack::PopAndDestroy(); // settingsCleanupItem
       
   159     }
       
   160 
   165 
   161 // ---------------------------------------------------------------------------
   166 // ---------------------------------------------------------------------------
   162 // 
   167 // 
   163 // ---------------------------------------------------------------------------
   168 // ---------------------------------------------------------------------------
   164 //
   169 //