locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplservereditor.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 15 Sep 2010 12:40:28 +0300
branchRCL_3
changeset 49 10852b179f64
parent 45 6b6920c56e2f
child 55 ea98413ce11f
permissions -rw-r--r--
Revision: 201035 Kit: 201036

/*
* Copyright (c) 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:  supl server editor
*
*/


#ifndef __LOCSUPLSERVER_EDITOR_H__
#define __LOCSUPLSERVER_EDITOR_H__


#include <AknForm.h>
#include <ConeResLoader.h>

const TInt KMaxUsageTextSize = 5;
_LIT(KNoUsageInHomeNetork, "No");

class CAknTitlePane;
class CLocSUPLSettingsUiEngine;

class MSuplServerEditorObserver
	{
public:
	
	virtual void UpdateIapL( const TDesC& aIapName ) = 0;
	};



/**
*  A dialog that makes it possible to edit certain fields of a supl server.
*/
class CLocSUPLServerEditor : 
    public CAknForm, public MSuplServerEditorObserver
    {
    public: // Constructors and destructor

        /**
 		* Static Two phase contructor that instantiates the CLocSUPLServerEditor
		* 
        */
        static CLocSUPLServerEditor* NewL( 
        					TBool aIsEditable,
                            CLocSUPLSettingsUiEngine&       aEngine,
        					TInt64 aSlpId
		);

        /**
 		* Static Two phase contructor that instantiates the CLocSUPLServerEditor
		* 
        */
        static CLocSUPLServerEditor* NewLC( 
        					TBool aIsEditable,
                            CLocSUPLSettingsUiEngine&       aEngine,
        					TInt64 aSlpId
		);

        /**
        * Destructor.
        */
        ~CLocSUPLServerEditor();

    public: // From CAknDialog

        /**
        * DynInitMenuPaneL initializes the menu pane before it is displayed.
        *
        * @param aResourceId a resource ID indetifying the menu bar containing
        * the menu pane to be initialized.
        * @param aMenuPane the menu pane to initialize.
        */
        void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);

        /**
        * Processes user commands.
        *
        * @param aCommandId id of the command to respond to
        */
        void ProcessCommandL(TInt aCommandId);
        
        /**
         * 
         * 
         */
        void HandleDialogPageEventL( TInt aEventID );
        /*
         * Executes the Dialog
         */
        TInt ExecuteLD();
        
        /**
         * Sets the value of iIsAccessPointDefined based on whether the
         * access point is preconfigured for a server
         * @param[in] aEnabled - Value to be set for the variable iIsAccessPointDefined
         */
        void SetAccessPointEnabled(TBool aEnabled);
	public: // from MSuplServerEditorObserver
	
	    /*
         * Changes IAP value in AP field
         */
		void UpdateIapL( const TDesC& aIapName );

	
    protected: // From CAknForm

     /**
       * Inherited from CCoeControl
       */				    
        
		TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,
		                                             TEventCode aType );
		                                             
        /**
        * Handles a dialog button press for the specified dialog button.
        *
        * @param aButtonId
        * @return ETrue if OK to exit, EFalse to keep the dialog active
        */
        TBool OkToExitL(TInt aButtonId);

        /**
        * SaveFormDataL deals with the occasion of a change from
        * edit->view mode and the user wishes to save the changes.
        *
        * @return ETrue if the editable state can be left, EFalse otherwise
        */
        TBool SaveFormDataL();
        
    private: // From CEikDialog

        /**
        * PreLayoutDynInitL initialises the dialog's controls before the dialog
        * is sized and layed out.
        */
        void PreLayoutDynInitL();

        /**
        * PostLayoutDynInitL initialises the dialog's controls after the dialog
        * has been sized but before it has been activated.
        */
        void PostLayoutDynInitL();

        /**
        * Selects desired line on startup
        */
        void SetInitialCurrentLine();

       
        /** Handles layout switch */
        void HandleResourceChange( TInt aType );

		void HandleControlStateChangeL( TInt aControlId );
 
		void LineChangedL(TInt aControlId );
		
 	private:

        enum TErrorInForm
            {
            ENoErrors
            };

        /** Constructor
         *
         */
        CLocSUPLServerEditor( 
        					TBool aIsEditable,
                            CLocSUPLSettingsUiEngine&       aEngine,
        					TInt64 aSlpId
		);

        void ConstructL();

	private: // new functions
        /**
         * Change title pane text
         */
		void ChangeTitlePaneTextL( TDesC& aText );
		
        /**
         * Load intial data values
         */
        void LoadFormValuesFromDataL();

		/*
		 * It checks if server details are empty in editor.
		 * 
		 * @ret true if event is empty else false.
		 */
		TBool IsEmptyServerL();

		/*
		 * it toggles value of popup field
		 */        
		void TogglePopupFieldControlL( TInt aControlId );
		
		/*
		 * toggles the txt
		 */
		void SetUsageinHomeNetwork( TBool aOnOff );

		/*
		 * it changes the MSK caption 
		 */        
		void HandleMSKCaptionL();

		/*
		 * Confirmation query note for delete operation
		 */        
		TInt DeleteConfirmationQueryL();

		/*
		 * Shows Validation Info note for server address entry 
		 */        
		void ShowServerValidationInfoNoteL( TInt aResourceId );
		
		/*
		 * Sets the cursor position to end at server address field in editor
		 */        
		void SetCursorToEndL();
		

    private: // Data

        //! The title pane that is dynamically updated
        CAknTitlePane* 				iTitlePane;

        //! The original title that the title pane displayed before modified
        HBufC* 						iOriginalTitle;

       	/*
         * Mode in which editor is opened. It can be either view or edit mode.
         */   
       	TBool                    	iIsEditMode;
      
       	/*
         * Mode in which editor is opened. It can be either view or edit mode.
         */      
      	TBool 						iIsNewServer;
      	
	   	/*
	     *  help context object
   	     */
       	TCoeHelpContext         	iHelpContext;  

		/*
		 * Reference to the SUPL Settings engine
		 */
	    CLocSUPLSettingsUiEngine&	iEngine;	
	    
	    /**
         * SUPL Servers SLP ID to get and set the server attributes.
         * Owns.
         */
        TInt64						iSlpId;
        
	    /**
         * SUPL Server Address 
         * Owns.
         */
	    HBufC* 						iServerAddress;
	    
	    /**
         * SUPL Server Access point
         * Owns.
         */
	    HBufC* 						iIap;
	    
	    /**
         * SUPL Server usage in home network
         * Owns.
         */
	    TBool 						iUsageInHomeNw;
	    
	    /**
	    	* It determines if form is modified by user
	    	*/	    
	    TBool							iIsModified;
	    
	    /**
	     * Determines whether the access point is preconfigured for the server
	     */
	    TBool  iIsAccessPointDefined;
    };

#endif // __LOCSUPLSERVER_EDITOR_H__