phonebookui/Phonebook2/Commands/src/CPbk2CommandStore.cpp
branchRCL_3
changeset 18 d4f567ce2e7c
parent 0 e686773b3f54
equal deleted inserted replaced
17:2666d9724c76 18:d4f567ce2e7c
    16 */
    16 */
    17 
    17 
    18 
    18 
    19 // INCLUDE FILES
    19 // INCLUDE FILES
    20 #include "CPbk2CommandStore.h"
    20 #include "CPbk2CommandStore.h"
       
    21 #include "MPbk2CommandResourceRelease.h"
    21 
    22 
    22 // Phonebook 2
    23 // Phonebook 2
    23 #include <MPbk2Command.h>
    24 #include <MPbk2Command.h>
    24 #include <MPbk2MenuCommandObserver.h>
    25 #include <MPbk2MenuCommandObserver.h>
    25 
    26 
   220         for (TInt j = iCommandArray.Count()-1; j >= 0; --j)
   221         for (TInt j = iCommandArray.Count()-1; j >= 0; --j)
   221             {
   222             {
   222             MPbk2Command* arrayCmd = iCommandArray[j];
   223             MPbk2Command* arrayCmd = iCommandArray[j];
   223             if (idleDestCmd == arrayCmd)
   224             if (idleDestCmd == arrayCmd)
   224                 {
   225                 {
       
   226                 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               
   225                 // Remove from command array
   238                 // Remove from command array
   226                 iCommandArray.Remove(j);
   239                 iCommandArray.Remove(j);                
   227                 iIdleDestructableCommands.Remove(i);
   240                 
   228                 delete idleDestCmd;
   241                 delete idleDestCmd;
   229                 idleDestCmd = NULL;
   242                 idleDestCmd = NULL;
       
   243                 
       
   244                 break;
   230                 }
   245                 }
   231             }
   246             }
   232         }
   247         }
   233     }
   248     }
   234 
   249