mobilemessaging/smsui/viewersrc/MsgSmsViewerAppUi.cpp
branchRCL_3
changeset 18 fbb813aef148
parent 16 e00582ce7ecd
child 19 7e4e4bcc75b6
--- a/mobilemessaging/smsui/viewersrc/MsgSmsViewerAppUi.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/mobilemessaging/smsui/viewersrc/MsgSmsViewerAppUi.cpp	Tue May 11 16:10:04 2010 +0300
@@ -965,7 +965,20 @@
         case R_SMSV_OPTIONSMENUPANE_CLASS0:
             {
             TPtrC senderNumber = KNullDesC();
-            if ( iFlags.iValidSenderNumber )
+            
+            TBool senderHighlighted = EFalse;
+            if ( FocusedControlId( ) == EMsgComponentIdFrom )
+                {
+                CMsgAddressControl* address = static_cast<CMsgAddressControl*>(
+                    iView->ControlById( EMsgComponentIdFrom ) );
+                           
+                if ( address && address->Editor().SelectionLength() )
+                    {
+                    senderHighlighted = ETrue;
+                    }
+                }               
+            if ( iFlags.iValidSenderNumber 
+                 && senderHighlighted )
                 {
                 senderNumber.Set( iNumber );
                 }
@@ -978,7 +991,7 @@
             else if(iFindItemMenu)
 	            {              
 	            iFindItemMenu->AddItemFindMenuL( 
-                IsBodyFocused() ? iView->ItemFinder() : 0,
+                FindItemHighlighted() ? iView->ItemFinder() : 0,
                 aMenuPane, EFindItemMenuPlaceHolder,
                 senderNumber, 
                 iRecipientstring.Length() != 0 ? ETrue : EFalse,
@@ -1078,14 +1091,31 @@
 
         // add automatic highlight menus
         TPtrC senderNumber = KNullDesC();
+             
+        TBool senderHighlighted = EFalse;
+        if ( FocusedControlId( ) == EMsgComponentIdFrom )
+            {
+            CMsgAddressControl* address = static_cast<CMsgAddressControl*>(
+                iView->ControlById( EMsgComponentIdFrom ) );
+                       
+            if ( address && address->Editor().SelectionLength() )
+                {
+                senderHighlighted = ETrue;
+                }
+            }          
+        
         if ( iFlags.iIsEmailMessage ) // SMS originating address is email address 
             {  
-            senderNumber.Set( iRecipientstring );
+            if ( senderHighlighted )
+                {
+                senderNumber.Set( iRecipientstring );
+                }
             iFindItemMenu->SetSenderDescriptorType( CItemFinder::EEmailAddress );
             }            
         else 
             {// SMS originating adddress is Phone number
-            if ( iFlags.iValidSenderNumber )
+            if ( iFlags.iValidSenderNumber
+                 && senderHighlighted )
                 {
                 senderNumber.Set( iNumber );
                 }
@@ -1099,7 +1129,7 @@
 	                iView->ControlById( EMsgComponentIdFrom ) == iView->FocusedControl() );
 	            iFindItemMenu->SetSenderDisplayText( senderNumber );
 	            iFindItemMenu->AddItemFindMenuL( 
-	                IsBodyFocused() ? iView->ItemFinder() : 0,
+	                FindItemHighlighted() ? iView->ItemFinder() : 0,
 	                aMenuPane, EFindItemMenuPlaceHolder,
 	                senderNumber, 
 	                iFlags.iIsEmailMessage ? EFalse : ( iRecipientstring.Length() != 0 ) );
@@ -1110,7 +1140,7 @@
 	                iView->ControlById( EMsgComponentIdFrom ) == iView->FocusedControl() );
 	            iFindItemMenu->SetSenderDisplayText( senderNumber );
 	            iFindItemMenu->AddItemFindMenuL( 
-	                IsBodyFocused() ? iView->ItemFinder() : 0,
+	                FindItemHighlighted() ? iView->ItemFinder() : 0,
 	                aMenuPane, EFindItemMenuPlaceHolder,
 	                senderNumber, 
 	                ETrue );
@@ -1580,7 +1610,40 @@
                 }
             case EKeyDevice3:
             case EKeyEnter:	
-                {// Selection-key checking (Context sensitive menu)
+                {             
+                if( iView->FocusedControl()->ControlType() == EMsgAddressControl )
+                    {
+                    CMsgAddressControl* address = static_cast<CMsgAddressControl*>(
+                        iView->FocusedControl() );
+                    if ( address && !address->Editor().SelectionLength() )
+                        {
+                        // restore highlight to address field
+                        return address->Editor().OfferKeyEventL( aKeyEvent, aType );
+                        }               
+                    }
+                else if ( iView->FocusedControl()->ControlType() == EMsgBodyControl )
+                    {       
+                    CItemFinder* itemFinder = iView->ItemFinder();
+                    if ( FocusedControlId() == EMsgComponentIdBody 
+                         && itemFinder )
+                        {                                                                          
+                        if ( !itemFinder->CurrentSelection().Length() )
+                            {
+                            CMsgBodyControl* body = static_cast<CMsgBodyControl*>(
+                                iView->FocusedControl() );
+                            if ( body )
+                                {                     
+                                 // restore highlight to current itemfinder item
+                                return body->Editor().OfferKeyEventL( aKeyEvent, aType );
+                                }
+                            }
+                        }
+                    }
+                // fall through
+                }
+            case EMsgFindItemKeyEvent:
+                {
+                // Selection-key checking (Context sensitive menu)
                 // (with Class 0 just show the menu)
                 if ( !iClass0CBA )
                     {
@@ -3064,4 +3127,34 @@
     iTypeMsg = pduType; //for successful launch save the PDU Type.
     }
 
+// ---------------------------------------------------------
+// CMsgSmsViewerAppUi::FindItemHighlighted
+// Checks wheter current find item is highlighted
+// ---------------------------------------------------------
+//
+TBool CMsgSmsViewerAppUi::FindItemHighlighted()
+    {
+    if ( iView->ItemFinder() && 
+         iView->ItemFinder()->CurrentSelection().Length() )
+        {
+        return ETrue;
+        }
+    return EFalse;
+    }
+
+// ---------------------------------------------------------
+// CMsgSmsViewerAppUi::FocusedControlId
+// Returns id of focused control
+// ---------------------------------------------------------
+//
+TInt CMsgSmsViewerAppUi::FocusedControlId( )
+    {
+    TInt controlType = EMsgComponentIdNull;
+    if ( iView && iView->FocusedControl( ) )
+        {
+        controlType = iView->FocusedControl( )->ControlId( );
+        }
+    return controlType;
+    }
+
 //  End of File