vmbx/vmbxengine/src/vmbxpbkstore.cpp
changeset 27 7eb70891911c
parent 19 e44a8c097b15
child 31 a2467631ae02
--- a/vmbx/vmbxengine/src/vmbxpbkstore.cpp	Thu May 27 13:23:05 2010 +0300
+++ b/vmbx/vmbxengine/src/vmbxpbkstore.cpp	Fri Jun 11 14:07:16 2010 +0300
@@ -59,7 +59,6 @@
     VMBLOGSTRING( "VMBX: CVmbxPbkStore::~CVmbxPbkStore =>" );
     Cancel();
     iPhoneBook.Close();
-    delete iAlphaStringFromSIM;
     delete iWait;
     delete iETelConnection;
     VMBLOGSTRING( "VMBX: CVmbxPbkStore::~CVmbxPbkStore <=" );
@@ -251,24 +250,20 @@
             RMobilePhoneBookStore::ETagPBAdnIndex, (TUint16)entryIndex );
             VMBLOGSTRING2( "VMBX: CVmbxPbkStore::Write: ETagPBAdnIndex \
                     result=%I",  result );
-            // Add name if it existed on SIM card,Type of ETagPBText is TDes16
-            if ( iAlphaStringFromSIM )
-                {
-                result = pbkBuffer->PutTagAndValue( 
-                RMobilePhoneBookStore::ETagPBText, *iAlphaStringFromSIM );
-                VMBLOGSTRING2( "VMBX: CVmbxPbkStore::Write: ETagPBText\
-                        result=%I",  result );
-                }
+            // Add name, Type of ETagPBText is TDes16
+            TPtrC vmbxName( KNullDesC );
+            aEntry.GetVmbxName( vmbxName );
+            result = pbkBuffer->PutTagAndValue( 
+            RMobilePhoneBookStore::ETagPBText, vmbxName );
+            VMBLOGSTRING2( "VMBX: CVmbxPbkStore::Write: ETagPBText\
+                    result=%I",  result );
+            // Add number, Type of ETagPBNumber is TDes16
             TPtrC vmbxNumber( KNullDesC );
-            result = aEntry.GetVmbxNumber( vmbxNumber );
-            if ( KErrNone == result )
-                {
-                // Add number,Type of ETagPBNumber is TDes16
-                result = pbkBuffer->PutTagAndValue( 
-                RMobilePhoneBookStore::ETagPBNumber, vmbxNumber );
-                VMBLOGSTRING2( "VMBX: CVmbxPbkStore::Write: ETagPBNumber\
-                        result=%I",  result );
-                }
+            aEntry.GetVmbxNumber( vmbxNumber );
+            result = pbkBuffer->PutTagAndValue( 
+            RMobilePhoneBookStore::ETagPBNumber, vmbxNumber );
+            VMBLOGSTRING2( "VMBX: CVmbxPbkStore::Write: ETagPBNumber\
+                    result=%I",  result );
             }
 
         if ( KErrNone == result )
@@ -477,8 +472,6 @@
     TInt numEntries( 1 );
     TBuf8<KVmbxPhonebookBufferSize> pbData;
 
-    delete iAlphaStringFromSIM;
-    iAlphaStringFromSIM = NULL;
     TInt result( KErrInUse );
     if ( iPhoneBookType == EMBDNPhoneBook )
         {
@@ -548,8 +541,6 @@
     {
     VMBLOGSTRING( "VMBX: CVmbxPbkStore::ParseDataL =>" );
     TInt result( KErrNotFound );
-    delete iAlphaStringFromSIM;
-    iAlphaStringFromSIM = NULL;
 
     VMBLOGSTRING2( "CVmbxPbkStore::ParseDataL Lengh = %d", aPbData.Length() );
 
@@ -618,6 +609,8 @@
     VMBLOGSTRING( "VMBX: CVmbxPbkStore::ReadPbkDataL =>" );
 
     TInt result( KErrNone );
+    TInt next( KErrNone );
+    TBool found( EFalse );
     TUint8 tagValue( 0 );
     CPhoneBookBuffer::TPhBkTagType dataType(
                                           CPhoneBookBuffer::EPhBkTypeNoData );
@@ -625,7 +618,7 @@
     result = aPbkBuffer->GetTagAndType( tagValue, dataType );
 
     // loop through data to find a number and an possible alpha string
-    while ( result == KErrNone && aPbkBuffer->RemainingReadLength() > 0 )
+    while ( next == KErrNone && result == KErrNone )
         {
         VMBLOGSTRING2("VMBX: CVmbxPbkStore::ReadPbkDataL: tagValue: %d",
          tagValue );
@@ -635,48 +628,38 @@
         // Check for text field
         if ( tagValue == RMobilePhoneBookStore::ETagPBText )
             {
+            VMBLOGSTRING("VMBX: CVmbxPbkStore::ReadPbkDataL: \
+                          ETagPBText found Alpha ID" );
+            found = ETrue;
             // Alpha string field found from TLV entry,
             // assuming 16bit data
             TPtrC16 alphaPtrC;
             result = aPbkBuffer->GetValue( alphaPtrC );
+            
             if ( KErrNone == result )
                 {
-                iAlphaStringFromSIM = alphaPtrC.AllocL();
-                VMBLOGSTRING2("VMBX: CVmbxPbkStore::ReadPbkDataL: \
-                iAlphaStringFromSIM: %S", iAlphaStringFromSIM );
+                // set name to vmbx entry
+                result = aEntry.SetVmbxName( alphaPtrC );
                 }
             }
 
-         // Check for number field
-         else if ( tagValue == RMobilePhoneBookStore::ETagPBNumber )
+        // Check for number field
+        else if ( tagValue == RMobilePhoneBookStore::ETagPBNumber )
             {
+            VMBLOGSTRING("VMBX: CVmbxPbkStore::ReadPbkDataL: \
+                          ETagPBNumber found Number" );
+            found = ETrue;
             // Number field found from TLV entry, assuming 16bit data
             TPtrC16 numberPtrC;
             result = aPbkBuffer->GetValue( numberPtrC );
 
-            VMBLOGSTRING( "VMBX: CVmbxPbkStore::ReadPbkDataL:\
-                                            ETagPBNumber found" );
-
             if ( KErrNone == result )
                 {
-                // Error code is returned if number not fit to
-                // local buffer.
-                if ( numberPtrC.Length() > KVmbxMaxNumberLength )
-                    {
-                    result = KErrOverflow;
-                    VMBLOGSTRING( "VMBX: CVmbxPbkStore::ReadPbkDataL: \
-                                            Overflow error" );
-                    }
-                else
-                    {
-                    result = aEntry.SetVmbxNumber( numberPtrC );
-                    VMBLOGSTRING("VMBX: CVmbxPbkStore::ReadPbkDataL: \
-                                    ETagPBNumber found Number" );
-                    break;
-                    }
+                // set number to vmbx entry
+                result = aEntry.SetVmbxNumber( numberPtrC );
                 }
             }
-         else
+        else
             {
             // skip field
             aPbkBuffer->SkipValue( dataType );
@@ -686,12 +669,18 @@
         if ( KErrNone == result )
             {
             // Read next field type
-            result = aPbkBuffer->GetTagAndType( tagValue, dataType );
+            next = aPbkBuffer->GetTagAndType( tagValue, dataType );
             VMBLOGSTRING2( "VMBX: CVmbxPbkStore::ReadPbkDataL: \
                                     next GetTagAndType = %I", result );
             }
         }
 
+    // Neither alpha string Nor number is found
+    if( KErrNone == result && !found )
+        {
+        result = KErrNotFound;
+        }
+    
     VMBLOGSTRING2( "VMBX: CVmbxPbkStore::ReadPbkDataL result=%I", result );
     User::LeaveIfError( result );
     VMBLOGSTRING( "VMBX: CVmbxPbkStore::ReadPbkDataL <=" );