phonebookui/Phonebook2/Commands/src/CPbk2CommandStore.cpp
branchRCL_3
changeset 85 38bb213f60ba
parent 68 9da50d567e3c
equal deleted inserted replaced
74:6b5524b4f673 85:38bb213f60ba
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
    20 #include "CPbk2CommandStore.h"
    20 #include "CPbk2CommandStore.h"
    21 #include "MPbk2CommandResourceRelease.h"
       
    22 
    21 
    23 // Phonebook 2
    22 // Phonebook 2
    24 #include <MPbk2Command.h>
    23 #include <MPbk2Command.h>
    25 #include <MPbk2MenuCommandObserver.h>
    24 #include <MPbk2MenuCommandObserver.h>
    26 
    25 
   221         for (TInt j = iCommandArray.Count()-1; j >= 0; --j)
   220         for (TInt j = iCommandArray.Count()-1; j >= 0; --j)
   222             {
   221             {
   223             MPbk2Command* arrayCmd = iCommandArray[j];
   222             MPbk2Command* arrayCmd = iCommandArray[j];
   224             if (idleDestCmd == arrayCmd)
   223             if (idleDestCmd == arrayCmd)
   225                 {
   224                 {
       
   225                 // Remove from command array
       
   226                 iCommandArray.Remove(j);
   226                 iIdleDestructableCommands.Remove(i);
   227                 iIdleDestructableCommands.Remove(i);
   227                                 
       
   228                 // Try to get MPbk2ResourceRelease interface.
       
   229                 TUid uid;
       
   230                 uid.iUid = MPbk2ResourceReleaseUID;
       
   231                 MPbk2ResourceRelease* release = static_cast<MPbk2ResourceRelease *>(idleDestCmd->CommandExtension(uid));
       
   232                 if (release)
       
   233                   {
       
   234                     // Call ReleaseResource before delete.
       
   235                     release->ReleaseResource();
       
   236                   }
       
   237               
       
   238                 // Remove from command array
       
   239                 iCommandArray.Remove(j);                
       
   240                 
       
   241                 delete idleDestCmd;
   228                 delete idleDestCmd;
   242                 idleDestCmd = NULL;
   229                 idleDestCmd = NULL;
   243                 
       
   244                 break;
       
   245                 }
   230                 }
   246             }
   231             }
   247         }
   232         }
   248     }
   233     }
   249 
   234 
   250 
   235 
   251 // --------------------------------------------------------------------------
   236 // --------------------------------------------------------------------------
   252 // CPbk2CommandStore::DestroyAllCommands
   237 // CPbk2CommandStore::DestroyAllCommands
   253 // --------------------------------------------------------------------------
   238 // --------------------------------------------------------------------------
   254 //
   239 //
   255 EXPORT_C void CPbk2CommandStore::DestroyAllCommands()
   240 void CPbk2CommandStore::DestroyAllCommands()
   256     {
   241     {
   257     // Delete objects in idle commands array using CommandFinished
   242     // Delete objects in idle commands array using CommandFinished
   258     for (TInt i = 0; i < iCommandArray.Count(); ++i)
   243     for (TInt i = 0; i < iCommandArray.Count(); ++i)
   259         {
   244         {
   260         MPbk2Command* destCmd = iCommandArray[i];
   245         MPbk2Command* destCmd = iCommandArray[i];