phoneapp/phoneuiview/inc/cphonequerycontroller.h
changeset 0 5f000ab63145
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiview/inc/cphonequerycontroller.h	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,363 @@
+/*
+* Copyright (c) 2005 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:  PhoneUI Query Controller
+*
+*/
+
+
+#ifndef CPHONEQUERYCONTROLLER_H
+#define CPHONEQUERYCONTROLLER_H
+
+
+
+//  INCLUDES
+#include "cphonetextquery.h"
+#include "mphonequeryobserver.h"
+#include "mphonetimer.h"
+#include "tphonecmdparamquery.h"
+
+// DATA TYPES
+enum TPhoneAvkonQueryType
+    {
+    EPhoneAvkonNone,
+    EPhoneAvkonGlobalConfirmation,
+    EPhoneAvkonGlobalList
+    };
+
+// FORWARD DECLARATIONS
+class TPhoneCommandParam;
+class CAknGlobalConfirmationQuery;
+class CPhoneQueryDialog;
+class CPhoneDtmfNumberListQuery;
+class CPhoneListQueryDialog;
+class CCaUiReconnectQuery;
+class CPhoneTimer;
+class CAknGlobalMsgQuery;
+class CAknGlobalNote;
+
+class CPhoneQueryController :
+    public CActive,
+    public MEikCommandObserver,
+    public MPhoneQueryObserver,
+    protected MPhoneTimer
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CPhoneQueryController* NewL( CEikonEnv& aEikEnv );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CPhoneQueryController();   
+
+        /**
+        * Creates query dialog from the given command parameter
+        * @param aCommandParam command parameter holding data for
+        * populating the needed query dialog.
+        */
+        void CreateQueryL( TPhoneCommandParam* aCommandParam );
+
+        /**
+        * Destructs all existing query dialogs except global.
+        */
+        void DestroyQuery();
+        
+        /**
+        * Destructs global query dialog.
+        */
+        void DestroyGlobalQuery();
+
+        /**
+        * Destroys global wait note
+        */
+        void DestroyGlobalWaitNote();
+
+        /**
+        * Fetches query dialog's content
+        * @param aCommandParam pointer where content will be written
+        */
+        void GetTextQueryContentL( TPhoneCommandParam* aCommandParam );
+
+        /**
+        * Set by the query when it is asynchronously deleted.
+        * @param aQueryDeleted ETrue if the query is deleted
+        */
+        void SetQueryDeletedFlag( TBool aQueryDeleted ); 
+        
+        /**
+        * Get active status of queries
+        * @param aCommandParam command parameter
+        */
+        void IsQueryActive( TPhoneCommandParam* aCommandParam );
+        
+        /**
+        * Sets string for List query dialog
+        * @param aCommandParam command parameter
+        */
+        void SetListQueryStringL( TPhoneCommandParam* aCommandParam );
+    
+        /**
+        * Reports query dialog's exit
+        * @param aCommand user selected action.
+        */        
+        void ReportQueryCompleteAsync( TInt aCommand );
+        
+        /**
+        * Check if dtmf test query or dtmf dialog is visible.
+        */        
+        TBool IsDTMFQueryVisible();
+        
+        /**
+        * Sets member variable NoConnectedCalls value.
+        */ 
+        void SetNoConnectedCalls( TPhoneCommandParam* aCommandParam );
+
+    protected: // from CActive
+
+        /**
+        * See CActive documentation.
+        */  
+        void RunL();
+    
+        /**
+        * See CActive documentation.
+        */
+        TInt RunError( TInt aError );
+
+        /**
+        * See CActive documentation.
+        */    
+        void DoCancel();
+        
+        /**
+        * @see CPhoneTimer, handles timeout.
+        */
+        virtual void HandleTimeOutL();        
+ 
+        /**
+        * @see MEikCommandObserver
+        */
+        void ProcessCommandL( TInt aCommandId );
+    private:  // Constructors
+        
+        /**
+        * C++ default constructor.
+        */
+        CPhoneQueryController( CEikonEnv& aEikEnv );
+
+        /**
+        * Creates query dialog
+        * @param aParams a TPhoneCmdParamQuery holding the parameters for the query
+        */
+        void CreateQueryDialogL( 
+            const TPhoneCmdParamQuery& aParams );
+        
+        /**
+        * Creates text query dialog
+        * @param aParams a TPhoneCmdParamQuery holding the parameters for the query
+        */            
+        void CreateTextQueryDialogL( 
+            const TPhoneCmdParamQuery& aParams,
+            TInt aOkButtonCmd = EEikBidOk );              
+        
+        /*
+        * Generates DTMF list query.
+		* @param aDialogResourceId -Id of the list query to be loaded
+        */
+        void CreateDtmfListQueryL( TInt aDialogResourceId );
+        
+        /*
+        * Generates list query.
+		* @param aDialogResourceId -Id of the list query to be loaded
+        */
+        void CreateListQueryL( TInt aDialogResourceId, const RArray<TInt>& aCommands );
+
+        /*
+        * Generates custom list query.
+        * @param aDialogResourceId -Id of the list query to be loaded
+        * @param aItemTextArray Text array for list items.
+        * @param aTone Query tone.
+        */
+        void CreateCustomListQueryL( const TPhoneCmdParamQuery& aParams );
+        
+        /**
+        * Creates the default query.
+        * @param aParams ommand parameter holding data for
+        * populating the needed query dialog.
+        */    
+        void CreateDefaultQueryL( const TPhoneCmdParamQuery& aParams );
+        
+        /**
+        * Creates the reconnect query.
+        * @param aParams ommand parameter holding data for
+        * populating the needed query dialog.
+        */
+        void CreateReconnectQueryL( TPhoneCommandParam* aCommandParam );
+                
+        /**
+        * Creates the global query.
+        * @param aParams a TPhoneCmdParamQuery holding the parameters for the query
+        */        
+        void CreateGlobalQueryDialogL( const TPhoneCmdParamQuery& aParams ); 
+
+        /**
+        * Callback function that CIdle calls when we are using Text Query Dialog.
+        * This method displayes the actual query.
+        * @param aCPhoneQueryController - pointer to itself
+        * @return KErrNone
+        */
+        static TInt DisplayTextQueryCallBack( TAny* aCPhoneQueryController );
+        
+        /**
+        * Clear timer used in global query
+        */
+        void ClearTimer();
+ 
+        /**
+         * Creates global message query dialog.
+         * @param aParams a TPhoneCmdParamQuery holding the parameters for the query
+         */    
+        void CreateGlobalMsgQueryL( const TPhoneCmdParamQuery& aParams );
+        
+        /**
+         * Destroys global message query.
+         */
+        void DestroyGlobalMsgQuery();
+
+        /**
+         * Creates global wait note.
+         * @param aParams a TPhoneCmdParamQuery holding the parameters for the query
+         */     
+        void CreateGlobalWaitNoteL( const TPhoneCmdParamQuery& aParams );
+       
+        /**
+        * Callback function that CIdle calls when we are handling process command.
+        * This method forwards the actual command
+        * @param aCPhoneQueryController - pointer to itself
+        * @return KErrNone
+        */
+        static TInt ProcessCommandCallBack( TAny* aCPhoneQueryController );
+        
+    private:  // Data
+
+        /**
+        * Query dialog
+        */
+        CPhoneQueryDialog* iQuery;
+        
+        /**
+        * Text query dialog
+        */
+        CPhoneTextQuery* iTextQuery;
+        
+        /**
+        * DTMF number list query
+        */
+        CPhoneDtmfNumberListQuery* iDtmfNumberListQuery;
+        
+        CPhoneListQueryDialog* iListQuery;        
+
+        /**
+        * ETrue when the query is asynchronously deleted
+        */
+        TBool iQueryDeleted;
+        
+        /**
+        * Call UI reconnect query.
+        */
+        CCaUiReconnectQuery* iCallUiReconnectQuery;
+        
+        // Eikon environment delivered from CPhoneViewController
+        CEikonEnv& iEikEnv;
+        
+        // Query dialog's text. Stored here for async operations.
+        RBuf iQueryNoteText;
+        // Prompt for queries. Stored here for async operations.
+        RBuf iQueryPrompt;
+        
+        // Query dialog's text. Stored here for async operations.
+        // Needed if query has been deleted before content get 
+        RBuf iQueryPreviousText;
+        
+        // Command for queries. Stored here for async operations.
+        TInt iCommandId;
+        
+        // Waitnote text
+        RBuf iWaitNoteText;
+            
+        // Global confirmation query.
+        CAknGlobalConfirmationQuery* iGlobalConfirmationQuery;
+ 
+ 		// Currently active avkon query type
+ 		TInt iActiveAvkonQuery;
+ 	    
+ 	    /**
+        * Status of VideoCallSetupFailedQuery
+        */
+        TBool iVideoCallSetupFailedQuery;
+        
+        /**
+        * Status of transfer acceptance query.
+        */
+        TBool iTransferAcceptanceQuery;
+        
+        // Displaying a Text Query is a blocking synchronous call and we want to give
+        // run time for other Phone stuff so CIdle object is used to let us do that.
+        // Owned.
+        CIdle *iTextQueryDisplayer;
+                
+        // Asynchronous call for process command
+        CIdle *iCommandAsync;
+        
+        // Contains selected DTMF string from dtmf listquery dialog.
+        HBufC* iResultBuffer;   
+        
+        // Timer.
+        CPhoneTimer* iTimer;
+        
+        /**
+         * Global message query.
+         * Own.
+         */
+        CAknGlobalMsgQuery* iGlobalMsgQuery;
+        
+        /**
+         * Parameter query command object.
+         */
+        TPhoneCmdParamQuery iQueryParam;
+        
+        /**
+        * Global wait note.
+        * Own.
+        */
+        CAknGlobalNote* iGlobalWaitNote;
+
+        /**
+         * Flag for check is command already handled.
+         */
+        TBool iCommandHandled;
+        
+		/**
+         * Flag indicating connected calls.
+         */
+        TBool iNoConnectedCalls;
+        
+     };
+
+#endif      // CPHONEQUERYCONTROLLER_H   
+            
+// End of File