phoneapp/phoneuiview/src/cphonedtmfdialercontroller.cpp
branchRCL_3
changeset 62 5266b1f337bd
parent 9 8871b09be73b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiview/src/cphonedtmfdialercontroller.cpp	Wed Sep 01 12:30:10 2010 +0100
@@ -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