--- a/browserui/browser/FavouritesInc/BrowserFavouritesView.h Thu Aug 19 09:57:56 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,579 +0,0 @@
-/*
-* 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 CBrowserFavouritesView.
-*
-*
-*/
-
-
-#ifndef BROWSER_FAVOURITES_VIEW_H
-#define BROWSER_FAVOURITES_VIEW_H
-
-// INCLUDE FILES
-#include <eiklbo.h>
-
-#include "BrowserFavouritesModelObserver.h"
-#include "BrowserAppViewBase.h"
-#include "CommandVisibility.h"
-#include "CommsModel.h"
-#include "BrowserFavouritesModel.h"
-#include <favouriteslimits.h>
-
-// FORWARD DECLARATION
-class CFavouritesItemList;
-class CBrowserFavouritesContainer;
-class CBrowserFavouritesModel;
-class CBrowserFavouritesIncrementalOp;
-class CBrowserFavouritesListboxState;
-
-// CLASS DECLARATION
-
-/**
-* Base class for Bookmarks View and Saved Decks View of the WML Browser.
-* The common behaviour of these views is collected here. This includes:
-* Handling view activation / decativation;
-* Interpreting (common) commands;
-* Providing context-specific menus.
-* Pure virtual; derived classes must provide model and control components
-* and items to display. A number of methods can be overridden.
-*/
-class CBrowserFavouritesView:public CBrowserViewBase,
- public MEikListBoxObserver,
- public MBrowserFavouritesModelObserver,
- public MCommsModelObserver
- {
- public: // construction
-
- /**
- * Destructor.
- */
- virtual ~CBrowserFavouritesView();
-
- public: // From MCbaSetter (CBrowserViewBase)
-
- /**
- * Return command set id, to be displayed.
- * @since 1.2
- * @return The command set's resource id.
- */
- virtual TInt CommandSetResourceIdL();
-
- /**
- * Set command set lsk,rsk,msk dynamically via pointers.
- * Derived classes should implement, though it can be empty.
- * If it does nothing, empty softkeys will be assigned
- * @since 5.0
- */
- void CommandSetResourceDynL(TSKPair& /*lsk*/, TSKPair& /*rsk*/, TSKPair& /*msk*/) {};
-
- /**
- * Return the resource ID of the seamless folder.
- * @param aContextID Context ID of the seamless folder.
- * @return The resource ID of the seamless folder or zero if it is not
- * seamless.
- */
- static TInt GetSeamlessFolderResourceID( TInt aContextID );
-
- /**
- * Return the resource ID of the seamless folder title.
- * @param aContextID Context ID of the seamless folder.
- * @return The resource ID of the seamless folder title or zero if it is not
- * seamless.
- */
- static TInt GetSeamlessFolderTitleResourceID( TInt aContextID );
-
- /**
- * Examines if the given ID is an ID of a seamless folder.
- * @param aContextID Context ID of the folder.
- * @return The ETrue if the given ID is a seamless ID otherwise EFalse.
- * seamless.
- */
- static TBool IsSeamlessFolder( TInt aContextID );
-
-
- /**
- * Configure Context Menu Resource
- *
- * context-sensitive menu when item(s) marked
- */
- void ConfigContextMenu();
-
- static TInt RefeshFavoriteListBox( TAny* aFavouritesView );
-
- public: // public methods from CAknView (CBrowserViewBase)
-
- /**
- * Handle command.
- * @since 1.2
- * @param aCommand Command id.
- */
- virtual void HandleCommandL( TInt aCommand );
-
- /**
- * Get view id. Derived classes must provide this method.
- * @return The view id for this view.
- */
- virtual TUid Id() const = 0;
-
- void OpenFixedFolderL(TInt aUid);
-
- protected :
-
- // For Adaptive bookmarks folder navigation, used in Bookmarks View
-
- void SetRootFolderForAdaptiveBookmarks();
-
- protected : // construction
-
- /**
- * Constructor.
- * @param aApiProvider The API provider.
- */
- CBrowserFavouritesView( MApiProvider& aApiProvider, TInt aInitialFolderId = KFavouritesRootUid );
-
- /**
- * Second phase constructor. Leaves on failure.
- * @param aViewResourceId Resource id for this view.
- * Derived classes should call this first during construction.
- */
- void ConstructL( TInt aViewResourceId );
-
- protected: // menu initialization
-
- /**
- * Initialize context-sensitive menu.
- * @param aResourceId Resource id of the menu pane.
- * @param aMenuPane Menu pane object being initialized.
- * @param aIndex Index into the visibility map.
- * @param aState Selection state.
- */
- virtual void DynInitMenuPaneL
- (
- TInt aResourceId,
- CEikMenuPane* aMenuPane,
- TCommandVisibility::TIndex aIndex,
- const TBrowserFavouritesSelectionState& aState
- ) = 0;
-
- protected: // new methods
-
- /**
- * Get resource id of text to be displayed in navi pane when
- * root folder is shown (TBUF).
- * Derived classes must provide this method.
- * @since 1.2
- * @return Resource id.
- */
- virtual TInt RootTitleResourceId() const = 0;
-
- /**
- * Get resource id of Options menu (RESOURCE MENU_BAR).
- * Derived classes must provide this method.
- * @since 1.2
- * @return Resource id.
- */
- virtual TInt OptionsMenuResourceId() const = 0;
-
- /**
- * Get resource id of OK-Options menu (RESOURCE MENU_BAR).
- * Derived classes must provide this method.
- * @since 1.2
- * @return Resource id.
- */
- virtual TInt OkOptionsMenuResourceId() const = 0;
-
- protected: // component creation
-
- /**
- * Create the model. Leave on failure. The model is owned by the
- * caller (this view).
- * Derived classes must provide this method.
- * @return The constructed model.
- */
- virtual CBrowserFavouritesModel* CreateModelL() = 0;
-
- /**
- * Create the container (the main control of the view). The container
- * is owned by the caller (this view).
- * Leave on failure.
- * Derived classes must provide this method.
- * @return The constructed main control.
- */
- virtual CBrowserFavouritesContainer* CreateContainerL() = 0;
-
- protected: // data retrieval
-
- /**
- * Get items to be displayed in a folder. Expects the model's db be
- * open.
- * @param aFolder Folder which contains the items.
- * @return List of items. Pushed on the cleanup stack.
- */
- virtual CFavouritesItemList* GetItemsLC( TInt aFolder );
-
- public:
-
- /**
- * Get the model.
- * @return The model.
- */
- inline CBrowserFavouritesModel& Model() const;
-
- inline void ShowNextFolerL(TBool aNext) { OpenNextFolderL(aNext); }
-
- protected: // component retrieval
-
- /**
- * Get the container (the view's main control).
- * @return The container. Can be NULL (when view is not activated,
- * container does not exist).
- */
- inline CBrowserFavouritesContainer* Container() const;
-
- /**
- * Get Uid of the folder shown.
- * @return Current folder's Uid.
- */
- inline TInt CurrentFolder() const;
-
-
- protected: // new methods
-
- /**
- * If there is a preferred highlight uid, attempt to highlight that.
- * If succeeded, preferred highlight uid is cleared ("used up").
- * Otherwise do nothing.
- */
- void HighlightPreferredL();
-
- /**
- * Some displayed data has changed (Favourites database, AP-s, etc).
- * Update the view so changes become visible. Safe to call if the view
- * is not active; in this case it does nothing.
- * This method should not be called if the data change is due to direct
- * user activity (opening folders etc.); only for notification
- * processing.
- * @param aDbErrorNote If ETrue, unsuccesful database access will bring
- * up an error note.
- */
- virtual void RefreshL( TBool aDbErrorNote = EFalse );
-
- /**
- * Redraw.
- */
- void HandleClientRectChange();
-
- protected: // from CAknView
-
- /**
- * Activate the view. Open the database. If it was activated
- * previously, try to restore the view as it was before deactivation.
- * @param aPrevViewId Previous View Id.
- * @param aCustomMessageId Custom Message Id.
- * @param aCustomMessage Custom Message.
- */
- void DoActivateL
- (
- const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage
- );
-
- /**
- * Deactivate the view. Close the database. Save the view state,
- * so it can be restored on future activations.
- */
- void DoDeactivate();
-
- /**
- * Initialize context-sensitive menu. Do not override this one;
- * override the other.
- * @param aResourceId Resource id of the menu pane.
- * @param aMenuPane Menu pane object being initialized.
- */
- void DynInitMenuPaneL
- ( TInt aResourceId, CEikMenuPane* aMenuPane );
-
- /**
- * Handle foreground event.
- * @param aForeground ETrue if foreground.
- */
- virtual void HandleForegroundEventL( TBool aForeground );
-
- protected: // from MEikListBoxObserver
-
- /**
- * Handle listbox event.
- * @param aListBox Listbox in which the event occurred.
- * @param aEventType Event.
- */
- virtual void HandleListBoxEventL
- ( CEikListBox* aListBox,
- MEikListBoxObserver::TListBoxEvent aEventType );
-
- private: // command handling
-
- /**
- * Command "Back", when showing a folder. Open the parent folder.
- * of the currently shown folder. Highlight the folder just closed.
- */
- void CloseCurrentFolderL();
-
- /**
- * Command "Open (folder)". Open the highlighted folder.
- * Does nothing if no folder is highlighted.
- */
- void OpenCurrentFolderL();
-
- /**
- * Command "Open (folder)" from OK-Options menu. Open the marked folder.
- * Does nothing if no folder is marked or more is marked.
- */
- void OpenMarkedFolderL();
-
- /**
- * Command "Remove" or "Erase". Delete marked item(s).
- * Does nothing if no item is highlighted / marked.
- */
- virtual void DeleteMarkedItemsL();
-
- protected:
- /**
- * Command "New folder". New folders are alwas created in the root
- * folder.
- * @return The uid of the newly created folder, or KFavouritesNullUid
- * (if not created).
- */
- TInt AddNewFolderL();
-
- private:
-
- /**
- * Command "Move To Folder". Launch target folder selection dialog and
- * move marked item(s).
- */
- void MoveMarkedItemsL();
-
-
- /**
- * Command "Rename". Rename current item.
- * Does nothing if no item is highlighted.
- */
- void RenameCurrentItemL();
-
- protected: // implementation details.
-
- /**
- * Open a folder by Uid and display its contents. Expects the
- * model's db be open.
- * @param aFolder Folder to open.
- */
- void OpenFolderL( TInt aFolder );
-
- /**
- * Open next folder.
- * @param aForward Open next folder if ETrue, previous if EFalse.
- */
- virtual void OpenNextFolderL( TBool aForward );
-
- private:
-
- /**
- * Fill listbox with folder contents. Expects the model's db be open.
- * @param aFolder Folder to display.
- * @param aKeepState If ETrue, try to restore marks/highlight/top item
- * position.
- */
- void FillListboxL( TInt aFolder, TBool aKeepState );
-
- /**
- * Display confirmation dialog before deleting items. The dialog
- * displayed is context-dependent (different dialog for one/more
- * items, and for non-empty folders).
- * @param aUids List of Uids (both item & folder) about to be deleted.
- * @param aFolderUids List of folder uids about to be deleted. These
- * uids are also in aUids, and are needed only to improve performance.
- * (The non-empty folder checking, which is the only database query in
- * this method, is performed only for folders. The effect of this is
- * visible only if many items are selected.)
- * @return ETrue if delete was confirmed; EFalse if not, or in case of
- * any error (e.g. database error).
- */
- TBool ConfirmDeleteL
- ( CArrayFix<TInt>& aUids, CArrayFix<TInt>& aFolderUids );
-
- /**
- * After deleting items, display appropriate note about the outcome.
- * @param aUids List of Uids that were selected for deletion.
- * @param aNotDeletedUids List of Uids which are not deleted.
- */
- void DisplayResultOfDeleteL
- (
- const CArrayFix<TInt>& aUids,
- const CArrayFix<TInt>& aNotDeletedUids
- );
-
- /**
- * Launch target folder selection dialog and return uid of selected
- * folder (or KFavouritesNullUid if cancelled or in case of any error).
- * If no folders exist, user is prompted to create one.
- * @param aExcludeFolder Exclude this folder from selection (current
- * folder).
- * @return Uid of selected folder, or KFavouritesNullUid.
- */
- TInt SelectTargetFolderL( TInt aExcludeFolder );
-
- /**
- * "First pass" of moving is done; items that could be moved without
- * user intervention, has been moved. Some of them may be still there,
- * because it is unmovable (e.g. Homepage), or conflicts with a name in
- * the target folder. For the latter ones, ask for each if replace the
- * old ones, and act accordingly.
- * Display appropriate note about what happened.
- * @param aFolder The target folder.
- * @param aUids List of Uids that were selected for moving.
- * @param aUnmovableUids List of Uids which could never be moved.
- * @param aConflictingNameUids List of conflicting name Uids.
- */
- void HandleMoveResultL
- (
- TInt aFolder,
- const CArrayFix<TInt>& aUids,
- const CArrayFix<TInt>& aUnmovableUids,
- const CArrayFix<TInt>& aConflictingNameUids
- );
-
- /**
- * For each of the items in the list, display a rename dialog before
- * moving them into the folder.
- * @param aFolder The target folder.
- * @param aUids List of Uids that were selected for moving.
- */
- void RenameAndMoveItemsL
- ( const CArrayFix<TInt>& aUids, TInt aFolder );
- protected: // new methods
-
- /**
- * Update and draw navi pane (show tabs for root, or "1/4" style text
- * for subfolders).
- * No sanity check; expects the model's table be open.
- */
- virtual void UpdateNaviPaneL();
-
- private: // new methods
-
- /**
- * The container passes back key events to the view first, to
- * allow moving between folders. (The container does not know
- * anything about folders.)
- */
- friend class CBrowserFavouritesContainer;
-
- protected:
- /**
- * Handle key event (called from the container, to allow moving between
- * folders.
- * @param aKeyEvent The key event.
- * @param aType Key event type.
- * @return Response (was the key event consumed?).
- */
- virtual TKeyResponse OfferKeyEventL
- ( const TKeyEvent& aKeyEvent, TEventCode aType );
-
- /**
- * Reset state with deactivation event
- */
- void ResetStateInDeActivation();
-
- /**
- * Needed for updating tool bar buttons when there is a up/down arrow key events received.
- **/
- virtual void UpdateToolbarButtonsState();
-
- private: // from MWmlBrowserFavouritesModelObserver
-
- /**
- * Handle model change.
- */
- void HandleFavouritesModelChangeL();
-
- private: // from MCommsModelObserver
-
- /**
- * Handle Comms Model change (AP update).
- */
- void HandleCommsModelChangeL();
-
- private: // default item settings
-
- /**
- * Set Prefered the current item
- */
- void SetPreferedCurrentItemL();
-
- /**
- * Set Prefered the current item
- */
- void SetUnPreferedCurrentItemL();
-
-
- protected: // data
-
- /// Preferred highlight uid.
- TInt iPreferredHighlightUid;
-
- /// If ETrue, OK-Options menu is shown instead of normal Options menu.
- TBool iShowOkOptions;
-
- /// Top-level control of the view. Owned
- CBrowserFavouritesContainer* iContainer;
-
- /// Uid of the current folder.
- TInt iCurrentFolder;
-
- /// ETrue between DoActivateL() and DoDeactivate().
- TBool iIsActivated;
-
- private: // data
-
- /// The model (data handling). Owned.
- CBrowserFavouritesModel* iModel;
- TInt iLastSelection;
- /// Incremental operation, or NULL if no such. Owned.
- CBrowserFavouritesIncrementalOp* iIncrementalOp;
- /// ETrue if data update is missed due to incremental operation.
- TBool iUpdatePending;
- /// Asynchronously update the favourite item's List Box
- CIdle* iFavViewRefresh;
- protected:
-
- TBool iRefresh; // Flag to indicate that Bookmarks list should be refreshed.
- // ETrue by default, turned off only in cases we want to avoid
- // double refresh. Checked in HandleFavouritesModelChangeL.
-
- TInt iInitialFolder; //Folder to which browser is launched in embedded mode
-
- // Flag to indicate that we are about to open Preferences view,
- // in order not to return to root folder afterwards.
- TBool iSaveStateOnDeactivate;
-
- CBrowserFavouritesListboxState* iSavedListboxState;
- };
-
-#include "BrowserFavouritesView.inl"
-
-#endif
-
-// End of file