browserui/browser/FavouritesInc/BrowserBookmarksEditDialog.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:31:04 +0100
branchRCL_3
changeset 48 8e6fa1719340
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201032 Kit: 201035

/*
* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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:  
*      Declaration of class CWmlBrowserBookmarkEditDialog.
*      
*
*/


#ifndef BROWSER_BOOKMARKS_EDIT_DIALOG_H
#define BROWSER_BOOKMARKS_EDIT_DIALOG_H

// INCLUDE FILES

#include <AknForm.h>
// #include <favouriteslimits.h>
#include <bldvariant.hrh>

// FORWARD DECLARATION

class CFavouritesItem;
class CBrowserFavouritesModel;
class CBrowserBookmarksEditFormApModel;
class MApiProvider;
//class MCommsModel;
// class CAknsListBoxBackgroundControlContext;
class CAknNavigationControlContainer;


// CLASS DECLARATION

/**
* Dialog to edit and save bookmark attributes.
*/
class CBrowserBookmarkEditDialog: public CAknForm
    {
    public:     // construct / destruct

        /**
        * Two-phased constructor. Leaves on failure.
        * @param aItem Item to edit. Not owned.
        * @param aModel Model containing data (actual database handling).
        * @param aUid Uid of the edited item. When it is KFavouritesNullUid, the
        * item is new (not yet added to the database). Otherwise, it is the Uid
        * of the existing item.
        * @param aCommsModel Access Point model. Not owned.
        * @return The constructed dialog.
        */
        static CBrowserBookmarkEditDialog* NewL
            (
            CFavouritesItem& aItem,
            CBrowserFavouritesModel& aModel,
			MApiProvider& aApiProvider,
            //MCommsModel& aCommsModel,
            TInt aUid = KFavouritesNullUid
            );

        /**
        * Destructor.
        */
        virtual ~CBrowserBookmarkEditDialog();

    public:     // from CAknForm

        /**
        * Handle menu commands.
        * @param aCommandId Command to handle.
        */
    	void ProcessCommandL( TInt aCommandId );

    public:     // from base classes    	
    	void HandleResourceChange( TInt aType );

        void HandleResourceChangeL( TInt aType );


    protected:  // Construct / destruct

        /**
        * Constructor.
        * @param aItem Item to edit. Not owned.
        * @param aModel Model containing data (actual database handling).
        * handling.
        * @param aUid Uid of the edited item. When it is KFavouritesNullUid, the item
        * is new (not yet added to the database). Otherwise, it is the Uid
        * of the existing item.
        * @return The constructed dialog.
        */
        CBrowserBookmarkEditDialog
            (
            CFavouritesItem& aItem,
            CBrowserFavouritesModel& aModel,
            MApiProvider& aApiProvider,
			TInt aUid
            );

        /**
        * Second phase constructor. Leaves on failure.
        * @param aApModel Access Point model. Not owned.
        */
        void ConstructL( /*MCommsModel& aCommsModel*/ );

    protected:  // from CAknForm (CEikDialog)

        /**
        * Handle button press. Same as base class method, except displays note
        * "Bookmark saved" or "Not saved", as appropriate, if exiting.
        * @param aButtonId Button pressed.
        * @return ETrue if the dialog should exit.
        */
        TBool OkToExitL( TInt aButtonId );

    protected:  // From CAknForm
        /**
        * Get data from the editor back to the item and try to save it
        * to the database.
        * @return ETrue if successfully saved, EFalse otherwise.
        */
	    TBool SaveFormDataL() ;

        /**
        * Initialize context-sensitive menu.
        * @param aResourceId Resource id of the menu pane.
        * @param aMenuPane Menu pane object being initialized.
        */
        void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ) ;

    private:    // From CAknForm

        /**
        * Fill the dialog controls with data from the item.
        */
	    void PreLayoutDynInitL();

    private:    // new methods

        /**
        * Fill the dialog controls with data from the item.
        */
        void LoadFormDataL();

        /**
        * Try to do the database update with the item.
        * @return ETrue if successfully saved, EFalse otherwise.
        */
        TBool SaveItemL();
        
        /**
        * Check if host part of url is too long.
        * Cant be over 255 characters.
        * @return ETrue if 255 or under, EFalse otherwise.
        */
        TBool IsValidUrlHost( const TDesC& aUrl );

        /**
        * Get the text from an edwin control. This method is a workaround for
        * an AVKON form bug; the form goes into read-only state BEFORE
        * SaveFormDataL is called. So the control there is no longer edwin.
        * *** Remove this method when forms are fixed. ***
        * @param aText Buffer to receive text.
        * @param aControlId Control id.
        */
        void GetEdwinText( TDes& aText, TInt aControlId );

#ifdef __SERIES60_HELP

        /**
        * Get help context for the control.
        * @param aContext The context that is filled in.
        * @return None.
        */
        void GetHelpContext( TCoeHelpContext& aContext ) const;
#endif // __SERIES60_HELP

		inline MApiProvider& ApiProvider() { return iApiProvider; }

    private:    // data
        
        CFavouritesItem* iItem;             ///< Item to edit. Not owned.
        CBrowserFavouritesModel* iModel; ///< Model containing data.
        TInt iUid;  ///< Uid of the item. KFavouritesNullUid for new items.
        TBool iExitDialog;  ///< ETrue if the dialog must be dismissed.
        CBrowserBookmarksEditFormApModel* iFormApModel;  ///< AP model.
        TInt iExitNoteResourceId;   ///< Resource id to show at exit, or 0.
        CAknNavigationControlContainer* iNaviPane;
        CAknNavigationDecorator* iNaviDecorator; //Owned
		MApiProvider& iApiProvider;
    };
 
#endif

// End of file