uifw/AvKon/src/AknAdaptiveSearchGrid.cpp
branchRCL_3
changeset 20 d48ab3b357f1
parent 19 aecbbf00d063
--- a/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp	Tue Aug 31 15:28:30 2010 +0300
+++ b/uifw/AvKon/src/AknAdaptiveSearchGrid.cpp	Wed Sep 01 12:16:19 2010 +0100
@@ -61,7 +61,6 @@
 _LIT( KSpaceCharacter, " " );
 const TInt KCloseAndClearButtonCount = 2;  
 
-   
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -125,21 +124,15 @@
     { 
     _AKNTRACE_FUNC_ENTER;
     CEikonEnv::Static()->EikAppUi()->RemoveFromStack( this );
-    delete iBgContextOfFindPane;
-    delete iBgContextOfControlPane;
-    delete iSkinContextOfFindPane; 
-    delete iInputFrame;
- 
+    if ( iBgContextOfControlPane )
+    	{
+		delete iBgContextOfControlPane;
+		iBgContextOfControlPane = NULL;
+    	}
     // Clear current region of AS
     iCurrentRegion.Clear();    
     iButtonArray.ResetAndDestroy();
     
-    if ( iEditor )
-        {
-        TRAP_IGNORE(iEditor->TextView()->SetCursorVisibilityL( 
-            TCursor::EFCursorInvisible, TCursor::EFCursorInvisible ));
-        delete iEditor;
-        }   
     if( iGridChars )
         {
         delete iGridChars;
@@ -171,9 +164,12 @@
         iPageIndicator = NULL;
         }
        
-    CAknWsEventMonitor* eventMonitor = iAppUi->EventMonitor();    
-    eventMonitor->Enable( EFalse ); 
-    eventMonitor->RemoveObserver( this ); 
+    if ( iAppUi )
+        {
+        CAknWsEventMonitor* eventMonitor = iAppUi->EventMonitor();  
+        eventMonitor->Enable( EFalse ); 
+        eventMonitor->RemoveObserver( this ); 
+        }
     _AKNTRACE_FUNC_EXIT;
     }
 
@@ -198,20 +194,12 @@
             Window().SetBackgroundColor(~0);
             }
         }        
+    Window().SetPointerGrab( ETrue );
 
     CAknWsEventMonitor* eventMonitor = iAppUi->EventMonitor();    
     eventMonitor->AddObserverL( this );
     eventMonitor->Enable();
     
-    iSkinContextOfFindPane = CAknsListBoxBackgroundControlContext::NewL( KAknsIIDQsnBgAreaControlPopup, 
-                                                                         TRect(0,0,0,0), 
-                                                                         EFalse, 
-                                                                         KAknsIIDNone, 
-                                                                         TRect(0,0,0,0) );   
-    iBgContextOfFindPane = CAknsFrameBackgroundControlContext::NewL( KAknsIIDQsnFrInput, 
-                                                                     TRect(0,0,0,0), 
-                                                                     TRect(0,0,0,0), 
-                                                                     EFalse );    
     iBgContextOfControlPane = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQgnGrafAdaptSearchPageBg, 
                                                                         TRect(0,0,0,0), EFalse );          
     // Init components
@@ -278,59 +266,6 @@
             flags |= CAknInputFrame::EFixedFindWithoutLine;
             break;
         }
-    iEditor = new (ELeave) CEikEdwin;   
-    
-    iInputFrame = CAknInputFrame::NewL( iEditor, 
-                                        EFalse, 
-                                        KAvkonBitmapFile, 
-                                        EMbmAvkonQgn_indi_find_glass, 
-                                        EMbmAvkonQgn_indi_find_glass_mask, 
-                                        flags );                     
-
-    iEditor->SetContainerWindowL( *this );
-    iInputFrame->SetContainerWindowL( *this );
-    
-    AknEditUtils::ConstructEditingL( iEditor,
-                                     iTextLimit,
-                                     1,
-                                     EAknEditorCharactersLowerCase,
-                                     EAknEditorAlignLeft,
-                                     EFalse,
-                                     ETrue,
-                                     EFalse );
-    iEditor->SetObserver( this );
-    iEditor->SetBorder( TGulBorder::ENone );
-    iEditor->SetAknEditorInputMode( EAknEditorTextInputMode );
-    iEditor->SetAknEditorAllowedInputModes( EAknEditorTextInputMode |
-                                            EAknEditorNumericInputMode ); 
-    iEditor->AddFlagToUserFlags( CEikEdwin::EAvkonDisableVKB );
-    
-    if ( FeatureManager::FeatureSupported( KFeatureIdJapanese ) )
-        {
-        iEditor->SetAknEditorPermittedCaseModes( EAknEditorCharactersLowerCase );
-        }
-
-    TInt editorFlags = EAknEditorFlagNoT9 | 
-                       EAknEditorFlagNoLRNavigation |
-                       EAknEditorFlagForceTransparentFepModes |
-                       EAknEditorFlagNoEditIndicators |
-                       EAknEditorFlagFindPane;
-
-    iEditor->SetAknEditorFlags( editorFlags );
-    iEditor->CreateTextViewL(); 
-
-    iInputFrame->SetInputContext( iBgContextOfFindPane );
-    iEditor->SetSkinBackgroundControlContextL( iBgContextOfFindPane );
-  
-    TRgb textColor = KRgbBlack;
-    TInt error = AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), 
-                                            textColor, 
-                                            KAknsIIDQsnTextColors, 
-                                            EAknsCIQsnTextColorsCG19);
-    if( !error )
-        {
-        TRAP_IGNORE( AknLayoutUtils::OverrideControlColorL(*iEditor, EColorLabelText, textColor) );       
-        }   
     
     // Create label for page indicator
     iPageIndicator = new (ELeave) CEikLabel;
@@ -409,18 +344,18 @@
 // -----------------------------------------------------------------------------
 // 
 void CAknAdaptiveSearchGrid::UpdateLayoutVariant()
-    {
+	{
     _AKNTRACE_FUNC_ENTER;
-    InitGrid(); 
-    UpdatePageAndRowCount();                 
-    if( IsShown() )
-        {
-        ControlsPositions();
-        TRAP_IGNORE( UpdateVisibleButtonsL() );  
-        ShowControls();           
-        }
+	InitGrid(); 
+	UpdatePageAndRowCount();       	         
+	if( IsShown() )
+		{
+		ControlsPositions();
+		TRAP_IGNORE( UpdateVisibleButtonsL() );  
+		ShowControls();           
+		}
     _AKNTRACE_FUNC_EXIT;
-    }
+	}
 
 // -----------------------------------------------------------------------------
 // CAknAdaptiveSearchGrid::UpdateSkinL()
@@ -429,7 +364,7 @@
 // -----------------------------------------------------------------------------
 //  
 void CAknAdaptiveSearchGrid::UpdateSkinL()
-    {
+	{
     CGulIcon* gulIcon = NULL;
     gulIcon = GetColorIconL( 0 );        
     iCloseButton->State()->SetIcon( gulIcon );
@@ -438,30 +373,30 @@
     iDeleteButton->State()->SetIcon( gulIcon1 );
     CGulIcon* gulIcon2 = NULL;
     gulIcon2 = GetColorIconL( 2 );        
-    iPrevButton->State()->SetIcon( gulIcon2 );      
+	iPrevButton->State()->SetIcon( gulIcon2 );		
     CGulIcon* gulIcon3 = NULL;
     gulIcon3 = GetColorIconL( 3 );        
     iNextButton->State()->SetIcon( gulIcon3 );
     
-    UpdateVisibleButtonsL();                        
-        
+   	UpdateVisibleButtonsL();	 	    		    
+	    
     if( iNumOfPages > 1 )
-        {   
-        // Page pane & page indicator   
-        TRect page_pane = RectFromLayout( Rect(), AknLayoutScalable_Apps::afind_page_pane( iLayoutOption) );    
-        if( AknsUtils::AvkonSkinEnabled() )
-            {           
-            TRgb textColor = KRgbBlack; 
-            TInt error = AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), 
-                                                    textColor, 
-                                                    KAknsIIDQsnTextColors, 
-                                                    EAknsCIQsnTextColorsCG19);
-            if( !error )                    
-                AknLayoutUtils::OverrideControlColorL(*iPageIndicator, EColorLabelText, textColor);                                        
-            }               
-        iBgContextOfControlPane->SetRect( page_pane );     
-        }
-    }
+		{	
+		// Page pane & page indicator	
+    	TRect page_pane = RectFromLayout( Rect(), AknLayoutScalable_Apps::afind_page_pane( iLayoutOption) );	
+    	if( AknsUtils::AvkonSkinEnabled() )
+	        {	        
+	        TRgb textColor = KRgbBlack; 
+    	    TInt error = AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), 
+    	                                            textColor, 
+    	                                            KAknsIIDQsnTextColors, 
+    	                                            EAknsCIQsnTextColorsCG19);
+    	    if( !error )        	        
+    	        AknLayoutUtils::OverrideControlColorL(*iPageIndicator, EColorLabelText, textColor);         	                           
+		    }			    
+		iBgContextOfControlPane->SetRect( page_pane );     
+		}
+	}
 // CAknAdaptiveSearchGrid::InitGridButtons()
 // Initiates buttons array of the adaptive search grid.
 // iTotalGridButtons should be calculated in advance by caling InitGrid() 
@@ -496,6 +431,7 @@
         button->SetBackground(this);
         button->SetTextColorIds( KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG65 );
         button->ActivateL();
+        button->MakeVisible( EFalse );
         return button;
         }
     else
@@ -530,13 +466,9 @@
            
     if( Layout_Meta_Data::IsLandscapeOrientation() )
         {
-        CAknToolbar* toolbar = iAppUi->CurrentFixedToolbar();
         iLayoutOption = KLandscapeSinglePage; 
         layout_option = KLandscapeMaxSize;
-        if ( toolbar && toolbar->IsShown() )
-             iToolbarShown = ETrue;
-        else
-            iToolbarShown = EFalse;
+        iToolbarShown = EFalse;
         }
     else
         {        
@@ -567,18 +499,6 @@
         AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane,
                                            controlPaneRect );
         currentWindowRect.iBr.iY = controlPaneRect.iTl.iY;
-        
-        TRect mainPaneRect;
-        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
-                                           mainPaneRect );
-        CAknToolbar* toolbar = iAppUi->CurrentFixedToolbar();   
-        if ( !toolbar 
-             || !toolbar->IsVisible()
-             || mainPaneRect.iBr.iX <= toolbar->Position().iX 
-           )
-            {          
-            currentWindowRect.iBr.iX = mainPaneRect.iBr.iX;
-            }
         }
         
     TRect grid_pane = RectFromLayout( currentWindowRect, AknLayoutScalable_Apps::grid_afind_pane( iLayoutOption ) );
@@ -614,9 +534,20 @@
          const TRect& aRect ) const 
     {
     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); 
-    aGc.SetBrushColor( KRgbWhite );
-    aGc.SetPenColor( KRgbBlack );
+
+    TRgb color;
+    TInt error = AknsUtils::GetCachedColor(skin, color, KAknsIIDFsTextColors, 
+        		   EAknsCIFsTextColorsCG3 );
+    if( error == KErrNone )
+        {
+        aGc.SetBrushColor( color );
+        aGc.SetPenColor( color );
+        }
+    else
+        {
+        aGc.SetBrushColor( KRgbWhite );
+        aGc.SetPenColor( KRgbBlack );
+        }
     aGc.SetBrushStyle( CGraphicsContext::ESolidBrush );
     aGc.DrawRect( aRect );   
     }
@@ -653,59 +584,17 @@
     }
 
 // -----------------------------------------------------------------------------
-// CAknAdaptiveSearchGrid::MopSupplyObject
-// Retrieves an object of the same type as that encapsulated in aId.
-// -----------------------------------------------------------------------------
-//    
-TTypeUid::Ptr CAknAdaptiveSearchGrid::MopSupplyObject( TTypeUid aId )
-    {
-    if ( aId.iUid == MAknsControlContext::ETypeId && iSkinContextOfFindPane )
-        {
-        return MAknsControlContext::SupplyMopObject( aId, iSkinContextOfFindPane );
-        }
-    return MAknsControlContext::SupplyMopObject( aId, NULL );
-    }
-
-// -----------------------------------------------------------------------------
 // CAknAdaptiveSearchGrid::CountComponentControls
 // Gets the number of controls contained in a compound control.
 // -----------------------------------------------------------------------------
 //   
 TInt CAknAdaptiveSearchGrid::CountComponentControls() const
     {
-    // buttons + controls + search field ( editor, input frame )    
-    return iButtonArray.Count()+5+2; 
+    // buttons + controls    
+    return iButtonArray.Count()+5;
     } 
 
 // -----------------------------------------------------------------------------
-// Sets text into search field.
-// Gets one parameters:
-// const TDesC& aSearchTxt      - Reference to the text buffer.
-// -----------------------------------------------------------------------------      
-//                   
-void CAknAdaptiveSearchGrid::SetSearchTextToFindPane( const TDesC& aSearchTxt )
-    { 
-    _AKNDEBUG(
-               _LIT( KClassName, "CAknAdaptiveSearchGrid" );
-               _LIT( KFunctionName, "SetSearchTextToFindPane" );
-               _LIT( KFormat, "[%S][%S] search text is: %S");
-               _AKNTRACE( KFormat, 
-               &KClassName, &KFunctionName, &aSearchTxt );
-               );
-
-    TRAP_IGNORE( iEditor->SetTextL( &aSearchTxt ) );
-    if ( iShown )
-        {
-        TRAP_IGNORE(iEditor->TextView()->SetCursorVisibilityL( TCursor::EFCursorFlashing,
-                                                           TCursor::EFCursorFlashing ));
-        }
-    TInt curPos = iEditor->TextLength(); 
-    //This set selection all off
-    TRAP_IGNORE( iEditor->SetSelectionL( curPos, curPos ) ); 
-    iEditor->DrawNow();
-    } 
-    
-// -----------------------------------------------------------------------------
 // CAknAdaptiveSearchGrid::ComponentControlh
 // Gets the specified component of a compound control.
 // -----------------------------------------------------------------------------
@@ -730,10 +619,6 @@
                 return iDeleteButton;
             case 4:
                 return iPageIndicator;
-            case 5:
-                return iInputFrame; 
-            case 6:
-                return iEditor;                             
             default:
                 return NULL;
             }
@@ -746,7 +631,7 @@
 // The position of the top left corner should be set in advance.
 // -----------------------------------------------------------------------------
 //
-void CAknAdaptiveSearchGrid::SetVisibilityL( TBool aVisible, TBool aSelectAll )
+void CAknAdaptiveSearchGrid::SetVisibilityL( TBool aVisible, TBool /*aSelectAll*/ )
     {
     _AKNTRACE( "[%s][%s] Visible : %d", "CAknAdaptiveSearchGrid", __FUNCTION__, aVisible );
     if ( aVisible )
@@ -754,16 +639,6 @@
         SetFocus( ETrue);  
         iCurrentPage = 1;
         ShowL();
-        if ( iEditor )
-            {
-            iEditor->SetFocus( ETrue );
-            TInt curPos = iEditor->TextLength(); 
-            iEditor->SetCursorPosL( curPos, EFalse );
-            if ( aSelectAll) 
-                {
-                iEditor->SelectAllL();
-                }
-            }    
         }
     else
         {
@@ -850,20 +725,6 @@
     TRect cell_pane; 
     
     TRect grid_pane = RectFromLayout( Rect(), AknLayoutScalable_Apps::grid_afind_pane( iLayoutOption ) );   
-    TRect find_pane; 
-     
-    if(iPopupFindpane)
-        {
-        find_pane = RectFromLayout( Rect(), AknLayoutScalable_Avkon::popup_find_window() );
-        }
-    else
-        {
-        find_pane = RectFromLayout( Rect(), AknLayoutScalable_Apps::find_pane_cp01( iLayoutOption ) );
-        } 
-    _AKNTRACE( "[%s][%s] rect of find pane is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-            find_pane.iTl.iX, find_pane.iTl.iY, find_pane.iBr.iX, find_pane.iBr.iY );   
-    iInputFrame->SetRect( find_pane ); 
-    iSkinContextOfFindPane->SetRect( find_pane );        
    
     // Backspace and close buttons
     cell_pane = RectFromLayout( grid_pane, AknLayoutScalable_Apps::cell_afind_pane(iLayoutOption, iNumOfCols-2, iNumOfRows-1) );        
@@ -875,7 +736,7 @@
         cell_pane.iTl.iY = cell_pane.iTl.iY - iOverlapLength*(iNumOfRows-1); 
         }
      _AKNTRACE( "[%s][%s] rect of delete button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-            cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
+    		cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
     iDeleteButton->SetRect( cell_pane );    
     cell_pane = RectFromLayout( grid_pane, AknLayoutScalable_Apps::cell_afind_pane(iLayoutOption, iNumOfCols-1, iNumOfRows-1) );        
    
@@ -887,7 +748,7 @@
         }
 
      _AKNTRACE( "[%s][%s] rect of close button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
+        		cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
     iCloseButton->SetRect( cell_pane ); 
 
     // For ELJG-7VC8Q2, Move all the buttons up when there is only one page
@@ -900,15 +761,15 @@
                 {
                 cell_pane = RectFromLayout( grid_pane, AknLayoutScalable_Apps::cell_afind_pane( iLayoutOption, i, j ) );             
                 if(iLayoutOption == KPortraitSinglePage ||iLayoutOption == KLandscapeSinglePage )   
-                    {
+            	    {
                     cell_pane.iTl.iY -=iOverlapLength*j;
                     cell_pane.iBr.iY -=iOverlapLength*(j+1); 
-                    }
+            	    }
                 iButtonArray[temp]->SetRect( cell_pane );
                 temp++;
                 }               
             } 
-        }
+    	}
 
    
     if ( Layout_Meta_Data::IsLandscapeOrientation() && AknLayoutUtils::LayoutMirrored() )
@@ -930,25 +791,25 @@
                 }
 
             _AKNTRACE( "[%s][%s] rect of delete button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                        cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY ); 
+                		cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY ); 
             iDeleteButton->SetRect( cell_pane );        
             cell_pane = RectFromLayout( cont_pane, AknLayoutScalable_Apps::cell_afind_grid_control_pane(0,1) ); 
 
             // For ELJG-7VC8Q2, Move close button up
             if(iPopupFindpane)
                 {
-                cell_pane.iBr.iY = cell_pane.iBr.iY - iOverlapLength*(iNumOfRows+1);        
+                cell_pane.iBr.iY = cell_pane.iBr.iY - iOverlapLength*(iNumOfRows+1);      	
                 }
 
             _AKNTRACE( "[%s][%s] rect of close button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                        cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
+                		cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
             iCloseButton->SetRect( cell_pane );         
             }
         // Page pane    
         TRect page_pane;       
         page_pane = RectFromLayout( Rect(), AknLayoutScalable_Apps::afind_page_pane( iLayoutOption) );  
         _AKNTRACE( "[%s][%s] rect of page pane is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                page_pane.iTl.iX, page_pane.iTl.iY, page_pane.iBr.iX, page_pane.iBr.iY );
+        		page_pane.iTl.iX, page_pane.iTl.iY, page_pane.iBr.iX, page_pane.iBr.iY );
         AknLayoutUtils::LayoutLabel( iPageIndicator, Rect(), 
         TAknWindowComponentLayout::ComposeText( AknLayoutScalable_Apps::afind_page_pane( iLayoutOption ), 
         AknLayoutScalable_Apps::afind_page_pane_t1() ).LayoutLine() );
@@ -964,7 +825,7 @@
                 cell_pane.iBr.iY = cell_pane.iBr.iY - iOverlapLength*(iNumOfRows+1);
                 }
             _AKNTRACE( "[%s][%s] rect of pre page button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                                cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
+                           		cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
             iPrevButton->SetRect( cell_pane );
             cell_pane = RectFromLayout( page_pane, AknLayoutScalable_Apps::afind_page_pane_g3( iLayoutOption) );  
             
@@ -974,7 +835,7 @@
                 cell_pane.iBr.iY = cell_pane.iBr.iY - iOverlapLength*(iNumOfRows+1);
                 }
             _AKNTRACE( "[%s][%s] rect of next page button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                                cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
+                           		cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
             iNextButton->SetRect( cell_pane );  
             }
         else
@@ -987,7 +848,7 @@
                 cell_pane.iBr.iY = cell_pane.iBr.iY - iOverlapLength*(iNumOfRows+1);
                 } 
             _AKNTRACE( "[%s][%s] rect of next page button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                                cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
+                           		cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
             iNextButton->SetRect( cell_pane );       
             cell_pane = RectFromLayout( page_pane, AknLayoutScalable_Apps::afind_page_pane_g3( iLayoutOption) ); 
             
@@ -998,7 +859,7 @@
                 }
  
             _AKNTRACE( "[%s][%s] rect of pre page button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                                cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
+                           		cell_pane.iTl.iX, cell_pane.iTl.iY, cell_pane.iBr.iX, cell_pane.iBr.iY );
             iPrevButton->SetRect( cell_pane );   
             }    
         
@@ -1127,10 +988,16 @@
         iPrevButton->MakeVisible( ETrue );          
         iPageIndicator->MakeVisible( ETrue );   
         }
-    iCloseButton->MakeVisible( ETrue );
-    iDeleteButton->MakeVisible( ETrue );
-    iInputFrame->MakeVisible( ETrue ); 
-    iEditor->MakeVisible( ETrue );
+    if(iGridChars)
+        {
+        iCloseButton->MakeVisible( ETrue );
+        iDeleteButton->MakeVisible( ETrue );
+        }
+    else
+        {
+        iCloseButton->MakeVisible( EFalse );
+        iDeleteButton->MakeVisible( EFalse );
+        }
     }
     
 // -----------------------------------------------------------------------------
@@ -1159,15 +1026,13 @@
     TBool needRelayout = EFalse;
     if( Layout_Meta_Data::IsLandscapeOrientation())
         {
-        if ( iLayoutOption == KPortraitMultiPage || iLayoutOption == KPortraitSinglePage )
+        if ( iLayoutOption == KPortraitMultiPage 
+                || iLayoutOption == KPortraitSinglePage 
+                || iFindPaneSizeChanged )
             {       
             needRelayout = ETrue;
+            iFindPaneSizeChanged = EFalse;
             }
-        else if ( toolbar && toolbar->IsVisible() && iToolbarShown == EFalse )
-            {
-            needRelayout = ETrue;
-            }
-            
         }
     else if ( iLayoutOption == KLandscapeMultiPage || iLayoutOption == KLandscapeSinglePage )
         {       
@@ -1240,10 +1105,6 @@
         {
         return;
         }  
-  
-    iEditor->TextView()->SetCursorVisibilityL( 
-        TCursor::EFCursorInvisible, TCursor::EFCursorInvisible);
-            
     SetFocus( EFalse );
     //fix for TSW error EKDN-7KW9P2
     SetShown( EFalse );
@@ -1262,7 +1123,7 @@
 // This function is called whenever a control gains or loses focus.
 // -----------------------------------------------------------------------------
 // 
-void CAknAdaptiveSearchGrid::FocusChanged( TDrawNow aDrawNow )
+void CAknAdaptiveSearchGrid::FocusChanged( TDrawNow /*aDrawNow*/ )
     {
     if ( !iShown || IsNonFocusing() )
         {
@@ -1270,8 +1131,6 @@
         }      
     if ( !IsFocused() && iLastFocusedButton )               
         iLastFocusedButton->ResetState();        
-    
-    iInputFrame->SetFocus( IsFocused(), aDrawNow );
     }        
         
 
@@ -1299,24 +1158,15 @@
         TPointerEvent& pointerEvent = *aEvent.Pointer();
         
         if( pointerEvent.iType == TPointerEvent::EButton1Down ) 
-            {     
-             if( iInputFrame->Rect().Contains(pointerEvent.iPosition) || 
+            {
+            if ( !iFindpaneRect.Contains( pointerEvent.iPosition ) &&
                 aDestination != this )
-                {  
-            MTouchFeedback* feedback = MTouchFeedback::Instance();
-            
-            // according to Touch UI spec tapping on input frame should cause feedback, 
-            // even if action is to cancel dialog..
-            if ( feedback )
                 {
-                feedback->InstantFeedback( this, ETouchFeedbackBasic );
+                HideL();
+                return;
                 }
-                
-                HideL();
-                return;                          
-                }                             
-            }   
-        }                     
+            }
+        }
     }
         
        
@@ -1391,7 +1241,12 @@
             }
         }
     _AKNTRACE_FUNC_EXIT;
-    }       
+    }     
+
+static CAknButton* GetButtonHelper( RPointerArray<CAknButton> &aButtonArray, TInt aIndex )
+    {
+    return ( aIndex < aButtonArray.Count() && aIndex >= 0 ) ? aButtonArray[aIndex] : NULL;
+    }
 
 // -----------------------------------------------------------------------------
 // CAknAdaptiveSearchGrid::UpdateVisibleButtonsL()
@@ -1424,8 +1279,11 @@
         CAknButton* tmpButton = NULL;    
         for( TInt i = 0; i < iButtonArray.Count(); i++ )
             {
-            tmpButton = static_cast<CAknButton*>( iButtonArray[i] );            
-            tmpButton->MakeVisible( EFalse );
+            tmpButton = GetButtonHelper( iButtonArray, i );
+            if ( NULL != tmpButton )
+                {
+                tmpButton->MakeVisible( EFalse );
+                }
             }
                 
         TInt tempTotalGridButtons = iTotalGridButtons - KCloseAndClearButtonCount;               
@@ -1433,7 +1291,12 @@
             {       
             for ( TInt i = 0; i < tempTotalGridButtons; i++ )
                 {
-                button = static_cast<CAknButton*>( iButtonArray[tempTotalGridButtons-i-1] );
+                button = GetButtonHelper( iButtonArray, tempTotalGridButtons-i-1 );
+                if ( NULL == button )
+                    {
+                    continue;
+                    }
+                
                 TInt charPosition = numOfChars-i-1-shift_Ind;
                 if ( charPosition >= 0 ) 
                     {
@@ -1449,7 +1312,7 @@
                         button->SetIconSize( iButtonIconSize );                                      
                         }
                     else
-                        {
+                        { 
                         if( bState->Icon() )
                             {
                             bState->SetIcon( NULL );          
@@ -1468,7 +1331,7 @@
                         }                  
                     button_rect = button->Rect();
                     _AKNTRACE( "[%s][%s] rect of button %s is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__, bState->Text().Ptr(), 
-                            button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
+                    		button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
                     iCurrentRegion.AddRect( button_rect );
                     button->MakeVisible( ETrue );
                     }
@@ -1506,8 +1369,13 @@
                 TInt offset = tempTotalGridButtons - charsOnLastPage;   
                 
                 for ( TInt i = tempTotalGridButtons-1 ; i >= 0 ; --i )
-                    {
-                    button = static_cast<CAknButton*>(iButtonArray[i+shift_Ind]);
+                    {                  
+                    button = GetButtonHelper( iButtonArray, i+shift_Ind );
+                    if ( NULL == button )
+                        {
+                        continue;
+                        }
+                
                     if( i < offset )
                         {
                         button->MakeVisible( EFalse );                  
@@ -1548,7 +1416,7 @@
                             }                  
                         button_rect = button->Rect();
                         _AKNTRACE( "[%s][%s] rect of button %s is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__, bState->Text().Ptr(), 
-                                                button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
+                                           		button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
                         iCurrentRegion.AddRect( button_rect );
                         button->MakeVisible( ETrue );
                         }
@@ -1564,8 +1432,13 @@
                 for ( TInt i = 0; i < numOfChars; i++ )
                     {
                     if ( ( i >= start) && (i < end) )
-                        {   
-                        button = static_cast<CAknButton*>(iButtonArray[i-start-shift_Ind]);
+                        {                      
+                        button = GetButtonHelper( iButtonArray, i-start-shift_Ind );
+                        if ( NULL == button )
+                            {
+                            continue;
+                            }
+                    
                         bState = button->State();               
                         if( ptr.Mid(i, 1) == KSpaceCharacter )
                             {  
@@ -1606,7 +1479,7 @@
                             }                  
                         button_rect = button->Rect();
                         _AKNTRACE( "[%s][%s] rect of button %s is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__, bState->Text().Ptr(), 
-                                                button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
+                                           		button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
                         iCurrentRegion.AddRect( button_rect );
                         button->MakeVisible( ETrue );
                         
@@ -1618,29 +1491,29 @@
                         }
                     for ( TInt i = tempTotalGridButtons; i < tempTotalGridButtons+iNumOfCols; i++ )
                         {
-                        button = static_cast<CAknButton*>(iButtonArray[i]);
-                        button->MakeVisible( EFalse );  
+                        button = GetButtonHelper( iButtonArray, i );
+                        if ( NULL != button )
+                            {
+                            button->MakeVisible( EFalse );  
+                            }
+                        
                         }           
                 }               
             }        
         button_rect = iDeleteButton->Rect();
         _AKNTRACE( "[%s][%s] rect of delete button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                                button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
+                           		button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
         iCurrentRegion.AddRect( button_rect );
         button_rect = iCloseButton->Rect();
         _AKNTRACE( "[%s][%s] rect of close button is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                                button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
-        iCurrentRegion.AddRect( button_rect );
-        button_rect = iInputFrame->Rect();
-        _AKNTRACE( "[%s][%s] rect of Input Frame is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                                        button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
+                           		button_rect.iTl.iX, button_rect.iTl.iY, button_rect.iBr.iX, button_rect.iBr.iY );
         iCurrentRegion.AddRect( button_rect );
         if( iNumOfPages > 1 )
             {
             TRect page_pane;       
             page_pane = RectFromLayout( Rect(), AknLayoutScalable_Apps::afind_page_pane(iLayoutOption) );   
             _AKNTRACE( "[%s][%s] rect of page pane is %d %d %d %d ", "CAknAdaptiveSearchGrid", __FUNCTION__,
-                    page_pane.iTl.iX, page_pane.iTl.iY, page_pane.iBr.iX, page_pane.iBr.iY );
+            		page_pane.iTl.iX, page_pane.iTl.iY, page_pane.iBr.iX, page_pane.iBr.iY );
             iCurrentRegion.AddRect( page_pane );
             }    
         }
@@ -1736,20 +1609,20 @@
     _AKNTRACE( "[%s][%s] Event Type : %d ", "CAknAdaptiveSearchGrid", __FUNCTION__, aType );
     switch( aType )
         {
-        case KEikDynamicLayoutVariantSwitch:
-            {
-            UpdateLayoutVariant();
-            break;
-            }
+    	case KEikDynamicLayoutVariantSwitch:
+        	{
+        	UpdateLayoutVariant();
+        	break;
+        	}
         case KAknsMessageSkinChange:
-            {
-            TRAP_IGNORE( UpdateSkinL() );
-            break;
-            }
+        	{
+        	TRAP_IGNORE( UpdateSkinL() );
+        	break;
+        	}
         default:
-            {
-            break;
-            }
+        	{
+        	break;
+        	}
         }
         
     CAknControl::HandleResourceChange( aType );
@@ -1787,5 +1660,30 @@
     return iAdaptiveSearchGridObserver;
     }
         
+
+// -----------------------------------------------------------------------------
+// CAknAdaptiveSearch::SaveFindPaneRect()
+// When the rect of find pane is set, this functions will be notified
+// to record the size of it.
+// -----------------------------------------------------------------------------
+//
+void CAknAdaptiveSearchGrid::SaveFindPaneRect( const TRect &aRect )
+    {
+    //When width is zero, no need to deal with.
+    if ( 0 == aRect.Size().iWidth )
+        {
+        return;
+        }
+    
+    //The same size already is set. No need to do further process.
+    if ( aRect == iFindpaneRect )
+        {
+        return;    
+        }
+
+    iFindpaneRect = aRect;
+    iFindPaneSizeChanged = ETrue;
+    }
+
 // End of File