--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/vtuis/videotelui/src/features/numberentry/CVtUiNumberEntryControl.cpp Mon Nov 23 14:47:47 2009 +0200
@@ -0,0 +1,315 @@
+/*
+* Copyright (c) 2004-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: Implementation of the CVtUiNumberEntryControl control class.
+*
+*/
+
+
+// INCLUDE FILES
+#include "CVtUiNumberEntryControl.h"
+#include "VtUiLayout.h"
+#include "VtUiUtility.h"
+#include "mvtuicomponentmanager.h"
+#include "tvtuistates.h"
+#include "tvtuiwsevent.h"
+#include "mvtuifeature.h"
+#include "mvtuinumberentrycontrolobserver.h"
+#include "cvtuidtmfbuffer.h"
+
+#include <aknsutils.h>
+#include <cvtlogger.h>
+#include <eikenv.h>
+
+// CONSTANTS
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// Implementation for TVtUiNumberEntryComponentState
+
+// -----------------------------------------------------------------------------
+// TVtUiNumberEntryComponentState::TVtUiNumberEntryComponentState
+// -----------------------------------------------------------------------------
+//
+TVtUiNumberEntryComponentState::TVtUiNumberEntryComponentState(
+ MVtUiComponent& aComponent )
+ : TVtUiComponentState( aComponent,
+ TVtUiBlockListBitField(
+ MVtUiComponent::EComponentIdDialer ) )
+ {
+ }
+
+// Implementation for CVtUiNumberEntryControl
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::CVtUiNumberEntryControl
+// C++ constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CVtUiNumberEntryControl::CVtUiNumberEntryControl(
+ MVtUiFeature& aFeature,
+ TVtUiStates& aUiStates )
+ : iFeature( aFeature ),
+ iComponentState( *this ),
+ iUiStates( aUiStates )
+ {
+ __VTPRINTENTER( "NECtrl.ctor" )
+ __VTPRINTEXIT( "NECtrl.ctor" )
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::ConstructL
+// Symbian 2nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::ConstructL( const TRect& aRect )
+ {
+ __VTPRINTENTER( "NECtrl.ConstructL" )
+ CreateWindowL();
+ SetRect( aRect );
+ ActivateL();
+ MakeVisible( EFalse );
+ iInputBuffer = CVtUiDTMFBuffer::NewL( *iCoeEnv );
+ __VTPRINTEXIT( "NECtrl.ConstructL" )
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::~CVtUiNumberEntryControl
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CVtUiNumberEntryControl::~CVtUiNumberEntryControl()
+ {
+ __VTPRINTENTER( "NECtrl.~" )
+ AknsUtils::DeregisterControlPosition( this );
+ delete iInputBuffer;
+ __VTPRINTEXIT( "NECtrl.~" )
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::OpenNumberEntry
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiNumberEntryControl::OpenNumberEntry()
+ {
+ __VTPRINTENTER( "NECtrl.OpenNumberEntry" )
+ TBool result( EFalse );
+ if ( !iUiStates.IsNumberEntryOpen() )
+ {
+ __VTPRINT( DEBUG_GEN, "VtUiNumberEntry.OPEN" )
+ iInputBuffer->Activate();
+ iUiStates.SetIsNumberEntryOpen( ETrue );
+ result = ETrue;
+ }
+ __VTPRINTEXITR( "NECtrl.OpenNumberEntry %d", result )
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::IsNumberEntryOpen
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiNumberEntryControl::IsNumberEntryOpen() const
+ {
+ __VTPRINTENTER( "NECtrl.IsNumberEntryOpen" )
+ const TBool result( iUiStates.IsNumberEntryOpen() );
+ __VTPRINTEXITR( "NECtrl.IsNumberEntryOpen %d",result )
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::CloseNumberEntry
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::CloseNumberEntry()
+ {
+ __VTPRINTENTER( "NECtrl.CloseNumberEntry" )
+ if ( iUiStates.IsNumberEntryOpen() )
+ {
+ __VTPRINT( DEBUG_GEN, "NECtrl.CloseNumberEntry CLOSE" )
+ iUiStates.SetIsNumberEntryOpen( EFalse );
+ iInputBuffer->Deactivate();
+ }
+ __VTPRINTEXIT( "NECtrl.CloseNumberEntry" )
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::RegisterComponentL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::RegisterComponentL(
+ MVtUiComponentManager& aComponentManager )
+ {
+ __VTPRINTENTER( "NECtrl.RegisterComponentL" )
+ User::LeaveIfError( aComponentManager.ChangeComponentRegistration(
+ iComponentState, MVtUiComponentManager::ERegister ) );
+ __VTPRINTEXIT( "NECtrl.RegisterComponentL" )
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::UnregisterComponent
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::UnregisterComponent(
+ MVtUiComponentManager& aComponentManager )
+ {
+ __VTPRINTENTER( "NECtrl.UnregisterComponent" )
+ iInputBuffer->Reset();
+ aComponentManager.ChangeComponentRegistration( iComponentState,
+ MVtUiComponentManager::EUnregister );
+ __VTPRINTEXIT( "NECtrl.UnregisterComponent" )
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::SetNumberEntryControlObserver
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::SetNumberEntryControlObserver(
+ MVtUiNumberEntryControlObserver* aObserver )
+ {
+ __VTPRINTENTER( "NECtrl.SetNumberEntryControlObserver" )
+ iControlObserver = aObserver;
+ __VTPRINTEXIT( "NECtrl.SetNumberEntryControlObserver" )
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::OfferKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CVtUiNumberEntryControl::OfferKeyEventL(
+ const TKeyEvent& aKeyEvent,
+ TEventCode )
+ {
+ __VTPRINTENTER( "NECtrl.OfferKeyEventL" )
+
+ TKeyResponse resp( EKeyWasNotConsumed );
+
+ if ( IsDisplayingMenuOrDialog() ||
+ aKeyEvent.iCode == EKeyLeftArrow ||
+ aKeyEvent.iCode == EKeyRightArrow ||
+ aKeyEvent.iCode == EKeyUpArrow ||
+ aKeyEvent.iCode == EKeyDownArrow ||
+ aKeyEvent.iCode == EKeyBackspace ||
+ aKeyEvent.iCode == EKeyZoomIn ||
+ aKeyEvent.iCode == EKeyZoomOut ||
+ aKeyEvent.iScanCode == EStdKeyUpArrow ||
+ aKeyEvent.iScanCode == EStdKeyDownArrow ||
+ aKeyEvent.iScanCode == EStdKeyLeftArrow ||
+ aKeyEvent.iScanCode == EStdKeyRightArrow )
+ {
+ return resp;
+ }
+
+ TChar dtmfTone;
+ if ( VtUiUtility::IsDTMFEvent( aKeyEvent, dtmfTone ) )
+ {
+ iInputBuffer->Append( dtmfTone );
+ }
+
+ __VTPRINTEXITR( "NECtrl.OfferKeyEvent %d", resp )
+ return resp;
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::DoCloseNumberEntry
+// -----------------------------------------------------------------------------
+//
+TInt CVtUiNumberEntryControl::DoCloseNumberEntry( TAny* aAny )
+ {
+ __VTPRINTENTER( "NECtrl.DoCloseNumberEntry" )
+ CVtUiNumberEntryControl* self =
+ reinterpret_cast< CVtUiNumberEntryControl* >( aAny );
+ self->HandleTimeoutCloseNumberEntry();
+ __VTPRINTEXIT( "NECtrl.DoCloseNumberEntry" )
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::HandleTimeoutCloseNumberEntry
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::HandleTimeoutCloseNumberEntry()
+ {
+ __VTPRINTENTER( "NECtrl.HandleTimeoutCloseNumberEntry" )
+ __VTPRINTEXIT( "NECtrl.HandleTimeoutCloseNumberEntry" )
+ iFeature.Stop();
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::IsDisplayingMenuOrDialog
+// -----------------------------------------------------------------------------
+//
+TBool CVtUiNumberEntryControl::IsDisplayingMenuOrDialog() const
+ {
+ __VTPRINTENTER( "NECtrl.IsDisplayingMenuOrDialog" )
+ CEikMenuBar* menuBar = iEikonEnv->AppUiFactory()->MenuBar();
+ const TBool result( CCoeEnv::Static()->AppUi()->IsDisplayingDialog() ||
+ ( menuBar && menuBar->IsDisplayed() ) );
+ __VTPRINTEXITR( "NECtrl.IsDisplayingMenuOrDialog %d", result )
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::ComponentId
+// -----------------------------------------------------------------------------
+//
+MVtUiComponent::TComponentId CVtUiNumberEntryControl::ComponentId() const
+ {
+ __VTPRINTENTER( "NECtrl.ComponentId" )
+ __VTPRINTEXIT( "NECtrl.ComponentId" )
+ return MVtUiComponent::EComponentIdNumberEntry;
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::ComponentAsControl
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CVtUiNumberEntryControl::ComponentAsControl()
+ {
+ __VTPRINTENTER( "NECtrl.ComponentAsControl" )
+ __VTPRINTEXIT( "NECtrl.ComponentAsControl" )
+ return this;
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::DoActivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::DoActivateL()
+ {
+ __VTPRINTENTER( "NECtrl.DoActivateL" )
+ OpenNumberEntry();
+ if ( iControlObserver )
+ {
+ iControlObserver->ControlActivatedL();
+ }
+ __VTPRINTEXIT( "NECtrl.DoActivateL" )
+ }
+
+// -----------------------------------------------------------------------------
+// CVtUiNumberEntryControl::DoDeactivateL
+// -----------------------------------------------------------------------------
+//
+void CVtUiNumberEntryControl::DoDeactivateL()
+ {
+ __VTPRINTENTER( "NECtrl.DoDeactivateL" )
+ CloseNumberEntry();
+ if ( iControlObserver )
+ {
+ iControlObserver->ControlDeactivated();
+ }
+ __VTPRINTEXIT( "NECtrl.DoDeactivateL" )
+ }
+
+// End of File