phonebookui/Phonebook2/UIControls/src/CPbk2FetchDlg.cpp
branchRCL_3
changeset 18 d4f567ce2e7c
parent 15 34879f5cfc63
--- a/phonebookui/Phonebook2/UIControls/src/CPbk2FetchDlg.cpp	Thu Jul 15 18:22:55 2010 +0300
+++ b/phonebookui/Phonebook2/UIControls/src/CPbk2FetchDlg.cpp	Thu Aug 19 09:41:07 2010 +0300
@@ -149,7 +149,8 @@
 inline CPbk2FetchDlg::CPbk2FetchDlg
         ( TParams aParams, MPbk2FetchDlgObserver& aObserver ) :
             iParams( aParams ),
-            iObserver( aObserver )
+            iObserver( aObserver ),
+            iSelectPermitted( ETrue )
     {
     }
 
@@ -258,6 +259,7 @@
         ( aContactLink, Phonebook2::Pbk2AppUi()->ApplicationServices().
             ContactManager().ContactStoresL() );
 
+    // Append the selected contact to results.
     if ( linkArray->Count() > 0 )
         {
         const MVPbkContactLink& link = linkArray->At( KFirstElement );
@@ -268,6 +270,28 @@
     }
 
 // --------------------------------------------------------------------------
+// CPbk2FetchDlg::AcceptDelayedFetchL
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CPbk2FetchDlg::DenyDelayedFetchL
+        ( const TDesC8& aContactLink )
+    {
+    CVPbkContactLinkArray* linkArray = CVPbkContactLinkArray::NewLC
+        ( aContactLink, Phonebook2::Pbk2AppUi()->ApplicationServices().
+            ContactManager().ContactStoresL() );
+
+    // Unmark the selected contact
+    if ( linkArray->Count() > 0 )
+        {
+        const MVPbkContactLink& link = linkArray->At( KFirstElement );
+        iResults->DenyAppendDelayedL( link );
+        iPages->SelectContactL( link, EFalse );
+        }
+
+    CleanupStack::PopAndDestroy(); // linkArray
+    }
+
+// --------------------------------------------------------------------------
 // CPbk2FetchDlg::ExecuteLD
 // --------------------------------------------------------------------------
 //
@@ -388,6 +412,12 @@
             }
         }
 
+    // Only multiple fetch needs to wait buffered operations finished
+    if ( !canceled && ( iParams.iFlags & EFetchMultiple ) )
+        {
+        iResults->WaitOperationsCompleteL();
+        }
+    
     // Notify observer
     if ( canceled )
         {
@@ -435,6 +465,11 @@
         // Reset results
         iResults->ResetAndDestroy();
         }
+    else
+        {
+        // Permit selection again
+        iSelectPermitted = ETrue;
+        }
     
     iExitRecord.Set( EExitOrdered );    // exit is now ordered and
                                         // when client later requests
@@ -525,6 +560,12 @@
         }
     else
         {
+        // EKeyApplicationF means left softkey is pressed
+        if ( EKeyApplicationF == aKeyEvent.iCode && 
+                ( iParams.iFlags & EFetchMultiple ) )
+            {
+            iSelectPermitted = EFalse;
+            }
         if( !Phonebook2::Pbk2AppUi()->KeyEventHandler().Pbk2ProcessKeyEventL( aKeyEvent, aType ) )
             {
             
@@ -788,6 +829,14 @@
         	}
         }
     }
+// --------------------------------------------------------------------------
+// CPbk2FetchDlg::IsSelectPermitted
+// --------------------------------------------------------------------------
+//
+TBool CPbk2FetchDlg::IsSelectPermitted()
+    {
+    return iSelectPermitted;
+    }
 
 // --------------------------------------------------------------------------
 // CPbk2FetchDlg::HandleControlEventL