adaptationlayer/tsy/nokiatsy_dll/src/cmmphonebookstoreoperationlist.cpp
changeset 5 8ccc39f9d787
parent 0 63b37f68c1ce
child 9 8486d82aef45
equal deleted inserted replaced
4:510c70acdbf6 5:8ccc39f9d787
    23 #include "cmmphonebookstoreoperationlist.h"
    23 #include "cmmphonebookstoreoperationlist.h"
    24 #include "cmmphonebookoperationinit.h"
    24 #include "cmmphonebookoperationinit.h"
    25 #include "cmmphonebookoperationinit3G_adn.h"
    25 #include "cmmphonebookoperationinit3G_adn.h"
    26 #include "cmmphonebookoperationcache.h"
    26 #include "cmmphonebookoperationcache.h"
    27 #include "cmmphonebookoperationread.h"
    27 #include "cmmphonebookoperationread.h"
       
    28 #include "cmmphonebookoperationread3g_adn.h"
    28 #include "cmmphonebookoperationwrite.h"
    29 #include "cmmphonebookoperationwrite.h"
    29 #include "cmmphonebookoperationdelete.h"
    30 #include "cmmphonebookoperationdelete.h"
    30 #include "cmmphonebookoperationcustom.h"
    31 #include "cmmphonebookoperationcustom.h"
    31 
    32 
    32 //For CMmPhoneMessHandler::EServiceTableRequestTypePhonebookMBI
    33 //For CMmPhoneMessHandler::EServiceTableRequestTypePhonebookMBI
    33 #include "cmmphonemesshandler.h"
    34 #include "cmmphonemesshandler.h"
    34 #include "osttracedefinitions.h"
    35 #include "OstTraceDefinitions.h"
    35 #ifdef OST_TRACE_COMPILER_IN_USE
    36 #ifdef OST_TRACE_COMPILER_IN_USE
    36 #include "cmmphonebookstoreoperationlisttraces.h"
    37 #include "cmmphonebookstoreoperationlistTraces.h"
    37 #endif
    38 #endif
    38 
    39 
    39 
    40 
    40 // EXTERNAL DATA STRUCTURES
    41 // EXTERNAL DATA STRUCTURES
    41     // None
    42     // None
    84 //
    85 //
    85 CMmPhoneBookStoreOperationList::~CMmPhoneBookStoreOperationList()
    86 CMmPhoneBookStoreOperationList::~CMmPhoneBookStoreOperationList()
    86     {
    87     {
    87     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::\
    88     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::\
    88         ~CMmPhoneBookStoreOperationList");
    89         ~CMmPhoneBookStoreOperationList");
    89 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_CMMPHONEBOOKSTOREOPERATIONLIST, "CMmPhoneBookStoreOperationList::~CMmPhoneBookStoreOperationList" );
    90     OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_CMMPHONEBOOKSTOREOPERATIONLIST, "CMmPhoneBookStoreOperationList::~CMmPhoneBookStoreOperationList" );
    90 
    91 
    91     iPtrOperationArray.Reset();
    92     iPtrOperationArrayNew.DeleteAll();
    92     iPtrOperationArray.Close();
    93     // resets all elements to 
       
    94     iPtrOperationArrayNew.Reset();
       
    95 
    93     }
    96     }
    94 
    97 
    95 // ---------------------------------------------------------------------------
    98 // ---------------------------------------------------------------------------
    96 // CMmPhoneBookStoreOperationList::NewL
    99 // CMmPhoneBookStoreOperationList::NewL
    97 // Two-phased constructor.
   100 // Two-phased constructor.
   126     {
   129     {
   127     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::ConstructL");
   130     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::ConstructL");
   128 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CONSTRUCTL, "CMmPhoneBookStoreOperationList::ConstructL" );
   131 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CONSTRUCTL, "CMmPhoneBookStoreOperationList::ConstructL" );
   129     }
   132     }
   130 
   133 
   131 // ---------------------------------------------------------------------------
   134 
   132 // CMmPhoneBookStoreOperationList::Build
   135 // ---------------------------------------------------------------------------
   133 // Separate request and create correct object
   136 // CMmPhoneBookStoreOperationList::AddOperation
   134 // ---------------------------------------------------------------------------
   137 // Add Creted operation to List
   135 //
   138 // ---------------------------------------------------------------------------
   136 CMmPhoneBookStoreOperationBase* CMmPhoneBookStoreOperationList::BuildL(
   139 //
   137     const CMmDataPackage* aDataPackage,
   140 void CMmPhoneBookStoreOperationList::AddOperation(
   138     TInt aIpc
   141     TUint8 aTrans,
   139     )
   142     CMmPhoneBookStoreOperationBase* aOperation )
   140     {
   143     {
   141     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::Build");
   144     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::AddOperation");
   142 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_BUILDL, "CMmPhoneBookStoreOperationList::BuildL" );
   145 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_ADDOPERATION, "CMmPhoneBookStoreOperationList::AddOperation" );
   143 
   146 
   144     CMmPhoneBookStoreOperationBase* pointer( NULL );
   147     if( (( aTrans - ETrIdPbOperationStart ) >= 0)&& ((aTrans - ETrIdPbOperationStart) < KMaxPbTrIdCount ))
   145 
   148         {
   146     switch( aIpc )
   149         iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart] = aOperation;
   147         {
   150         }
   148         case EMmTsyPhoneBookStoreInitIPC:
   151     }
       
   152 
       
   153 
       
   154 // ---------------------------------------------------------------------------
       
   155 // CMmPhoneBookStoreOperationList::Find
       
   156 // Search and returns object to correct operation
       
   157 // ---------------------------------------------------------------------------
       
   158 //
       
   159 CMmPhoneBookStoreOperationBase* CMmPhoneBookStoreOperationList::Find(
       
   160     TUint8 aTrans )
       
   161     {
       
   162     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::Find");
       
   163 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_FIND, "CMmPhoneBookStoreOperationList::Find" );
       
   164 
       
   165     CMmPhoneBookStoreOperationBase* basePointer( NULL );
       
   166     //transaction id is basically just an index to operation array + start offset
       
   167     //of phonebook operations
       
   168     TInt ind ( aTrans - ETrIdPbOperationStart );
       
   169     
       
   170     if( (ind >= 0)&& (ind < KMaxPbTrIdCount ))
       
   171         {
       
   172         basePointer = iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart];
       
   173         }
       
   174     // return pointer if found otherwise NULL
       
   175     return basePointer;
       
   176     }
       
   177 
       
   178 // ---------------------------------------------------------------------------
       
   179 // CMmPhoneBookStoreOperationList::RemoveOperationFromList
       
   180 // Search and delete correct object from list
       
   181 // ---------------------------------------------------------------------------
       
   182 //
       
   183 void CMmPhoneBookStoreOperationList::RemoveOperationFromList(
       
   184     TUint8 aTrans )  // transactionId
       
   185     {
       
   186     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::RemoveOperationFromList");
       
   187     OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_REMOVEOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveOperationFromList" );
       
   188     
       
   189 
       
   190     delete iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart];
       
   191     iPtrOperationArrayNew[aTrans - ETrIdPbOperationStart] = NULL;
       
   192             
       
   193     TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationList -Phonebook operation removed succesfully from index: %d" , ( aTrans - ETrIdPbOperationStart ) );
       
   194 
       
   195     TF_ASSERT( ( aTrans - ETrIdPbOperationStart ) < KMaxPbTrIdCount );
       
   196     }
       
   197 
       
   198 
       
   199 
       
   200 // ---------------------------------------------------------------------------
       
   201 // CMmPhoneBookStoreOperationList::FindEmptyIndexTransId
       
   202 // Check for the empty Index available in operation array
       
   203 // ---------------------------------------------------------------------------
       
   204 //
       
   205 TInt CMmPhoneBookStoreOperationList::FindEmptyIndexTransId()
       
   206     {
       
   207     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::FindEmptyIndexTransId");
       
   208     OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_FINDEMPTYINDEXTRANSID, "CMmPhoneBookStoreOperationList::FindEmptyIndexTransId" );
       
   209     
       
   210     TInt transId = -1;
       
   211     for( TInt count = 0 ; count < KMaxPbTrIdCount ; count++)
       
   212         {
       
   213         if( iPtrOperationArrayNew[count] == NULL )
   149             {
   214             {
   150             
   215             transId = count + ETrIdPbOperationStart ;
   151             // Get Card type from uiccmesshandler
       
   152             // if SIM, phonebook is 2G and located under DFtelecom and ADN pb contains only name/number entries
       
   153             // if USIM, phonebook can be 3G local or 3G private. ADN pb entry can contain additional entries
       
   154             // 3G local is located under DFtelecom and 3G private under ADFusim, both have same structure however
       
   155             // only the path is different? 7F10 vs. 7FFF
       
   156             // Here in UICCCreateReq only 3G local has been handled
       
   157             // So for both SIM and USIM Phonebook will be under DFtelecom (whose address is 7F10)
       
   158             
       
   159 
       
   160             // Chekc for Card type to Create Class for Phonebook Init
       
   161             if(UICC_CARD_TYPE_UICC == iUiccMessHandler->GetCardType())
       
   162                 {
       
   163                 //call CmmPhonebookOperatorInit3G_ADN Phonebook
       
   164                 pointer = CMmPhoneBookOperationInit3G_adn::NewL(
       
   165                         iMmPhoneBookStoreMessHandler,
       
   166                         iUiccMessHandler,
       
   167                         aDataPackage
       
   168                         );
       
   169                 CleanupStack::PushL( pointer );
       
   170                 // Add pointer to array
       
   171                 iPtrOperationArray.AppendL( pointer );
       
   172                 CleanupStack::Pop( pointer );
       
   173                 
       
   174                 }
       
   175             else if(UICC_CARD_TYPE_ICC ==  iUiccMessHandler->GetCardType())
       
   176                 {
       
   177                 //call CmmPhonebookOperatorInit
       
   178                 pointer = CMmPhoneBookOperationInit::NewL(
       
   179                     iMmPhoneBookStoreMessHandler,
       
   180                     iUiccMessHandler,
       
   181                     aDataPackage
       
   182                     );
       
   183                 CleanupStack::PushL( pointer );
       
   184                 // Add pointer to array
       
   185                 iPtrOperationArray.AppendL( pointer );
       
   186                 CleanupStack::Pop( pointer );
       
   187                 }
       
   188             break;
   216             break;
   189             }
   217             }
   190             /*
   218         }
   191         case EMmTsyPhoneBookStoreGetInfoIPC:
   219     return transId;
   192         case EMmTsyPhoneBookStoreCacheIPC:
   220     }
       
   221 
       
   222 
       
   223 // ---------------------------------------------------------------------------
       
   224 // CMmPhoneBookStoreOperationList::CancelOperation
       
   225 // Cancel all operation with same phonebook name
       
   226 // ---------------------------------------------------------------------------
       
   227 //
       
   228 void CMmPhoneBookStoreOperationList::CancelOperation( TName &aPhoneBook)
       
   229     {
       
   230     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::CancelOperation");
       
   231     OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CANCELOPERATION, "CMmPhoneBookStoreOperationList::CancelOperation" );
       
   232   
       
   233     // Chekc for all operation which have the same phonebook name
       
   234     for( TInt count = 0 ; count < KMaxPbTrIdCount ; count++)
       
   235         {
       
   236         if( iPtrOperationArrayNew[count]!= NULL )
   193             {
   237             {
   194             //call CmmPhonebookOperatorCache
   238             // Call Cancel function for that operation
   195             pointer = CMmPhoneBookOperationCache::NewL(
   239             iPtrOperationArrayNew[count]->CancelReq( aPhoneBook );
   196                 iMmPhoneBookStoreMessHandler,
       
   197                 aIpc, aDataPackage );
       
   198             CleanupStack::PushL( pointer );
       
   199             // Add pointer to array
       
   200             iPtrOperationArray.AppendL( pointer );
       
   201             CleanupStack::Pop( pointer );
       
   202             break;
       
   203             }
   240             }
   204             */
   241         }
   205         case EMmTsyPhoneBookStoreReadIPC:
   242     }
   206 #ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
   243 
   207         case ECustomReadAlphaStringIPC:
   244 
   208 #endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
       
   209             {
       
   210             //call CmmPhonebookOperatorRead
       
   211             pointer = CMmPhoneBookOperationRead::NewL(
       
   212                 iMmPhoneBookStoreMessHandler,
       
   213                 aDataPackage );
       
   214             CleanupStack::PushL( pointer );
       
   215             // Add pointer to array
       
   216             iPtrOperationArray.AppendL( pointer );
       
   217             CleanupStack::Pop( pointer );
       
   218             break;
       
   219             }
       
   220             /*
       
   221         case EMmTsyPhoneBookStoreWriteIPC:
       
   222 
       
   223 #ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
       
   224         case ECustomWriteAlphaStringIPC:
       
   225 #endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
       
   226             {
       
   227             //call CmmPhonebookOperationWrite
       
   228             pointer = CMmPhoneBookOperationWrite::NewL(
       
   229                 iMmPhoneBookStoreMessHandler,
       
   230                 aDataPackage );
       
   231             CleanupStack::PushL( pointer );
       
   232             // Add pointer to array
       
   233             iPtrOperationArray.AppendL( pointer );
       
   234             CleanupStack::Pop( pointer );
       
   235             break;
       
   236             }
       
   237         case EMmTsyPhoneBookStoreDeleteIPC:
       
   238         case EMmTsyPhoneBookStoreDeleteAllIPC:
       
   239 #ifdef INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
       
   240         case ECustomDeleteAlphaStringIPC:
       
   241 #endif // INTERNAL_RD_USIM_PHONEBOOK_GAS_AND_AAS
       
   242             {
       
   243             //call CmmPhonebookOperatorDelete
       
   244             pointer = CMmPhoneBookOperationDelete::NewL(
       
   245                 iMmPhoneBookStoreMessHandler,
       
   246                 aDataPackage );
       
   247             CleanupStack::PushL( pointer );
       
   248             // Add pointer to array
       
   249             iPtrOperationArray.AppendL( pointer );
       
   250             CleanupStack::Pop( pointer );
       
   251             break;
       
   252             }
       
   253         case EMobilePhoneGetMailboxNumbers:
       
   254             {
       
   255             pointer =  new ( ELeave )CMmPhonebookOperationCustom(
       
   256                 iMmPhoneBookStoreMessHandler );
       
   257             CleanupStack::PushL( pointer );
       
   258             // Add pointer to array
       
   259             iPtrOperationArray.AppendL( pointer );
       
   260             CleanupStack::Pop( pointer );
       
   261             break;
       
   262             }
       
   263             */
       
   264         default:
       
   265             {
       
   266             // Nothing to do here
       
   267             TFLOGSTRING2("TSY: CMmPhoneBookStoreMessHandler::ExtFuncL - \
       
   268                 Unknown IPC: %d", aIpc);
       
   269 OstTrace1( TRACE_NORMAL, DUP2_CMMPHONEBOOKSTOREOPERATIONLIST_BUILDL, "CMmPhoneBookStoreOperationList::BuildL;Unknown aIpc=%d", aIpc );
       
   270             break;
       
   271             }
       
   272         }
       
   273 
       
   274     //return pointer to right operation
       
   275     return pointer;
       
   276     }
       
   277 
       
   278 // ---------------------------------------------------------------------------
       
   279 // CMmPhoneBookStoreOperationList::Find
       
   280 // Search and returns object to correct operation
       
   281 // ---------------------------------------------------------------------------
       
   282 //
       
   283 CMmPhoneBookStoreOperationBase* CMmPhoneBookStoreOperationList::Find(
       
   284     TUint8 aTrans,
       
   285     const CMmPhoneBookStoreOperationBase* aSearchFrom/*=NULL*/ )
       
   286     {
       
   287     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::Find");
       
   288 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_FIND, "CMmPhoneBookStoreOperationList::Find" );
       
   289 
       
   290     CMmPhoneBookStoreOperationBase* basePointer( NULL );
       
   291 
       
   292     // search correct pointer from array using aTrans
       
   293     TUint ind( 0 );
       
   294     if ( NULL != aSearchFrom )
       
   295         {
       
   296         // if object to search from specified, find its index at first
       
   297         for ( ; ind < iPtrOperationArray.Count(); ind++ )
       
   298             {
       
   299             if ( aSearchFrom == iPtrOperationArray[ind] )
       
   300                 {
       
   301                 ind++;
       
   302                 break;
       
   303                 }
       
   304             }
       
   305         }
       
   306     // looking for object with given transaction id
       
   307     // starting index may be not 0 if aSearchFrom is specified
       
   308     for ( ; ind < iPtrOperationArray.Count(); ind++)
       
   309         {
       
   310         if( ( iPtrOperationArray[ind] )->TransId() == aTrans )
       
   311             {
       
   312             basePointer = iPtrOperationArray[ind];
       
   313             break;
       
   314             }
       
   315         }
       
   316     // return pointer if found otherwise NULL
       
   317     return basePointer;
       
   318     }
       
   319 
       
   320 // ---------------------------------------------------------------------------
       
   321 // CMmPhoneBookStoreOperationList::RemoveOperationFromList
       
   322 // Search and delete correct object from list
       
   323 // ---------------------------------------------------------------------------
       
   324 //
       
   325 void CMmPhoneBookStoreOperationList::RemoveOperationFromList(
       
   326     TUint8 aTrans )  // transactionId
       
   327     {
       
   328     TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::\
       
   329         RemoveOperationFromList");
       
   330 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_REMOVEOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveOperationFromList" );
       
   331 
       
   332     TUint ind( 0 );
       
   333     TUint operationCount( iPtrOperationArray.Count() );
       
   334 
       
   335     // search correct pointer from array using aTrans
       
   336     while ( ind < operationCount )
       
   337         {
       
   338         if( ( iPtrOperationArray[ind] )->TransId() == aTrans )
       
   339             {
       
   340             delete iPtrOperationArray[ind];
       
   341             iPtrOperationArray.Remove( ind );
       
   342             iPtrOperationArray.Compress();
       
   343             TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationList -Phonebook \
       
   344                 operation removed succesfully from index: %d" ,ind );
       
   345             break;
       
   346             }
       
   347         ind++;
       
   348         }
       
   349     TF_ASSERT( ind < operationCount );
       
   350     }
       
   351 
       
   352 // ---------------------------------------------------------------------------
       
   353 // CMmPhoneBookStoreOperationList::RemoveLastOperationFromList
       
   354 // Removes last operation from operation list.
       
   355 // ---------------------------------------------------------------------------
       
   356 //
       
   357 TInt CMmPhoneBookStoreOperationList::RemoveLastOperationFromList()
       
   358     {
       
   359 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::RemoveLastOperationFromList");
       
   360 OstTrace0( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_REMOVELASTOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveLastOperationFromList" );
       
   361 
       
   362     TInt ret( KErrNone );
       
   363     TInt count( iPtrOperationArray.Count() );
       
   364 
       
   365     if ( 0 < count )
       
   366         {
       
   367         iPtrOperationArray.Remove( count - 1 );
       
   368         }
       
   369     else
       
   370         {
       
   371 TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::RemoveLastOperationFromList - no operation to remove");
       
   372 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_REMOVELASTOPERATIONFROMLIST, "CMmPhoneBookStoreOperationList::RemoveLastOperationFromList - no operation to remove" );
       
   373 
       
   374         ret = KErrNotFound;
       
   375         }
       
   376 
       
   377     return ret;
       
   378     }
       
   379 
       
   380 // ---------------------------------------------------------------------------
       
   381 // CMmPhoneBookStoreOperationList::CalculateTransactionId
       
   382 // Calculates transaction Id from IPC number and data package
       
   383 // ---------------------------------------------------------------------------
       
   384 //
       
   385 TInt CMmPhoneBookStoreOperationList::CalculateTransactionId(
       
   386     TInt aIpc,
       
   387     const CMmDataPackage* /*aDataPackage*/,
       
   388     TUint8& /*aTransactionId*/
       
   389     )
       
   390     {
       
   391     TInt ret( KErrNone );
       
   392 
       
   393     TFLOGSTRING2("TSY: CMmPhoneBookStoreOperationList::CalculateTransactionId;aIpc=%d", aIpc);
       
   394 OstTrace1( TRACE_NORMAL, CMMPHONEBOOKSTOREOPERATIONLIST_CALCULATETRANSACTIONID, "CMmPhoneBookStoreOperationList::CalculateTransactionId;aIpc=%d", aIpc );
       
   395 
       
   396     switch ( aIpc )
       
   397         {
       
   398         	/*
       
   399         case EMmTsyPhoneBookStoreGetInfoIPC:
       
   400         case EMmTsyPhoneBookStoreCacheIPC:
       
   401             {
       
   402             ret = CMmPhoneBookOperationCache::CalculateTransactionId(
       
   403                       aIpc, aDataPackage, aTransactionId );
       
   404             break;
       
   405             }
       
   406             */
       
   407         default:
       
   408             {
       
   409             TFLOGSTRING("TSY: CMmPhoneBookStoreOperationList::CalculateTransactionId;unknown ipc");
       
   410 OstTrace0( TRACE_NORMAL, DUP1_CMMPHONEBOOKSTOREOPERATIONLIST_CALCULATETRANSACTIONID, "CMmPhoneBookStoreOperationList::CalculateTransactionId; unknown ipc" );
       
   411             ret = KErrNotSupported;
       
   412             }
       
   413         }
       
   414 
       
   415     return ret;
       
   416     }
       
   417 
   245 
   418 // End of File
   246 // End of File