Revision: 201019 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 25 May 2010 12:41:50 +0300
branchRCL_3
changeset 34 b68fcd923911
parent 31 ba54057fe027
child 35 4853f386dec0
child 39 b8d67d6176f5
Revision: 201019 Kit: 2010121
phoneapp/phoneui/src/cphoneappui.cpp
phoneapp/phoneuicontrol/src/cphonestateincall.cpp
phoneapp/phoneuistates/src/cphoneemergency.cpp
phoneapp/phoneuiview/src/cphoneviewcontroller.cpp
phoneapp/phoneuiview/src/phoneringingtonesrv.cpp
phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp
phoneapp/silenceactionplugin/data/silence.rul
phoneapp/silenceactionplugin/data/silenceringingtone_activate.rul
phoneapp/silenceactionplugin/data/silenceringingtone_silence.rul
phoneapp/silenceactionplugin/group/bld.inf
phoneapp/silenceactionplugin/rom/silenceactionplugin.iby
phoneengine/PhoneCntFinder/ContactService/src/CPhCntContactManager.cpp
phoneengine/PhoneCntFinder/ContactService/src/tphcntservicerequestparams.cpp
phoneengine/audiohandling/src/cpeaudiodtmftoneplayer.cpp
phoneengine/phonemodel/inc/cpemessagehandler.h
phoneengine/phonemodel/src/cpemessagehandler.cpp
phoneuis/BubbleManager/Inc/BMTouchPane.h
phoneuis/BubbleManager/Src/BMBubbleOutlookBottom.cpp
phoneuis/BubbleManager/Src/BMBubbleOutlookBottomCnap.cpp
phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImCnap.cpp
phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImage.cpp
phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRiCnap.cpp
phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRight.cpp
phoneuis/BubbleManager/Src/BMBubbleOutlookMiddle.cpp
phoneuis/BubbleManager/Src/BMBubbleOutlookMiddleCnap.cpp
phoneuis/BubbleManager/Src/BMBubbleOutlookTopLeft.cpp
phoneuis/BubbleManager/Src/BMBubbleOutlookTopRight.cpp
phoneuis/BubbleManager/Src/BMTouchPane.cpp
phoneuis/dialer/inc/cdialer.h
phoneuis/dialer/src/cdialer.cpp
phoneuis/dialer/src/cdialernumberentry.cpp
phoneuis/dialer/tsrc/public/basic/T_VideoDtmfDialer/group/T_VideoDtmfDialer.mmp
phoneuis/dialer/tsrc/public/basic/T_VideoDtmfDialer/src/T_VideoDtmfDialerBlocks.cpp
phoneuis/easydialing/data/easydialingpluginresources.rss
phoneuis/easydialing/inc/easydialingplugin.h
phoneuis/easydialing/loc/easydialing.loc
phoneuis/easydialing/src/easydialinglistbox.cpp
phoneuis/easydialing/src/easydialingplugin.cpp
--- a/phoneapp/phoneui/src/cphoneappui.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneapp/phoneui/src/cphoneappui.cpp	Tue May 25 12:41:50 2010 +0300
@@ -35,7 +35,6 @@
 #include <AknsConstants.h>   // KAknsMessageSkinChange
 #include <bautils.h>
 #include <StringLoader.h>
-#include <aknsoundsystem.h>
 #include <aknnotewrappers.h> // for Notification for startup...
 #include <eikbtgpc.h>
 #include <eiksoftkeyimage.h> // EikSoftkeyImage
@@ -129,10 +128,6 @@
         
     iEnvChangeNotifier->Start();
 
-    // Push key sounds to sound system.
-    CAknKeySoundSystem* keySounds = KeySounds();
-    keySounds->PushContextL( R_PHONEUI_DEFAULT_SKEY_LIST );
-   
     iPhoneViewController = CPhoneViewController::NewL( ClientRect() );
     iPhoneUIController = CPhoneUIController::NewL( *iPhoneViewController );
 
--- a/phoneapp/phoneuicontrol/src/cphonestateincall.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneapp/phoneuicontrol/src/cphonestateincall.cpp	Tue May 25 12:41:50 2010 +0300
@@ -300,8 +300,6 @@
     // Remove call 
     iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
   
-    //Make sure that toolbar is not shown
-    iViewCommandHandle->ExecuteCommandL( EPhoneViewHideToolbar );
     BeginUiUpdateLC();
     SetDefaultFlagsL();
     if ( IsNumberEntryUsedL() )
@@ -363,6 +361,9 @@
 
     // Go to idle state
     iStateMachine->ChangeState( EPhoneStateIdle );
+
+    //Make sure that toolbar is not shown
+    iViewCommandHandle->ExecuteCommandL( EPhoneViewHideToolbar );
     }
 
 // -----------------------------------------------------------
--- a/phoneapp/phoneuistates/src/cphoneemergency.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneapp/phoneuistates/src/cphoneemergency.cpp	Tue May 25 12:41:50 2010 +0300
@@ -218,6 +218,8 @@
     if ( aCallId == KEmergencyCallId )
         {
         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveCallHeader, aCallId );
+        // Make sure that toolbar is not shown any more
+        iViewCommandHandle->ExecuteCommandL( EPhoneViewHideToolbar );
         // Remove emergency connecting note if still there
         iViewCommandHandle->ExecuteCommandL( EPhoneViewRemoveNote );
         // Close menu bar, if it is displayed
@@ -338,6 +340,14 @@
         // Close menu bar, if it is displayed
         iViewCommandHandle->ExecuteCommandL( EPhoneViewMenuBarClose );
 
+        // Dim toolbar items
+        SetToolbarDimming( ETrue );
+
+        // Request that dimmed toolbar is visible.
+        // Do it already here. Otherwice a white/black toolbar area is shortly shown and
+        // a white screen can be a result when touching it.
+        iViewCommandHandle->HandleCommandL( EPhoneViewShowToolbar );
+
         // Disable global notes when the phone is dialling
         TPhoneCmdParamBoolean globalNotifierParam;
         globalNotifierParam.SetBoolean( ETrue );
@@ -381,8 +391,6 @@
 
         SetTouchPaneButtons( EPhoneEmergencyCallButtons );
 
-        SetToolbarDimming( ETrue );
-
         ShowNoteL( EPhoneEmergencyConnectWaitNote );
 
         UpdateSetupCbaL();
--- a/phoneapp/phoneuiview/src/cphoneviewcontroller.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneapp/phoneuiview/src/cphoneviewcontroller.cpp	Tue May 25 12:41:50 2010 +0300
@@ -142,6 +142,8 @@
 const TInt KTouchDialerOpenEffect  = 3;
 const TInt KTouchDialerCloseEffect = 5;
 
+const TInt KDialerInputMaxChars( 100 );
+
 // ================= MEMBER FUNCTIONS =======================
 
 // ---------------------------------------------------------------------------
@@ -178,6 +180,8 @@
     // Reserve the title pane
     iStatusPane->AddTitlePaneHandlerL( *this );
     iStatusPane->ReserveTitlePane( *this );
+    // Set status pane dimming
+    iStatusPane->StatusPane().SetDimmed( iSecurityMode );
 
     iAppui = (CAknAppUi*)iEikEnv.EikAppUi();
     iCba = iEikEnv.AppUiFactory()->Cba();
@@ -2167,12 +2171,39 @@
 	iMenuController->SetSecurityMode( aIsEnabled );
 	if ( iDialer )
 		{
-		iDialerController->SetRestrictedDialer( aIsEnabled );
+        CDialingExtensionInterface* easyDialing = iDialer->GetEasyDialingInterface();
+        if ( easyDialing )
+            {
+            if ( aIsEnabled )
+                {
+                // Reset the Easy Dialing just in case, this clears the existing matches
+                // when restricted mode is activated
+                easyDialing->Reset();
+                }
+            else
+                {
+                if ( easyDialing->IsEnabled() )
+                    {
+                    // If Easy Dialing is enabled, set the input from the numeric entry
+                    // field for updating the search result when restricted mode is
+                    // deactivated.
+                    TBuf<KDialerInputMaxChars> buf;
+                    iDialer->NumberEntry()->GetTextFromNumberEntry( buf );
+                    easyDialing->SetInputL( buf );
+                    }
+                }
+            }
+        iDialerController->SetRestrictedDialer( aIsEnabled );
 		if ( iSecurityMode != aIsEnabled )
 			{
 			iDialer->RelayoutAndDraw();
 			}
 		}
+    if ( iSecurityMode != aIsEnabled )
+        {
+        // Update status pane dimming
+        iStatusPane->StatusPane().SetDimmed( aIsEnabled );
+        }
 	iSecurityMode = aIsEnabled;
 	}
 
@@ -3623,53 +3654,32 @@
     __LOGMETHODSTARTEND(EPhoneUIView,
         "CPhoneViewController::SwitchLayoutToFlatStatusPaneL()" );
 
-    TInt currentLayout = iStatusPane->StatusPane().CurrentLayoutResId();
-
     if ( aSwitch )
         {
-        // If current layout is different than flat layout then we
-        // need to do PushDefault for navipane and SwitchLayoutL for
-        // statuspane.
-        if ( currentLayout != R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ||
-             currentLayout != R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT )
+        SwapEmptyIndicatorPaneInSecureStateL( ETrue );
+        if ( !Layout_Meta_Data::IsLandscapeOrientation() )
             {
-            SwapEmptyIndicatorPaneInSecureStateL( ETrue );
-
-            // Push default so that Operator name can be shown in title pane.
-            iStatusPane->NaviPane().PushDefaultL();
-
-            if ( !Layout_Meta_Data::IsLandscapeOrientation() )
-                {
-                iStatusPane->StatusPane().SwitchLayoutL
-                ( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
-                }
-            else
-                {
-                iStatusPane->StatusPane().SwitchLayoutL
-                        ( R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT );
-                }
+            iStatusPane->StatusPane().SwitchLayoutL
+                    ( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT );
+            }
+        else
+            {
+            iStatusPane->StatusPane().SwitchLayoutL
+                    ( R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT );
             }
         }
     else
         {
-        // If current layout is flat layout then do Pop for navipane,
-        // layout is something else there is no need to do Pop and
-        // SwitchLayoutL for statuspane.
-        if ( currentLayout == R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ||
-             currentLayout == R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT )
+        SwapEmptyIndicatorPaneInSecureStateL( EFalse );
+        if ( !Layout_Meta_Data::IsLandscapeOrientation() )
             {
-            SwapEmptyIndicatorPaneInSecureStateL( EFalse );
-            
-            if ( !Layout_Meta_Data::IsLandscapeOrientation() )
-                {
-                iStatusPane->StatusPane().SwitchLayoutL
-                        ( R_AVKON_STATUS_PANE_LAYOUT_IDLE );
-                }
-            else
-                {
-                iStatusPane->StatusPane().SwitchLayoutL
-                        ( R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT );
-                }
+            iStatusPane->StatusPane().SwitchLayoutL
+                    ( R_AVKON_STATUS_PANE_LAYOUT_IDLE );
+            }
+        else
+            {
+            iStatusPane->StatusPane().SwitchLayoutL
+                    ( R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT );
             }
         }
     // ApplyCurrentSettingsL is called whenever statuspane
@@ -3786,9 +3796,6 @@
         {
         iDialerActive = ETrue;
 
-        // Hide in-call view toolbar
-        iToolbarController->HideToolbar();
-
         // Ensure that toolbar and menu commands are up-to-date 
         TBuf<1> temp; // we are only interested if the text is empty or not
         iDialer->GetTextFromNumberEntry( temp );
@@ -3798,23 +3805,27 @@
         iDialerView->DrawableWindow()->SetOrdinalPosition(
             iPhoneView->DrawableWindow()->OrdinalPosition() );
 
+        // Hide in-call view toolbar
+        iToolbarController->HideToolbar();
+        
         SwitchLayoutToFlatStatusPaneL( ETrue );
 
+        // Don't make dialer view visible before status pane is updated.
+        // This prevents unnecessary resizings.
+        // But do it right away after it. Otherwice a black toolbar area is shortly shown.
+        iDialerView->MakeVisible( ETrue );
+        // Number entry is emptied when dialer is hidden but drawing doesn't
+        // succeed at that point as dialer is hidden first. So must draw
+        // dialer as soon as it becomes visible to prevent the flashing of
+        // number entry (DrawDeferred() isn't fast enough here).
+        iDialerView->DrawNow();
+      
         iPhoneView->DrawableWindow()->SetOrdinalPosition( -1 );
         iPhoneView->MakeVisible( EFalse );
 
         // Update control stack
         iAppui->AddToStackL( iDialerView );
         iAppui->RemoveFromStack( iPhoneView );
-
-        // Don't make dialer view visible before status pane is updated.
-        // This prevents unnecessary resizings.
-        iDialerView->MakeVisible( ETrue );
-        // Number entry is emptied when dialer is hidden but drawing doesn't
-        // succeed at that point as dialer is hidden first. So must draw
-        // dialer as soon as it becomes visible to prevent the flashing of
-        // number entry (DrawDeferred() isn't fast enough here).
-        iDialerView->DrawNow();
         }
     }
 
--- a/phoneapp/phoneuiview/src/phoneringingtonesrv.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneapp/phoneuiview/src/phoneringingtonesrv.cpp	Tue May 25 12:41:50 2010 +0300
@@ -265,6 +265,14 @@
     TProfileRingingType ringingType = (TProfileRingingType)aMessage.Int2();
 
     TInt ttsLen = aMessage.GetDesLength( 0 );
+    
+    if( ttsLen <= 0 )
+        {        
+        PHONEUIVIEW_PRINTF("CPhoneRingingToneServer::PlayTtsTone: TTS length error: %d!", ttsLen);       
+        PHONEUIVIEW_PRINT("CPhoneRingingToneServer::PlayTtsTone >");         
+        return;          
+        }
+    
     HBufC* textToSay = HBufC::New( ttsLen );
     if ( !textToSay )
         {
--- a/phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneapp/phoneuivoipextension/src/cphonevcchandler.cpp	Tue May 25 12:41:50 2010 +0300
@@ -312,7 +312,7 @@
     
       if ( tone == 1 )
            {
-           globalNoteParam.SetTone( EAvkonSIDConfirmationTone );
+           globalNoteParam.SetTone( EAvkonSIDDefaultSound );
            }
        else
            {
--- a/phoneapp/silenceactionplugin/data/silence.rul	Tue May 11 16:13:03 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-<script xmlns="http://www.nokia.com/ns/cep/script/1.0/"
-xmlns:cep="http://www.nokia.com/ns/cep/1.0/">
-
-    <!-- Check if we have incoming call and we receive display down orientation event -->
-    <if>
-        <and>
-            <!-- Must have a ringin call and receive orientation event from sensor -->
-            <equals>
-                <contextRef source='Call' type='State'/>
-                <string>Ringing</string>
-            </equals>
-            <equals>
-                <contextRef source='Sensor' type='Setting.Active'/>
-                <string>On</string>
-            </equals>
-            <!-- Check that turning interaction is set -->
-            <equals>
-                <contextRef source='Sensor' type='Setting.TurningInteraction.SilenceCalls'/>
-                <string>On</string>
-            </equals>
-            <!-- ...and previous orientation is not 'Undefined' ... -->
-            <notEqual>
-                <contextRef source='Sensor' type='Event.Orientation.Previous'/>
-                <string>Undefined</string>
-            </notEqual>
-            <contextChanged>
-                <contextRef source='Sensor' type='Event.Orientation'/>
-            </contextChanged>
-            <equals>
-                <contextRef source='Sensor' type='Event.Orientation'/>
-                <string>DisplayDownwards</string>
-            </equals>
-        </and>
-        <actions>
-            <!-- DEBUG -->
-            <!-- <publishContext><contextRef source="Test" type="Log" value="silence.rul - 01 silence call only"/></publishContext> -->
-
-            <!-- Silence ringing tone -->
-            <Phone Command='Silence'/>
-            <!-- Vibra feedback -->
-            <Vibra Mode='Start' Delay='0' Repeats='2' RepeatInterval='200' Duration='50' Intensity='50'/>
-        </actions>
-    </if>
-
-</script>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/silenceactionplugin/data/silenceringingtone_activate.rul	Tue May 25 12:41:50 2010 +0300
@@ -0,0 +1,63 @@
+<script xmlns="http://www.nokia.com/ns/cep/script/1.0/" xmlns:cep="http://www.nokia.com/ns/cep/1.0/">
+    <!-- Do nothing if the following pre-conditions do not match -->
+    <if>
+        <or>
+            <!-- sensor settings are disabled -->
+            <notEqual>
+                <contextRef source='Sensor' type='Setting.Active' value='On'/>
+            </notEqual>
+            <!-- silence ringing tone turning interaction is disabled -->
+            <notEqual>
+                <contextRef source='Sensor' type='Setting.TurningInteraction.SilenceCalls' value='On'/>
+            </notEqual>
+        </or>
+        <actions>
+            <!-- do nothing -->
+        </actions>
+    </if>
+
+    <!-- activate silence ringing tone feature and orientation sensor channel-->
+    <elseIf>
+        <!-- call ringing -->
+        <contextChanged>
+            <contextRef source='Call' type='State' value='Ringing'/>
+        </contextChanged>
+        <actions>
+            <!-- Activate orientation channel (0x01) from sensor source (0x10282DF0) -->
+            <sourceCommand uid='0x10282DF0'>
+                <sensorCommand channelId='0x01' id='activate'/>
+            </sourceCommand>
+            <!-- Publish context that indicates that alarm is active -->
+            <publishContext define='true'>
+                <contextRef source='Feature' type='SilenceRingingTone.Active' value='true'/>
+            </publishContext>
+        </actions>
+    </elseIf>
+
+    <!-- deactivate silence ringing tone feature and orientation sensor channel-->
+    <elseIf>
+        <or>
+            <!-- call was connected -->
+            <contextChanged>
+                <contextRef source='Call' type='State' value='Connected'/>
+            </contextChanged>
+            <!-- call was disconnected -->
+            <contextChanged>
+                <contextRef source='Call' type='State' value='Disconnected'/>
+            </contextChanged>
+            <contextChanged>
+                <contextRef source='Call' type='State' value='Disconnecting'/>
+            </contextChanged>
+        </or>
+        <actions>
+            <!-- Deactivate orientation channel (0x01) from sensor source (0x10282DF0) -->
+            <sourceCommand uid='0x10282DF0'>
+                <sensorCommand channelId='0x01' id='deactivate'/>
+            </sourceCommand>
+            <!-- Publish context that indicates that alarm is active -->
+            <publishContext define='true'>
+                <contextRef source='Feature' type='SilenceRingingTone.Active' value='false'/>
+            </publishContext>
+        </actions>
+    </elseIf>
+</script>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/silenceactionplugin/data/silenceringingtone_silence.rul	Tue May 25 12:41:50 2010 +0300
@@ -0,0 +1,30 @@
+<script xmlns="http://www.nokia.com/ns/cep/script/1.0/" xmlns:cep="http://www.nokia.com/ns/cep/1.0/">
+    <!-- do nothing if the pre-conditions do not match -->
+    <if>
+        <!-- silence ringing tone feature is not active -->
+        <notEqual>
+            <contextRef source='Feature' type='SilenceRingingTone.Active' value='true'/>
+        </notEqual>
+        <actions>
+            <!-- do nothing -->
+        </actions>
+    </if>
+
+    <!-- silence the ringing tone -->
+    <elseIf>
+        <and>
+            <!-- display is turned down -->
+            <contextChanged>
+                <contextRef source='Sensor' type='Event.Orientation' value='DisplayDownwards'/>
+            </contextChanged>
+            <!-- previous orientation state is not undefined -->
+            <notEqual>
+                <contextRef source='Sensor' type='Event.Orientation.Previous' value='Undefined'/>
+            </notEqual>
+        </and>
+        <actions>
+            <!-- Silence ringing tone -->
+            <Phone Command='Silence'/>
+        </actions>
+    </elseIf>
+</script>
\ No newline at end of file
--- a/phoneapp/silenceactionplugin/group/bld.inf	Tue May 11 16:13:03 2010 +0300
+++ b/phoneapp/silenceactionplugin/group/bld.inf	Tue May 25 12:41:50 2010 +0300
@@ -23,11 +23,17 @@
 DEFAULT
 
 PRJ_EXPORTS
-../data/silence.rul\
-	/epoc32/RELEASE/winscw/UDEB/Z/private/10282BC4/Rules/silence.rul
+../data/silenceringingtone_activate.rul\
+	/epoc32/RELEASE/winscw/UDEB/Z/private/10282BC4/Rules/silenceringingtone_activate.rul
+
+../data/silenceringingtone_activate.rul\
+	/epoc32/data/Z/private/10282BC4/Rules/silenceringingtone_activate.rul
 
-../data/silence.rul\
-	/epoc32/data/Z/private/10282BC4/Rules/silence.rul
+../data/silenceringingtone_silence.rul\
+	/epoc32/RELEASE/winscw/UDEB/Z/private/10282BC4/Rules/silenceringingtone_silence.rul
+
+../data/silenceringingtone_silence.rul\
+	/epoc32/data/Z/private/10282BC4/Rules/silenceringingtone_silence.rul
 
 ../data/silenceactionplugin_stub.SIS\
     /epoc32/data/z/system/install/silenceactionplugin_stub.SIS
--- a/phoneapp/silenceactionplugin/rom/silenceactionplugin.iby	Tue May 11 16:13:03 2010 +0300
+++ b/phoneapp/silenceactionplugin/rom/silenceactionplugin.iby	Tue May 25 12:41:50 2010 +0300
@@ -22,7 +22,8 @@
 #ifdef RD_CONTEXT_FRAMEWORK
 
 ECOM_PLUGIN( silenceactionplugin.dll, silenceactionplugin.rsc )
-data=\epoc32\data\Z\private\10282BC4\Rules\silence.rul    private\10282BC4\Rules\silence.rul
+data=\epoc32\data\Z\private\10282BC4\Rules\silenceringingtone_activate.rul    private\10282BC4\Rules\silenceringingtone_activate.rul
+data=\epoc32\data\Z\private\10282BC4\Rules\silenceringingtone_silence.rul    private\10282BC4\Rules\silenceringingtone_silence.rul
 data=ZSYSTEM\install\silenceactionplugin_stub.SIS     System\Install\silenceactionplugin_stub.SIS
 
 #endif	// RD_CONTEXT_FRAMEWORK
--- a/phoneengine/PhoneCntFinder/ContactService/src/CPhCntContactManager.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneengine/PhoneCntFinder/ContactService/src/CPhCntContactManager.cpp	Tue May 25 12:41:50 2010 +0300
@@ -74,7 +74,6 @@
         {
         TRAP_IGNORE( iContactManager->ContactStoresL().CloseAll( *this ) );
         }
-    delete iContactStore;
     delete iContactManager;
     delete iContactStoreUris;
     }
--- a/phoneengine/PhoneCntFinder/ContactService/src/tphcntservicerequestparams.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneengine/PhoneCntFinder/ContactService/src/tphcntservicerequestparams.cpp	Tue May 25 12:41:50 2010 +0300
@@ -124,11 +124,10 @@
     
     AiwContactAssign::TAiwSingleContactAssignDataV1 data = 
         AiwContactAssign::TAiwSingleContactAssignDataV1();
-        
-    // EHideEditorExit has to be set because otherwise AIW provider offers
-    // exit menu item which will also exit the phone application.
-    data.SetFlags( AiwContactAssign::ECreateNewContact | 
-                   AiwContactAssign::EHideEditorExit ); 
+    
+	// By default an existing contact is opened, we'll override this behaviour
+	// by setting the ECreateNewContact flag
+    data.SetFlags( AiwContactAssign::ECreateNewContact );
 
     iGenericParamList->AppendL(
         TAiwGenericParam(
@@ -191,8 +190,6 @@
     AiwContactAssign::TAiwSingleContactAssignDataV1 data = 
         AiwContactAssign::TAiwSingleContactAssignDataV1();
         
-    data.SetFlags( AiwContactAssign::EHideEditorExit );
-    
     iGenericParamList->AppendL(
         TAiwGenericParam(
             EGenericParamPhoneNumber,
--- a/phoneengine/audiohandling/src/cpeaudiodtmftoneplayer.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneengine/audiohandling/src/cpeaudiodtmftoneplayer.cpp	Tue May 25 12:41:50 2010 +0300
@@ -33,7 +33,7 @@
 
 // CONSTANTS
 const TInt KDtmfSilent = 0;
-const TInt KDtmfPauseAfterTone = 100000;
+const TInt KDtmfPauseAfterTone = 45000;
 const TInt KDtmfToneZero = 0;
 const TInt KBufSize = 10;
 _LIT( KPhoneTone_Asterisk, "*+w" );
--- a/phoneengine/phonemodel/inc/cpemessagehandler.h	Tue May 11 16:13:03 2010 +0300
+++ b/phoneengine/phonemodel/inc/cpemessagehandler.h	Tue May 25 12:41:50 2010 +0300
@@ -761,6 +761,11 @@
         TInt HandleDialCallL( const TBool aClientCall );      
 
         /**
+        * Reset CCCECallParameters to prevent of use a previous call´s parameters
+        */
+        void ResetClientCallData();
+
+        /**
         * Checks if there are any connected video calls
         * @return   EFalse: no active video call,
         *           ETrue: active video call
--- a/phoneengine/phonemodel/src/cpemessagehandler.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneengine/phonemodel/src/cpemessagehandler.cpp	Tue May 25 12:41:50 2010 +0300
@@ -1868,6 +1868,10 @@
         {
         HandleClientCallData();
         }
+    else
+        {
+        ResetClientCallData();
+        }
         
     //Get number of calls
     numberOfCalls = iCallHandling.GetNumberOfCalls();
@@ -1923,6 +1927,23 @@
     }
 
 // -----------------------------------------------------------------------------
+// CPEMessageHandler::ResetClientCallData
+// Reset CCCECallParameters to prevent of use a previous call´s parameters
+// -----------------------------------------------------------------------------
+//
+void CPEMessageHandler::ResetClientCallData()
+    {
+    TEFLOGSTRING( KTAINT, "PE CPEMessageHandler::ResetClientCallData()" );
+
+    CCCECallParameters& params = iDataStore.CallParameters();
+    params.SetLineType( CCCECallParameters::ECCELineTypePrimary );
+    params.SetUUSId( KNullDesC() );
+    params.SetBearer( KNullDesC8() );
+    params.SetSubAddress( KNullDesC() );
+    params.SetOrigin( CCCECallParameters::ECCECallOriginPhone );
+    }
+
+// -----------------------------------------------------------------------------
 // CPEMessageHandler::HandleSatCallRequestCompleted
 // Sends respond to SAT after dial request completion
 // -----------------------------------------------------------------------------
--- a/phoneuis/BubbleManager/Inc/BMTouchPane.h	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Inc/BMTouchPane.h	Tue May 25 12:41:50 2010 +0300
@@ -163,7 +163,15 @@
         * Replaces button with other.
         */
         void ReplaceButtonL( TInt aButtonIndex, TInt aResourceId );
-        
+
+        /**
+        * Set used button layout.
+        * @param aButtonIndex Button index.
+        * @param aColumn Column index.
+        * @param aRow Row index.
+        */
+        void SetButtonLayout( TInt aButtonIndex, TInt aColumn, TInt aRow );
+
     private:
 
         /**
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottom.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottom.cpp	Tue May 25 12:41:50 2010 +0300
@@ -244,18 +244,7 @@
                 iFrameId,
                 outerRect,
                 innerRect,
-                iBubble );
-
-            if ( iHeader->CallObjectImage() &&
-                 !iHeader->CallObjectText().Length() )
-                {
-                // Add transparency
-                BubbleUtils::AddTransparencyToBubbleImageL( 
-                    KAknsIIDQsnFrCall2RectCoMask, // gradient tp mask
-                    outerRect,
-                    innerRect,
-                    iBubble );                    
-                }                    
+                iBubble );                 
                 
             break;
             }
@@ -278,22 +267,18 @@
             BubbleLayout2::BubbleFrameInnerOuterRects( frameRect, 
                                                        outerRect, 
                                                        innerRect);
-        
-            TAknsItemID coMaskFrameId;
+
             if ( callState == CBubbleManager::EOnHold )
                 {
                 iFrameId = KAknsIIDQsnFrCall2Bubble;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleCoMask;    
                 }
             else if ( callState == CBubbleManager::EDisconnected )
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleFirstDisconn;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask;            
                 }
             else
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleFirst;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask;                
                 }                
             
             // for possible frame draw
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomCnap.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomCnap.cpp	Tue May 25 12:41:50 2010 +0300
@@ -240,17 +240,6 @@
                 outerRect,
                 innerRect,
                 iBubble );
-                
-            if ( iHeader->CallObjectImage() &&
-                 !iHeader->CallObjectText().Length() )
-                {
-                // Add transparency
-                BubbleUtils::AddTransparencyToBubbleImageL( 
-                    KAknsIIDQsnFrCall2RectCoMask, // gradient tp mask
-                    outerRect,
-                    innerRect,
-                    iBubble );                    
-                }    
                                 
             break;
             }
@@ -275,21 +264,17 @@
                                                        outerRect, 
                                                        innerRect);
         
-            TAknsItemID coMaskFrameId;
             if ( callState == CBubbleManager::EOnHold )
                 {
                 iFrameId = KAknsIIDQsnFrCall2Bubble;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleCoMask;    
                 }
             else if ( callState == CBubbleManager::EDisconnected )
                 {
-                iFrameId = KAknsIIDQsnFrCall2BubbleFirstDisconn;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask;            
+                iFrameId = KAknsIIDQsnFrCall2BubbleFirstDisconn;           
                 }
             else
                 {
-                iFrameId = KAknsIIDQsnFrCall2BubbleFirst;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask;                
+                iFrameId = KAknsIIDQsnFrCall2BubbleFirst;               
                 }                
             
             // for possible frame draw
@@ -368,15 +353,6 @@
                 innerRect,
                 iBubble );
             
-            
-            // Add transparency
-            BubbleUtils::AddTransparencyToBubbleImageL( 
-                coMaskFrameId,
-                outerRect,
-                innerRect,
-                iBubble ); 
-            
-                
             break;
             }        
                 
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImCnap.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImCnap.cpp	Tue May 25 12:41:50 2010 +0300
@@ -158,22 +158,18 @@
             BubbleLayout2::BubbleFrameInnerOuterRects( frameRect, 
                                                        outerRect, 
                                                        innerRect);
-            
-            TAknsItemID coMaskFrameId;
+
             if ( callState == CBubbleManager::EOnHold )
                 {
                 iFrameId = KAknsIIDQsnFrCall2Bubble;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleCoMask;    
                 }
             else if ( callState == CBubbleManager::EDisconnected )
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleFirstDisconn;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask;            
                 }
             else
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleFirst;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask;                
                 } 
                 
             iOuterRect = outerRect;
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImage.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomImage.cpp	Tue May 25 12:41:50 2010 +0300
@@ -155,22 +155,18 @@
             BubbleLayout2::BubbleFrameInnerOuterRects( frameRect, 
                                                        outerRect, 
                                                        innerRect);
-            
-            TAknsItemID coMaskFrameId;
+
             if ( callState == CBubbleManager::EOnHold )
                 {
                 iFrameId = KAknsIIDQsnFrCall2Bubble;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleCoMask;    
                 }
             else if ( callState == CBubbleManager::EDisconnected )
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleFirstDisconn;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask;            
                 }
             else
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleFirst;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleFirstCoMask;                
                 } 
                 
             iOuterRect = outerRect;
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRiCnap.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRiCnap.cpp	Tue May 25 12:41:50 2010 +0300
@@ -242,18 +242,7 @@
                 iFrameId,
                 outerRect,
                 innerRect,
-                iBubble );
-                
-            if ( iHeader->CallObjectImage() &&
-                 !iHeader->CallObjectText().Length() )
-                {
-                // Add transparency
-                BubbleUtils::AddTransparencyToBubbleImageL( 
-                    KAknsIIDQsnFrCall2RectCoMask, // gradient tp mask
-                    outerRect,
-                    innerRect,
-                    iBubble );                    
-                }    
+                iBubble );  
                                 
             break;
             }
@@ -277,22 +266,18 @@
             BubbleLayout2::BubbleFrameInnerOuterRects( frameRect, 
                                                        outerRect, 
                                                        innerRect);
-        
-            TAknsItemID coMaskFrameId;
+
             if ( callState == CBubbleManager::EOnHold )
                 {
                 iFrameId = KAknsIIDQsnFrCall2Bubble;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleCoMask;    
                 }
             else if ( callState == CBubbleManager::EDisconnected )
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleSecondDisconn;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleSecondCoMask;            
                 }
             else
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleSecond;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleSecondCoMask;                
                 }                
             
             // for possible frame draw
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRight.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookBottomRight.cpp	Tue May 25 12:41:50 2010 +0300
@@ -237,17 +237,7 @@
                 outerRect,
                 innerRect,
                 iBubble );
-                
-            if ( iHeader->CallObjectImage()  &&
-                 !iHeader->CallObjectText().Length() )
-                {
-                // Add transparency
-                BubbleUtils::AddTransparencyToBubbleImageL( 
-                    KAknsIIDQsnFrCall2RectCoMask, // gradient tp mask
-                    outerRect,
-                    innerRect,
-                    iBubble );                    
-                }                
+                          
             break;
             }
         case CBubbleManager::EDisconnected:
@@ -270,22 +260,18 @@
             BubbleLayout2::BubbleFrameInnerOuterRects( frameRect, 
                                                        outerRect, 
                                                        innerRect);
-            
-            TAknsItemID coMaskFrameId;
+
             if ( callState == CBubbleManager::EOnHold )
                 {
                 iFrameId = KAknsIIDQsnFrCall2Bubble;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleCoMask;
                 }
             else if ( callState == CBubbleManager::EDisconnected )
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleSecondDisconn;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleSecondCoMask;
                 }
             else
                 {
                 iFrameId = KAknsIIDQsnFrCall2BubbleSecond;
-                coMaskFrameId = KAknsIIDQsnFrCall2BubbleSecondCoMask;
                 }
             
             iOuterRect = outerRect;
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookMiddle.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookMiddle.cpp	Tue May 25 12:41:50 2010 +0300
@@ -261,17 +261,7 @@
                 outerRect,
                 innerRect,
                 iBubble );
-                
-            if ( iHeader->CallObjectImage()  &&
-                 !iHeader->CallObjectText().Length() )
-                {
-                // Add transparency
-                BubbleUtils::AddTransparencyToBubbleImageL( 
-                    KAknsIIDQsnFrCall2RectCoMask, // gradient tp mask
-                    outerRect,
-                    innerRect,
-                    iBubble );                    
-                }                
+        
             break;
             }
         case CBubbleManager::EDisconnected:
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookMiddleCnap.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookMiddleCnap.cpp	Tue May 25 12:41:50 2010 +0300
@@ -231,16 +231,6 @@
                 innerRect,
                 iBubble );
                 
-            if ( iHeader->CallObjectImage()  &&
-                 !iHeader->CallObjectText().Length() )
-                {
-                // Add transparency
-                BubbleUtils::AddTransparencyToBubbleImageL( 
-                    KAknsIIDQsnFrCall2RectCoMask, // gradient tp mask
-                    outerRect,
-                    innerRect,
-                    iBubble );                    
-                }                
             break;
             }
             
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookTopLeft.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookTopLeft.cpp	Tue May 25 12:41:50 2010 +0300
@@ -210,17 +210,7 @@
                 outerRect,
                 innerRect,
                 iBubble );
-                
-            if ( iHeader->CallObjectImage() &&
-                 !iHeader->CallObjectText().Length() )
-                {
-                // Add transparency
-                BubbleUtils::AddTransparencyToBubbleImageL( 
-                    KAknsIIDQsnFrCall2RectCoMask, // gradient tp mask
-                    outerRect,
-                    innerRect,
-                    iBubble );                    
-                }                
+              
             break;
             }
         case CBubbleManager::EDisconnected:
--- a/phoneuis/BubbleManager/Src/BMBubbleOutlookTopRight.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMBubbleOutlookTopRight.cpp	Tue May 25 12:41:50 2010 +0300
@@ -207,17 +207,7 @@
                 outerRect,
                 innerRect,
                 iBubble );
-                
-            if ( iHeader->CallObjectImage() &&
-                 !iHeader->CallObjectText().Length() )
-                {
-                // Add transparency
-                BubbleUtils::AddTransparencyToBubbleImageL( 
-                    KAknsIIDQsnFrCall2RectCoMask, // gradient tp mask
-                    outerRect,
-                    innerRect,
-                    iBubble );                    
-                }
+
             break;
             }
         case CBubbleManager::EDisconnected:
--- a/phoneuis/BubbleManager/Src/BMTouchPane.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/BubbleManager/Src/BMTouchPane.cpp	Tue May 25 12:41:50 2010 +0300
@@ -80,45 +80,74 @@
 void CBubbleTouchPane::SizeChanged( )
     {
     if ( !iButtons.Count() )
+        {
         return;
-    
+        }
+
     // button index
     //  1 2  OR  1 2 3 4
     //  3 4
-    TInt i = 0;
-    
+    TInt buttonInd = 0;
+
     TInt rows = 0;
     TInt columns = 0;
     BubbleLayout6::button_grp_row_column_count(0, rows, columns);
-    for ( TInt row = 0; row < rows; row++ )
+    if ( Layout_Meta_Data::IsLandscapeOrientation() &&
+        !Layout_Meta_Data::IsMirrored() )
         {
+        // Set places of the touch buttons so that they correspond places in portrait.
+        // However, don't change order if mirrored display is used. 
         for ( TInt col = 0; col < columns; col++ )
             {
-            TAknLayoutRect buttonPane;        
-            buttonPane.LayoutRect( 
-                Rect(), 
-                BubbleLayout6::cell_call6_button_pane(0, col, row) );
-            
-            if ( i < iButtons.Count() && iButtons[i] )
+            for ( TInt row = rows - 1; row >= 0; row-- )
+                {
+                SetButtonLayout( buttonInd, col, row );
+                buttonInd++;
+                }
+            }
+        }
+    else
+        {
+        for ( TInt row = 0; row < rows; row++ )
+            {
+            for ( TInt col = 0; col < columns; col++ )
                 {
-                // Button control layout according to background
-                AknLayoutUtils::LayoutControl( 
-                    iButtons[i], 
-                    buttonPane.Rect(), 
-                    BubbleLayout6::button_call6_background_graphics(0)); 
-                
-                TAknLayoutText text;
-                text.LayoutText( buttonPane.Rect(), 
-                        BubbleLayout6::button_call6_function_text(0));
+                SetButtonLayout( buttonInd, col, row );
+                buttonInd++;
+                }
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// SetButtonLayout
+// ---------------------------------------------------------------------------
+//
+void CBubbleTouchPane::SetButtonLayout( TInt aButtonIndex, TInt aColumn, TInt aRow )
+    {
+    TAknLayoutRect buttonPane;        
+    buttonPane.LayoutRect( 
+        Rect(), 
+        BubbleLayout6::cell_call6_button_pane(0, aColumn, aRow) );
 
-                TAknLayoutRect icon;
-                icon.LayoutRect( buttonPane.Rect(), 
-                        BubbleLayout6::button_call6_function_graphics(0));   
-                
-                iButtons[i]->SetIconSize( icon.Rect().Size() );
-                iButtons[i++]->SetLayout( text, icon.Rect() );
-                }
-            }            
+    if ( aButtonIndex < iButtons.Count() && iButtons[aButtonIndex] )
+        {
+        // Button control layout according to background
+        AknLayoutUtils::LayoutControl( 
+            iButtons[aButtonIndex], 
+            buttonPane.Rect(), 
+            BubbleLayout6::button_call6_background_graphics(0)); 
+
+        TAknLayoutText text;
+        text.LayoutText( buttonPane.Rect(), 
+                BubbleLayout6::button_call6_function_text(0));
+
+        TAknLayoutRect icon;
+        icon.LayoutRect( buttonPane.Rect(), 
+                BubbleLayout6::button_call6_function_graphics(0));   
+
+        iButtons[aButtonIndex]->SetIconSize( icon.Rect().Size() );
+        iButtons[aButtonIndex]->SetLayout( text, icon.Rect() );
         }
     }
 
--- a/phoneuis/dialer/inc/cdialer.h	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/dialer/inc/cdialer.h	Tue May 25 12:41:50 2010 +0300
@@ -397,6 +397,11 @@
         void UpdateEdwinState( TEditorType aType );
 
         /**
+         * Disables numeric key sounds, or removed disabling.
+         */
+        void DisableNumericKeySounds( TBool aSounds );
+
+        /**
          * Loads easydialing plugin. If loading fails (for instance when
          * easydialing feature flag is not enabled in the device),
          * iEasyDialer will be NULL after this function returns.
@@ -486,6 +491,12 @@
          * for the alphabetic characters.
          */
         TEditorType iEditorType;
+        
+        /*
+         * ETrue if numeric keysounds are disabled. They are disabled when number
+         * key should produce DTMF tone.
+         */
+        TBool iNumericKeySoundsDisabled;
     };
 
 #endif      // CDIALER_H
--- a/phoneuis/dialer/src/cdialer.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/dialer/src/cdialer.cpp	Tue May 25 12:41:50 2010 +0300
@@ -26,6 +26,7 @@
 #include <AknUtils.h>
 #include <AknsUtils.h>
 #include <aknappui.h>
+#include <aknsoundsystem.h>
 #include <aknlayoutscalable_apps.cdl.h>
 #include <layoutmetadata.cdl.h>
 #include <data_caging_path_literals.hrh>    // for KDC_APP_RESOURCE_DIR
@@ -35,6 +36,7 @@
 #include <dialingextensioninterface.h>
 #include <easydialingcommands.hrh>
 #include <dialer.rsg>
+#include <phoneui.rsg>
 #include <featmgr.h>
 
 #include "cdialer.h"
@@ -137,6 +139,9 @@
     SetRect( aRect );
     
     SetComponentsToInheritVisibility( EFalse );
+    
+    // By default, numeric keysounds are disabled.
+    DisableNumericKeySounds( ETrue );
 
     ActivateL();
     #ifdef RD_SCALABLE_UI_V2
@@ -260,6 +265,10 @@
         }
     
     UpdateEdwinState( editorType );
+    
+    // Numeric keysound are disabled in if not in alpha mode. 
+    // In numeric mode numeric keys should play DTMF only.
+    DisableNumericKeySounds( editorType != EAlphanumericEditor );
     }
 
 // ---------------------------------------------------------------------------
@@ -831,6 +840,30 @@
     }
 
 // ---------------------------------------------------------------------------
+// CDialer::SetNumericKeySounds
+// ---------------------------------------------------------------------------
+//
+void CDialer::DisableNumericKeySounds( TBool aDisable )
+    {
+    CAknAppUi *appUi = static_cast<CAknAppUi*>( ControlEnv()->AppUi() );
+    CAknKeySoundSystem* keySounds = appUi->KeySounds();
+    
+    if ( aDisable && !iNumericKeySoundsDisabled )
+        {
+        // Disable numeric key sounds. This is done only if key sounds were not disabled previously,
+        // to avoid situation that there were multiple key sound contexts in the stack. 
+        TRAP_IGNORE( keySounds->PushContextL( R_PHONEUI_DEFAULT_SKEY_LIST ) );
+        }
+    else if ( !aDisable && iNumericKeySoundsDisabled )
+        {
+        // Remove numeric key sound disabling.
+        keySounds->PopContext();
+        }
+
+    iNumericKeySoundsDisabled = aDisable;
+    }
+
+// ---------------------------------------------------------------------------
 // CDialer::LoadEasyDialingPlugin
 // ---------------------------------------------------------------------------
 //
--- a/phoneuis/dialer/src/cdialernumberentry.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/dialer/src/cdialernumberentry.cpp	Tue May 25 12:41:50 2010 +0300
@@ -98,7 +98,7 @@
     iFrameContext = CAknsFrameBackgroundControlContext::NewL(
             KAknsIIDNone, TRect(0,0,4,4), TRect(1,1,3,3), EFalse );
             
-    iFrameContext->SetFrame( KAknsIIDQsnFrCall2Rect );
+    iFrameContext->SetFrame( KAknsIIDQsnFrInput );
     
     iFrameContext->SetParentContext( 
         AknsDrawUtils::ControlContextOfParent(this) );
@@ -434,7 +434,7 @@
                              (CWindowGc&) gc,  
                              iOuterRect,
                              iInnerRect,
-                             KAknsIIDQsnFrCall2Rect,
+                             KAknsIIDQsnFrInput,
                              KAknsIIDDefault ))
         {
         DIALER_PRINT("numberentry::Draw.Frame.failed"); 
@@ -496,7 +496,7 @@
     AknsDrawUtils::PrepareFrame( skin,
                                  iOuterRect,
                                  iInnerRect,
-                                 KAknsIIDQsnFrCall2Rect,
+                                 KAknsIIDQsnFrInput,
                                  KAknsIIDDefault ); 
     // Label layout
 
--- a/phoneuis/dialer/tsrc/public/basic/T_VideoDtmfDialer/group/T_VideoDtmfDialer.mmp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/dialer/tsrc/public/basic/T_VideoDtmfDialer/group/T_VideoDtmfDialer.mmp	Tue May 25 12:41:50 2010 +0300
@@ -33,7 +33,9 @@
 
 SOURCEPATH        ../group
 
-USERINCLUDE     ../inc 
+USERINCLUDE     ../../../../../../../phoneapp/phoneuiutils/inc/ 
+USERINCLUDE     ../inc
+
 APP_LAYER_SYSTEMINCLUDE
 SYSTEMINCLUDE   ../../../../../inc    // Telephony internal headers
 
--- a/phoneuis/dialer/tsrc/public/basic/T_VideoDtmfDialer/src/T_VideoDtmfDialerBlocks.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/dialer/tsrc/public/basic/T_VideoDtmfDialer/src/T_VideoDtmfDialerBlocks.cpp	Tue May 25 12:41:50 2010 +0300
@@ -114,9 +114,9 @@
     {
     if( iVideoDtmfDialerControl )
 	    {
-	    iDialer = CDialer::NewL( 
-	    	*iVideoDtmfDialerControl, 
-	    	CEikonEnv::Static()->EikAppUi()->ClientRect() );
+	    iDialer = CDialer::NewL( *iVideoDtmfDialerControl, 
+	    	CEikonEnv::Static()->EikAppUi()->ClientRect(),
+	    	NULL );
 	    iNumberEntry = iDialer->NumberEntry();
 
 	    return KErrNone;
--- a/phoneuis/easydialing/data/easydialingpluginresources.rss	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/easydialing/data/easydialingpluginresources.rss	Tue May 25 12:41:50 2010 +0300
@@ -209,5 +209,15 @@
        };
    }
 
+//----------------------------------------------------------------------------
+// r_qtn_easydial_enter_number
+//
+// Info text shown in dialer when when number entry is empty.
+// ---------------------------------------------------------------------------
+//
+RESOURCE TBUF r_qtn_easydial_enter_number
+    {
+    buf = qtn_easydial_enter_number;
+    }
 
 // End of File
--- a/phoneuis/easydialing/inc/easydialingplugin.h	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/easydialing/inc/easydialingplugin.h	Tue May 25 12:41:50 2010 +0300
@@ -70,7 +70,7 @@
 class CEDContactorService;
 class CEikMenuPane;
 class CAsyncCallBack;
-
+class CEikLabel;
 
 // CLASS DECLARATION
 
@@ -122,6 +122,11 @@
     * From CCoeControl
     */
     void MakeVisible( TBool aVisible );
+ 
+    /**
+    * From CCoeControl
+    */
+    void HandleResourceChange( TInt aType );
 
 protected:
 
@@ -436,7 +441,11 @@
      */  
     TBool CanListBoxEffectBeUsed() const;
 
-
+    /**
+     * Sets correct info label text color from theme.
+     */  
+    void SetInfoLabelColourL();
+    
 private:
 
     /** Textual version of current search string. */
@@ -517,12 +526,29 @@
     /** Action to be launched next asynchronously. */
     TEasyDialingAction iActionToBeLaunched;
     
+    /** Contact link related to the asynchronous action. */
+    HBufC8* iContactToBeLaunched;
+    
+    /** Contact name related to the asynchronous action. */
+    HBufC* iContactToBeLaunchedName;
+    
     /** Key event to be simulated asynchronously. */
     TKeyEvent iKeyEventToSimulate;
     
     /** Is virtual keyboard currently open or not.*/
     TBool iVirtualKeyboardOpen;
+
+    /** First line of info text shown when number entry is empty. Owned. */
+    HBufC* iInfoLabelTextLine1;
     
+    /** Second line of info text shown when number entry is empty. Owned. */
+    HBufC* iInfoLabelTextLine2;
+    
+    /** Label for showing first line of info text when number entry is empty. Owned. */
+    CEikLabel* iInfoLabelLine1;
+    
+    /** Label for showing second line of info text when number entry is empty. Owned. */
+    CEikLabel* iInfoLabelLine2;
 };
 
 
--- a/phoneuis/easydialing/loc/easydialing.loc	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/easydialing/loc/easydialing.loc	Tue May 25 12:41:50 2010 +0300
@@ -35,4 +35,12 @@
 //
 #define qtn_easy_dialing_off "Off"
 
+//d: Info text shown in dialer when when number entry is empty.
+//d: Text is shown in the place of the contact matches listbox.
+//d: Text can span multiple lines. Line breaks must be indicated with \n
+//l: main_list_empty_pane
+//r:9.2
+//
+#define qtn_easydial_enter_number "Enter number or name"
+
 // End of File
--- a/phoneuis/easydialing/src/easydialinglistbox.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/easydialing/src/easydialinglistbox.cpp	Tue May 25 12:41:50 2010 +0300
@@ -513,6 +513,10 @@
     ReportListBoxEventL( static_cast<MEikListBoxObserver::TListBoxEvent>
             ( KEasyDialingContactLongTapped ) );
     iPointerLongPressHandled = ETrue;
+    
+    TPointerEvent simulatedButtonUpEvent( TPointerEvent::EButton1Up, 0,
+                                          TPoint(), TPoint() );
+    TRAP_IGNORE( CEikFormattedCellListBox::HandlePointerEventL( simulatedButtonUpEvent ) );
     }
 
 
--- a/phoneuis/easydialing/src/easydialingplugin.cpp	Tue May 11 16:13:03 2010 +0300
+++ b/phoneuis/easydialing/src/easydialingplugin.cpp	Tue May 25 12:41:50 2010 +0300
@@ -34,6 +34,8 @@
 #include <e32cmn.h>
 #include <bidivisual.h>
 
+#include <aknlayoutscalable_avkon.cdl.h>
+
 // Predictive search header files
 #include <CPsSettings.h>
 #include <CPsQuery.h>
@@ -63,6 +65,8 @@
 #include <AiwContactAssignDataTypes.h>
 #include <AiwContactSelectionDataTypes.h>
 
+#include <StringLoader.h>
+
 // CCA contactor service.
 #include "edcontactorservice.h"
 
@@ -267,6 +271,11 @@
         GfxTransEffect::Deregister( iContactListBox );
         }
     
+    delete iInfoLabelLine1;
+    delete iInfoLabelLine2;
+    delete iInfoLabelTextLine1;
+    delete iInfoLabelTextLine2;
+
     delete iContactListBox;
 
     if (iContactLauncher)
@@ -286,6 +295,9 @@
         }
     delete iAsyncCallBack;
     
+    delete iContactToBeLaunched;
+    delete iContactToBeLaunchedName;
+    
     OstTrace0( TRACE_NORMAL, CEASYDIALINGPLUGIN_UNLOAD_PLUGIN, "Plugin unloaded" );
     LOGSTRING("EasyDialingPlugin: Plugin unloaded");
     }
@@ -325,6 +337,40 @@
     SetFocus( EFalse );
     iContactListBox->ActivateL();
     
+    _LIT( KEDNewLine, "\n" );
+    HBufC* infoLabelText = StringLoader::LoadLC( R_QTN_EASYDIAL_ENTER_NUMBER, iCoeEnv );
+    TInt newLine = infoLabelText->Find( KEDNewLine );
+    if ( newLine == KErrNotFound )
+        {
+        iInfoLabelTextLine1 = infoLabelText;
+        CleanupStack::Pop( infoLabelText );
+        iInfoLabelTextLine2 = HBufC::NewL(0);
+        }
+    else
+        {
+        iInfoLabelTextLine1 = infoLabelText->Left( newLine ).AllocL();
+        iInfoLabelTextLine2 = infoLabelText->Mid( newLine + 1 ).AllocL();
+        CleanupStack::PopAndDestroy( infoLabelText );
+        }
+            
+    iInfoLabelLine1 = new( ELeave ) CEikLabel;
+    iInfoLabelLine1->SetContainerWindowL( *this );
+    iInfoLabelLine1->SetParent( this );
+    iInfoLabelLine1->SetMopParent( this ); 
+    iInfoLabelLine1->SetLabelAlignment( ELayoutAlignCenter );
+    iInfoLabelLine1->SetTextL( *iInfoLabelTextLine1 );
+    iInfoLabelLine1->ActivateL();
+
+    iInfoLabelLine2 = new( ELeave ) CEikLabel;
+    iInfoLabelLine2->SetContainerWindowL( *this );
+    iInfoLabelLine2->SetParent( this );
+    iInfoLabelLine2->SetMopParent( this ); 
+    iInfoLabelLine2->SetLabelAlignment( ELayoutAlignCenter );
+    iInfoLabelLine2->SetTextL( *iInfoLabelTextLine2 );
+    iInfoLabelLine2->ActivateL();
+
+    SetInfoLabelColourL();
+    
     GfxTransEffect::Register( iContactListBox, 
                               KGfxContactListBoxUid, EFalse );
     
@@ -567,7 +613,7 @@
 //
 TInt CEasyDialingPlugin::CountComponentControls() const
     {
-    return iNumberOfNames > 0 ? 1 : 0;
+    return iNumberOfNames > 0 ? 3 : 2;
     }
 
 
@@ -578,7 +624,17 @@
 //
 CCoeControl* CEasyDialingPlugin::ComponentControl( TInt aIndex ) const
     {
-    return aIndex == 0 ? iContactListBox : NULL;
+    switch ( aIndex )
+        {
+        case 0:
+            return iInfoLabelLine1;
+        case 1:
+            return iInfoLabelLine2;
+        case 2:
+            return iContactListBox;
+        default:
+            return NULL;
+        }
     }
 
 
@@ -600,6 +656,15 @@
         }
     }
 
+// -----------------------------------------------------------------------------
+// HandleResourceChange
+//
+// -----------------------------------------------------------------------------
+//
+void CEasyDialingPlugin::HandleResourceChange( TInt /*aType*/ )
+    {
+    TRAP_IGNORE( SetInfoLabelColourL() );
+    }
 
 // -----------------------------------------------------------------------------
 // SizeChanged
@@ -623,6 +688,26 @@
         itemToMakeVisible = iNumberOfNames - 1;
         } 
     iContactListBox->ScrollToMakeItemVisible( itemToMakeVisible );
+
+    // get info label locations and fonts from layout
+    TRect baseRect = Rect();
+    TAknTextComponentLayout labelLayoutLine1 = 
+        AknLayoutScalable_Avkon::main_pane_empty_t1( 0 );
+    TAknTextComponentLayout labelLayoutLine2 = 
+        AknLayoutScalable_Avkon::main_pane_empty_t2( 0 );
+    AknLayoutUtils::LayoutLabel( iInfoLabelLine1, baseRect, labelLayoutLine1 );
+    AknLayoutUtils::LayoutLabel( iInfoLabelLine2, baseRect, labelLayoutLine2 );
+    
+    // the layouts used place the text too low, so center the labels vertically
+    TInt labelHeight = iInfoLabelLine2->Rect().iBr.iY - iInfoLabelLine1->Rect().iTl.iY;
+    TInt centeredTop = ( baseRect.Height() - labelHeight ) / 2;
+    TInt offset = centeredTop - iInfoLabelLine1->Rect().iTl.iY;
+    iInfoLabelLine1->SetPosition( TPoint( iInfoLabelLine1->Rect().iTl.iX,
+                                          iInfoLabelLine1->Rect().iTl.iY + offset ) );
+    iInfoLabelLine2->SetPosition( TPoint( iInfoLabelLine2->Rect().iTl.iX,
+                                          iInfoLabelLine2->Rect().iTl.iY + offset ) );
+    
+    TRAP_IGNORE( SetInfoLabelColourL() );
     }
 
 
@@ -638,6 +723,7 @@
         {
         // To be on the safe side, cancel async callback and reset input block.
         CancelActionLaunchAndInputBlock();
+        iContactListBox->View()->ItemDrawer()->ClearFlags( CListItemDrawer::ESingleClickDisabledHighlight );
         }
     CCoeControl::FocusChanged( aDrawNow );
     InformObservers( MDialingExtensionObserver::EFocusChanged );
@@ -677,10 +763,18 @@
         // However if user empties number entry, then it's feasible to show
         // effect.
         HideContactListBoxWithEffect();
+        iInfoLabelLine1->SetTextL( *iInfoLabelTextLine1 );
+        iInfoLabelLine2->SetTextL( *iInfoLabelTextLine2 );
+        iInfoLabelLine1->DrawDeferred();
+        iInfoLabelLine2->DrawDeferred();
         Reset();
         }
     else // proper search string
         {
+        iInfoLabelLine1->SetTextL( KNullDesC );
+        iInfoLabelLine2->SetTextL( KNullDesC );
+        iInfoLabelLine1->DrawDeferred();
+        iInfoLabelLine2->DrawDeferred();
         iSearchString.Copy( aSearchString.Left( iSearchString.MaxLength() ) );
         LaunchSearchL();
         }
@@ -1127,6 +1221,8 @@
         iContactListBox->ScrollToMakeItemVisible( iNumberOfNames-1 );
 
         ShowContactListBoxWithEffect();
+        iContactListBox->View()->ItemDrawer()->ClearFlags( CListItemDrawer::ESingleClickDisabledHighlight );
+        static_cast<CEasyDialingListBoxView*>( iContactListBox->View() )->SetCurrentItemIndexToNone();
         }
     else
         {  
@@ -1193,9 +1289,9 @@
 void CEasyDialingPlugin::LaunchCurrentContactL()
     {
     __ASSERT_DEBUG( iNumberOfNames > 0, EasyDialingPanic( EEasyDialingPanicNoResults ) );
-    __ASSERT_DEBUG( iContactListBox->CurrentItemIndex() >= 0, EasyDialingPanic( EEasyDialingPanicNoContactSelected ) );
+    __ASSERT_DEBUG( iContactToBeLaunched, EasyDialingPanic( EEasyDialingPanicNoContactSelected ) );
 
-    if (( iContactLauncherActive ) || ( iNumberOfNames == 0 ) || ( !iContactListBox ) || ( iContactListBox->CurrentItemIndex() < 0 ))
+    if (( iContactLauncherActive ) || ( iNumberOfNames == 0 ) || ( !iContactListBox ) || ( !iContactToBeLaunched ))
         {
         OstTrace0( TRACE_ERROR, CEASYDIALINGPLUGIN_LAUNCHCURRENTCONTACTL_ERROR, "LaunchCurrentContactL: Parameter error" );
         LOGSTRING("EasyDialingPlugin: LaunchCurrentContactL - Parameter error");
@@ -1213,22 +1309,22 @@
     
     launchParameters->SetContactDataFlag(MCCAParameter::EContactLink);
 
-    // Get the contact link of the current contact item.
-    HBufC8* contact8 = iContactListBox->CurrentContactLinkLC();
-    
-    // Expand it into 16-bit descriptor because cca launcher api expects this. 
-    HBufC16* contact16 = HBufC16::NewLC( contact8->Length() );
-    contact16->Des().Copy( *contact8 );
+    // Expand contact link into 16-bit descriptor because cca launcher api expects this. 
+    HBufC16* contact16 = HBufC16::NewLC( iContactToBeLaunched->Length() );
+    contact16->Des().Copy( *iContactToBeLaunched );
 
     launchParameters->SetContactDataL( *contact16 );
 
     CleanupStack::PopAndDestroy( contact16 );
-    CleanupStack::PopAndDestroy( contact8 );
+
+    OstTraceExt1( TRACE_NORMAL, CEASYDIALINGPLUGIN_LAUNCHCURRENTCONTACTL_LAUNCH_CCA, "Launch CL for contact: '%S'", *iContactToBeLaunchedName );
+    LOGSTRING1("EasyDialingPlugin: Launch CL for contact: '%S'", iContactToBeLaunchedName );
 
-    TPtrC selectedName = iListBoxModel->MdcaPoint( iContactListBox->CurrentItemIndex() );
-    OstTraceExt1( TRACE_NORMAL, CEASYDIALINGPLUGIN_LAUNCHCURRENTCONTACTL_LAUNCH_CCA, "Launch CL for contact: '%S'", selectedName );
-    LOGSTRING1("EasyDialingPlugin: Launch CL for contact: '%S'", &selectedName );
-
+    delete iContactToBeLaunched;
+    iContactToBeLaunched = NULL;
+    delete iContactToBeLaunchedName;
+    iContactToBeLaunchedName = NULL;    
+    
     iContactLauncher->LaunchAppL( *launchParameters, this );
 
     // Ownership of parameter transferred to CCA launcher => pop but do not destroy.
@@ -1621,6 +1717,31 @@
 void CEasyDialingPlugin::AsyncActionLaunchL( TEasyDialingAction aAction )
     {
     iActionToBeLaunched = aAction;
+
+    delete iContactToBeLaunched;
+    iContactToBeLaunched = NULL;
+    delete iContactToBeLaunchedName;
+    iContactToBeLaunchedName = NULL;
+       
+    if ( aAction == ECallCurrentContact
+            || aAction == EVideoCallCurrentContact
+            || aAction == ESendMessageCurrentContact
+            || aAction == ELaunchCurrentContact )
+        {
+        // Need to save current contact link and name. Listbox current item
+        // index might not be correct when callback is handled.
+        iContactToBeLaunched = iContactListBox->CurrentContactLinkLC();
+        CleanupStack::Pop( iContactToBeLaunched );
+        
+        TPtrC contactString( iListBoxModel->MdcaPoint( iContactListBox->CurrentItemIndex() ) );
+        TPtrC fullNameSeparators;
+        TInt error = TextUtils::ColumnText( fullNameSeparators, 1, &contactString );
+        __ASSERT_DEBUG( error == KErrNone, EasyDialingPanic( EEasyDialingPanicInvalidListBoxModelString ) );
+        
+        // Remove highlight separators. It is possible that some contactor API has problem with them.
+        iContactToBeLaunchedName = AllocWithoutHighlightSeparatorsLC( fullNameSeparators );
+        CleanupStack::Pop( iContactToBeLaunchedName );
+        }
     
     CancelActionLaunchAndInputBlock();
     
@@ -1715,18 +1836,6 @@
         return;
         }
  
-    // Get current contact link.
-    HBufC8* contact8 = iContactListBox->CurrentContactLinkLC();
-    
-    TPtrC contactString( iListBoxModel->MdcaPoint( iContactListBox->CurrentItemIndex() ) );
-    
-    TPtrC fullNameSeparators;
-    TInt error = TextUtils::ColumnText( fullNameSeparators , 1, &contactString );
-    __ASSERT_DEBUG( error == KErrNone, EasyDialingPanic( EEasyDialingPanicInvalidListBoxModelString ) );
-    
-    // Remove highlight separators. It is possible that some contactor API has problem with them.
-    HBufC* fullName = AllocWithoutHighlightSeparatorsLC( fullNameSeparators );
-    
     VPbkFieldTypeSelectorFactory::TVPbkContactActionTypeSelector selector( 
             VPbkFieldTypeSelectorFactory::EEmptySelector );
     
@@ -1769,20 +1878,24 @@
             break;
             
         default:
-            CleanupStack::PopAndDestroy( fullName );           
-            CleanupStack::PopAndDestroy( contact8 );
+            delete iContactToBeLaunched;
+            iContactToBeLaunched = NULL;
+            delete iContactToBeLaunchedName;
+            iContactToBeLaunchedName = NULL;
             __ASSERT_DEBUG( EFalse, EasyDialingPanic( EEasyDialingActionNotSupported ) );
             return;
         }
 
-    CEDContactorService::TCSParameter param( selector, *contact8, 
+    CEDContactorService::TCSParameter param( selector, *iContactToBeLaunched, 
                                              CEDContactorService::TCSParameter::EEnableDefaults, 
-                                             *fullName );
+                                             *iContactToBeLaunchedName );
 
     iContactorService->ExecuteServiceL( param );
 
-    CleanupStack::PopAndDestroy( fullName );
-    CleanupStack::PopAndDestroy( contact8 );
+    delete iContactToBeLaunched;
+    iContactToBeLaunched = NULL;
+    delete iContactToBeLaunchedName;
+    iContactToBeLaunchedName = NULL;
     }
 
 
@@ -1832,6 +1945,8 @@
         case EEventFlickStopped:
         case EEventPanningStopped:
         case KEasyDialingScrollingStopped:
+            iContactListBox->View()->ItemDrawer()->ClearFlags( CListItemDrawer::ESingleClickDisabledHighlight );
+            static_cast<CEasyDialingListBoxView*>( iContactListBox->View() )->SetCurrentItemIndexToNone();
             iContactDataManager->Pause( EFalse );
             
             // Touching the listbox always removes the visual focus from any list item.
@@ -1996,6 +2111,25 @@
     return canBeUsed;
     }
 
+// -----------------------------------------------------------------------------
+// CEasyDialingPlugin::SetInfoLabelColourL
+// -----------------------------------------------------------------------------
+//
+void CEasyDialingPlugin::SetInfoLabelColourL()
+    {
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    TRgb skinColor;
+    TInt error = AknsUtils::GetCachedColor( skin, skinColor,
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
+            
+    if ( error == KErrNone )
+        {
+        iInfoLabelLine1->OverrideColorL( EColorLabelText, skinColor );
+        iInfoLabelLine2->OverrideColorL( EColorLabelText, skinColor );
+        }    
+    }
+
+
 /*
  * ==============================================================================
  *