diff -r 8e7494275d3a -r 4f0867e42d62 omads/omadsappui/AspSyncUtil/inc/AspFilterDialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omads/omadsappui/AspSyncUtil/inc/AspFilterDialog.h Wed Sep 01 12:30:02 2010 +0100 @@ -0,0 +1,490 @@ +/* +* Copyright (c) 2005 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: Contains general data definitions for AspSyncUtil. +* +*/ + + +#ifndef ASPFILTERDIALOG_H +#define ASPFILTERDIALOG_H + + +// INCLUDES +#include +#include +#include +#include +#include + +#include // TCommonDialogType +#include // CAknRadioButtonSettingPage +#include // CAknRadioButtonSettingPage + + +#include "AspDialogUtil.h" + + + + +// CLASS DECLARATION + + +/** +* CAspFilterDialog +* +* CAspFilterDialog shows list of sync filter items. +*/ +NONSHARABLE_CLASS (CAspFilterDialog) : public CAknDialog, public MEikListBoxObserver + { + public: + /** + * Launches content dialog. + * @param aParam Class that contains dialog parameters. + * @return Completion code. + */ + static TBool ShowDialogL(TAspParam& aParam); + + private: + + /** + * C++ default constructor. + * @param aParam Class that contains dialog parameters. + * @return None. + */ + CAspFilterDialog(TAspParam& aParam); + + + /** + * Two-phased constructor. + * @param aParam Class that contains dialog parameters. + */ + static CAspFilterDialog* NewL(TAspParam& aParam); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Destructor. + */ + ~CAspFilterDialog(); + + private: + + /** + * From the base class. + * Called when dialog is activated. + * @return None. + */ + void ActivateL(); + + /** + * From the base class. + * Handles key presses. + * @param aKeyEvent Key code. + * @param aType Key type. + * @return Result code. + */ + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); + + + /** + * From the base class. + * Handles menu events. + * @param aCommandId Command id. + * @return None. + */ + virtual void ProcessCommandL(TInt aCommandId); + + /** + * From the base class + * Called by framework before menu is shown. + * @param aResourceId Menu resource id. + * @param aMenuPane Pointer to the menu. + * @return None. + */ + void DynInitMenuPaneL(TInt aResourceID, CEikMenuPane* aMenuPane); + + /** + * Handle content parameter editing. + * @return None. + */ + void HandleOKL(); + + /** + * Method to get context sensitive help topic. + * @param aContext Help topic to open. + * @return None. + */ + void GetHelpContext(TCoeHelpContext& aContext) const; + + + /** + * From the base class. + * Called by framework before exiting the dialog. + * @param aButtonId Id of the pressed button + * @return ETrue to exit\ EFalse to not to exit. + */ + TBool OkToExitL(TInt aButtonId); + + /** + * From the base class. + * Called by framework before the dialog is shown. + * @return None. + */ + void PreLayoutDynInitL(); + + /** + * From MEikListBoxObserver. + * Handle listbox events. + * @param aListBox Pointer to used listbox. + * @param aEventType Event type. + * @return None. + */ + void HandleListBoxEventL(CEikListBox* aListBox, TListBoxEvent aEventType); + + private: + + /** + * Check that mandatory fields are set + * @return Index of the invalid mandatory item. + */ + TInt CheckMandatoryFieldsL(); + + /** + * Save content parameters into profile. + * @return None. + */ + void SaveSettingsL(); + + /** + + + /** + * Set filter type setting visibility. + * @param aVisible Visibility. + * @return None. + */ + void SetFilterSettingsVisibility(TBool aVisible); + + private: + + /** + * Add settings titles into listbox. + * @param aListBox. + * @param aItemList List of setting items. + * @return None. + */ + void UpdateListBoxL(CEikTextListBox* aListBox, CAspSettingList* aItemList); + + /** + * Create one CAspListItemData for each setting. + * @param None. + * @return None. + */ + void CreateSettingsListL(); + + /** + * Adds one setting item into item list. + * @param aItem. + * @return None. + */ + void AddItemL(CAspFilterItem* aFilterItem); + + /** + * Initalizes setting item needed for listbox handling. + * @param aItem. + * @return None. + */ + static void InitSettingItemL(CAspListItemData* aItem); + + + public: + static TBool EditFilterL(CAspListItemData& aItem); + + private: + static TBool EditSettingItemL(CAspListItemData& aItem); + static TBool EditSettingItemQueryL(CAspListItemData& aItem); + + static TBool EditSettingItemTextL(CAspListItemData& aItem); + static TBool EditSettingItemListL(CAspListItemData& aItem); + static TBool EditSettingItemBooleanL(CAspListItemData& aItem); + static TBool EditSettingItemNumberL(CAspListItemData& aItem); + static TBool EditSettingItemDateL(CAspListItemData& aItem); + static TBool EditSettingItemTimeL(CAspListItemData& aItem); + + + static TBool EditMultiChoiceListL(CAspListItemData& aItem); + static TBool EditSingleChoiceListL(CAspListItemData& aItem); + + + private: + /** + * Utility function. + * @param aIndex Listbox index. + * @return setting item with listbox position aIndex. + */ + CAspListItemData* ItemForIndex(TInt aIndex); + + /** + * Utility function. + * @param aItemId Item id. + * @return Pointer to setting item. + */ + CAspListItemData* Item(TInt aItemId); + + + /** + * Utility function. + * @param None. + * @return Sync profile. + */ + RSyncMLDataSyncProfile& Profile(); + + /** + * Utility function. + * @param None. + * @return Sync task. + */ + //RSyncMLTask& Task(); + + /** + * Utility function. + * @param None. + * @return Listbox. + */ + CAknSettingStyleListBox* ListBox(); + + /** + * Utility function. + * @param None. + * @return Pointer to resource handler. + */ + CAspResHandler* ResHandler(); + + + /** + * Set setting item visibility (normal/readonly/hidden). + * @param None. + * @return None. + */ + void SetVisibility(); + + + + + private: + // id of the calling application + TInt iApplicationId; + + // list box for setting items + CAknSettingStyleListBox* iListBox; + + // setting items + CAspSettingList *iSettingList; + + // CEikStatusPane contains dialog title and image + CEikStatusPane* iStatusPane; + + // for title and icon handling + CStatusPaneHandler* iStatusPaneHandler; + + // session with sync server + RSyncMLSession* iSyncSession; + + // long buffer for string handling + TBuf iBuf; + + // sync task + CAspFilter* iFilter; + + // dialog parameters + TAspParam* iDialogParam; + + // resource handler + CAspResHandler* iResHandler; + }; + + +/** +* MAspChoiceListObserver +* +* MAspChoiceListObserver is for handling choice list events. +*/ +class MAspChoiceListObserver + { + public: + virtual TBool HandleChoiceListEventL(TInt aEvent, TInt aListType) = 0; + }; + + +/** +* CAspChoiceListSettingPage +* +* Radio button setting page that contains "User defined" option. +*/ +NONSHARABLE_CLASS (CAspChoiceListSettingPage) : public CAknRadioButtonSettingPage + { + public: + enum TEditorType + { + ETypeNormal, + ETypeUserDefined + }; + + public: + CAspChoiceListSettingPage(TInt aResourceID, TInt& aCurrentSelectionIndex, + const MDesCArray* aItemArray, + MAspChoiceListObserver* aObserver, TInt aType); + ~CAspChoiceListSettingPage(); + + protected: // From CCoeControl + void ProcessCommandL(TInt aCommandId); + + private: + MAspChoiceListObserver* iObserver; + TInt iType; + }; + + +/** +* CAspMultiChoiceListSettingPage +* +* Check box button setting page that contains "User defined" option. +*/ +NONSHARABLE_CLASS (CAspMultiChoiceListSettingPage) : public CAknCheckBoxSettingPage + { + public: + enum TEditorType + { + ETypeNormal, + ETypeUserDefined + }; + + public: + CAspMultiChoiceListSettingPage(TInt aResourceID, CSelectionItemList* aItemArray, + MAspChoiceListObserver* aObserver, TInt aType); + ~CAspMultiChoiceListSettingPage(); + + protected: // From CCoeControl + void ProcessCommandL(TInt aCommandId); + + private: + MAspChoiceListObserver* iObserver; + TInt iType; + CSelectionItemList* iSelectionList; + }; + + + +/** +* CAspChoiceList +* +* CAspChoiceList implemets choicelist with "User defined" item. +*/ +NONSHARABLE_CLASS (CAspChoiceList) : public CBase, public MAspChoiceListObserver + { + public: + enum TListType + { + ETypeNormal, + ETypeTextUserDefined, + ETypeIntegerUserDefined, + ETypeDateUserDefined, + ETypeTimeUserDefined + }; + + public: + static CAspChoiceList* NewLC(const TDesC& aTitle, CSelectionItemList* aList, TInt aType, TInt aMaxLength); + ~CAspChoiceList(); + private: + CAspChoiceList(const TDesC& aTitle, CSelectionItemList* iList, TInt aType, TInt aMaxLength); + void ConstructL(); + + public: + TBool ShowListL(); + + public: + void AddItemL(CSelectionItemList* aList, TDes& aText, TBool aEnable); + void AddItemL(TDes& aText, TBool aEnable); + void AddItemL(TInt aNumber, TBool aEnable); + void AddUserDefinedL(); + void RemoveUserDefinedL(); + CDesCArray* DesArrayLC(CSelectionItemList* aList); + void SetSelectedIndex(CSelectionItemList* aList, TInt aIndex); + TInt SelectedIndex(CSelectionItemList* aList); + TBool EditTextL(TDes& aText, const TDesC& aTitle); + + + private: // from MAspChoiceListObserver + TBool HandleChoiceListEventL(TInt aEvent, TInt aListType); + + + private: + TInt iUserDefinedInt; + TBuf iUserDefinedText; + TInt iMaxTextLength; + + TInt iListType; + TBuf iTitle; + CSelectionItemList* iSelectionList; + }; + + + +/** +* CAspMultiChoiceList +* +* CAspChoiceList implemets multiple selection choicelist with "User defined" item. +*/ +NONSHARABLE_CLASS (CAspMultiChoiceList) : public CBase, public MAspChoiceListObserver + { + public: + static CAspMultiChoiceList* NewLC(const TDesC& aTitle, CSelectionItemList* aList, TInt aType, TInt aMaxLength); + ~CAspMultiChoiceList(); + private: + CAspMultiChoiceList(const TDesC& aTitle, CSelectionItemList* iList, TInt aType, TInt aMaxLength); + void ConstructL(); + + public: + TBool ShowListL(); + + + public: + void AddItemL(CSelectionItemList* aList, TDes& aText, TBool aEnable); + void AddItemL(TDes& aText, TBool aEnable); + void AddItemL(TInt aNumber, TBool aEnable); + void AddUserDefinedL(); + void RemoveUserDefinedL(); + TBool EditTextL(TDes& aText, const TDesC& aTitle); + + private: // from MAspChoiceListObserver + TBool HandleChoiceListEventL(TInt aEvent, TInt aListType); + + private: + TInt iUserDefinedInt; + TBuf iUserDefinedText; + TInt iMaxTextLength; + + TInt iListType; + TBuf iTitle; + CSelectionItemList* iSelectionList; + }; + + + +#endif // ASPFILTERDIALOG_H + +// End of File