adaptationlayer/tsy/nokiatsy_dll/src/cmmphonebookstoreoperationlist.cpp
changeset 5 8ccc39f9d787
parent 0 63b37f68c1ce
child 9 8486d82aef45
--- a/adaptationlayer/tsy/nokiatsy_dll/src/cmmphonebookstoreoperationlist.cpp	Mon Nov 09 10:36:19 2009 +0000
+++ b/adaptationlayer/tsy/nokiatsy_dll/src/cmmphonebookstoreoperationlist.cpp	Thu Jan 14 10:44:58 2010 +0200
@@ -25,15 +25,16 @@
 #include "cmmphonebookoperationinit3G_adn.h"
 #include "cmmphonebookoperationcache.h"
 #include "cmmphonebookoperationread.h"
+#include "cmmphonebookoperationread3g_adn.h"
 #include "cmmphonebookoperationwrite.h"
 #include "cmmphonebookoperationdelete.h"
 #include "cmmphonebookoperationcustom.h"
 
 //For CMmPhoneMessHandler::EServiceTableRequestTypePhonebookMBI
 #include "cmmphonemesshandler.h"
-#include "osttracedefinitions.h"
+#include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
-#include "cmmphonebookstoreoperationlisttraces.h"
+#include "cmmphonebookstoreoperationlistTraces.h"
 #endif
 
 
@@ -86,10 +87,12 @@
     {
     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::\
         ~CMmPhoneBookStoreOperationList");
-OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_CMMPHONEBOOKSTOREOPERATIONLIST, "CMmPhoneBookStoreOperationList::~CMmPhoneBookStoreOperationList" );
+    OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_CMMPHONEBOOKSTOREOPERATIONLIST, "CMmPhoneBookStoreOperationList::~CMmPhoneBookStoreOperationList" );
 
-    iPtrOperationArray.Reset();
-    iPtrOperationArray.Close();
+    iPtrOperationArrayNew.DeleteAll();
+    // resets all elements to 
+    iPtrOperationArrayNew.Reset();
+
     }
 
 // ---------------------------------------------------------------------------
@@ -128,152 +131,25 @@
 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CONSTRUCTL, "CMmPhoneBookStoreOperationList::ConstructL" );
     }
 
+
 // ---------------------------------------------------------------------------
-// CMmPhoneBookStoreOperationList::Build
-// Separate request and create correct object
+// CMmPhoneBookStoreOperationList::AddOperation
+// Add Creted operation to List
 // ---------------------------------------------------------------------------
 //
-CMmPhoneBookStoreOperationBase* CMmPhoneBookStoreOperationList::BuildL(
-    const CMmDataPackage* aDataPackage,
-    TInt aIpc
-    )
+void CMmPhoneBookStoreOperationList::AddOperation(
+    TUint8 aTrans,
+    CMmPhoneBookStoreOperationBase* aOperation )
     {
-    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::Build");
-OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_BUILDL, "CMmPhoneBookStoreOperationList::BuildL" );
-
-    CMmPhoneBookStoreOperationBase* pointer( NULL );
-
-    switch( aIpc )
-        {
-        case EMmTsyPhoneBookStoreInitIPC:
-            {
-            
-            // Get Card type from uiccmesshandler
-            // if SIM, phonebook is 2G and located under DFtelecom and ADN pb contains only name/number entries
-            // if USIM, phonebook can be 3G local or 3G private. ADN pb entry can contain additional entries
-            // 3G local is located under DFtelecom and 3G private under ADFusim, both have same structure however
-            // only the path is different? 7F10 vs. 7FFF
-            // Here in UICCCreateReq only 3G local has been handled
-            // So for both SIM and USIM Phonebook will be under DFtelecom (whose address is 7F10)
-            
+    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::AddOperation");
+OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_ADDOPERATION, "CMmPhoneBookStoreOperationList::AddOperation" );
 
-            // Chekc for Card type to Create Class for Phonebook Init
-            if(UICC_CARD_TYPE_UICC == iUiccMessHandler->GetCardType())
-                {
-                //call CmmPhonebookOperatorInit3G_ADN Phonebook
-                pointer = CMmPhoneBookOperationInit3G_adn::NewL(
-                        iMmPhoneBookStoreMessHandler,
-                        iUiccMessHandler,
-                        aDataPackage
-                        );
-                CleanupStack::PushL( pointer );
-                // Add pointer to array
-                iPtrOperationArray.AppendL( pointer );
-                CleanupStack::Pop( pointer );
-                
-                }
-            else if(UICC_CARD_TYPE_ICC ==  iUiccMessHandler->GetCardType())
-                {
-                //call CmmPhonebookOperatorInit
-                pointer = CMmPhoneBookOperationInit::NewL(
-                    iMmPhoneBookStoreMessHandler,
-                    iUiccMessHandler,
-                    aDataPackage
-                    );
-                CleanupStack::PushL( pointer );
-                // Add pointer to array
-                iPtrOperationArray.AppendL( pointer );
-                CleanupStack::Pop( pointer );
-                }
-            break;
-            }
-            /*
-        case EMmTsyPhoneBookStoreGetInfoIPC:
-        case EMmTsyPhoneBookStoreCacheIPC:
-            {
-            //call CmmPhonebookOperatorCache
-            pointer = CMmPhoneBookOperationCache::NewL(
-                iMmPhoneBookStoreMessHandler,
-                aIpc, aDataPackage );
-            CleanupStack::PushL( pointer );
-            // Add pointer to array
-            iPtrOperationArray.AppendL( pointer );
-            CleanupStack::Pop( pointer );
-            break;
-            }
-            */
-        case EMmTsyPhoneBookStoreReadIPC:
-#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
-        case ECustomReadAlphaStringIPC:
-#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
-            {
-            //call CmmPhonebookOperatorRead
-            pointer = CMmPhoneBookOperationRead::NewL(
-                iMmPhoneBookStoreMessHandler,
-                aDataPackage );
-            CleanupStack::PushL( pointer );
-            // Add pointer to array
-            iPtrOperationArray.AppendL( pointer );
-            CleanupStack::Pop( pointer );
-            break;
-            }
-            /*
-        case EMmTsyPhoneBookStoreWriteIPC:
+    if( (( aTrans - ETrIdPbOperationStart ) >= 0)&& ((aTrans - ETrIdPbOperationStart) < KMaxPbTrIdCount ))
+        {
+        iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart] = aOperation;
+        }
+    }
 
-#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
-        case ECustomWriteAlphaStringIPC:
-#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
-            {
-            //call CmmPhonebookOperationWrite
-            pointer = CMmPhoneBookOperationWrite::NewL(
-                iMmPhoneBookStoreMessHandler,
-                aDataPackage );
-            CleanupStack::PushL( pointer );
-            // Add pointer to array
-            iPtrOperationArray.AppendL( pointer );
-            CleanupStack::Pop( pointer );
-            break;
-            }
-        case EMmTsyPhoneBookStoreDeleteIPC:
-        case EMmTsyPhoneBookStoreDeleteAllIPC:
-#ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
-        case ECustomDeleteAlphaStringIPC:
-#endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
-            {
-            //call CmmPhonebookOperatorDelete
-            pointer = CMmPhoneBookOperationDelete::NewL(
-                iMmPhoneBookStoreMessHandler,
-                aDataPackage );
-            CleanupStack::PushL( pointer );
-            // Add pointer to array
-            iPtrOperationArray.AppendL( pointer );
-            CleanupStack::Pop( pointer );
-            break;
-            }
-        case EMobilePhoneGetMailboxNumbers:
-            {
-            pointer =  new ( ELeave )CMmPhonebookOperationCustom(
-                iMmPhoneBookStoreMessHandler );
-            CleanupStack::PushL( pointer );
-            // Add pointer to array
-            iPtrOperationArray.AppendL( pointer );
-            CleanupStack::Pop( pointer );
-            break;
-            }
-            */
-        default:
-            {
-            // Nothing to do here
-            TFLOGSTRING2("TSY: CMmPhoneBookStoreMessHandler::ExtFuncL - \
-                Unknown IPC: %d", aIpc);
-OstTrace1( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONLIST_BUILDL, "CMmPhoneBookStoreOperationList::BuildL;Unknown aIpc=%d", aIpc );
-            break;
-            }
-        }
-
-    //return pointer to right operation
-    return pointer;
-    }
 
 // ---------------------------------------------------------------------------
 // CMmPhoneBookStoreOperationList::Find
@@ -281,37 +157,19 @@
 // ---------------------------------------------------------------------------
 //
 CMmPhoneBookStoreOperationBase* CMmPhoneBookStoreOperationList::Find(
-    TUint8 aTrans,
-    const CMmPhoneBookStoreOperationBase* aSearchFrom/*=NULL*/ )
+    TUint8 aTrans )
     {
     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::Find");
 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_FIND, "CMmPhoneBookStoreOperationList::Find" );
 
     CMmPhoneBookStoreOperationBase* basePointer( NULL );
-
-    // search correct pointer from array using aTrans
-    TUint ind( 0 );
-    if ( NULL != aSearchFrom )
+    //transaction id is basically just an index to operation array + start offset
+    //of phonebook operations
+    TInt ind ( aTrans - ETrIdPbOperationStart );
+    
+    if( (ind >= 0)&& (ind < KMaxPbTrIdCount ))
         {
-        // if object to search from specified, find its index at first
-        for ( ; ind < iPtrOperationArray.Count(); ind++ )
-            {
-            if ( aSearchFrom == iPtrOperationArray[ind] )
-                {
-                ind++;
-                break;
-                }
-            }
-        }
-    // looking for object with given transaction id
-    // starting index may be not 0 if aSearchFrom is specified
-    for ( ; ind < iPtrOperationArray.Count(); ind++)
-        {
-        if( ( iPtrOperationArray[ind] )->TransId() == aTrans )
-            {
-            basePointer = iPtrOperationArray[ind];
-            break;
-            }
+        basePointer = iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart];
         }
     // return pointer if found otherwise NULL
     return basePointer;
@@ -325,94 +183,64 @@
 void CMmPhoneBookStoreOperationList::RemoveOperationFromList(
     TUint8 aTrans )  // transactionId
     {
-    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::\
-        RemoveOperationFromList");
-OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_REMOVEOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveOperationFromList" );
-
-    TUint ind( 0 );
-    TUint operationCount( iPtrOperationArray.Count() );
+    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::RemoveOperationFromList");
+    OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_REMOVEOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveOperationFromList" );
+    
 
-    // search correct pointer from array using aTrans
-    while ( ind < operationCount )
-        {
-        if( ( iPtrOperationArray[ind] )->TransId() == aTrans )
-            {
-            delete iPtrOperationArray[ind];
-            iPtrOperationArray.Remove( ind );
-            iPtrOperationArray.Compress();
-            TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationList -Phonebook \
-                operation removed succesfully from index: %d" ,ind );
-            break;
-            }
-        ind++;
-        }
-    TF_ASSERT( ind < operationCount );
+    delete iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart];
+    iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart] = NULL;
+            
+    TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationList -Phonebook operation removed succesfully from index: %d" , ( aTrans - ETrIdPbOperationStart ) );
+
+    TF_ASSERT( ( aTrans - ETrIdPbOperationStart ) < KMaxPbTrIdCount );
     }
 
+
+
 // ---------------------------------------------------------------------------
-// CMmPhoneBookStoreOperationList::RemoveLastOperationFromList
-// Removes last operation from operation list.
+// CMmPhoneBookStoreOperationList::FindEmptyIndexTransId
+// Check for the empty Index available in operation array
 // ---------------------------------------------------------------------------
 //
-TInt CMmPhoneBookStoreOperationList::RemoveLastOperationFromList()
+TInt CMmPhoneBookStoreOperationList::FindEmptyIndexTransId()
     {
-TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::RemoveLastOperationFromList");
-OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_REMOVELASTOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveLastOperationFromList" );
-
-    TInt ret( KErrNone );
-    TInt count( iPtrOperationArray.Count() );
-
-    if ( 0 < count )
+    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::FindEmptyIndexTransId");
+    OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_FINDEMPTYINDEXTRANSID, "CMmPhoneBookStoreOperationList::FindEmptyIndexTransId" );
+    
+    TInt transId = -1;
+    for( TInt count = 0 ; count < KMaxPbTrIdCount ; count++)
         {
-        iPtrOperationArray.Remove( count - 1 );
+        if( iPtrOperationArrayNew[count] == NULL )
+            {
+            transId = count + ETrIdPbOperationStart ;
+            break;
+            }
         }
-    else
-        {
-TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::RemoveLastOperationFromList - no operation to remove");
-OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_REMOVELASTOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveLastOperationFromList - no operation to remove" );
-
-        ret = KErrNotFound;
-        }
-
-    return ret;
+    return transId;
     }
 
+
 // ---------------------------------------------------------------------------
-// CMmPhoneBookStoreOperationList::CalculateTransactionId
-// Calculates transaction Id from IPC number and data package
+// CMmPhoneBookStoreOperationList::CancelOperation
+// Cancel all operation with same phonebook name
 // ---------------------------------------------------------------------------
 //
-TInt CMmPhoneBookStoreOperationList::CalculateTransactionId(
-    TInt aIpc,
-    const CMmDataPackage* /*aDataPackage*/,
-    TUint8& /*aTransactionId*/
-    )
+void CMmPhoneBookStoreOperationList::CancelOperation( TName &aPhoneBook)
     {
-    TInt ret( KErrNone );
-
-    TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationList::CalculateTransactionId;aIpc=%d", aIpc);
-OstTrace1( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CALCULATETRANSACTIONID, "CMmPhoneBookStoreOperationList::CalculateTransactionId;aIpc=%d", aIpc );
-
-    switch ( aIpc )
+    TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::CancelOperation");
+    OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CANCELOPERATION, "CMmPhoneBookStoreOperationList::CancelOperation" );
+  
+    // Chekc for all operation which have the same phonebook name
+    for( TInt count = 0 ; count < KMaxPbTrIdCount ; count++)
         {
-        	/*
-        case EMmTsyPhoneBookStoreGetInfoIPC:
-        case EMmTsyPhoneBookStoreCacheIPC:
+        if( iPtrOperationArrayNew[count]!= NULL )
             {
-            ret = CMmPhoneBookOperationCache::CalculateTransactionId(
-                      aIpc, aDataPackage, aTransactionId );
-            break;
-            }
-            */
-        default:
-            {
-            TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::CalculateTransactionId;unknown ipc");
-OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_CALCULATETRANSACTIONID, "CMmPhoneBookStoreOperationList::CalculateTransactionId; unknown ipc" );
-            ret = KErrNotSupported;
+            // Call Cancel function for that operation
+            iPtrOperationArrayNew[count]->CancelReq( aPhoneBook );
             }
         }
-
-    return ret;
     }
 
+
+
 // End of File