messagingappbase/mce/inc/MceOneRowMessageListContainer.h
changeset 0 72b543305e3a
child 21 c6838af47512
--- /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 <coecntrl.h> // CCoeControl
+#include <bldvariant.hrh>
+#include <akntreelistobserver.h>
+#include <msvstd.h>
+
+#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<TInt>& 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