--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiview/src/cphonenumberentry.cpp Mon Jan 18 20:18:27 2010 +0200
@@ -0,0 +1,294 @@
+/*
+* 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: Handles the updating of number entry
+*
+*/
+
+
+#include <featmgr.h>
+#include <bmbubblemanager.h>
+#include <AknPhoneNumberEditor.h>
+
+#include "cphonenumberentry.h"
+#include "mnumberentry.h"
+#include "phoneconstants.h"
+#include "tphonecmdparamnumberentryobserver.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CPhoneNumberEntry::CPhoneNumberEntry( CBubbleManager& aBubbleManager ):
+ iBubbleManager ( aBubbleManager )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Second phase constructor
+// ---------------------------------------------------------------------------
+//
+void CPhoneNumberEntry::ConstructL()
+ {
+ if ( FeatureManager::FeatureSupported( KFeatureIdOnScreenDialer ) )
+ {
+ iUseDialer = ETrue;
+ }
+
+ iNumberEntryContents = HBufC::NewL( KPhoneNumberEntryBufferSize );
+ iPreviousNumberEntryContent = HBufC::NewL( KPhoneNumberEntryBufferSize );
+
+ }
+
+// ---------------------------------------------------------------------------
+// Static constructor
+// ---------------------------------------------------------------------------
+//
+CPhoneNumberEntry* CPhoneNumberEntry::NewL( CBubbleManager& aBubbleManager )
+ {
+ CPhoneNumberEntry* self =
+ new (ELeave) CPhoneNumberEntry( aBubbleManager );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CPhoneNumberEntry::~CPhoneNumberEntry()
+ {
+ delete iNumberEntryContents;
+ delete iPreviousNumberEntryContent;
+
+ }
+
+// ---------------------------------------------------------------------------
+// EnableTactileFeedback
+// ---------------------------------------------------------------------------
+//
+void CPhoneNumberEntry::EnableTactileFeedback( const TBool aEnable )
+ {
+ if ( iUseDialer )
+ {
+ iDialerNumberEntry->EnableTactileFeedback( aEnable );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// IsNumberEntryUsed
+// ---------------------------------------------------------------------------
+//
+TBool CPhoneNumberEntry::IsNumberEntryUsed() const
+ {
+ // Get the initial number from number entry window
+ if ( iUseDialer )
+ {
+ return iDialerNumberEntry->IsNumberEntryUsed();
+ }
+ else
+ {
+ return iBubbleManager.IsNumberEntryUsed();
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CPhoneNumberEntry::CountNumberEntryCharacters( )
+ {
+ TInt result = 0;
+
+ if ( iUseDialer )
+ {
+ if ( iDialerNumberEntry->IsNumberEntryUsed() )
+ {
+ TPtr ptr( iNumberEntryContents->Des() );
+ iDialerNumberEntry->GetTextFromNumberEntry( ptr );
+ result = iNumberEntryContents->Des().Length();
+ }
+ }
+ else
+ {
+ if ( iBubbleManager.IsNumberEntryUsed() )
+ {
+ TPtr ptr( iNumberEntryContents->Des() );
+ iBubbleManager.GetTextFromNumberEntry( ptr );
+ result = iNumberEntryContents->Des().Length();
+ }
+ }
+
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// SetNumberEntry
+// -----------------------------------------------------------------------------
+//
+void CPhoneNumberEntry::SetNumberEntry( MNumberEntry* aNumberEntry )
+ {
+ if ( iUseDialer )
+ {
+ iDialerNumberEntry = aNumberEntry;
+ }
+ }
+
+
+// -----------------------------------------------------------------------------
+// SetNumberEntryContent
+// -----------------------------------------------------------------------------
+//
+void CPhoneNumberEntry::SetNumberEntryContent( const TDesC& aContent )
+ {
+ if ( iUseDialer )
+ {
+ iDialerNumberEntry->SetTextToNumberEntry( aContent );
+ }
+ else
+ {
+ iBubbleManager.StartChanges();
+ iBubbleManager.SetTextToNumberEntry( aContent );
+ iBubbleManager.EndChanges();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// SetNumberEntryPromptText
+// -----------------------------------------------------------------------------
+//
+void CPhoneNumberEntry::SetNumberEntryPromptText( const TDesC& aPromptText )
+ {
+ if ( iUseDialer )
+ {
+ iDialerNumberEntry->SetNumberEntryPromptText( aPromptText );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneNumberEntry::HandleNumberEntryChanged
+// -----------------------------------------------------------------------------
+//
+void CPhoneNumberEntry::HandleNumberEntryChanged( )
+ {
+
+ TBool contentUpdated = CheckNumberEntryContent();
+
+ if( contentUpdated && iNEChangedCallBack.iFunction )
+ {
+ iNEChangedCallBack.CallBack();
+ }
+
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneNumberEntry::SetNumberEntryCallBack
+// -----------------------------------------------------------------------------
+//
+void CPhoneNumberEntry::SetNumberEntryChangedCallBack(
+ TPhoneCommandParam* aCommandParam )
+ {
+ TPhoneCmdParamNumberEntryObserver* neObserver =
+ static_cast<TPhoneCmdParamNumberEntryObserver*>( aCommandParam );
+
+ iNEChangedCallBack = neObserver->Observer();
+
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneNumberEntry::CheckNumberEntryContent
+// -----------------------------------------------------------------------------
+//
+TBool CPhoneNumberEntry::CheckNumberEntryContent()
+ {
+
+ TBool update = UpdatePreviousNumberEntryContent(
+ DialerNumberEntryEditor() );
+
+ if( !update )
+ {
+ update = UpdatePreviousNumberEntryContent( BubbleNumberEntryEditor() );
+ }
+
+ return update;
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneNumberEntry::CheckNumberEntryContent
+// -----------------------------------------------------------------------------
+//
+TBool CPhoneNumberEntry::UpdatePreviousNumberEntryContent(
+ CCoeControl* aEditor )
+ {
+ TBool ret( EFalse );
+
+ if( aEditor && iPreviousNumberEntryContent )
+ {
+ CAknPhoneNumberEditor* control =
+ static_cast<CAknPhoneNumberEditor*> ( aEditor );
+ TInt res = iPreviousNumberEntryContent->Compare( control->Text(0) );
+
+ if( res != 0 ) //string are different
+ {
+ iPreviousNumberEntryContent->Des().Zero();
+ TPtr ptr( iPreviousNumberEntryContent->Des() );
+ control->GetText( ptr );
+ ret = ETrue;
+ }
+ }
+
+ return ret;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CPhoneNumberEntry::CheckNumberEntryContent
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CPhoneNumberEntry::DialerNumberEntryEditor() const
+ {
+ CCoeControl* control = NULL;
+
+ if ( iUseDialer )
+ {
+ if ( iDialerNumberEntry->IsNumberEntryUsed() )
+ {
+ control = iDialerNumberEntry->GetNumberEntry();
+ }
+ }
+
+ return control;
+ }
+
+// -----------------------------------------------------------------------------
+// CPhoneNumberEntry::CheckNumberEntryContent
+// -----------------------------------------------------------------------------
+//
+CCoeControl* CPhoneNumberEntry::BubbleNumberEntryEditor() const
+ {
+ CCoeControl* control = NULL;
+
+ if ( iBubbleManager.IsNumberEntryUsed() )
+ {
+ control = iBubbleManager.GetNumberEntry();
+ }
+
+ return control;
+ }
+
+// END