phonebookui/Phonebook2/UIControls/src/cpbk2filteredviewstack.cpp
branchRCL_3
changeset 6 e8e3147d53eb
parent 0 e686773b3f54
child 9 0d28c1c5b6dd
equal deleted inserted replaced
5:81f8547efd4f 6:e8e3147d53eb
   482 // CElementStack::Reset
   482 // CElementStack::Reset
   483 // --------------------------------------------------------------------------
   483 // --------------------------------------------------------------------------
   484 //
   484 //
   485 void CElementStack::Reset()
   485 void CElementStack::Reset()
   486     {
   486     {
   487     // Stack's elements need to destroy vice versa, 
   487     // Stack's elements need to destroy vice versa,
   488     // because views in elements are always linked to previous view.
   488     // because views in elements are always linked to previous view.
   489     // Like BaseView<-FindView<-RefineView<-RefineView...
   489     // Like BaseView<-FindView<-RefineView<-RefineView...
   490     const TInt count( iStack.Count() );
   490     const TInt count( iStack.Count() );
   491     for ( TInt i=count-1; i >= 0; --i )
   491     for ( TInt i=count-1; i >= 0; --i )
   492         {
   492         {
   563 // --------------------------------------------------------------------------
   563 // --------------------------------------------------------------------------
   564 //
   564 //
   565 CPbk2FilteredViewStack::CCallback::CCallback(
   565 CPbk2FilteredViewStack::CCallback::CCallback(
   566         CPbk2FilteredViewStack& aViewStack,
   566         CPbk2FilteredViewStack& aViewStack,
   567         MVPbkContactViewObserver& aObserver, AddObserverL aAddObserverFuncL,
   567         MVPbkContactViewObserver& aObserver, AddObserverL aAddObserverFuncL,
   568         AddObserverError aAddObserverErrorFunc ) : 
   568         AddObserverError aAddObserverErrorFunc ) :
   569             CActive( EPriorityStandard ),
   569             CActive( EPriorityStandard ),
   570             iViewStack( aViewStack ),
   570             iViewStack( aViewStack ),
   571             iObserver( aObserver ),
   571             iObserver( aObserver ),
   572             iAddObserverFuncL( aAddObserverFuncL ),
   572             iAddObserverFuncL( aAddObserverFuncL ),
   573             iAddObserverErrorFunc( aAddObserverErrorFunc )
   573             iAddObserverErrorFunc( aAddObserverErrorFunc )
   705 void CPbk2FilteredViewStack::UpdateFilterL( const MDesCArray& aFindStrings,
   705 void CPbk2FilteredViewStack::UpdateFilterL( const MDesCArray& aFindStrings,
   706         const MVPbkContactBookmarkCollection* aAlwaysincluded,
   706         const MVPbkContactBookmarkCollection* aAlwaysincluded,
   707         TBool aAlwaysIncludedChanged )
   707         TBool aAlwaysIncludedChanged )
   708     {
   708     {
   709     PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING(
   709     PBK2_DEBUG_PRINT(PBK2_DEBUG_STRING(
   710         "CPbk2FilteredViewStack::UpdateFilterL: topview(0x%x), always=%x"), 
   710         "CPbk2FilteredViewStack::UpdateFilterL: topview(0x%x), always=%x"),
   711         &TopView(), aAlwaysincluded );
   711         &TopView(), aAlwaysincluded );
   712 
   712 
   713 
   713 
   714     if ( aFindStrings.MdcaCount() == 0 )
   714     if ( aFindStrings.MdcaCount() == 0 )
   715         {
   715         {
   807             // None of the views were updated and no new views were created.
   807             // None of the views were updated and no new views were created.
   808             // -> update stack if there are views that must be destroyed.
   808             // -> update stack if there are views that must be destroyed.
   809             if ( IsElementsUnderDestruction() )
   809             if ( IsElementsUnderDestruction() )
   810                 {
   810                 {
   811                 UpdateStackL();
   811                 UpdateStackL();
   812                 }            
   812                 }
   813             }
   813             }
   814         }
   814         }
   815 
   815 
   816     }
   816     }
   817 
   817 
  1240         MVPbkContactViewObserver::ContactViewError, aError,
  1240         MVPbkContactViewObserver::ContactViewError, aError,
  1241         aErrorNotified );
  1241         aErrorNotified );
  1242     }
  1242     }
  1243 
  1243 
  1244 // --------------------------------------------------------------------------
  1244 // --------------------------------------------------------------------------
       
  1245 // CPbk2FilteredViewStack::ContactViewObserverExtension
       
  1246 // --------------------------------------------------------------------------
       
  1247 //
       
  1248 TAny* CPbk2FilteredViewStack::ContactViewObserverExtension( TUid aExtensionUid )
       
  1249     {
       
  1250     if( aExtensionUid == KVPbkContactViewObserverExtension2Uid )
       
  1251         {
       
  1252         return static_cast<MVPbkContactViewObserverExtension*>( this );
       
  1253         }
       
  1254     return NULL;
       
  1255     }
       
  1256 
       
  1257 // --------------------------------------------------------------------------
       
  1258 // CPbk2FilteredViewStack::FilteredContactRemovedFromView
       
  1259 // --------------------------------------------------------------------------
       
  1260 //
       
  1261 void CPbk2FilteredViewStack::FilteredContactRemovedFromView(
       
  1262 		MVPbkContactViewBase& aView )
       
  1263     {
       
  1264     const TInt count = iViewObservers.Count();
       
  1265 
       
  1266     for( TInt i = 0; i < count; i++ )
       
  1267        {
       
  1268        MVPbkContactViewObserver* observer = iViewObservers[i];
       
  1269 
       
  1270        TAny* extension = observer->ContactViewObserverExtension(
       
  1271                KVPbkContactViewObserverExtension2Uid );
       
  1272 
       
  1273        if( extension )
       
  1274            {
       
  1275            MVPbkContactViewObserverExtension* contactViewExtension =
       
  1276                    static_cast<MVPbkContactViewObserverExtension*>( extension );
       
  1277 
       
  1278            if( contactViewExtension )
       
  1279                {
       
  1280                contactViewExtension->FilteredContactRemovedFromView( aView );
       
  1281                }
       
  1282            }
       
  1283        }
       
  1284     }
       
  1285 
       
  1286 // --------------------------------------------------------------------------
  1245 // CPbk2FilteredViewStack::TopElement
  1287 // CPbk2FilteredViewStack::TopElement
  1246 // --------------------------------------------------------------------------
  1288 // --------------------------------------------------------------------------
  1247 //
  1289 //
  1248 MPbk2FilteredViewStackElement& CPbk2FilteredViewStack::TopElement() const
  1290 MPbk2FilteredViewStackElement& CPbk2FilteredViewStack::TopElement() const
  1249     {
  1291     {
  1274         MVPbkContactViewBase& aView )
  1316         MVPbkContactViewBase& aView )
  1275     {
  1317     {
  1276     // Check first if the aView is the base view.
  1318     // Check first if the aView is the base view.
  1277     if ( iBaseViewElement->View() == &aView )
  1319     if ( iBaseViewElement->View() == &aView )
  1278         {
  1320         {
  1279         if ( iBaseViewElement->ViewState() == 
  1321         if ( iBaseViewElement->ViewState() ==
  1280                 MPbk2FilteredViewStackElement::EUndefined )
  1322                 MPbk2FilteredViewStackElement::EUndefined )
  1281             {
  1323             {
  1282             // The Base view is changed.
  1324             // The Base view is changed.
  1283             SendBaseViewChangedEvent();            
  1325             SendBaseViewChangedEvent();
  1284             }  
  1326             }
  1285 
  1327 
  1286         iBaseViewElement->SetViewState(
  1328         iBaseViewElement->SetViewState(
  1287             MPbk2FilteredViewStackElement::EReady );
  1329             MPbk2FilteredViewStackElement::EReady );
  1288         }
  1330         }
  1289     else
  1331     else
  1544     }
  1586     }
  1545 
  1587 
  1546 // --------------------------------------------------------------------------
  1588 // --------------------------------------------------------------------------
  1547 // CPbk2FilteredViewStack::SendBaseViewChangedEvent
  1589 // CPbk2FilteredViewStack::SendBaseViewChangedEvent
  1548 // --------------------------------------------------------------------------
  1590 // --------------------------------------------------------------------------
  1549 //    
  1591 //
  1550 void CPbk2FilteredViewStack::SendBaseViewChangedEvent()
  1592 void CPbk2FilteredViewStack::SendBaseViewChangedEvent()
  1551     {
  1593     {
  1552     const TInt count = iStackObservers.Count();
  1594     const TInt count = iStackObservers.Count();
  1553     for ( TInt i = count - 1; i >= 0; --i )
  1595     for ( TInt i = count - 1; i >= 0; --i )
  1554         {
  1596         {