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