phonebookui/Phonebook2/UIControls/src/cpbk2filteredviewstack.cpp
branchRCL_3
changeset 6 e8e3147d53eb
parent 0 e686773b3f54
child 9 0d28c1c5b6dd
--- a/phonebookui/Phonebook2/UIControls/src/cpbk2filteredviewstack.cpp	Fri Mar 12 15:41:25 2010 +0200
+++ b/phonebookui/Phonebook2/UIControls/src/cpbk2filteredviewstack.cpp	Mon Mar 15 12:39:26 2010 +0200
@@ -484,7 +484,7 @@
 //
 void CElementStack::Reset()
     {
-    // Stack's elements need to destroy vice versa, 
+    // Stack's elements need to destroy vice versa,
     // because views in elements are always linked to previous view.
     // Like BaseView<-FindView<-RefineView<-RefineView...
     const TInt count( iStack.Count() );
@@ -565,7 +565,7 @@
 CPbk2FilteredViewStack::CCallback::CCallback(
         CPbk2FilteredViewStack& aViewStack,
         MVPbkContactViewObserver& aObserver, AddObserverL aAddObserverFuncL,
-        AddObserverError aAddObserverErrorFunc ) : 
+        AddObserverError aAddObserverErrorFunc ) :
             CActive( EPriorityStandard ),
             iViewStack( aViewStack ),
             iObserver( aObserver ),
@@ -707,7 +707,7 @@
         TBool aAlwaysIncludedChanged )
     {
     PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING(
-        "CPbk2FilteredViewStack::UpdateFilterL: topview(0x%x), always=%x"), 
+        "CPbk2FilteredViewStack::UpdateFilterL: topview(0x%x), always=%x"),
         &TopView(), aAlwaysincluded );
 
 
@@ -809,7 +809,7 @@
             if ( IsElementsUnderDestruction() )
                 {
                 UpdateStackL();
-                }            
+                }
             }
         }
 
@@ -1242,6 +1242,48 @@
     }
 
 // --------------------------------------------------------------------------
+// CPbk2FilteredViewStack::ContactViewObserverExtension
+// --------------------------------------------------------------------------
+//
+TAny* CPbk2FilteredViewStack::ContactViewObserverExtension( TUid aExtensionUid )
+    {
+    if( aExtensionUid == KVPbkContactViewObserverExtension2Uid )
+        {
+        return static_cast<MVPbkContactViewObserverExtension*>( this );
+        }
+    return NULL;
+    }
+
+// --------------------------------------------------------------------------
+// CPbk2FilteredViewStack::FilteredContactRemovedFromView
+// --------------------------------------------------------------------------
+//
+void CPbk2FilteredViewStack::FilteredContactRemovedFromView(
+		MVPbkContactViewBase& aView )
+    {
+    const TInt count = iViewObservers.Count();
+
+    for( TInt i = 0; i < count; i++ )
+       {
+       MVPbkContactViewObserver* observer = iViewObservers[i];
+
+       TAny* extension = observer->ContactViewObserverExtension(
+               KVPbkContactViewObserverExtension2Uid );
+
+       if( extension )
+           {
+           MVPbkContactViewObserverExtension* contactViewExtension =
+                   static_cast<MVPbkContactViewObserverExtension*>( extension );
+
+           if( contactViewExtension )
+               {
+               contactViewExtension->FilteredContactRemovedFromView( aView );
+               }
+           }
+       }
+    }
+
+// --------------------------------------------------------------------------
 // CPbk2FilteredViewStack::TopElement
 // --------------------------------------------------------------------------
 //
@@ -1276,12 +1318,12 @@
     // Check first if the aView is the base view.
     if ( iBaseViewElement->View() == &aView )
         {
-        if ( iBaseViewElement->ViewState() == 
+        if ( iBaseViewElement->ViewState() ==
                 MPbk2FilteredViewStackElement::EUndefined )
             {
             // The Base view is changed.
-            SendBaseViewChangedEvent();            
-            }  
+            SendBaseViewChangedEvent();
+            }
 
         iBaseViewElement->SetViewState(
             MPbk2FilteredViewStackElement::EReady );
@@ -1546,7 +1588,7 @@
 // --------------------------------------------------------------------------
 // CPbk2FilteredViewStack::SendBaseViewChangedEvent
 // --------------------------------------------------------------------------
-//    
+//
 void CPbk2FilteredViewStack::SendBaseViewChangedEvent()
     {
     const TInt count = iStackObservers.Count();