diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/UIControls/inc/CPbk2ContactViewListBox.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/UIControls/inc/CPbk2ContactViewListBox.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,264 @@ +/* +* 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 contact view list box. +* +*/ + + +#ifndef CPBK2CONTACTVIEWLISTBOX_H +#define CPBK2CONTACTVIEWLISTBOX_H + +// INCLUDES +#include +#include +#include "MPbk2ClipListBoxText.h" +#include +#include +#include +#include "CPbk2ContactViewListBoxModel.h" + + +// FORWARD DECLARATIONS +class CPbk2ContactViewListBoxModel; +class CVPbkContactManager; +class MVPbkContactViewBase; +class MPbk2ContactNameFormatter; +class CPbk2StorePropertyArray; +class MPbk2ContactUiControlExtension; +class CPbk2ListboxModelCmdDecorator; +class CPbk2ContactViewCustomListBoxData; +class CPbk2PredictiveSearchFilter; +class CCoeControl; + +/** + * Phonebook 2 contact view list box. + */ +NONSHARABLE_CLASS(CPbk2ContactViewListBox) : + public CAknSingleGraphicStyleListBox, + public MPbk2ClipListBoxText, + public MPbk2PointerEventInspector, + private MCoeForegroundObserver + { + + public: + /** CreateItemDrawerL() + * + * Chooses which itemdrawer to use. + */ + void CreateItemDrawerL(); + + public: // Constructors and destructor + + /** + * Creates a new instance of this class. + * + * @param aContainer The control container for this control. + * @param aResourceReader Resource reader used to construct + * this object. + * @param aManager Reference to contact manager. + * @param aView Reference to contact view. + * @param aNameFormatter Reference to the name formatter. + * @param aStoreProperties Store property array. + * @param aUiExtension UI extension. + * @param aSearchFilter PBk2 Search Filter + * @return A new instance of this class. + */ + static CPbk2ContactViewListBox* NewL( + CCoeControl& aContainer, + TResourceReader& aResourceReader, + const CVPbkContactManager& aManager, + MVPbkContactViewBase& aView, + MPbk2ContactNameFormatter& aNameFormatter, + CPbk2StorePropertyArray& aStoreProperties, + MPbk2ContactUiControlExtension* aUiExtension, + CPbk2PredictiveSearchFilter &aSearchFilter ); + + /** + * Destructor. + */ + ~CPbk2ContactViewListBox(); + + public: // Interface + + /** + * Returns the number of items in the list box currently. + * + * @return Number of items in the listbox. + */ + TInt NumberOfItems() const; + + /** + * Returns list box selection status. + * + * @return ETrue if there are items marked, EFalse otherwise. + */ + TBool ContactsMarked() const; + + /** + * Handles item addition / deletion etc + * events by updating list box data and the focus. + * + * @param aEvent contact view event + * @see MPbk2NamesListState::HandleContactViewEventL + * @param aIndex listbox index + */ + void HandleEventL( + TInt aEvent, + TInt aIndex ); + + /** + * Fixes the top item index of the list box. + */ + void FixTopItemIndex(); + + /** + * Checks that there is focus in the list. + */ + void CheckFocusIndex(); + + /** + * Handles pointer event. + * + * @see CAknSingleGraphicStyleListBox::HandlePointerEventL + */ + void HandlePointerEventL( + const TPointerEvent& aPointerEvent ); + + /** + * Draws the listbox. + * + * @see CAknSingleGraphicStyleListBox::Draw + */ + void Draw( const TRect& aRect ) const; + + /** + * Returns Phonebook 2 control flags defined in Pbk2UIControls.hrh. + * + * @return Control flags. + */ + TUint Flags() const; + + /** + * Returns ETrue if the list supports selection. + * + * @return ETrue if the list supports selection. + */ + TBool IsSelectionListBox(); + + /** + * Sets the scroll event observer. + */ + void SetScrollEventObserver(MEikScrollBarObserver* aObserver); + + /** + * Sets the commands that should appear at the top of the list. + * @param aCommands An array of commands. NULL may be given to + * indicate that no commands are to be shown. + */ + void SetListCommands( const RPointerArray* aCommands ); + + public: // From MPbk2ClipListBoxText + TBool ClipFromBeginning( + TDes& aBuffer, + TInt aItemIndex, + TInt aSubCellNumber ); + + public: // From MPbk2PointerEventInspector + TBool FocusedItemPointed(); + TBool FocusableItemPointed(); + TBool SearchFieldPointed(); + + public: // From CEikListBox + void HandleScrollEventL( CEikScrollBar* aScrollBar, + TEikScrollEvent aEventType ); + + private: // MCoeForegroundObserver + void HandleGainingForeground(); + void HandleLosingForeground(); + + protected: // Implementation + CPbk2ContactViewListBox( + CCoeControl& aContainer, + MPbk2ContactUiControlExtension* aUiExtension, + CPbk2PredictiveSearchFilter &aSearchFilter ); + void ConstructL( + CCoeControl& aContainer, + TResourceReader& aResourceReader, + const CVPbkContactManager& aManager, + MVPbkContactViewBase& aView, + MPbk2ContactNameFormatter& aNameFormatter, + CPbk2StorePropertyArray& aStoreProperties ); + void CreateListBoxModelL( + const CVPbkContactManager& aManager, + MVPbkContactViewBase& aView, + MPbk2ContactNameFormatter& aNameFormatter, + CPbk2StorePropertyArray& aStoreProperties ); + + + virtual CPbk2ContactViewListBoxModel* DoCreateModelL( + CPbk2ContactViewListBoxModel::TParams params ); + + virtual CPbk2ListboxModelCmdDecorator* DoCreateDecoratorL( + const CPbk2IconArray& aIconArray, + TPbk2IconId aEmptyIconId, + TPbk2IconId aDefaultIconId ); + + TBool IsContact( TInt aIndex ) const; + + private: // Data structures + /// Data loaded from resources + struct TResourceData + { + /// Own: Flags + TUint iFlags; + /// Own: Text to use for unnamed entries + HBufC* iUnnamedText; + /// Own: Empty icon id + TPbk2IconId iEmptyIconId; + /// Own: Default icon id + TPbk2IconId iDefaultIconId; + }; + + protected: //data //TODO handle better + /// Own: List box model + CPbk2ContactViewListBoxModel* iModel; + /// Own: Data loaded from resources + TResourceData iResourceData; + /// Own: Indexes of the changed list items + CArrayFixFlat iChangedIndexes; + + /// Ref: UI extension + MPbk2ContactUiControlExtension* iUiExtension; + /// Own: Pointer movement indicator + TBool iFocusedContactPointed; + /// Own: Pointer movement indicator + TBool iFocusableContactPointed; + /// Ref: scroll event observer + MEikScrollBarObserver* iScrollEventObserver; + /// Own: Wraps the listbox model + CPbk2ListboxModelCmdDecorator* iListboxModelDecorator; + /// For handling of scroll bar popupcharacter + TBool iShowPopupChar; + /// Doesnt Own - Ownership Transferred to CPbk2ContactViewCustomListBoxItemDrawer + CPbk2ContactViewCustomListBoxData* iColumnData; + ///Ref : Search Pane Filter + CPbk2PredictiveSearchFilter &iSearchFilter; + // ref: used fro checking command item count + CCoeControl& iContainer; + + }; + +#endif // CPBK2CONTACTVIEWLISTBOX_H + +// End of File