wvuing/wvuiave/AppSrc/CCAStatusPaneHandler.h
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/wvuiave/AppSrc/CCAStatusPaneHandler.h	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,371 @@
+/*
+* Copyright (c) 2006 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:  This class handles status, title and contextpane operations
+ *
+*/
+
+
+
+#ifndef CCASTATUSPANEHANDLER_H
+#define CCASTATUSPANEHANDLER_H
+
+//  INCLUDES
+#include <akntabgrp.h>
+#include <aknnavide.h>
+#include <akntitle.h>
+#include <akncontext.h>
+#include <aknindicatorcontainer.h>
+#include <akneditstateindicator.h>
+
+#include <akntabobserver.h>
+
+#include "MCAMainViewObserverPC.h"
+#include "MCATabObserver.h"
+
+
+// FORWARD DECLARATIONS
+class CCAAppUi;
+class MCAOpenChatsPC;
+
+// CLASS DECLARATION
+
+/**
+ *  This class handles status, title and contextpane operations
+ *
+ *  @chatng.exe
+ *  @since 3.2
+ */
+class CCAStatusPaneHandler : public CBase, public MAknTabObserver,
+            public MCAMainViewObserverPC
+    {
+    public:  // Constructors and destructor
+
+        /**
+         * C++ default constructor.
+         */
+        CCAStatusPaneHandler();
+
+        /**
+         * Two-phased constructor.
+         */
+        static CCAStatusPaneHandler* NewL();
+
+        /**
+         * Destructor.
+         */
+        virtual ~CCAStatusPaneHandler();
+
+    public: // New functions
+
+        /**
+         * Hides navi-pane decorators
+         * @since 1.2
+         * @param aPicture Bitmap file
+         * @param aMask Bitmap mask file
+         */
+        void SetPicture( const CFbsBitmap* aPicture, const CFbsBitmap* aMask );
+
+        /**
+         * Shows navi-pane's tabgroup-decorator according to aResourceId
+         * and activates a tab which has TabId=aViewId.
+         * @since 1.2
+         * @param aViewId ViewId of the view that is visible
+         */
+        void ShowTabGroupL( const TUid /*aViewId*/ );
+
+        /**
+         * Shows navi-pane's tabgroup-decorator according to aResourceId
+         * and activates a tab which has aType.
+         * @param aType - Type of tab Invitation/conversation
+         * @param aWvId - user id
+         * @param aInvitationTime - Received Time of the Invitation ( Only applicable to
+         *   invitations, for others you can pass any value. suggested is TTime() )
+         * @since 3.2
+         */
+        TInt ShowTabGroupL( const TEnumsPC::TItem aType, const TDesC& aWvId,
+                            const TBool noCreate = EFalse );
+
+        /**
+         * pops the navi-pane's tabgroup-decorator
+         * unregisters from the registered observers
+         * Synchronises the process component list
+         * @since 3.2
+         */
+        void SynchroniseAndRemoveTabGroup( );
+
+        /**
+         * Hides navi-pane decorators.
+         * @param aAllowDuplicates If this is true, duplicate default navi pane
+         * contents are allowed. Duplicates need to be removed with PopNaviPane
+         * when not needed anymore.
+         * @since 1.2
+         */
+        void ClearNaviPaneL( TBool aAllowDuplicates = EFalse );
+
+        /**
+         * Sets title-pane text.
+         * @since 1.2
+         * @param aTitle Title text
+         */
+        void SetTitleL( const TDesC& aTitle );
+
+        /**
+         * Sets title-pane text. Uses eikon env to load string.
+         * @since 2.1
+         * @param aEikonEnv Eikon environment to allocate resource
+         * @param aResourceId Resource id
+         */
+        void SetTitleL( CEikonEnv* aEikonEnv, TInt aResourceId );
+
+        /*
+         * Sets title-pane text. Uses StringLoader to load string.
+         * @since 2.1
+         * @param aResourceId Resource id
+         * @param aSearchString Search string
+         */
+        void SetTitleL( TInt aResourceId, const TDesC& aSearchString );
+
+        /**
+         * Sets navi-pane label
+         * @since 1.2
+         * @param aTitle Navi-label text
+         */
+        void SetNaviLabelL( const TDesC& aText );
+
+        /**
+         * Returns pointer to currently active decorator's tabgroup.
+         * @since 1.2
+         * @return pointer to tabgroup
+         */
+        CAknTabGroup* TabGroup() const;
+
+        /**
+         * Fetches active tabīs id (ViewId)
+         * @since 1.2
+         * @return UID of an active tab view
+         */
+        TUid ActiveTabViewId();
+
+        /**
+         * Sets active tab by index.
+         * @since 1.2
+         * @param aIndex Index of a tab to be activated
+         */
+        void ActivateTab( const TInt aIndex );
+
+        /**
+         * This method returns pointer to indicator container
+         * @since 1.2
+         * @return Handle to indicator
+         */
+        CAknIndicatorContainer* Indicator() const;
+
+        /**
+         * Refresh title pane text, needed in skin change events.
+         * @since 1.2
+         */
+        void RefreshTitlePaneTextL();
+
+        /*
+         * Gets title-pane text.
+         * Ownership is not transfered.
+         * @since 3.0
+         */
+        const TDesC* Title();
+
+        /**
+         * Prohibit tab group drawing for full-screen
+         * dialogs. Changes take place during next redraw.
+         * Call from dialog's PreLayoutDynInit. Remember to reset
+         * by calling RestoreNaviPane in the destructor!
+         * @param aProhibit ETrue to prohibit, EFalse to not.
+         * @since 3.0
+         */
+        void ProhibitTabGroup( TBool aProhibit = ETrue );
+
+        /**
+         * Restore navi pane decorators to the previous state
+         * before ClearNaviPaneL call.
+         * Call in dialog destructor.
+         * @since 3.0
+         */
+        void RestoreNaviPane();
+
+        /**
+        * Pops the topmost decorator out of the decorator stack.
+        * @since 3.0
+        */
+        void PopNaviPane();
+
+
+
+        void SetActiveTabByIndex( const TInt aIndex );
+        /**
+         * Delete remainings tab other than current
+         * @param aType type of tab
+         * @param aWvId user id
+         *@param aInvitationTime time of message
+         * @since 3.0
+         */
+        TInt ResetAndShowCurrentTabL( const TEnumsPC::TItem aType,
+                                      const TDesC& aWvId );
+    private:
+        /**
+         * @see MAknTabObserver
+         */
+        void TabChangedL( TInt aIndex );
+
+
+    private:
+
+        /**
+         * @see MCAMainViewObserverPC
+         */
+        void HandleDelete( const TDesC& aContactId , TEnumsPC::TItem aType ) ;
+
+        /**
+         * @see MCAMainViewObserverPC
+         */
+        void HandleAddition( TEnumsPC::TItem aType, TInt aIndex );
+
+        /**
+         * @see MCAMainViewObserverPC
+         */
+        void HandleChange( TEnumsPC::TItem aType, TInt aIndex, TEnumsPC::TChange aChangeType );
+
+        /**
+         * @see MCAMainViewObserverPC
+         */
+        void HandleWatcherEvent( const TDesC& aString , TEnumsPC::TOnlineStatus aOnlineStatus );
+
+        /**
+        * @see MCAMainViewObserverPC
+        */
+        void HandleInvitationEventL( TEnumsPC::TInviteType aInviteType,
+                                     const TDesC& aUserId,
+                                     const TDesC& aMessage );
+
+        /**
+         * @see MCAMainViewObserverPC
+         */
+        void HandleInvitationResponse( TBool aAcceptance,
+                                       const TDesC& aUserId,
+                                       const TDesC& aGroupName,
+                                       const TDesC& aResponse );
+
+        /**
+         * @see MCAMainViewObserverPC
+         */
+        void HandleSettingsChangeL( TInt aChangedSettingEnum );
+
+    public:
+
+        /**
+         * API used to regiter for MCATabObserver Events
+         */
+        void AddObserver( MCATabObserver* aObserver ) ;
+
+        /**
+         * API used to unregiter from MCATabObserver events
+         */
+        void RemoveObserver( MCATabObserver* aObserver );
+
+
+        const TPtrC GetTabItemIdentification( const TInt aIndex );
+    private:
+
+
+        /**
+         * API to show the tabs
+         */
+        void ShowTabL();
+
+        /**
+         * API to hide the tabs
+         */
+        void HideTab();
+
+    private:
+
+        /**
+         * Loads/updates bitmaps
+         * @since 1.2
+         */
+        void CreateTabsL( const TBool noCreate );
+
+        /**
+         * By default Symbian OS constructor is private.
+         */
+        void ConstructL();
+
+
+
+    private:    // Data
+
+        // typedef to ease up the usage of decorator-array
+        typedef CArrayPtrFlat<CAknNavigationDecorator> CCANaviPaneStack;
+
+        // Doesn't own. Handle to navi-pane
+        CAknNavigationControlContainer*	iNaviPane;
+
+        // Owns. New decorated tab-group
+        CAknNavigationDecorator*		iNewDecoratedTabGroup;
+
+        // Owns. Text for navi-pane
+        CAknNavigationDecorator*		iNaviPaneText;
+
+        // Doesn't own. Handle to title-pane
+        CAknTitlePane*					iTitlePane;
+
+        // Flag to trace decorator-status
+        TBool							iNaviTabsActivated;
+
+        // Doesn't own. Handle to context-pane
+        CAknContextPane*	            iContextPane;
+
+        // Doesn't own. Handle to appui
+        CCAAppUi*                       iAppUi;
+
+        //Owns the OpenChats PC Component
+        MCAOpenChatsPC*					iOpenChatsPC;
+
+        // ETrue if tab group drawing is prohibited
+        TBool iProhibitTabGroup;
+
+        // Currently active view id
+        TUid iActiveViewId;
+
+
+        //Doesn't own
+        RPointerArray< MCATabObserver > iObserverList;
+
+        //previous tabID
+        TInt iPrevTabId;
+
+        //Current TabID
+        TInt iCurrentTabId;
+
+        //owns the new message icon
+        HBufC* iNewMsgIcon;
+
+        //owns the tabtext to be displayed for invitations
+        HBufC* iInvitationTabText;
+
+        TInt iOpenChatArrayCount; //record open chat array count
+
+    };
+
+#endif      // CCASTATUSPANEHANDLER_H
+
+// End of File