diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/UIControls/src/CPbk2FetchDlgPages.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/UIControls/src/CPbk2FetchDlgPages.cpp Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,218 @@ +/* +* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Phonebook 2 fetch dialog pages. +* +*/ + + +// INCLUDE FILES +#include "CPbk2FetchDlgPages.h" + +// Phonebook 2 +#include "MPbk2FetchDlgPage.h" +#include +#include + +/// Unnamed namespace for local definitions +namespace { + +#ifdef _DEBUG +enum TPanicCode + { + EInvalidPageCount = 1, + ECurrentPageNULL, + EPageNotFound, + EPageIndexOOB + }; + +void Panic(TPanicCode aReason) + { + _LIT( KPanicText, "CPBk2FetchDlgPage" ); + User::Panic( KPanicText, aReason ); + } + +#endif // _DEBUG + +} /// namespace + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::CPbk2FetchDlgPages +// -------------------------------------------------------------------------- +// +CPbk2FetchDlgPages::CPbk2FetchDlgPages() + { + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::~CPbk2FetchDlgPages +// -------------------------------------------------------------------------- +// +CPbk2FetchDlgPages::~CPbk2FetchDlgPages() + { + for (TInt i=iPages.Count()-1; i>=0; --i) + { + delete iPages[i]; + } + iPages.Close(); + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::AddL +// -------------------------------------------------------------------------- +// +void CPbk2FetchDlgPages::AddL( MPbk2FetchDlgPage* aPage ) + { + User::LeaveIfError( iPages.Append( aPage ) ); + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::DlgPageCount +// -------------------------------------------------------------------------- +// +TInt CPbk2FetchDlgPages::DlgPageCount() const + { + return iPages.Count(); + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::DlgPageAt +// -------------------------------------------------------------------------- +// +MPbk2FetchDlgPage& CPbk2FetchDlgPages::DlgPageAt( TInt aIndex ) const + { + __ASSERT_DEBUG( DlgPageCount() > aIndex, Panic( EPageIndexOOB ) ); + return *const_cast(iPages[aIndex]); + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::DlgPageWithId +// -------------------------------------------------------------------------- +// +MPbk2FetchDlgPage* CPbk2FetchDlgPages::DlgPageWithId( TInt aPageId ) const + { + MPbk2FetchDlgPage* ret = NULL; + + const TInt count = iPages.Count(); + for ( TInt i=0; i < count; ++i ) + { + const MPbk2FetchDlgPage* page = iPages[i]; + if ( page->FetchDlgPageId() == aPageId ) + { + ret = const_cast( page ); + break; + } + } + + return ret; + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::HandlePageChangedL +// -------------------------------------------------------------------------- +// +void CPbk2FetchDlgPages::HandlePageChangedL( TInt aPageId ) + { + MPbk2FetchDlgPage* newPage = DlgPageWithId( aPageId ); + + if ( newPage ) + { + if ( iCurrentPage ) + { + iCurrentPage->DeactivateFetchDlgPage(); + } + newPage->ActivateFetchDlgPageL(); + iCurrentPage = newPage; + } + + __ASSERT_DEBUG( newPage, Panic( EPageNotFound ) ); + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::AllPagesReady +// -------------------------------------------------------------------------- +// +TBool CPbk2FetchDlgPages::AllPagesReady() + { + const TInt count = DlgPageCount(); + __ASSERT_DEBUG( count > 0, Panic( EInvalidPageCount ) ); + + TBool ret = ETrue; + + for ( TInt i = 0; i < count; ++i ) + { + if ( !DlgPageAt( i ).DlgPageReady() ) + { + ret = EFalse; + break; + } + } + return ret; + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::IsActivePageEmpty +// -------------------------------------------------------------------------- +// +TBool CPbk2FetchDlgPages::IsActivePageEmpty() + { + return iCurrentPage->DlgPageEmpty(); + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::ActiveFirstPageL +// -------------------------------------------------------------------------- +// +void CPbk2FetchDlgPages::ActiveFirstPageL() + { + __ASSERT_DEBUG(DlgPageCount() > 0, Panic(EInvalidPageCount)); + iCurrentPage = &DlgPageAt(0); + iCurrentPage->ActivateFetchDlgPageL(); + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::FocusedContactL +// -------------------------------------------------------------------------- +// +const MVPbkBaseContact* CPbk2FetchDlgPages::FocusedContactL() const + { + __ASSERT_DEBUG( iCurrentPage, Panic( ECurrentPageNULL ) ); + return iCurrentPage->FocusedContactL(); + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::CurrentPage +// -------------------------------------------------------------------------- +// +MPbk2FetchDlgPage& CPbk2FetchDlgPages::CurrentPage() const + { + return *iCurrentPage; + } + +// -------------------------------------------------------------------------- +// CPbk2FetchDlgPages::SelectContactL +// -------------------------------------------------------------------------- +// +void CPbk2FetchDlgPages::SelectContactL + ( const MVPbkContactLink& aContactLink, TBool aSelect ) + { + const TInt count = DlgPageCount(); + __ASSERT_DEBUG( count > 0, Panic( EInvalidPageCount ) ); + + for ( TInt i = 0; i < count; ++i ) + { + DlgPageAt( i ).SelectContactL( aContactLink, aSelect ); + } + } + +// End of File