wvuing/wvuiave/AppSrc/CCAContactDetailsDialog.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiave/AppSrc/CCAContactDetailsDialog.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,260 @@
+/*
+* Copyright (c) 2006 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:  Declares contact details dialog
+ *
+*/
+
+
+#ifndef CCACONTACTDETAILSDIALOG_H
+#define CCACONTACTDETAILSDIALOG_H
+
+//  INCLUDES
+#include <aknform.h>
+#include <eiklbo.h>
+#include <bldvariant.hrh>
+
+// FORWARD DECLARATIONS
+class CCAStatusPaneHandler;
+class CAknDoubleStyleListBox;
+class MCAContactEditPC;
+
+// CLASS DECLARATION
+/**
+ *  This class declares dialog for contact details
+ *  @lib chatNG.app
+ *  @since 3.2
+ */
+class CCAContactDetailsDialog : public CAknDialog,
+            public MEikListBoxObserver
+    {
+
+    public:  // Constructors and destructor
+
+        /**
+         * C++ default constructor.
+         * @since 3.2
+         * @see CCAContactDetailsDialog::NewL
+         */
+        CCAContactDetailsDialog(
+            TBool& aWasSaved,
+            const HBufC* aListId,
+            const TDesC& aNickname,
+            TInt aIndex );
+
+        /**
+         * Destructor
+         */
+        virtual ~CCAContactDetailsDialog();
+
+        /**
+         * Symbian default constructor.
+         * @param aWasSaved ETrue, if the contact was saved (if edited)
+         * otherwise show the contact details
+         * @param aIndex The index of the contact to edit/view
+         * @param aListId The list id (must be zero length, but valid string, if no list)
+         * @param aNickname Nickname (optional)
+         * @since 3.2
+         */
+        static CCAContactDetailsDialog* NewL(
+            TBool& aWasSaved,
+            TInt aIndex,
+            const TDesC& aListId,
+            const TDesC& aNickname = KNullDesC );
+
+        /**
+         * 2nd level constructor for this class
+         * @since 3.2
+         * @see CCAContactDetailsDialog::NewL
+         */
+        void ConstructL();
+
+    public: // new methods
+
+        /**
+         * Invoke the dialog.
+         * Just a wrapper for ExecuteLD with proper resource ID,
+         * to make it simpler for callers.
+         * @since 3.2
+         */
+        void ShowLD();
+
+        /**
+         * Help Key Support
+         * This function is called by the Framework to get the context to launch
+         * Help
+         *
+         * @param aContext	The context that contains the appid and the help id.
+         */
+        void GetHelpContext( TCoeHelpContext& aContext ) const;
+
+    private: //new functions
+
+        /**
+         * Update the internal item text array with the data from the current
+         * contact
+         * @since 3.2
+         */
+        void UpdateItemTextArrayL();
+
+        /**
+         * Helper for UpdateItemTextArrayL.
+         * Appends correctly formatted text to the given item text array.
+         * @param aItemTextArray The item text array
+         * @param aStringResource The string resource for the label
+         * @param aText The text of the entry
+         * @since 3.2
+         */
+        void AppendToItemArrayL(
+            CDesCArray& aItemTextArray,
+            TInt aStringResource,
+            const TDesC& aText );
+
+        /**
+         * Maps the given list box item index to the Contact Editor control id.
+         * If the currently selected list box item index is unavailable in the
+         * control editor, the method will find the next suitable one.
+         * @param aItemIndex The listbox item index
+         * @return The control id in the editor
+         * @since 3.2
+         */
+        TInt MapIndexToControlId( TInt aItemIndex );
+
+        /**
+         * Update the title bar text and icon
+         * @since 3.2
+         */
+        void UpdateTitleBarL();
+
+        /**
+         * Deletes currently viewed contact.
+         * @return General error code or KErrNone.
+         * @since 3.2
+         */
+        TInt DeleteCurrentContactL();
+
+        /**
+        * Launch contact editor with the currently focused item.
+        * @since 3.2
+        * @return None
+        */
+        void LaunchContactEditorL();
+
+
+    private:	//From MEikCommandObserver
+
+        /**
+         * Processes user commands.
+         * @see MEikCommandObserver
+         */
+        void ProcessCommandL( TInt aCommand );
+
+    private: //from MEikMenuObserver
+
+        /**
+         * Dynamically initialises menu pane
+         * @see MEikMenuObserver
+         */
+        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
+
+    protected:  // Functions from CEikDialog
+
+        /**
+         * From CEikDialog Sets the layout for dialog
+         */
+        void PreLayoutDynInitL();
+
+        /**
+         * From CEikDialog. This method is called when buttons are pressed
+         * @param aButtonId Button id, if OK-button then dialog is dismissed
+         * @return EFalse if cancel is pressed
+         */
+        TBool OkToExitL( TInt aButtonId );
+
+        /**
+         * From CCoeControl. Handles the keyevents
+         * @param aKeyEvent The key event.
+         * @param aType The type of key event: EEventKey,
+         *              EEventKeyUp or EEventKeyDown.
+         * @return Indicates whether or not the key event
+         *                   was used by this control
+         */
+        TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
+                                     TEventCode aType );
+
+        /**
+         * From MEikListBoxObserver, Handles event's generated by listbox
+         * @param aListBox Pointer to listbox from where this event originated
+         * @param aEventType Type of event received.
+         */
+        void HandleListBoxEventL( CEikListBox* aListBox, TListBoxEvent aEventType );
+
+        /**
+        * @see CAknDialog
+        * @since S60 v3.1
+        */
+        void SetSizeAndPosition( const TSize& aSize );
+
+    private:    // Data
+
+        //Handle to titlepane. doesn't own
+        CCAStatusPaneHandler* iTitlePane;
+
+        // Owns. Contact's list ID
+        const HBufC* iListId;
+
+        // nickname
+        const TDesC& iNickname;
+
+        // owned
+        CDesCArrayFlat* iItemTextArray;
+
+        // ETrue if contact was saved by invocation of Contact Editor,
+        // used by caller to optimize refresh
+        TBool& iWasSaved;
+
+        // variated functionality
+        // alias support
+        TBool iAliasEnabled;
+        // nickname support
+        TBool iNicknameEnabled;
+
+        // viewing own data (ETrue)
+        TBool iOwnData;
+
+        // Does contact still exist
+        TBool iValidContact;
+
+        // Owns. Contacts id
+        HBufC* iContactId;
+
+        // map listbox index to given akn form control id.
+        // always contains "all" list box indexes which
+        // the details dialog can show. empty items are
+        // marked with EChatEditDummy.
+        RArray<TInt> iIndexToControlIdMapping;
+
+        //Does'nt own - process component object for contact
+        MCAContactEditPC *iCCAContactEditPC;
+
+        //index of the contact chosen w.r.t MainViewArrayPC
+        //the contact to edit.
+        TInt iIndexOfContact;
+        
+        //the contact is deleting
+        TBool iMovingFlag;
+    };
+
+#endif      // CCACONTACTDETAILSDIALOG_H   
+
+// End of File