diff -r 000000000000 -r e686773b3f54 phonebookui/Phonebook2/inc/CPbk2ContactInfoControl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/Phonebook2/inc/CPbk2ContactInfoControl.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,289 @@ +/* +* 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 info view control. +* +*/ + + +#ifndef CPBK2CONTACTINFOCONTROL_H +#define CPBK2CONTACTINFOCONTROL_H + +// INCLUDES +#include +#include +#include "MPbk2ContactDetailsControl.h" +#include +#include +#include +#include +#include + + +// FORWARD DECLARATIONS +class MVPbkStoreContact; +class MVPbkStoreContactField; +class CVPbkContactManager; +class MVPbkBaseContactField; +class CPbk2ContactInfoListBox; +class MPbk2ContactNameFormatter; +class CAknTitlePane; +class MPbk2ControlObserver; +class TPbk2ControlEvent; +class CPbk2ContactInfoDataSwapper; +class CPbk2PresentationContact; +class CPbk2PresentationContactFieldCollection; +class MPbk2FieldPropertyArray; +class MVPbkContactOperationBase; +class MVPbkContactLink; +class CPbk2ThumbnailLoader; +class MPbk2ContactNavigation; +class CPbk2StorePropertyArray; +class CPbk2StoreSpecificFieldPropertyArray; +class CPbk2ContactFieldDynamicProperties; +class MPbk2Command; + + +// CLASS DECLARATION + +/** + * Phonebook 2 contact info view control. + * Presents the fields of a contact as a list. + */ +class CPbk2ContactInfoControl : + public CCoeControl, + public MPbk2ContactDetailsControl, + public MCoeControlObserver, + public MVPbkSingleContactOperationObserver, + public MPbk2PointerEventInspector, + public MEikScrollBarObserver, + public MEikListBoxObserver + { + public: // Constructors and destructor + + /** + * Creates a new instance of this class. + * + * @param aContainer This control's container. + * @param aManager Virtual Phonebook contact manager. + * @param aNameFormatter Name formatter. + * @param aFieldProperties Field properties. + * @param aStoreProperties Store properties. + * @param aNavigation Optional contact navigator. + * @return A new instance of this class. + */ + IMPORT_C static CPbk2ContactInfoControl* NewL( + const CCoeControl* aContainer, + CVPbkContactManager& aManager, + MPbk2ContactNameFormatter& aNameFormatter, + MPbk2FieldPropertyArray& aFieldProperties, + CPbk2StorePropertyArray& aStoreProperties, + MPbk2ContactNavigation* aNavigation ); + + /** + * Destructor. + */ + ~CPbk2ContactInfoControl(); + + public: // Interface + /** + * Adds an observer to this control. + * + * @param aObserver The observer to add. + */ + IMPORT_C void AddObserverL( + MPbk2ControlObserver& aObserver ); + + /** + * Removes an observer from this control. + * + * @param aObserver The observer to remove. + */ + IMPORT_C void RemoveObserver( + MPbk2ControlObserver& aObserver ); + + public: // From MPbk2ContactUiControl + MPbk2ContactUiControl* ParentControl() const; + TInt NumberOfContacts() const; + const MVPbkBaseContact* FocusedContactL() const; + const MVPbkViewContact* FocusedViewContactL() const; + const MVPbkStoreContact* FocusedStoreContact() const; + void SetFocusedContactL( + const MVPbkBaseContact& aContact ); + void SetFocusedContactL( + const MVPbkContactBookmark& aContactBookmark ); + void SetFocusedContactL( + const MVPbkContactLink& aContactLink ); + TInt FocusedContactIndex() const; + void SetFocusedContactIndexL( + TInt aIndex ); + TInt NumberOfContactFields() const; + const MVPbkBaseContactField* FocusedField() const; + TInt FocusedFieldIndex() const; + void SetFocusedFieldIndex( + TInt aIndex ); + TBool ContactsMarked() const; + MVPbkContactLinkArray* SelectedContactsL() const; + MVPbkContactLinkArray* SelectedContactsOrFocusedContactL() const; + MPbk2ContactLinkIterator* SelectedContactsIteratorL() const; + CArrayPtr* SelectedContactStoresL() const; + void ClearMarks(); + void SetSelectedContactL( + TInt aIndex, + TBool aSelected ); + void SetSelectedContactL( + const MVPbkContactBookmark& aContactBookmark, + TBool aSelected ); + void SetSelectedContactL( + const MVPbkContactLink& aContactLink, + TBool aSelected ); + + void DynInitMenuPaneL( + TInt aResourceId, + CEikMenuPane* aMenuPane ) const; + void ProcessCommandL( + TInt aCommandId ) const; + void UpdateAfterCommandExecution(); + TInt GetMenuFilteringFlagsL() const; + CPbk2ViewState* ControlStateL() const; + void RestoreControlStateL( + CPbk2ViewState* aState ); + const TDesC& FindTextL(); + void ResetFindL(); + void ShowThumbnail(); + void HideThumbnail(); + void SetBlank( + TBool aBlank ); + void RegisterCommand( + MPbk2Command* aCommand ); + void SetTextL( + const TDesC& aText ); + TAny* ContactUiControlExtension(TUid aExtensionUid ); + + public: // From MPbk2ContactUiControl2 + TInt CommandItemCount() const; + const MPbk2UiControlCmdItem& CommandItemAt( TInt aIndex ) const; + const MPbk2UiControlCmdItem* FocusedCommandItem() const; + void DeleteCommandItemL( TInt aIndex ); + void AddCommandItemL(MPbk2UiControlCmdItem* /*aCommand*/, TInt /*aIndex*/); + + + public: // From MPbk2ContactDetailsControl + void UpdateL( + MVPbkStoreContact* aContact ); + TInt FieldCount() const; + TInt FieldPos( + const MVPbkStoreContactField& aField ) const; + + private: // From CCoeControl + TKeyResponse OfferKeyEventL( + const TKeyEvent& aKeyEvent, + TEventCode aType ); + void SizeChanged(); + TInt CountComponentControls() const; + CCoeControl* ComponentControl( + TInt aIndex ) const; + void FocusChanged( + TDrawNow aDrawNow ); + void HandleResourceChange( + TInt aType ); + void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + private: // From MCoeControlObserver + void HandleControlEventL( + CCoeControl* aControl, + TCoeEvent aEventType ); + + private: // From MVPbkSingleContactOperationObserver + void VPbkSingleContactOperationComplete( + MVPbkContactOperationBase& aOperation, + MVPbkStoreContact* aContact ); + void VPbkSingleContactOperationFailed( + MVPbkContactOperationBase& aOperation, + TInt aError ); + + public: // MPbk2PointerEventInspector + TBool FocusedItemPointed(); + TBool FocusableItemPointed(); + TBool SearchFieldPointed(); + + public: // from MEikScrollBarObserver + void HandleScrollEventL(CEikScrollBar* aScrollBar, TEikScrollEvent aEventType); + + private: // from MEikListboxObserver + void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType ); + + private: // Implementation + CPbk2ContactInfoControl( + CVPbkContactManager& aManager, + MPbk2ContactNameFormatter& aNameFormatter, + MPbk2FieldPropertyArray& aFieldProperties, + CPbk2StorePropertyArray& aStoreProperties, + MPbk2ContactNavigation* aNavigator ); + void ConstructL( const CCoeControl* aContainer ); + void StorePanesL( + CPbk2ContactInfoDataSwapper& aSwapper, + const CPbk2PresentationContact* aContact ); + void SendEventToObserversL( + const TPbk2ControlEvent& aEvent ); + CPbk2ContactFieldDynamicProperties* CreateDynamicFieldPropertiesLC( + CPbk2PresentationContact& aContact ); + void DoHandleResourceChangeL( + TInt aType ); + void RetrieveContactL( const MVPbkContactLink& aContactLink ); + + private: // Data + /// Ref: Virtual Phonebook contact manager + CVPbkContactManager& iContactManager; + /// Ref: Name formatter + MPbk2ContactNameFormatter& iNameFormatter; + /// Ref: Contact navigator + MPbk2ContactNavigation* iNavigator; + /// Ref: Field property array + MPbk2FieldPropertyArray& iFieldProperties; + /// Ref: Store properties for store specific field properties + CPbk2StorePropertyArray& iStoreProperties; + /// Own: List box + CPbk2ContactInfoListBox* iListBox; + /// Own: Flags + TUint iFlags; + /// Ref: Array of fields + CPbk2PresentationContactFieldCollection* iFields; + /// Own: Store contact + MVPbkStoreContact* iStoreContact; + /// Own: Presentation contact to display + CPbk2PresentationContact* iContact; + /// Own: Observers of this object + RPointerArray iObservers; + /// Own: Contact retrieve process + MVPbkContactOperationBase* iRetriever; + /// Own: Contact link, needed in contact retrieve process + MVPbkContactLink* iContactLink; + /// Own: Thumbnail handling + CPbk2ThumbnailLoader* iThumbnailLoader; + /// Own: Store specific field properties + CPbk2StoreSpecificFieldPropertyArray* iSpecificFieldProperties; + /// Own: Focused field index + TInt iFocusedFieldIndex; + /// Ref: command in execution + MPbk2Command* iCommand; + /// Ref: Title pane + CAknTitlePane* iTitlePane; + /// flag whether pointer moved or not for the thumbnail + TBool iDidMove; + + }; + +#endif // CPBK2CONTACTINFOCONTROL_H + +// End of File