phonebookengines/VirtualPhonebook/VPbkCntModel/src/CAsyncContactOperation.cpp
branchRCL_3
changeset 6 e8e3147d53eb
parent 0 e686773b3f54
equal deleted inserted replaced
5:81f8547efd4f 6:e8e3147d53eb
    53 CAsyncContactOperation::~CAsyncContactOperation()
    53 CAsyncContactOperation::~CAsyncContactOperation()
    54     {
    54     {
    55     CActive::Cancel();
    55     CActive::Cancel();
    56     delete iDiskSpaceChecker;
    56     delete iDiskSpaceChecker;
    57     iFs.Close();
    57     iFs.Close();
       
    58     delete iViewDef;
    58     }
    59     }
    59     
    60     
    60 void CAsyncContactOperation::ConstructL()
    61 void CAsyncContactOperation::ConstructL()
    61     {
    62     {
    62     User::LeaveIfError( iFs.Connect() );
    63     User::LeaveIfError( iFs.Connect() );
    65         ( TVPbkContactStoreUriPtr::EContactStoreUriStoreDrive ) );
    66         ( TVPbkContactStoreUriPtr::EContactStoreUriStoreDrive ) );
    66     TInt drive( EDriveA ); // c is usually the default location
    67     TInt drive( EDriveA ); // c is usually the default location
    67     User::LeaveIfError( iFs.CharToDrive
    68     User::LeaveIfError( iFs.CharToDrive
    68         ( ptr[0], drive) );
    69         ( ptr[0], drive) );
    69     iDiskSpaceChecker = VPbkEngUtils::CVPbkDiskSpaceCheck::NewL( iFs, drive );
    70     iDiskSpaceChecker = VPbkEngUtils::CVPbkDiskSpaceCheck::NewL( iFs, drive );
       
    71     
       
    72     iViewDef = CContactItemViewDef::NewL(
       
    73                       CContactItemViewDef::EIncludeFields, 
       
    74                       CContactItemViewDef::EMaskHiddenFields);
       
    75 
       
    76     iViewDef->AddL( KUidContactFieldMatchAll );
       
    77     
    70     }    
    78     }    
    71 
    79 
    72 void CAsyncContactOperation::PrepareL
    80 void CAsyncContactOperation::PrepareL
    73         ( MVPbkContactObserver::TContactOp aOpCode, 
    81         ( MVPbkContactObserver::TContactOp aOpCode, 
    74         TContactItemId aContactId,
    82         TContactItemId aContactId,
   132             CleanupStack::Pop( ci );
   140             CleanupStack::Pop( ci );
   133             break;
   141             break;
   134             }
   142             }
   135 
   143 
   136         case MVPbkContactObserver::EContactReadAndLock:
   144         case MVPbkContactObserver::EContactReadAndLock:
   137             {
   145             {          
   138             CContactItem* ci = 
   146             CContactItem* ci = 
   139                 iContactStore.NativeDatabase().OpenContactLX( iTargetContactId );
   147                 iContactStore.NativeDatabase().OpenContactLX( iTargetContactId, *iViewDef );
   140             CleanupStack::PushL( ci );
   148             CleanupStack::PushL( ci );
       
   149             
   141             CContact* contact = CContact::NewL( iContactStore, ci );
   150             CContact* contact = CContact::NewL( iContactStore, ci );
   142             result.iStoreContact = contact;
   151             result.iStoreContact = contact;
   143             contact->SetModified();
   152             contact->SetModified();
   144             CleanupStack::Pop( 2 );  // ci, lock
   153             CleanupStack::Pop( 2 );  // ci, lock
   145             break;
   154             break;
   154         case MVPbkContactObserver::EContactLock:
   163         case MVPbkContactObserver::EContactLock:
   155             {
   164             {
   156             if( iClientContact )
   165             if( iClientContact )
   157             	{
   166             	{
   158             	CContactItem* ci = iContactStore.NativeDatabase().OpenContactLX(
   167             	CContactItem* ci = iContactStore.NativeDatabase().OpenContactLX(
   159             			iClientContact->NativeContact()->Id() );
   168             			iClientContact->NativeContact()->Id(), *iViewDef );
   160 	            CleanupStack::PushL( ci );
   169 	            CleanupStack::PushL( ci );
   161 	            const_cast<CContact*>( iClientContact )->SetContact( ci );
   170 	            const_cast<CContact*>( iClientContact )->SetContact( ci );
   162 	            const_cast<CContact*>( iClientContact )->SetModified();
   171 	            const_cast<CContact*>( iClientContact )->SetModified();
   163 	            CleanupStack::Pop( 2 );  // ci, lock
   172 	            CleanupStack::Pop( 2 );  // ci, lock
   164             	}
   173             	}