diff -r 000000000000 -r 72b543305e3a messagingappbase/mce/inc/MceOneRowMessageListContainer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/mce/inc/MceOneRowMessageListContainer.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,586 @@ +/* +* 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 "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: +* Container for main view. +* Derived from CMceListContainer. +* +*/ + + + +#ifndef MCEONEROWMESSAGELISTCONTAINER_H +#define MCEONEROWMESSAGELISTCONTAINER_H + +// INCLUDES +#include // CCoeControl +#include +#include +#include + +#include "MceMessageListContainerBase.h" +#include "MceMessageListContTimer.h" +#include "MceOneRowMessageListArray.h" + +// FORWARD DECLARATIONS +class CMceOneRowListItemArray; +class CAknSingleColumnStyleTreeList; +class CAknsBasicBackgroundControlContext; +class CPtiEngine; +class CAknTreeList; + +// CLASS DECLARATION + + +/** +* Container for main view. +* Derived from CMceListContainer. +*/ +class CMceOneRowMessageListContainer : + public CMceMessageListContainerBase, + public MAknTreeListObserver, + public MMceOneRowListItemArrayObserver + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CMceOneRowMessageListContainer* NewL( + CMceMessageListView& aParentView, + const TRect& aRect, + CMsvSessionPtr aSession, + MMtmUiDataRegistryObserver& aRegObserver ); + + /** + * Destructor. + */ + virtual ~CMceOneRowMessageListContainer(); + + /** + * From MAknTreeListObserver. + * Handles tree list events. + */ + TBool HandleTreeListEvent( CAknTreeList& aList, TAknTreeItemID aItem, + TEvent aEvent ); + + /** + * Resets tree list + */ + void ResetListbox(); + + /** + * Returns ETrue if empty list or there are items selected. + */ + TBool DisplayOptionsMenuFromSelectionKey() const; + + /** + * From MMceOneRowListItemArrayObserver + */ + void MceListItemArrayChangedL( + CArrayFixFlat& aChangedItems ); + + /** + * From MMceOneRowListItemArrayObserver + */ + void HandleMarkCommandL( TInt aCommand ); + + /** + * From CMceMessageListContainerBase + */ + TInt MceListId() const; + + /** + * From CMceMessageListContainerBase + */ + virtual TInt Count() const; + + /** + * From CMceMessageListContainerBase + */ + virtual TInt MessageCount() const; + + /** + * From CMceMessageListContainerBase + */ + virtual TInt FolderCount() const; + + /** + * From CMceMessageListContainerBase + */ + virtual TBool SetCurrentItemIdL( TMsvId aEntryId ); + + /** + * From CMceMessageListContainerBase + */ + virtual void ResetCurrentItemL(); + + /** + * From CMceMessageListContainerBase + */ + TMsvId FindEntry( const TDesC& aMatchString ) const; + + /** + * From CMceMessageListContainerBase + */ + virtual void ItemCountChangedL( TBool aItemsAdded ); + + /** + * From CMceMessageListContainerBase + */ + virtual void RefreshListbox(); + + /** + * From CMceMessageListContainerBase + */ + virtual TBool FindFirstUnreadMessageL( TMsvId& aEntryId ) const; + + /** + * From CMceMessageListContainerBase + */ + virtual TMessageListItemType CurrentItemType() const; + + /** + * From CMceMessageListContainerBase + */ + void SetFolderL( TMsvId aFolderId ); + + /** + * From CMceMessageListContainerBase + */ + TMsvId CurrentFolderId() const; + + /** + * From CMceMessageListContainerBase + */ + const TMsvEntry& FolderEntry() const; + + /** + * From CMceMessageListContainerBase + */ + TInt CurrentItemIndex() const; + + /** + * From CMceMessageListContainerBase + */ + TMsvId CurrentItemId() const; + + /** + * From CMceMessageListContainerBase + */ + CMsvEntrySelection* CurrentItemSelectionL(); + + /** + * From CMceMessageListContainerBase + */ + CMsvEntrySelection* CurrentItemSelectionRefreshL(); + + /** + * From CMceMessageListContainerBase + */ + TInt CurrentItemSelectionCount() const; + + /** + * From CMceMessageListContainerBase + */ + TInt SelectionCount() const; + + /** + * From CMceMessageListContainerBase + */ + virtual TBool IsItemSelected( TMsvId aItemId ); + + /** + * From CMceMessageListContainerBase + */ + void ClearSelection(); + + /** + * From CMceMessageListContainerBase + */ + void MarkItemSelectionL(); + + /** + * From CMceMessageListContainerBase + */ + void AddCurrentItemToSelectionL(); + + /** + * From CMceMessageListContainerBase + */ + void RemoveCurrentItemFromSelection(); + + /** + * From CMceMessageListContainerBase + */ + void RefreshSelectionIndexesL( TBool aForceUpdate = EFalse ); + + /** + * From CMceMessageListContainerBase + */ + void AddAllToSelectionL(); + + /** + * From CMceMessageListContainerBase + */ + void MarkAllReadMessagesL(); + + /** + * From CMceMessageListContainerBase + */ + TInt MarkedItemsCount(); + + /** + * From CMceMessageListContainerBase + */ + TBool IsCurrentItemFolder() const; + + /** + * From CMceMessageListContainerBase + */ + TBool IsItemFolder( TMsvId aItemId ) const; + + /** + * From CMceMessageListContainerBase + */ + TBool IsItemFolder( TInt aIndex ) const; + + /** + * From CMceMessageListContainerBase + */ + TBool IsItemRemote( TMsvId aItemId ) const; + + /** + * From CMceMessageListContainerBase + */ + TBool IsOpenedFolder( TMsvId aFolderId ) const; + + /** + * From CMceMessageListContainerBase + */ + virtual void SetSortTypeL( TInt aSortType, TBool aOrdering ); + + /** + * From CMceMessageListContainerBase + */ + virtual void SetMtmUiDataRegistry( MMtmUiDataRegistryObserver* aRegistryObserver ); + + /** + * From CMceMessageListContainerBase + */ + void SetListEmptyTextL(const TDesC& aText); + + /** + * From CCoeControl + */ + void GetHelpContext(TCoeHelpContext& aContext) const; + + /** + * From CMceMessageListContainerBase + */ + void SetAnchorItemIdL( + TMessageListOperationType aOperationType ); + + /** + * From CMceMessageListContainerBase + */ + void HandleMsvSessionEventL( + MMsvSessionObserver::TMsvSessionEvent aEvent, + CMsvEntrySelection& aSelection, + TBool aDraw ); + + /** + * From CMceMessageListContainerBase + */ + TUint OptionsCommandSupported() const; + + /** + * From CMceMessageListContainerBase + */ + void HandleOptionsCommandL( TInt aCommand ); + + /** + * From CMceMessageListContainerBase + */ + void DateTimeFormatChangedL( TInt aChangeFlag ); + + /** + * From CMceMessageListContainerBase + */ + TInt SetSpecialMskL(); + + /** + * Expands focused node + */ + void ExpandFocusedNode(); + + /** + * Collapses focused node + */ + void CollapseFocusedNode(); + + /** + * From CMceMessageListContainerBase + */ + void UpdateIconArrayL( ); + + public: // Functions from base classes + + /** + * From CCoeControl + */ + TInt CountComponentControls() const; + + /** + * From CCoeControl + */ + CCoeControl* ComponentControl(TInt aIndex) const; + + /** + * From CCoeControl + */ + virtual TKeyResponse OfferKeyEventL( + const TKeyEvent& aKeyEvent, + TEventCode aType ); + + /** + * From CCoeControl + */ + void SizeChanged(); + + /** + * From CAknAppUi + */ + void HandleResourceChange( TInt aType ); + + /** + * From MEikCommandObserver + */ + virtual void ProcessCommandL(TInt aCommand); + + /** + * Retrieves an object of the same type as that encapsulated in aId. + * + * @param aId An encapsulated object type ID. + */ + TTypeUid::Ptr MopSupplyObject( TTypeUid aId ); + + /** + * Tries to find item from the currently opened list and retuns + * list index if found. KErrNotFound if not found. + * @param aId: item id to be searched + * @return List index of the item. + */ + TInt ItemIndex( TMsvId aId ) const; + + /** + * From CCoeControl. + * Draws this CHierarchicalColumnListAppView to the screen. + * + * @param aRect the rectangle of this view that needs updating. + */ + void Draw( const TRect& aRect ) const; + + /** + * Sets MSK command + * @param aLabelResourceId Resource Id for MSK + */ + void ChangeMskCommand( TInt aLabelResourceId ); + + /** + * From CMceMessageListContainerBase + */ + void SetContainerFlag( TMceContainerFlags aFlag, TBool aState ); + + protected: // Functions from base classes + // From CCoeControl + void FocusChanged(TDrawNow aDrawNow); + + private: + + /** + * Symbian OS constructor. + */ + void ConstructL( + const TRect& aRect, + CMsvSessionPtr aSession, + MMtmUiDataRegistryObserver& aRegObserver ); + + /** + * Constructor is private. + */ + CMceOneRowMessageListContainer( CMceMessageListView& aParentView ); + + /** + * Function that check if a key can be search + * @param aPointerEvent The pointer event + * @return ETrue if it can + * since 3.2 + */ + TBool IsValidSearchKey(const TKeyEvent& aKeyEvent); + + /** + * Add children items to specified node + * @param aParentId Parent node Id + */ + void AddChildrenL( TAknTreeItemID aParentId ); + + /** + * Removes children from specified node + * @param aParentId Parent node Id + */ + void RemoveChildren( TAknTreeItemID aParentId ); + + /** + * Gets number of marked items + * @return number of marked items + */ + TInt GetMarkedItemsCountL() const; + + /** + * Adds default icons + */ + void AddDefaultIconsL(); + + /** + * Adds an entry to tree list + * @param aEntryIndex index of new entry + */ + void AddEntryL( TInt aEntryIndex ); + + /** + * Updates an entry + * @param aEntryId TMsvId of the entry to be changed + */ + void UpdateEntryL( TMsvId aEntryId ); + + /** + * Updates tree list when new entry created + * @param aSelection Items created + * @param aDraw Will list be drawed immediality + */ + void EntryCreatedL( + CMsvEntrySelection& aSelection, + TBool aDraw ); + + /** + * Updates tree list when entry deleted + * @param aSelection Items deleted + * @param aDraw Will list be drawed immediality + */ + void EntryDeletedL( + CMsvEntrySelection& aSelection, + TBool aDraw ); + + /** + * Handles shortcut for search + * Since 5.0 + */ + void HandleShortcutForSearchL( const TKeyEvent& aKeyEvent ); + + /* + * Function that check if * key can change msglist state + * @return ETrue if it can + * Since 5.0 + */ + TBool StateCanBeChangedByStarKeyL() const; + + /* + * Check if * key has been handled + * @return ETrue if it's handled + * Since 5.0 + */ + TBool HasHandleStarKeyDoneL(); + + /* + * mark item read/unread + * Since 5.0 + */ + void MarkReadUnreadWithStarKeyL(); + + /* + * Check if message list is sort by date + * @return ETrue if it is + * Since 5.0 + */ + TBool IsSortByDate(); + + /* + * Get icon id for subtitle icon + * @param aSortType used sorting + * @param aSetUnread ETrue if unread type of icon + * @return Icon id + */ + TInt GetSubtitleIcon ( TBool aSetUnread ); + + /* + * Updates subtitle icon + * @param aSubtitleID: subtitle ID + * @param aReadStatusKnown: ETrue if there is known unread item under subtitle + */ + void UpdateSubtitleIconL( TAknTreeItemID aSubtitleID, TBool aReadStatusKnown ); + + /** + * From CCoeControl. + * Handles pointer events. + * @param aPointerEvent The pointer event. + */ + virtual void HandlePointerEventL( const TPointerEvent& aPointerEvent ); + + /** + * Saves marked items + */ + void SaveMarkingL(); + /** + * Handles focus when operation is completed. + * This is called by SetAnchorItemIdL when it gets + * EMessageListOperationCompleted. + */ + void HandleOperationCompletedL(); + + private: + + CAknSingleColumnStyleTreeList* iTreeListBox; + CMceOneRowListItemArray* iListItems; + CMceOneRowBitmapResolver* iBitmapResolver; + CMsvEntrySelection* iSelectedEntries; + TMsvId iAnchorItemId; + TAknTreeItemID iAnchorItemIndex; + TMessageListOperationType iLastOperationType; + TMsvId iSelectedItemWaitingIndex; + + /** + * Background control context. + * Own. + */ + CAknsBasicBackgroundControlContext* iBgContext; + + TAknTreeItemID iNodeId; + TBool iMarkingModeEnabled; + CPtiEngine* iT9Interface; + CMceMessageListContainerKeyTimer* iT9Timer; + TBool iPreviousInputMethod; + TBool iInputMethodQwerty; + TMceFlags iContainerFlags; + TDay iStartOfWeek; + TBool iDialerEvent; + /** + * CMail Changes, it will be ETrue if + * KFeatureIdFfEmailFramework is enabled + */ + TBool iEmailFramework; + }; + +#endif + +// End of file