phonebookui/Phonebook/inc/CPbkContactInfoControl.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook/inc/CPbkContactInfoControl.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,231 @@
+/*
+* Copyright (c) 2002 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: 
+*     UI control for Phonebook's "Contact Info View".
+*
+*/
+
+
+#ifndef __CPbkContactInfoControl_H__
+#define __CPbkContactInfoControl_H__
+
+
+//  INCLUDES
+#include "CPbkContactDetailsBaseControl.h"
+#include "PbkIconId.hrh"    // TPbkIconId
+#include "MPbkClipListBoxText.h"
+#include "MPbkFieldAnalyzer.h"
+
+//  FORWARD DECLARATIONS
+class CPbkContactItem;
+class CPbkContactEngine;
+class TPbkContactItemField;
+class CPbkFieldArray;
+class CPbkViewState;
+class CPbkThumbnailPopup;
+class CEikListBox;
+class MDesC16Array;
+class CContactIdArray;
+
+//  CLASS DECLARATION
+
+/**
+ * @internal Only Phonebook internal use supported!
+ *
+ * Phonebook "Contact Info View" UI control. 
+ * Presents the fields of a contact as a list.
+ */
+class   CPbkContactInfoControl :
+        public CPbkContactDetailsBaseControl,
+        public MPbkClipListBoxText, 
+        public MPbkFieldAnalyzer
+    {
+    public:  // Constructors and destructor
+        /**
+         * Creates a new instance of this class.
+         *
+         * @param aResID        Id of a PBK_CONTACTINFO_CONTROL resource.
+         * @param aParent       parent of this control.
+         * @param aContact      Contact to display. This object does NOT take
+         *                      ownership of aContact.
+         * @param aEngine       Contact engine needed for MPbkFieldAnalyzer
+         *                      functions. This object does NOT take
+         *                      ownership of aContact.
+         */
+        IMPORT_C static CPbkContactInfoControl* NewL(
+                TInt aResId,
+                const CCoeControl& aParent, 
+                CPbkContactItem* aContact,
+                CPbkContactEngine* aEngine);
+
+        /**
+         * Destructor.
+         */
+        ~CPbkContactInfoControl();
+
+    public:  // interface
+        /** 
+         * Updates this control to display aContact's details.
+         * NOTE: This function does not redraw the control on screen.
+         * NOTE2: this function is leave-safe; it quarantees that this 
+         * control's state does not change if this function leaves.
+         *
+         * @param aContact  Contact to display.  This object does NOT take
+         *                  ownership of aContact.
+         */
+        void UpdateL(CPbkContactItem* aContact);
+
+        /**
+         * Returns the contact item. 
+         */
+        CPbkContactItem& ContactItem();
+
+        /**
+         * Returns the currently selected field. 
+         *
+         * @return  currently selected field or NULL if no selection.
+         */
+        TPbkContactItemField* CurrentField() const;
+
+        /**
+         * Returns the currently selected field's index relative to all
+         * fields viewed in the contact.
+         *
+         * @return  currently selected field's index or -1 if no selection.
+         */
+        IMPORT_C TInt CurrentFieldIndex() const;
+
+        /**
+         * Returns aField's position in the list, -1 if not found.
+         */
+        IMPORT_C TInt FieldPos(const TPbkContactItemField& aField);
+
+		/**
+		 * Return the field count of this control
+		 */
+		IMPORT_C TInt FieldCount() const;
+
+        /**
+         * Returns this view's current state.
+         *
+         * @return  this view's state. Caller is responsible of deleting 
+         *          the returned object. 
+         */
+        IMPORT_C CPbkViewState* GetStateL() const;
+
+        /**
+         * Sames as GetStateL() above, but leaves the returned object on
+         * the cleanup stack.
+         */
+        IMPORT_C CPbkViewState* GetStateLC() const;
+
+        /**
+         * Restores this view's state to aState. 
+         * Note: doesn't care about aState->FocusedContactItem(), only restores
+         * top field and focused field.
+         */
+        IMPORT_C void RestoreStateL(const CPbkViewState* aState);
+
+        /**
+         * Returns the listbox.
+         */
+        IMPORT_C CEikListBox& ListBox();
+
+        /**
+         * Hides the thumbnail window control is showing. 
+         * Call ShowThumbnailL() or UpdateL() to restore the thumbnail.
+         */
+        void HideThumbnail();
+
+        /**
+         * Shows the thumbnail image.
+         */
+        void ShowThumbnailL();
+
+    public: // from MPbkContactUiControl 
+        TInt NumberOfItems() const;
+        TBool ItemsMarked() const;
+        const CContactIdArray& MarkedItemsL() const;
+        TContactItemId FocusedContactIdL() const;
+        const TPbkContactItemField* FocusedField() const;
+        MObjectProvider* ObjectProvider();
+        TInt FocusedFieldIndex() const;
+
+    public:  // from MPbkClipListBoxText
+        TBool ClipFromBeginning(TDes& aBuffer, TInt aItemIndex, TInt aSubCellNumber);
+
+    public:  // from MPbkFieldAnalyzer
+        TBool HasSpeedDialL(const TPbkContactItemField& aField) const;
+        TBool HasVoiceTagL(const TPbkContactItemField& aField) const;
+
+    private:  // from CCoeControl: standard compound control overrides
+        TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+        void SizeChanged();
+    	TInt CountComponentControls() const;
+	    CCoeControl* ComponentControl(TInt aIndex) const;
+        void HandleResourceChange(TInt aType);
+        void DoHandleResourceChangeL(TInt aType);
+        void FocusChanged( TDrawNow aDrawNow );
+
+    private:  // Implementation
+        CPbkContactInfoControl();
+
+        void CheckRingToneFieldL( CPbkContactItem* aContact );
+
+        /**
+         * Second phase constructor, from CCoeControl. Initialises this object
+         * from a PBK_CONTACTINFO_CONTROL resource.
+         *
+         * @param aReader   resource reader at the beginning of a 
+         *                  PBK_CONTACTINFO_CONTROL resource.
+         */
+	    void ConstructFromResourceL(TResourceReader& aReader);
+        
+        class CItemDrawer;
+        class CListBox;
+        friend class CListBox;
+        class CUpdateData;
+        class CUpdateTestData;
+        friend class CUpdateTestData;
+        
+    private:  // data
+        /// Own: the list box control
+        CListBox* iListBox;
+        /// Own: flags
+        TUint iFlags;
+        /// Own: list box model
+        MDesC16Array* iListBoxModel;
+        /// Own: array of fields.
+        CPbkFieldArray* iFields;
+        /// Ref: Contact item to display
+        CPbkContactItem* iContactItem;
+        /// Own: Thumbnail handling
+        CPbkThumbnailPopup* iThumbnailHandler;
+        /// Own: default icon index
+        TPbkIconId iDefaultIconId;
+        /// Ref: Contact engine
+        CPbkContactEngine* iContactEngine;
+        /// Own: marked items array returned from MarkedItemsL()
+        mutable CContactIdArray* iMarkedItemsArray;
+        /// Own: is thumbnail visible
+        TBool iShowThumbnail;
+        ///Ref: voice tagged field;
+        mutable TPbkContactItemField* iVoiceTagField;
+        ///Own; voicetag fetch completed
+        mutable TBool iVoiceTagFetchCompleted;
+    };
+
+#endif  // __CPbkContactInfoControl_H__
+
+// End of File