phoneuis/dialer/inc/cdialer.h
changeset 0 5f000ab63145
child 9 8871b09be73b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/dialer/inc/cdialer.h	Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,349 @@
+/*
+* Copyright (c) 2007 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:  Definition of CDialer class.
+*
+*/
+
+
+
+#ifndef CDIALER_H
+#define CDIALER_H
+
+//  INCLUDES
+#include <coecntrl.h>
+#include <coemain.h>
+
+#include "mnumberentry.h"
+
+// CONSTANTS
+
+// FORWARD DECLARATIONS
+class CEikButtonGroupContainer;
+class CDialerKeyPadContainer;
+class CDialerNumberEntry;
+class MNumberEntry;
+class CEikMenuPane;
+class CEikonEnv;
+class CAknEdwinState;
+class MNumberEntryObserver;
+
+// CLASS DECLARATION
+
+/**
+*  CDialer class.
+*
+*  @lib dialer.lib
+*  @since Series60_5.0
+*
+*  Description:
+*   Dialer is used in two applications, telephony and video telephony.
+*
+*   In Telephony dialer handles number (number/sip address) input from 
+*   user via touch screen, VKB or hw keyboard (ITU-T and QWERTY).
+*
+*   From host application dialer requires:
+*   - View/container as CCoeControl
+*
+* 
+*  Usage:
+*
+
+    // Hide status pane.
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        static_cast<CAknAppUi*>( CEikonEnv::Static()->EikAppUi())->
+            StatusPane()->MakeVisible( ETrue);
+        }
+    else
+        {
+        static_cast<CAknAppUi*>( CEikonEnv::Static()->EikAppUi())->
+            StatusPane()->MakeVisible( EFalse );
+        }
+
+    // Calculate dialer area:
+    TRect screenRect( 
+        TPoint( 0, 0 ), 
+        iCoeEnv->ScreenDevice()->SizeInPixels() );   
+
+    TAknLayoutRect appRect;
+    appRect.LayoutRect( 
+        screenRect, AknLayout::application_window( screenRect );
+
+    TAknLayoutRect mainRect;
+    mainRect.LayoutRect( 
+        appRect.Rect(), 
+        AknLayout::main_pane( appRect.Rect(), 0, 1, 0 ) );
+
+    TRect mainPane( mainRect.Rect() );
+
+    // Reduce the space that CBA need from the rect
+    CEikButtonGroupContainer cba = iEikEnv.AppUiFactory()->Cba();
+    TRect mainPane( aRect );    
+    cba->ReduceRect( mainPane );
+
+    // Create dialer from container (CCoeControl) that created
+    // dialer window (CreateWindowL).
+
+
+*  In telephony dialer:
+
+    // Create dialer.
+    CDialer* dialer = CDialer::NewL( *this, aDialerArea );
+
+    // Open dialer
+    // Open and show dialer
+    iDialer->CreateNumberEntry();
+
+    // methods in MNumberEntry are available to contol dialer and
+    // get/set text in number entry.
+    
+    // Close dialer
+    iDialer->RemoveNumberEntry( );
+    // Delete dialer
+    delete dialer;
+*
+*/
+NONSHARABLE_CLASS(CDialer) : public CCoeControl, public MNumberEntry
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two phase constructor
+        * @param aContainer Parent container
+        * @param aRect Area to use for dialer
+        * @return New instance of Dialer
+        */
+        IMPORT_C static CDialer* NewL( const CCoeControl& aContainer,
+                                       const TRect& aRect );
+
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~CDialer();
+
+    public: // New functions
+
+        /**
+        * Return MNumberEntry API of Dialer
+        * @return Pointer to MNumberEntry implementation
+        */
+        IMPORT_C MNumberEntry* NumberEntry();
+
+        /**
+        * Set number entry observer.
+        */
+        IMPORT_C void SetNumberEntryObserver( MNumberEntryObserver& aObserver );
+        
+    public: // from MNumberEntry 
+
+        /**
+        * Sets number entry active.
+        */
+        void CreateNumberEntry();
+        
+        /**
+        * Return pointer to number entry
+        * @return The NE.
+        */
+        CCoeControl* GetNumberEntry( ) const;
+        
+        /**
+        * Query, is number entry used.
+        * @return ETrue is NE is used.
+        */
+        TBool IsNumberEntryUsed( ) const;
+        
+        /**
+        * This disables NE drawing but doesn't empty the component.
+        * @param aVisibility NE visible or not.
+        */
+        void SetNumberEntryVisible( 
+            const TBool& aVisibility = ETrue );
+        
+        /**
+        * Set Number Entry text.
+        * @param aDesC The text.
+        */
+        void SetTextToNumberEntry( const TDesC& aDesC );
+        
+        /**
+        * Get Number Entry Text.
+        * @param aDesC The text.
+        */
+        void GetTextFromNumberEntry( TDes& aDesC );
+        
+        /**
+        * Removes NE and empties the buffer.
+        */
+        void RemoveNumberEntry( );
+        
+        /**
+        * Set number entry's editor mode.
+        * @param aMode for number editor input mode.
+        * @return Input mode of the editor.
+        */
+        TInt ChangeEditorMode( TBool aDefaultMode = EFalse );
+        
+        /**
+        * Open VKB
+        */
+        void OpenVkbL();
+        
+        /**
+        * Get number entry's editor mode.
+        * @return Input mode of the editor.
+        */
+        TInt GetEditorMode() const;
+
+        /**
+        * Resets number entry editor to default values.
+        */
+        void ResetEditorToDefaultValues();
+        
+        /**
+        * Set number entry's prompt text.
+        * @param aPromptText.
+        */        
+        void SetNumberEntryPromptText( const TDesC& aPromptText );
+        
+        /**
+        * Enable or disable tactile feedback. 
+        * @param aEnable.
+        */             
+        void EnableTactileFeedback( const TBool aEnable );
+
+    private:  // Functions from CCoeControl
+        
+        /**
+        * @see CCoeControl
+        */
+        void SizeChanged();
+        
+        /**
+        * @see CCoeControl
+        */
+        void PositionChanged();
+
+        /**
+        * @see CCoeControl
+        */
+        TInt CountComponentControls() const;
+        
+        /**
+        * @see CCoeControl
+        */
+        CCoeControl* ComponentControl( TInt aIndex ) const;
+        
+        /**
+        * @see CCoeControl
+        */
+        void Draw( const TRect& aRect ) const;
+        
+        /**
+        * @see CCoeControl
+        */
+        void FocusChanged( TDrawNow aDrawNow );
+                
+        /**
+        * @see CCoeControl
+        */        
+        void MakeVisible( TBool aVisible );  
+        
+        /**
+        * @see CCoeControl
+        */ 
+        void PrepareForFocusGainL();
+        
+        /**
+        * @see CCoeControl
+        */
+        void HandleResourceChange( TInt aType );
+        
+        /**
+        * @see CCoeControl
+        */
+        void HandlePointerEventL( const TPointerEvent& aPointerEvent );
+              
+        
+    private:
+
+        /**
+        * Constructor
+        */
+        CDialer();
+
+        /**
+        * 2nd phase constructor.
+        * @param aContainer Parent container
+        * @param aRect Area to use for dialer
+        */
+        void ConstructL( const CCoeControl& aContainer , 
+            const TRect& aRect );
+        
+        /**
+        * Load resource file.
+        */
+        void LoadResourceL();
+        
+        /**
+        * Unload resource file.
+        */
+        void UnLoadResources();
+        
+        /**
+        * @see CCoeControl::ComponentControl()
+        * @param aIndex control index
+        */
+        CCoeControl* ComponentControlForDialerMode( const TInt aIndex ) const;
+        
+        /**
+         * Returns edwin state
+         * @return Pointer to CAknEdwinState
+         */
+        CAknEdwinState* EdwinState();
+        
+        /**
+         * Updates editor flags for virtual
+         * keyboard.
+         */
+        void UpdateVkbEditorFlagsL();
+
+    private:    // Data
+          
+        // Keypad container  - owned
+        CDialerKeyPadContainer* iKeypadArea;
+             
+        // Number entry container - owned
+        CDialerNumberEntry* iNumberEntry;
+        
+        // Parent container
+        const CCoeControl* iParentControl;
+        
+        // Is Number entry (e.g. dialer) being used at the moment
+        TBool iIsUsed;
+        
+        // Reference to CEikonEnv
+        CEikonEnv& iEikEnv;
+        
+        // Resource 
+        TInt iResourceOffset;
+        
+        // Is virtual key board open
+        TBool iVirtualKeyBoardOpen;
+
+    };
+
+#endif      // CDIALER_H
+
+// End of File