phonebookui/Phonebook/View/inc/CPbkGroupPopup.h
changeset 0 e686773b3f54
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook/View/inc/CPbkGroupPopup.h	Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,145 @@
+/*
+* 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 "Add to group".
+*
+*/
+
+
+#ifndef __CPbkGroupPopup_H__
+#define __CPbkGroupPopup_H__
+
+//  INCLUDES
+#include <e32base.h>        // CBase
+#include <cntdef.h>         // TContactItemId
+#include <cntviewbase.h>    // MContactViewObserver
+#include <eikcmobs.h>       // MEikCommandObserver
+
+//  FORWARD DECLARATIONS
+class CEikColumnListBox;
+class CPbkInputAbsorber;
+
+// CLASS DECLARATION
+
+/**
+ * @internal Only Phonebook internal use supported!
+ *
+ * Popup dialog which displays groups.
+ */
+NONSHARABLE_CLASS(CPbkGroupPopup) : 
+        public CBase, 
+        private MContactViewObserver,
+        private MEikCommandObserver
+    {
+    public:  // interface
+        /**
+         * Parameters object for NewL.
+         */
+        struct TParams
+            {
+            /// Ref, input: a contact view containing the groups to display
+            CContactViewBase* iGroupView;
+            /// Own, input: Initial (before iGroupView is ready) popup softkeys
+			/// resource id
+            TInt iInitialSoftkeyResId;
+            /// Own, input: Popup softkeys resource id
+            TInt iSoftkeyResId;
+            /// Ref, input: Popup prompt text
+            const TDesC* iPrompt;
+            /// Ref, input: empty text for the listbox
+            const TDesC* iEmptyText;
+            /// Own, input: listbox flags
+            TInt iListBoxFlags;
+            /// Own, output: Selected group's id
+            TContactItemId iSelectedGroupId;
+
+            /**
+             * Constructor. Initializes mandatory fields with parameters and 
+             * other fields to default values.
+			 * @param aGroupView the view
+			 * @param aInitialSoftkeyResId initial popup softkeys resource id
+			 * @param aSoftKeyResId popup softkeys resource id
+             */
+            TParams
+                (CContactViewBase& aGroupView, 
+                TInt aInitialSoftkeyResId,
+                TInt aSoftKeyResId);
+            };
+
+        /**
+         * Creates a new instance of this class.
+         *
+         * @param aParams @see TParams.
+         */
+        static CPbkGroupPopup* NewL(TParams& aParams);
+
+        /**
+         * Destructor. Also makes ExecuteLD return like the dialog was
+		 * cancelled.
+         */
+        ~CPbkGroupPopup();
+
+        /**
+         * Executes and deletes (also if a leave occurs) this dialog.
+         *
+         * @postcond    (result==0 && iParams.iSelectedGroupId==KNullContactId) ||
+         *              (result!=0 && iParams.iSelectedGroupId!=KNullContactId)
+         */
+        TInt ExecuteLD();
+
+        /**
+         * Resets *aSelfPtr to NULL when this object is destroyed.
+         *
+         * @precond !aSelfPtr || *aSelfPtr==this
+         */
+        void ResetWhenDestroyed(CPbkGroupPopup** aSelfPtr);
+
+    private:  // from MContactViewObserver
+	    void HandleContactViewEvent
+            (const CContactViewBase& aView,
+            const TContactViewEvent& aEvent);
+
+    private:  // from MEikCommandObserver
+    	void ProcessCommandL(TInt aCommandId);
+
+    private:  // Implementation
+        CPbkGroupPopup(TParams& aParams);
+        void ConstructL();
+        void WaitForViewEventL();
+        void RunPopupL();
+        void Close();
+        void DoHandleContactViewEventL(const TContactViewEvent& aEvent);
+
+    private:  // data
+        /// Ref: parameters
+        TParams& iParams;
+        /// Own: return value from ExecuteLD
+        TInt iResult;
+        /// Own: event absorbing control
+        CPbkInputAbsorber* iInputAbsorber;
+        /// Own: listbox
+        CEikColumnListBox* iListBox;
+        /// Type of iPopupList
+        class CPopupList;
+        /// Own: popuplist that contains iListBox
+        CPopupList* iPopupList;
+        /// Ref: destructor sets referred TBool to ETrue
+        TBool* iDestroyedPtr;
+        /// Ref: referred pointer is set to NULL in destructor
+        CPbkGroupPopup** iSelfPtr;
+    };
+
+#endif // __CPbkGroupPopup_H__
+
+// End of File