logsui/AppSrc/CLogsAppUi.h
branchRCL_3
changeset 63 f4a778e096c2
child 64 c1e8ba0c2b16
child 85 38bb213f60ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/AppSrc/CLogsAppUi.h	Wed Sep 01 12:29:52 2010 +0100
@@ -0,0 +1,423 @@
+/*
+* 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: 
+*     Logs application UI class
+*
+*/
+
+
+#ifndef     __Logs_App_CLogsAppUi_H__
+#define     __Logs_App_CLogsAppUi_H__
+
+//  INCLUDES
+#include <aknViewAppUi.h>
+#include <AknTabObserver.h>
+
+#include <akntoolbarobserver.h>    
+#include <akntoolbar.h>  
+
+#include "Logs.hrh"
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+class CLogsEngine;
+class CLogsDocument;
+class CSendUi;
+class CAiwServiceHandler;
+
+// CLASS DECLARATION
+
+/**
+ * Logs application UI class. 
+ * An object of this class is created by the Symbian OS framework by a call to 
+ * CLogsDocument::CreateAppUiL(). The application UI object creates and owns
+ * the application's views and handles system commands selected from the menu.
+ */
+
+class   CLogsAppUi :    public CAknViewAppUi,
+						public MAknTabObserver,          
+                        public MAknToolbarObserver,
+                        public MCoeControlObserver                      
+    {
+    public: 
+        /**
+         *  Destructor.
+         */
+        ~CLogsAppUi();
+
+        /**
+         *  Default constructor.
+         */
+        CLogsAppUi();
+
+        /**
+         *  Constructor.
+         *
+         *  @param aEngine Logs enegine
+         */
+        CLogsAppUi( CLogsEngine* aEngine );
+
+    private: 
+         //Constructor, second phase.
+        void ConstructL();
+
+        //Callback function for CIdle object that calls ConstructDelayedL()
+        static TInt ConstructDelayedCallbackL( TAny* aContainer  );
+        
+        //Performs time consuming construction operations once. 
+        void DoConstructDelayedL();
+        
+    public: // other functions
+
+        /**
+         *  HandleMessageL. Called by the framework. 
+         */
+        MCoeMessageObserver::TMessageResponse HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup,
+                                                             TUid aMessageUid,
+                                                             const TDesC8& aMessageParameters);
+        /**
+         *  ProcessCommandParametersL. Called by the framework. 
+         *
+         *  IMPORTANT: This command line parameter interface is PRIVATE and may be replaced
+         *  in future with more generic solution. So do not use this unless agreed with Logs
+         *  project.
+         */
+        TBool ProcessCommandParametersL(TApaCommand aCommand,
+                                        TFileName& aDocumentName,
+                                        const TDesC8& aTail);
+
+        /**
+         * Handles menu commands. Called by the framework. Only application-
+         * wide and system commands are handled here. Use 
+         * CAknView::ProcessCommandL to handle view- and context-specific 
+         * commands.
+         *
+         * @param aCommand  The command code. Codes are defined in Logs.hrh
+         *                  and linked to UI controls (such as menus) in the 
+         *                  resource file Logs.rss.
+         *
+         * @exception anything  thrown during the processing of the command. 
+         *                      The application framework will by default trap
+         *                      and report uncaught exceptions to the user 
+         *                      with a simple pop-up dialog.
+         */
+        void HandleCommandL( TInt aCommand );
+
+        /**
+         *  Returns the pointer of the engine.
+         *  @return iEngine
+         */
+        CLogsEngine* Engine();
+
+        /**
+         * TPbkIconId array getter
+         * @return icon id array
+         */
+        //Not in use anymore, Phonebook icons replaced by own icons 
+        //CArrayFix<TPbkIconId>* IconIdArray();
+
+        /**
+         * Icon info container getter
+         * @return icon info container
+         */
+        //Not in use anymore, Phonebook icons replaced by own icons 
+        //CPbkIconInfoContainer* IconInfoContainer();
+
+
+        /*
+         * Activate view
+         * @param aView to activate, will create view if it 
+         *              doesn't exist.
+         */
+        void ActivateLogsViewL( TLogsViewIds aView );
+
+		/*
+         * Activate view
+         * @param aView to activate, will create view if it 
+         *              doesn't exist.
+		 * @param aCustomMessageId id of a custom message sent 
+		 *                         with view activation
+		 * @param aCustomMessage   a custom message sent
+		 *                         with view activation
+		 * @param aShowToolbar     show toolbar with
+		 *                         view activation
+         */
+        void ActivateLogsViewL( TLogsViewIds aView,
+								TLogsViewActivationMessages aCustomMessageId,  
+								const TDesC8 & aCustomMessage );
+								
+
+        /**
+         * Sets the previous view id.
+         *
+         * @param aView ID of the view.
+         */
+        void SetPreviousViewId( TUid aView );
+
+        /**
+         * Sets the current view id.
+         *
+         * @param aView id of the current view
+         */
+        void SetCurrentViewId( TUid aView );
+
+        /**
+         *  Command handler: exit
+         */
+        void CmdExit();
+         
+        /**
+         *  Command handler: back
+         */
+        void CmdBackL();
+
+        /**
+         * Command OK key handler
+         *
+         * @param aIndex current item in the listbox
+         */
+        void CmdOkL( TInt aIndex ); 
+
+        /**
+         * Active view id
+         * @return view id
+         */
+        TLogsViewIds ActiveViewId();
+
+        /**
+         * Returns the UId of the previous application
+         *
+         * @return  id of the previous application
+         */
+        TUid PreviousAppUid() const;
+        
+        /**
+         * Sets the previous application UId.
+         *
+         * @param aUid ID of the application.
+         */
+        void SetPreviousAppUid( TUid aUid );
+
+        /**
+         * If dialled/missed view is called from another program
+         *
+         * @param aProvideOnlyRecentViews Is dialled/missed view called Idle etc so 
+         *                                that not all views are provided
+         */
+        void SetProvideOnlyRecentViews( TBool aProvideOnlyRecentViews );
+
+        /**
+         * Is dialled/missed view is called from another program.
+         *
+         * @return Is dialled/missed view called from another program.
+         */
+        TBool ProvideOnlyRecentViews() const;
+
+        /**
+         * Log view current list position getter
+         *
+         * @return current position
+         */
+        TInt EventListViewCurrent() const;
+
+        /**
+         * Log view current list position setter
+         *
+         * @param aCurrent position
+         */
+        void SetEventListViewCurrent( TInt aCurrent );
+
+		/**
+		 * Gets the current execution mode for the app
+		 *
+		 * @return current execution mode
+		 */
+		TInt ExecutionMode() const;
+
+		/**
+		 * Sets the current execution mode for the app
+		 *
+		 * @param aMode the new execution mode
+		 */
+		void SetExecutionMode( TInt aMode );
+		
+        /**
+         * When Logs regains foreground this checks wether Logs was actually
+         * left to background (soft exit) and we should open Logs main view.
+         *
+         * Otherwise the dialled calls view would be opened as we activate
+         * the dialled calls when  Logs is left to background.
+         *
+         * By default this is OFF:
+         *   -> so normal foreground lost\regain not affected by this
+         *
+         * Set ON when user selects 'Exit':
+         *   -> so when regaining fg without commandline parameter Logs main view is shown.
+         *
+         * Set OFF if commandline parameter received
+         *
+         * @return true/false open Logs main view
+         */    
+		TBool ResetViewOnFocusRegain() const;
+		
+		/**
+         * Set the resetting to main ON\OFF after regaining foreground
+         *
+         * @param aReset true/false open Logs main view on foreground regain
+         */    
+		void SetResetViewOnFocusRegain(TBool aReset);
+		
+		void HideLogsToBackgroundL();
+
+		/**
+		 * Returns refrence to single instance of SendUi
+		 * (ownership remains in ClogsAppUi)		 
+		 */
+		CSendUi* SendUiL();		
+		
+		/**
+		 * Returns refrence to single instance of CallUi ServiceHandler for Phone calls 
+		 * (ownership remains in ClogsAppUi)
+         * @param ETrue If a special case of resetting callui needs to be done, use EFalse normally
+		 */
+        CAiwServiceHandler* CallUiL( TBool aReset = EFalse );
+        
+        /**
+         * Returns wether Logs was started with Send key from idle
+         *
+         * @return true/false 
+         */  
+        TBool LogsOpenedWithSendKey();
+        
+        /**
+         * Setter for iLogsOpenedWithSendKey
+         *
+         * @param true/false 
+         */  
+        void SetLogsOpenedWithSendKey(TBool aLogsOpenedWithSendKey);
+		
+        /**
+         *  Returns whether Logs is background.
+         */
+        TBool IsBackground() const;
+
+	public: // from MAknTabObserver
+		void TabChangedL(TInt aIndex);
+
+                //
+        void HandleWsEventL( const TWsEvent& aEvent, CCoeControl* aDestination );
+        
+	public:        
+		/**
+		 * Sets the current execution mode for the app
+		 *
+		 * @param aUid      Uid of the app
+		 * @param aTail		Command line parameter for the app
+		 */
+        TBool StartApplicationL( TUid aUid, const TDesC8& aTail );
+
+
+	public:
+	   /*************************************************************************
+        FIXME: Toolbar is currently always on - keeping the toolbar visibility  *
+               handling sources in comments for now - remove later.             */
+        /**
+         * Toolbar Visibility setting
+         * @return Toolbar Visibility setting
+         */
+         // TBool ToolbarVisibility()  const;    
+        
+        /**
+         * Records Toolbar visibility setting
+         */
+         // void RecordToolbarVisibility();
+         
+         /***********************************************************************/
+      
+    private: // From MAknToolbarObserver
+        void DynInitToolbarL(TInt aResourceId,
+                CAknToolbar* aToolbar );
+        void OfferToolbarEventL(TInt aCommand);
+
+        //from MCoeControlObserver        
+        void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);        
+       
+
+    private: // data
+
+        /// Own: id of the previous view
+        TUid iPreviousViewId;
+
+        /// Own: id of the current view
+        TUid iCurrentViewId;
+
+        /// Ref: Pointer to application model.
+        CLogsEngine* iEngine;   
+        
+        /**********************************************************************
+        Not in use anymore, Phonebook icons replaced by own icons 
+        
+        /// Own: icon id array
+        CArrayFix<TPbkIconId>*   iIconIdArray;
+
+        /// Own: icon info container
+        CPbkIconInfoContainer*   iIconInfoContainer;
+        **********************************************************************/        
+
+        /// Own: resource file for recent view icons ( from phonebook )
+        TBool               iResetToMain;
+        
+        /// Own id of the previous application
+        TUid iPreviousAppUid;
+
+        /// Own: Is dialled/missed view is called from another program.
+        TBool iProvideOnlyRecentViews;
+        
+        TBool iLogsOpenedWithSendKey;
+
+		/// Own: current execution mode
+		TInt iExecutionMode;
+		
+        enum TExitEndPressed
+            {
+            ENone,
+            EEndPressed,
+            EExitPressed
+            };
+
+        TExitEndPressed		iExitOrEndPressed;	//Relates to KAknUidValueEndKeyCloseEvent		
+        
+        CSendUi*            iSendUi;            //Own: Instance of SendUi
+        CAiwServiceHandler* iServiceHandler;    //own: ServiceHandler for CallUi, Pbk etc
+        CIdle*              iConstructDelayed;  //own
+        
+        /*************************************************************************
+        FIXME: Toolbar is currently always on - keeping the toolbar visibility   *
+               handling sources in comments for now - remove later.              *
+        TBool               iShowToolbar;        *********************************/
+        
+    };
+
+#endif  // __Logs_App_CLogsAppUi_H__
+
+        
+// End of File