omads/omadsappui/AspSyncUtil/inc/AspFilterDialog.h
branchRCL_3
changeset 52 4f0867e42d62
parent 0 dab8a81a92de
--- /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 <e32base.h>
+#include <eiklbo.h>
+#include <aknlists.h>
+#include <aknnavide.h>
+#include <AknDialog.h>
+
+#include <CAknCommonDialogsBase.h>  // TCommonDialogType
+#include <AknRadioButtonSettingPage.h>  // CAknRadioButtonSettingPage
+#include <AknCheckBoxSettingPage.h>  // 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<KBufSize255> 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<KBufSize>  iUserDefinedText;
+	    TInt iMaxTextLength;
+	    
+	    TInt iListType;
+        TBuf<KBufSize> 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<KBufSize>  iUserDefinedText;
+	    TInt iMaxTextLength;
+	    
+	    TInt iListType;
+        TBuf<KBufSize> iTitle;
+        CSelectionItemList* iSelectionList;
+    };
+
+
+
+#endif      // ASPFILTERDIALOG_H
+            
+// End of File