--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiview/src/cphonedtmfdialercontroller.cpp Fri Feb 19 22:50:26 2010 +0200
@@ -0,0 +1,208 @@
+/*
+* Copyright (c) 2009 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: Controller for DTMF mode of Dialer
+*
+*/
+
+#include <StringLoader.h>
+#include <phoneui.rsg>
+#include <phoneui.mbg>
+#include <AknsUtils.h>
+#include <data_caging_path_literals.hrh>
+#include "phoneappcommands.hrh"
+#include "cphonedtmfdialercontroller.h"
+#include "cphonemainresourceresolver.h"
+#include "phonerssbase.h"
+
+_LIT ( KPhoneMifFileName, "phoneui.mif" );
+
+const CPhoneDialerController::TLocalButtonData KSendDtmfButtonData =
+ {
+ EPhoneCmdDtmfOk,
+ EAknsMinorGenericQgnIndiButtonSendDtmf,
+ EMbmPhoneuiQgn_indi_button_send_dtmf,
+ EMbmPhoneuiQgn_indi_button_send_dtmf_mask,
+ R_PHONEUI_DIALER_TOOLTIP_SEND
+ };
+
+// ---------------------------------------------------------------------------
+// CPhoneDtmfDialerController
+// ---------------------------------------------------------------------------
+//
+CPhoneDtmfDialerController::CPhoneDtmfDialerController(
+ CPhoneBubbleWrapper* aBubbleWrapper,
+ CCoeEnv& aCoeEnv ) :
+ CPhoneDialerController( aBubbleWrapper, aCoeEnv )
+ {
+ // No implementation required
+ }
+
+// ---------------------------------------------------------------------------
+// ~CPhoneDtmfDialerController
+// ---------------------------------------------------------------------------
+//
+CPhoneDtmfDialerController::~CPhoneDtmfDialerController()
+ {
+ delete iPromptText;
+ }
+
+// ---------------------------------------------------------------------------
+// NewLC
+// ---------------------------------------------------------------------------
+//
+CPhoneDtmfDialerController* CPhoneDtmfDialerController::NewLC(
+ CPhoneBubbleWrapper* aBubbleWrapper,
+ CCoeEnv& aCoeEnv )
+ {
+ CPhoneDtmfDialerController* self =
+ new (ELeave) CPhoneDtmfDialerController( aBubbleWrapper, aCoeEnv );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+//
+CPhoneDtmfDialerController* CPhoneDtmfDialerController::NewL(
+ CPhoneBubbleWrapper* aBubbleWrapper,
+ CCoeEnv& aCoeEnv )
+ {
+ CPhoneDtmfDialerController* self =
+ CPhoneDtmfDialerController::NewLC( aBubbleWrapper, aCoeEnv );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// ConstructL
+// ---------------------------------------------------------------------------
+//
+void CPhoneDtmfDialerController::ConstructL()
+ {
+ CPhoneDialerController::ConstructL();
+ }
+
+// ---------------------------------------------------------------------------
+// NumberEntryPromptTextL
+// ---------------------------------------------------------------------------
+//
+const TDesC& CPhoneDtmfDialerController::NumberEntryPromptTextL()
+ {
+ if ( !iPromptText )
+ {
+ // Load prompt text when it's needed for the first time.
+ // It can't be loaded in constructor as resource resolver
+ // is not yet properly set up at that time.
+ TInt resourceId =
+ CPhoneMainResourceResolver::Instance()->
+ ResolveResourceID( EPhoneDtmfDialerNumberEntryPromptText );
+ iPromptText = StringLoader::LoadL( resourceId, &iCoeEnv );
+ }
+ if ( iPromptText )
+ {
+ return *iPromptText;
+ }
+ return KNullDesC;
+ }
+
+// ---------------------------------------------------------------------------
+// GetButtonDataL
+// ---------------------------------------------------------------------------
+//
+TInt CPhoneDtmfDialerController::GetButtonData( TButtonIndex aIndex, RPointerArray<CButtonData>& aData ) const
+ {
+ TInt err = KErrNone;
+
+ if ( aIndex == ECallButton )
+ {
+ TFileName mifPath( KDriveZ );
+ mifPath.Append( KDC_APP_BITMAP_DIR );
+ mifPath.Append( KPhoneMifFileName );
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ CButtonData* btnData = NULL;
+ TRAP( err, btnData = CreateButtonDataL( KSendDtmfButtonData, skin, mifPath ) );
+ if ( !err )
+ {
+ err = aData.Append( btnData );
+ if ( err )
+ {
+ // append failed, delete created data to avoid memory leak
+ delete btnData;
+ }
+ }
+ }
+ else if ( aIndex == EClearButton )
+ {
+ // let base class handle backspace
+ err = CPhoneDialerController::GetButtonData( aIndex, aData );
+ }
+ else
+ {
+ // leave Phonebook button empty
+ }
+ return err;
+ }
+
+// ---------------------------------------------------------------------------
+// ButtonState
+// ---------------------------------------------------------------------------
+//
+TInt CPhoneDtmfDialerController::ButtonState( TButtonIndex aIndex ) const
+ {
+ TInt state = KErrNotFound;
+ // Call button has one only one state, phonebook button has no states.
+ // Clear button is handled by the base class.
+ if ( aIndex == ECallButton )
+ {
+ state = 0;
+ }
+ else if ( aIndex == EClearButton )
+ {
+ state = CPhoneDialerController::ButtonState( aIndex );
+ }
+ return state;
+ }
+
+// ---------------------------------------------------------------------------
+// GetButtonDimmed
+// ---------------------------------------------------------------------------
+//
+TBool CPhoneDtmfDialerController::ButtonDimmed( TButtonIndex aIndex ) const
+ {
+ TBool dimmed = ETrue;
+ // Call button is dimmed while number entry is empty. Phonebook button
+ // is empty and always dimmed. Clear button is handled by the base class.
+ if ( aIndex == ECallButton )
+ {
+ dimmed = !iNumberAvailable;
+ }
+ else if ( aIndex == EClearButton )
+ {
+ dimmed = CPhoneDialerController::ButtonDimmed( EClearButton );
+ }
+ return dimmed;
+ }
+
+// ---------------------------------------------------------------------------
+// EasyDialingAllowed
+// ---------------------------------------------------------------------------
+//
+TBool CPhoneDtmfDialerController::EasyDialingAllowed() const
+ {
+ return EFalse;
+ }
+
+// end of file