idlefw/plugins/mcsplugin/publisher/src/mcsplugindata.cpp
branchRCL_3
changeset 64 b276298d5729
parent 51 15e4dd19031c
child 74 edd621764147
equal deleted inserted replaced
59:a0713522ab97 64:b276298d5729
    43 
    43 
    44 #define KMCSCmailMtmUidValue 0x2001F406
    44 #define KMCSCmailMtmUidValue 0x2001F406
    45 
    45 
    46 // ======== LOCAL FUNCTIONS ========
    46 // ======== LOCAL FUNCTIONS ========
    47 
    47 
    48 static void ItemMapArrayCleanupFunc( TAny* aPointerArray )
    48 // ----------------------------------------------------------------------------
    49     {
    49 // CleanupResetAndDestroy()
    50     RPointerArray<CItemMap>* p = static_cast<RPointerArray<CItemMap>*>( aPointerArray ); 
    50 // ----------------------------------------------------------------------------
    51     p->ResetAndDestroy();
    51 //
    52     p->Close();
    52 template<class T>
       
    53 static void CleanupResetAndDestroy( TAny* aObj )
       
    54     {
       
    55     if( aObj )
       
    56         {
       
    57         static_cast<T*>( aObj )->ResetAndDestroy();
       
    58         }
       
    59     }
       
    60 
       
    61 // ----------------------------------------------------------------------------
       
    62 // CleanupResetAndDestroyPushL
       
    63 // ----------------------------------------------------------------------------
       
    64 //
       
    65 template<class T>
       
    66 static void CleanupResetAndDestroyPushL(T& aArray)
       
    67     {
       
    68     CleanupStack::PushL( TCleanupItem( &CleanupResetAndDestroy<T>, &aArray ) );
    53     }
    69     }
    54 
    70 
    55 // ======== MEMBER FUNCTIONS ========
    71 // ======== MEMBER FUNCTIONS ========
    56 
    72 
    57 // ---------------------------------------------------------------------------
    73 // ---------------------------------------------------------------------------
   209 // ---------------------------------------------------------------------------
   225 // ---------------------------------------------------------------------------
   210 //
   226 //
   211 void CMCSPluginData::UpdateDataL()
   227 void CMCSPluginData::UpdateDataL()
   212     {
   228     {
   213     RPointerArray<CItemMap> settings;
   229     RPointerArray<CItemMap> settings;
   214     TCleanupItem settingsCleanupItem( ItemMapArrayCleanupFunc, &settings );
   230     CleanupResetAndDestroyPushL( settings );
   215     CleanupStack::PushL( settingsCleanupItem );
   231 
   216     iPluginSettings->GetSettingsL( iInstanceUid, settings );
   232     iPluginSettings->GetSettingsL( iInstanceUid, settings );
   217     TInt count = settings.Count();
   233     TInt count = settings.Count();
   218     TBool wasEmpty = !iData.Count();
   234     TBool wasEmpty = !iData.Count();
   219     
   235     
   220     for ( TInt i = 0; i < count; i++ )
   236     for ( TInt i = 0; i < count; i++ )
   247                 delete oldData;
   263                 delete oldData;
   248                 iData.InsertL( data, i );
   264                 iData.InsertL( data, i );
   249                 }
   265                 }
   250             }
   266             }
   251         }
   267         }
   252     CleanupStack::PopAndDestroy(); // settingsCleanupItem 
   268 
       
   269     // Cleanup.
       
   270     CleanupStack::PopAndDestroy(); // settings
   253     }
   271     }
   254 
   272 
   255 // ---------------------------------------------------------------------------
   273 // ---------------------------------------------------------------------------
   256 // Removes obsolete data and saves 'Undefined' item to HSPS
   274 // Removes obsolete data and saves 'Undefined' item to HSPS
   257 // Used when active mailbox is deleted from system.
   275 // Used when active mailbox is deleted from system.
   469 // ---------------------------------------------------------------------------
   487 // ---------------------------------------------------------------------------
   470 //
   488 //
   471 void CMCSPluginData::SaveUndefinedItemL( const TInt& aIndex )
   489 void CMCSPluginData::SaveUndefinedItemL( const TInt& aIndex )
   472     {
   490     {
   473     RPointerArray<CItemMap> settingItems;
   491     RPointerArray<CItemMap> settingItems;
   474     CleanupClosePushL( settingItems );
   492     CleanupResetAndDestroyPushL( settingItems );
       
   493     
   475     iPluginSettings->GetSettingsL( iInstanceUid, settingItems );
   494     iPluginSettings->GetSettingsL( iInstanceUid, settingItems );
   476     if ( aIndex >= 0 && aIndex < settingItems.Count() )
   495     if ( aIndex >= 0 && aIndex < settingItems.Count() )
   477         {
   496         {
   478         CItemMap* itemMap = settingItems[ aIndex ];
   497         CItemMap* itemMap = settingItems[ aIndex ];
   479         RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
   498         RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
   502                 }
   521                 }
   503             }
   522             }
   504         }
   523         }
   505     // ETrue tells that modified settings are stored also to plugin reference
   524     // ETrue tells that modified settings are stored also to plugin reference
   506     iPluginSettings->SetSettingsL( iInstanceUid, settingItems, ETrue );
   525     iPluginSettings->SetSettingsL( iInstanceUid, settingItems, ETrue );
   507     CleanupStack::Pop( &settingItems );
   526     CleanupStack::PopAndDestroy(); // settingItems
   508     settingItems.ResetAndDestroy();
       
   509 
       
   510     }
   527     }
   511 
   528 
   512 // End of file
   529 // End of file