diff -r ebd48d2de13c -r ecbabf52600f fep/aknfep/inc/aknfepuserdbdlg.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fep/aknfep/inc/aknfepuserdbdlg.h Wed Sep 01 12:23:33 2010 +0100 @@ -0,0 +1,397 @@ +/* +* Copyright (c) 2007-2008 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: Define dialog for user DB management +* +*/ + + + + + + + + + + + + +#ifndef C_CAKNFEPUSERDBDLG_H +#define C_CAKNFEPUSERDBDLG_H + +// INCLUDES +#include +#include +#include //CAknMarkableListDialog +#include +#include // MEikListBoxObserver +#include //MListBoxItemChangeObserver + +const TInt KMaxInputSize(7); +const TInt KMaxCharSize(7); + +// CLASS DECLARATION +class CDBManagement; +class CPtiEngine; +class CAknFepManager; +class CAknProgressDialog; +class CEikProgressInfo; +class CAknFepUserDBQueryDlg; + +/** + * Dialog for user DB management + * In this Dialog of user DB management, it has add,remove, + * edit and mark/unmark function + * + * @code + * ?good_class_usage_example(s) + * @endcode + * + * @lib ?library + * @since S60 v3.1 + */ +class CAknFepUserdbDlg : public CAknMarkableListDialog, + public MListBoxItemChangeObserver + { +public: + // Constructors and destructor + + /** + * Destructor. + */ + ~CAknFepUserdbDlg(); + + /** + * Two-phased constructor. + * @param aOpenedItem Index of the item focusing on + * @param aSelectedItems Selected of list items + * @param aArray Content of list items + * @param aMenuBarResourceId Menu bar id + * @param aCommand Default value is zero + */ + static CAknFepUserdbDlg* NewL( TInt &aOpenedItem, + CArrayFix< TInt > *aSelectedItems, MDesCArray *aArray, + TInt aMenuBarResourceId, CPtiEngine* aPtiEngine, CAknFepManager* aOwner, + MEikCommandObserver *aObserver=0 ); + + /** + * Refresh user db view + * + * @since S60 v3.1 + * @param none + * @return none + */ + void OnChangeLanguageL( TInt aInputLanguage ); + + /** + * Refresh user db view when the screen size was changed. + * + * @since S60 vTB9.1 + * @param none + * @return none + */ + void SizeChanged(); + /** + * Refresh user db view when the screen size was changed, will + * be called by SizeChanged. + * + * @since S60 vTB9.1 + * @param none + * @return none + */ + void SizeChangedL(); + + /** + * Return control to application framework. + * + * @since S60 vTB9.2 + * @param TInt aIndex is the index of control + * @return CCoeControl object pointer + */ + CCoeControl* ComponentControl(TInt aIndex) const; + + /** + * Return number of controls in this dialog + * + * @since S60 vTB9.2 + * @param none + * @return number of controls + */ + TInt CountComponentControls() const; + +private: + + /** + * C++ constructor. + * @param aOpenedItem Index of the item focusing on + * @param aSelectedItems Selected of list items + * @param aArray Content of list items + * @param aCommand Default value is zero + */ + CAknFepUserdbDlg( TInt &aValue, CArrayFix< TInt > *aSelectedItems, + MDesCArray *aArray, CPtiEngine* aPtiEngine, CAknFepManager* aOwner, + MEikCommandObserver *aObserver ); + + /** + * Symbian second-phase constructor. + * @param aMenuBarResourceId Menu bar id + */ + void ConstructL( TInt aMenuBarResourceId ); + + /** + * Construct Context Menu + * + * @since S60 v3.1 + * @param None + * @return None + */ + void ConstructContextMenuL(); + + /** + * Init items in the list from user DB + * + * @since S60 v3.1 + * @param None + * @return Whether there are any items in list, ETrue is have items + */ + TBool InitListBoxItemL( ); + + /** + * Add phrase to listbox and user DB + * + * @since S60 v3.1 + * @param none + * @return none + */ + void AddItemL(); + + /** + * Delete phrase in listbox and user DB + * + * @since S60 v3.1 + * @param none + * @return none + */ + void RemoveItemL(); + + /** + * Edit phrase in listbox and user DB + * + * @@since S60 v3.1 + * @param none + * @return none + */ + void EditItemL(); + + /** + * Mark/Unmark phrase in listbox and user DB + * + * @since S60 v3.1 + * @param aItemIndex item's index which would be mark or unmark + * @return aMark set for the item mark + */ + void CmdMarkL( TInt aItemIndex, TBool aMark ); + + /** + * Change the current cba to the specific cba + * + * @since S60 v3.1 + * @param aCbaResourceId cba id + * @return none + */ + void ChangeCurrentCbaL ( TInt aCbaResourceId ); + + /** + * Show context menu + * + * @since S60 v3.1 + * @param none + * @return none + */ + void ShowContextMenuL(); + + /** + * Set the Search Field blank + * + * @since S60 v3.1 + * @param none + * @return none + */ + void ResetSearchFieldL(); + + /** + * Find item's real Index in list + * + * @since S60 v3.1 + * @param aItemIndex Item's index in the view which want to find the actual index + * @return The actual index of the item + */ + TInt FindActualIndex( const TInt aItemIndex ); + /** + * Mark or unmark item in list + * + * @since S60 v3.1 + * @param none + * @return none + */ + void MarkOrUnmarkItemL(); + + /** + * Add '\t' to item array + * + * @since S60 v3.1 + * @param aDataArray array which want to be inserted '\t' + * @return none + */ + void InsertIconL( CDesC16Array* aDataArray ); + + /** + * To update cba of dialg + * + * @since S60 v3.1 + * @param aCommandId command id from menu, 0 for command except mark + * @return none + */ + void UpdateListBoxL( TInt aCommandId = 0); + + //From base class CAknMarkableListDialog + /** + * From base class CAknMarkableListDialog + * Deal the commands that have recevied + * @param aCommandId Commands' Id + * @return None + */ + void ProcessCommandL( TInt aCommandId ); + + /** + * From base class CAknMarkableListDialog + * Deal the softkey event + * @param aButtonId softkey Id + * @return ETrue to validate and exit the dialog, EFalse to keep the dialog active. + */ + TBool OkToExitL( TInt aButtonId ); + + /** + * From base class CAknMarkableListDialog + * Dynamically initialises a menu pane. + * @param aResourceId Menu pane id + * @param aMenuPane The in-memory representation of the menu pane. + * @return None + */ + void DynInitMenuPaneL( TInt aResourceId,CEikMenuPane* aMenuPane ); + + void FocusChanged(TDrawNow aDrawNow); + + /** + * From base class CAknMarkableListDialog + * Initializes the dialog's controls after the + * dialog has been sized but before it has been activated + * @param None + * @return None + */ + void PostLayoutDynInitL(); + + /** + * From base class CAknMarkableListDialog + * @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 base class MEikListBoxObserver + /** + * From base class MEikListBoxObserver + * Observer callback from the listbox.. + * @param aListBox ptr to listbox that is calling the method + * @param aEventType type of event; defined by MEikListBoxObserver + * @return None + */ + void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); + + //From base class MListBoxItemChangeObserver + /** + * From base class MListBoxItemChangeObserver + * Item change observer will be notified when list box items have been + * added or removed or the list box has been reset. + * @param aListBox ptr to listbox that is calling the method + * @return None + */ + void ListBoxItemsChanged( CEikListBox* aListBox ); + +private: //data + + /** + * Engine + * Own + */ + CDBManagement* iDBEngine; + + /** + * Progress dialog + * Own, but doesn't need delete by myself + */ + CAknProgressDialog* iProgressDialog; + + /** + * progress info + * Own, but doesn't need delete by myself + */ + CEikProgressInfo* iProgressInfo; + + /** + * Item array + * Own, but doesn't need delete by myself,listbox would free it automatic + */ + CDesC16Array* iItems; + + /** + * Pti Engine + * Not Own + */ + CPtiEngine* iPtiEngine; + + /** + * AknFepManager need by DBEngine + * Not own + */ + CAknFepManager* iOwner; + + /** + * Context menu bar + * Own + */ + CEikMenuBar* iContextMenuBar; + + /** + * Old highLight postion + */ + TInt iOldIndex; + + /** + * Old Language + */ + TInt iOldLanguage; + + /** + * Query for add and edit. Not Own. + */ + CAknFepUserDBQueryDlg* iQueryDlg; + + /** + * Old cba resouce + */ + TInt iOldCbaRes; + }; + +#endif // C_CAKNFEPUSERDBDLG_H