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 // |