diff -r 000000000000 -r 094583676ce7 wvuing/wvuiave/AppSrc/CCAContactDetailsDialog.h --- /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 +#include +#include + +// 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 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