--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/UIControls/inc/CPbk2SelectFieldDlg.h Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,168 @@
+/*
+* 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 field selection dialog.
+*
+*/
+
+
+#ifndef CPBK2SELECTFIELDDLG_H
+#define CPBK2SELECTFIELDDLG_H
+
+// INCLUDES
+#include <e32base.h>
+#include <CVPbkFieldFilter.h>
+#include <TPbk2IconId.h>
+#include "CPbk2FieldListBoxModel.h"
+#include <MVPbkContactStoreObserver.h>
+
+// FORWARD DECLARATIONS
+class MVPbkStoreContactField;
+class MVPbkStoreContactFieldCollection;
+class CPbk2PresentationContactFieldCollection;
+class MPbk2ControlKeyObserver;
+class CVPbkContactManager;
+class MPbk2FieldPropertyArray;
+class CPbk2FieldListBoxModel;
+class CPbk2PresenceIconInfo;
+class CPbk2FieldAnalyzer;
+
+// CLASS DECLARATION
+
+/**
+ * Phonebook 2 field selection dialog.
+ */
+NONSHARABLE_CLASS(CPbk2SelectFieldDlg) :
+ public CBase,
+ public MVPbkContactStoreObserver
+ {
+ public: // Construction and destruction
+
+ /**
+ * Constructor.
+ */
+ CPbk2SelectFieldDlg();
+
+ /**
+ * Destructor.
+ */
+ ~CPbk2SelectFieldDlg();
+
+ public: // From MVPbkContactStoreObserver
+ void StoreReady(MVPbkContactStore& aContactStore);
+ void StoreUnavailable(MVPbkContactStore& aContactStore,
+ TInt aReason);
+ void HandleStoreEventL(
+ MVPbkContactStore& aContactStore,
+ TVPbkContactStoreEvent aStoreEvent);
+
+ public: // Interface
+
+ /**
+ * Runs the dialog and returns selected field. Caller takes the
+ * ownership of the field. Field is left to the cleanupstack
+ * on return. NOTE: this object is deleted when this function
+ * returns or leaves.
+ *
+ * @param aFieldCollection Array of store contact fields.
+ * @param aFieldCollectionArray Array of store contact fields arrays.
+ * @param aPresenceIconsArray Presence icons array
+ * @param aContactManager Virtual Phonebook contact manager.
+ * @param aFieldProperties Phonebook 2 field properties.
+ * @param aCbaResourceId Softkey buttons for the control.
+ * @param aCommMethod Communication method type selected
+ * @param aHeading Possible heading text for the control.
+ * @param aFocusIndex Field index to focus initially.
+ *
+ * @return Returns the selected contact item field or NULL.
+ * @see CPbk2SelectFieldDlg::TPbk2SelectFieldFlags
+ */
+ const MVPbkStoreContactField* ExecuteLCD(
+ MVPbkStoreContactFieldCollection& aFieldCollection,
+ RPointerArray<CVPbkFieldFilter>& aFieldCollectionArray,
+ const TArray<CPbk2PresenceIconInfo*>* aPresenceIconsArray,
+ const CVPbkContactManager& aContactManager,
+ const MPbk2FieldPropertyArray& aFieldProperties,
+ TInt aCbaResourceId,
+ VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aCommMethod,
+ const TDesC& aHeading = KNullDesC,
+ TInt aFocusIndex = KErrNotFound );
+
+ /**
+ * Registers aKeyObserver as a key event observer of this control.
+ * Only one observer is supported and setting a new one removes the
+ * previous setting.
+ *
+ * @param aKeyObserver Phonebook 2 control key observer.
+ */
+ void SetObserver(
+ MPbk2ControlKeyObserver* aKeyObserver );
+
+ /**
+ * Attempts to exit this dialog just like a soft button was pressed.
+ * @see CAknPopupList::AttemptExitL(TBool).
+ */
+ void AttemptExitL(
+ TBool aAccept );
+
+ /**
+ * Sets given pointer to NULL when this dialog is destroyed.
+ *
+ * @param aSelfPtr The pointer to use.
+ * @precond !aSelfPtr || *aSelfPtr==this
+ */
+ void ResetWhenDestroyed(
+ CPbk2SelectFieldDlg** aSelfPtr );
+
+ private: // Implementation
+ void CreateListBoxL(
+ const CPbk2PresentationContactFieldCollection& aFieldCollection,
+ const TArray<CPbk2PresenceIconInfo*>* aPresenceIconsArray,
+ const CVPbkContactManager& aContactManager,
+ const MPbk2FieldPropertyArray& aFieldProperties,
+ TInt aCbaResourceId,
+ const TDesC& aHeading,
+ TInt aFocusIndex,
+ VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector aCommMethod);
+
+ private: // Data
+ /// Specialized list box class
+ class CListBox;
+ /// Own: List box inside the popup list
+ CListBox* iListBox;
+ /// Specialized popup list class
+ class CPopupList;
+ /// Own: Popup list query
+ CPopupList* iPopupList;
+ /// Ref: Key event observer
+ MPbk2ControlKeyObserver* iKeyObserver;
+ /// Ref: Set to ETrue in destructor
+ TBool* iDestroyedPtr;
+ /// Ref: Set to NULL when this dialog is destroyed.
+ CPbk2SelectFieldDlg** iSelfPtr;
+ /// Ref: list box model
+ CPbk2FieldListBoxModel* iListBoxModel;
+ /// Own: presentation fields for additional contacts
+ RPointerArray<CPbk2PresentationContactFieldCollection>
+ iFieldCollectionArray;
+ /// Own: Array to keep presence icons positions in the common array
+ RArray<CPbk2FieldListBoxModel::TPresenceIconPosInIconArray> iPresenceIconsPos;
+ // Own: Field analyser
+ CPbk2FieldAnalyzer* iFieldAnalyzer;
+ /// Own: Current contact link
+ MVPbkContactLink* iContactLink;
+ };
+
+#endif // CPBK2SELECTFIELDDLG_H
+
+// End of File