browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp
changeset 10 57d5b8e231c4
parent 0 84ad3b177aa3
child 18 4530440261a8
equal deleted inserted replaced
0:84ad3b177aa3 10:57d5b8e231c4
    20 
    20 
    21 // INCLUDE FILES
    21 // INCLUDE FILES
    22 
    22 
    23 #include <AknViewAppUi.h>
    23 #include <AknViewAppUi.h>
    24 #include <aknsfld.h>
    24 #include <aknsfld.h>
       
    25 #include <avkon.mbg>
    25 #include <BrowserNG.rsg>
    26 #include <BrowserNG.rsg>
    26 #include <FavouritesItem.h>
    27 #include <FavouritesItem.h>
    27 #include <FeatMgr.h>
    28 #include <FeatMgr.h>
       
    29 #include "BrowserBookmarksView.h"
    28 
    30 
    29 #include "CommonConstants.h"
    31 #include "CommonConstants.h"
    30 #include "BrowserFavouritesView.h"
    32 #include "BrowserFavouritesView.h"
    31 #include "BrowserBookmarksContainer.h"
    33 #include "BrowserBookmarksContainer.h"
    32 #include "BrowserBookmarksGotoPane.h"
    34 #include "BrowserBookmarksGotoPane.h"
    39 #include "BrowserApplication.h"
    41 #include "BrowserApplication.h"
    40 #include <csxhelp/browser.hlp.hrh>
    42 #include <csxhelp/browser.hlp.hrh>
    41 #endif // __SERIES60_HELP
    43 #endif // __SERIES60_HELP
    42 #include "Logger.h"
    44 #include "Logger.h"
    43 #include "e32event.h"
    45 #include "e32event.h"
       
    46 #include "BrowserUiSDKCRKeys.h"
       
    47 #include <StringLoader.h>
    44 
    48 
    45 // CONSTANTS
    49 // CONSTANTS
    46 
    50 
    47 /// Tab index for Bookmarks View.
    51 /// Tab index for Bookmarks View.
    48 LOCAL_D const TInt KBookmarkTabIndex = 0;
    52 LOCAL_D const TInt KBookmarkTabIndex = 0;
    70 // ---------------------------------------------------------
    74 // ---------------------------------------------------------
    71 //
    75 //
    72 CBrowserBookmarksContainer::~CBrowserBookmarksContainer()
    76 CBrowserBookmarksContainer::~CBrowserBookmarksContainer()
    73     {
    77     {
    74     delete iGotoPane;
    78     delete iGotoPane;
       
    79     delete iSearchPane;
       
    80     delete iDefaultSearchText;
    75     }
    81     }
    76 
    82 
    77 // ---------------------------------------------------------
    83 // ---------------------------------------------------------
    78 // CBrowserBookmarksContainer::SetGotoActiveL
    84 // CBrowserBookmarksContainer::SetGotoActiveL
    79 // ---------------------------------------------------------
    85 // ---------------------------------------------------------
    83     if( !iGotoPaneActive)
    89     if( !iGotoPaneActive)
    84     	{
    90     	{
    85        	iGotoPaneActive = ETrue;
    91        	iGotoPaneActive = ETrue;
    86 
    92 
    87     	Listbox()->UpdateFilterL();	
    93     	Listbox()->UpdateFilterL();	
    88     	
    94     	if( iSearchPane )
       
    95     	    {
       
    96     	    iGotoPane->SetVKBFlag( EFalse );
       
    97     	    // Check for Search Configuration Changes //
       
    98     	    if( View().ApiProvider().Preferences().GetIntValue( KBrowserSearchIconId )
       
    99     	            != iSearchIconId )
       
   100                 {   
       
   101     	        ConstructSearchPaneL();
       
   102                 }
       
   103     	    
       
   104             iSearchPane->SetFocus( EFalse );
       
   105         	// only one editor can be active at a time //
       
   106         	iSearchPaneActive = EFalse;
       
   107         	// we still need to display search, when showing for first time //
       
   108         	iSearchPane->MakeVisible(ETrue);
       
   109             iSearchPane->CancelEditingL();
       
   110     	    }
       
   111             
    89     	// redraw
   112     	// redraw
    90     	SizeChanged();
   113     	SizeChanged();
    91     	
   114     	
    92     	iGotoPane->BeginEditingL();
   115         // It is important to set the Text and Italic property after SizeChanged, because
    93     	
   116         // iInputFrame->SetRect() event on GoTo/Search Pane calls the scalable version 
       
   117         // ( AknLayoutUtils::LayoutEdwinScalable ) which overwrites all the properties for
       
   118         // Char and Para Formats.
       
   119         if( iSearchPane )
       
   120             {
       
   121             iSearchPane->SetTextModeItalicL();
       
   122             HBufC* text = iSearchPane->GetTextL();
       
   123             CleanupStack::PushL( text );
       
   124             if ( !text->Length() )
       
   125                 {
       
   126                 iSearchPane->SetTextL( *iDefaultSearchText );
       
   127                 }
       
   128             CleanupStack::PopAndDestroy( text );
       
   129             }
       
   130         
       
   131         iGotoPane->BeginEditingL();
    94        	DrawDeferred();      	
   132        	DrawDeferred();      	
    95     	}
   133     	}
    96     }
   134     }
       
   135     	
       
   136 // ---------------------------------------------------------
       
   137 // CBrowserBookmarksContainer::SetSearchActiveL
       
   138 // ---------------------------------------------------------
       
   139 //
       
   140 void CBrowserBookmarksContainer::SetSearchActiveL()
       
   141     {    
       
   142     if( ! iSearchPaneActive )
       
   143         {
       
   144         // Check for Search Configuration Changes //
       
   145         if( View().ApiProvider().Preferences().GetIntValue( KBrowserSearchIconId ) 
       
   146                 != iSearchIconId )
       
   147             {
       
   148             ConstructSearchPaneL();
       
   149             }
       
   150             
       
   151         iSearchPane->SetVKBFlag( EFalse );
       
   152         iSearchPane->SetFocus( ETrue );
       
   153         iSearchPaneActive = ETrue;
       
   154         
       
   155         Listbox()->UpdateFilterL();
       
   156         // only one editor can be active at a time
       
   157         iGotoPaneActive = EFalse;
       
   158         iGotoPane->MakeVisible(ETrue);
       
   159         iGotoPane->SetFocus( EFalse );        
       
   160         iGotoPane->CancelEditingL();
       
   161         
       
   162         // redraw
       
   163         SizeChanged();
       
   164         
       
   165         // Not Focused, so set the current Text Mode to italics.
       
   166         iGotoPane->SetTextModeItalicL();
       
   167         // if gotopane is empty add default text
       
   168         HBufC* text = iGotoPane->GetTextL();
       
   169         CleanupStack::PushL( text );
       
   170         if ( !text->Length() )
       
   171             {
       
   172             iGotoPane->SetTextL( KWWWString );
       
   173             }
       
   174         CleanupStack::PopAndDestroy( text );
       
   175         
       
   176         iSearchPane->BeginEditingL();
       
   177         DrawDeferred();
       
   178         }
       
   179        
       
   180     }
    97 
   181 
    98 
   182 
    99 // ---------------------------------------------------------
   183 // ---------------------------------------------------------
   100 // CBrowserBookmarksContainer::SetGotoInactiveL();
   184 // CBrowserBookmarksContainer::SetGotoInactiveL();
   101 // ---------------------------------------------------------
   185 // ---------------------------------------------------------
   102 //
   186 //
   103 
   187 
   104 void CBrowserBookmarksContainer::SetGotoInactiveL()
   188 void CBrowserBookmarksContainer::SetGotoInactiveL()
   105 	{
   189 	{
   106 	if(iGotoPaneActive)
   190 	if( iGotoPaneActive || iSearchPaneActive )
   107 		{
   191 		{
       
   192 		
       
   193 		  if( iSearchPane )
       
   194             {
       
   195             /* In Search Feature we have to move between the editors preserving the 
       
   196              * text added, clear the text when cancel is pressed.
       
   197              */
       
   198             iGotoPane->SetTextL( KNullDesC , ETrue );
       
   199             SetSearchInactiveL();
       
   200             }
       
   201 		// Deactivate GoTo Pane
   108 		iGotoPaneActive = EFalse;
   202 		iGotoPaneActive = EFalse;
   109 			
   203 			
   110 		// Deactivate GoTo Pane
   204 		// Deactivate GoTo Pane
   111     	iGotoPane->MakeVisible( EFalse );
   205     	iGotoPane->MakeVisible( EFalse );
   112     	iGotoPane->CancelEditingL();
   206     	iGotoPane->CancelEditingL();
   117 		SizeChanged();
   211 		SizeChanged();
   118 		DrawDeferred();
   212 		DrawDeferred();
   119 		}
   213 		}
   120 	}
   214 	}
   121 	
   215 	
       
   216 void CBrowserBookmarksContainer::SetSearchInactiveL()
       
   217     {
       
   218     iSearchPaneActive = EFalse; 
       
   219     iSearchPane->SetTextL( KNullDesC , ETrue);
       
   220     iSearchPane->MakeVisible( EFalse );
       
   221     iSearchPane->CancelEditingL();
       
   222     }
       
   223 
   122 // ---------------------------------------------------------
   224 // ---------------------------------------------------------
   123 // CBrowserBookmarksContainer::CountComponentControls
   225 // CBrowserBookmarksContainer::CountComponentControls
   124 // ---------------------------------------------------------
   226 // ---------------------------------------------------------
   125 //
   227 //
   126 TInt CBrowserBookmarksContainer::CountComponentControls() const
   228 TInt CBrowserBookmarksContainer::CountComponentControls() const
   127     {
   229     {
   128     return (Listbox() ? 1 : 0) + (iGotoPane ? 1 : 0);
   230     return (Listbox() ? 1 : 0) + (iGotoPane ? 1 : 0) + (iSearchPane? 1 : 0) ;
   129     }
   231     }
   130 
   232 
   131 // ---------------------------------------------------------
   233 // ---------------------------------------------------------
   132 // CBrowserBookmarksContainer::ComponentControl
   234 // CBrowserBookmarksContainer::ComponentControl
   133 // ---------------------------------------------------------
   235 // ---------------------------------------------------------
   144 
   246 
   145         case 1:
   247         case 1:
   146             {
   248             {
   147             return iGotoPane;
   249             return iGotoPane;
   148             }
   250             }
   149 
   251         case 2:
       
   252             {
       
   253             return iSearchPane;
       
   254             }
   150         default:
   255         default:
   151             {
   256             {
   152             return NULL;
   257             return NULL;
   153             }
   258             }
   154         }
   259         }
   162     {
   267     {
   163     TRect rect = Rect();
   268     TRect rect = Rect();
   164     TInt unfilteredNumberOfItems = Listbox()->UnfilteredNumberOfItems();
   269     TInt unfilteredNumberOfItems = Listbox()->UnfilteredNumberOfItems();
   165     
   270     
   166     // if goto pane is active
   271     // if goto pane is active
   167     if( iGotoPaneActive )
   272     if( iGotoPaneActive || iSearchPaneActive )
   168     	{
   273     	{
   169         	// Enable / disable line in Goto Pane (hide if listbox is empty).
   274     	if( iSearchPane )
       
   275     	    {
       
   276     	    TAknWindowLineLayout findPane = AknLayout::find_pane();
       
   277         	
       
   278     	    // Enable / disable line in Goto Pane (hide if listbox is empty).
   170         	iGotoPane->SetLineState( unfilteredNumberOfItems > 0 );
   279         	iGotoPane->SetLineState( unfilteredNumberOfItems > 0 );
   171         	
   280         	
       
   281         	TAknWindowLineLayout listLayout = AknLayout::list_gen_pane( 1 );
       
   282         	
       
   283         	TRect listBoxRect = AknLayoutUtils::RectFromCoords( rect,listLayout.il, 
       
   284         	        listLayout.it, listLayout.ir, listLayout.ib, listLayout.iW, listLayout.iH);
       
   285         	
       
   286         	/* Now we need to make room for both Goto and Search Pane.
       
   287         	 * No layout specification was suitable for this case, so 
       
   288         	 * substracting the height of pane.
       
   289         	 */ 
       
   290         	listBoxRect.iBr.iY -= findPane.iH;
       
   291         	
   172         	// In Goto Mode, the listbox is laid out leaving space for Goto Pane.
   292         	// In Goto Mode, the listbox is laid out leaving space for Goto Pane.
   173         	AknLayoutUtils::LayoutControl( Listbox(), rect, AknLayout::list_gen_pane( 1 ));
   293         	Listbox()->SetRect( listBoxRect );
   174         	
   294         	
   175         	// Lay out Goto Pane as if it was the old Find Pane.
   295         
   176         	AknLayoutUtils::LayoutControl( iGotoPane, rect, AknLayout::find_pane() );
   296         	// Now Lay out Search Pane as if it was the old Find Pane.
       
   297             AknLayoutUtils::LayoutControl( iSearchPane, rect, findPane );
       
   298         	
       
   299         	TRect gotoRect = AknLayoutUtils::RectFromCoords( rect,findPane.il, findPane.it, 
       
   300         	        findPane.ir, findPane.ib, findPane.iW, findPane.iH);
       
   301         	
       
   302         	// Calculate the new position for GoToPane.
       
   303         	gotoRect.iTl.iY -= ( findPane.iH );
       
   304         	gotoRect.iBr.iY -= ( findPane.iH );
       
   305         	iGotoPane->SetRect( gotoRect );
       
   306         	
       
   307     	    }
       
   308     	else
       
   309     	    {
       
   310     	    // Enable / disable line in Goto Pane (hide if listbox is empty).
       
   311             iGotoPane->SetLineState( unfilteredNumberOfItems > 0 );
       
   312              
       
   313             // In Goto Mode, the listbox is laid out leaving space for Goto Pane.
       
   314             AknLayoutUtils::LayoutControl( Listbox(), rect, AknLayout::list_gen_pane( 1 ));
       
   315              
       
   316             // Lay out Goto Pane as if it was the old Find Pane.
       
   317             AknLayoutUtils::LayoutControl( iGotoPane, rect, AknLayout::find_pane() );
       
   318     	    }
   177     	}
   319     	}
   178 	else
   320 	else
   179     	{
   321     	{
   180         	// Fall back upon default behavior in base-class, which lays out the bookmarks list only
   322         	// Fall back upon default behavior in base-class, which lays out the bookmarks list only
   181         	CBrowserFavouritesContainer::SizeChanged();
   323         	CBrowserFavouritesContainer::SizeChanged();
   255             	    }
   397             	    }
   256     	    }
   398     	    }
   257 	    }
   399 	    }
   258 		// If the Goto Pane exists and we're not fetching, then decide
   400 		// If the Goto Pane exists and we're not fetching, then decide
   259 		// if we should pass keystroke to it
   401 		// if we should pass keystroke to it
   260 	if(iGotoPane)
   402 	if(iGotoPane && !CBrowserAppUi::Static()->Fetching())
   261 		{
   403 		{
   262 		// If the key so far hadn't been consumed or if the pane is already active,
   404 		// If the key so far hadn't been consumed or if the pane is already active,
   263 		// pass the keystroke on
   405 		// pass the keystroke on
   264 		if( (result == EKeyWasNotConsumed) || (iGotoPaneActive) )
   406 		if( (result == EKeyWasNotConsumed) || iGotoPaneActive || iSearchPaneActive )
   265 			{			
   407 			{			
   266         	// Goto pane has highest priority; if it's active, arrow keys go there.
   408         	// Goto pane has highest priority; if it's active, arrow keys go there.
   267         	// If fetching is in progress, no key events are offered, to prevent it
   409         	// If fetching is in progress, no key events are offered, to prevent it
   268         	// from getting the focus and popping up a new CBA.
   410         	// from getting the focus and popping up a new CBA.
   269         	
   411         	
   270         	// Enter Key  now handled through HandleCommand in BrowserBookmarksView like MSK
   412         	// Enter Key  now handled through HandleCommand in BrowserBookmarksView like MSK
   271 			// This change affects the enter key on the QWERTY keyboard when we run emulator
   413 			// This change affects the enter key on the QWERTY keyboard when we run emulator
   272         	if(EStdKeyEnter == aKeyEvent.iScanCode && EEventKeyUp == aType && AknLayoutUtils::MSKEnabled() && iGotoPaneActive )
   414         	if(EStdKeyEnter == aKeyEvent.iScanCode && EEventKeyUp == aType && AknLayoutUtils::MSKEnabled() && (iGotoPaneActive || iSearchPaneActive ))
   273 				{
   415 				{
   274 				CEikButtonGroupContainer* myCba = CEikButtonGroupContainer::Current();
   416 				CEikButtonGroupContainer* myCba = CEikButtonGroupContainer::Current();
   275 				if(myCba != NULL)
   417 				if(myCba != NULL)
   276 					{
   418 					{
   277 					TInt cmdId = myCba->ButtonGroup()->CommandId(CEikButtonGroupContainer::EMiddleSoftkeyPosition);
   419 					TInt cmdId = myCba->ButtonGroup()->CommandId(CEikButtonGroupContainer::EMiddleSoftkeyPosition);
   278 					View().HandleCommandL(cmdId);
   420 					View().HandleCommandL(cmdId);
   279 					result = EKeyWasConsumed;
   421 					result = EKeyWasConsumed;
   280 					}
   422 					}
   281 				}
   423 				}
   282 			else
   424 			else
   283 				{
   425 			    {
   284 				result = iGotoPane->OfferKeyEventL( keyEvent, aType );	
   426 			    if( iSearchPane )
       
   427 			        {
       
   428 			        // Process separately for Search Feature //
       
   429 			        if( iGotoPaneActive )
       
   430 			            {
       
   431                         result = iGotoPane->OfferKeyEventL( keyEvent, aType );
       
   432 			            }
       
   433                     else 
       
   434                         {
       
   435                         result = iSearchPane->OfferKeyEventL( keyEvent, aType );
       
   436                         }
       
   437  			        }
       
   438 			    else
       
   439 			        result = iGotoPane->OfferKeyEventL( keyEvent, aType );
   285 				}
   440 				}
   286         
   441         	
       
   442         	if( iSearchPane )
       
   443         	    {
       
   444             	if( ( iGotoPaneActive || iSearchPaneActive) && result == EKeyWasNotConsumed ) 
       
   445                     {
       
   446                     
       
   447                     if(  aKeyEvent.iCode == EKeyUpArrow )
       
   448                         {
       
   449                         result = EKeyWasConsumed;
       
   450                         if( iSearchPaneActive )
       
   451                             {
       
   452                             SetGotoActiveL();
       
   453                             iGotoPane->SetVKBFlag( ETrue );
       
   454                             }
       
   455                         }
       
   456                     if( aKeyEvent.iCode == EKeyDownArrow )
       
   457                         {
       
   458                         result = EKeyWasConsumed;
       
   459                         if( iGotoPaneActive )
       
   460                             {
       
   461                             SetSearchActiveL();
       
   462                             iSearchPane->SetVKBFlag( ETrue );
       
   463                             }
       
   464                         }
       
   465                     }
       
   466         	    }
       
   467             
   287 			// if key is consumed, goto pane was not active, make it active now.
   468 			// if key is consumed, goto pane was not active, make it active now.
   288         	if(result == EKeyWasConsumed &&
   469         	if(result == EKeyWasConsumed && (!iGotoPaneActive && !iSearchPaneActive))
   289         		!iGotoPaneActive)
       
   290         		{
   470         		{
   291         		SetGotoActiveL();	
   471         		SetGotoActiveL();	
   292         		}
   472         		}
   293         	}
   473         	}
   294 		}
   474 		}
   371     editing = iGotoPane->IsEditing();
   551     editing = iGotoPane->IsEditing();
   372     return editing;
   552     return editing;
   373     }
   553     }
   374 
   554 
   375 // ---------------------------------------------------------
   555 // ---------------------------------------------------------
       
   556 // CBrowserBookmarksContainer::IsEditingSearch
       
   557 // ---------------------------------------------------------
       
   558 //
       
   559 TBool CBrowserBookmarksContainer::IsEditingSearch()
       
   560     {
       
   561     TBool editing = EFalse;
       
   562     if( iSearchPane )
       
   563         {
       
   564         editing = iSearchPane->IsEditing();
       
   565         }
       
   566     return editing;
       
   567     }
       
   568 
       
   569 // ---------------------------------------------------------
   376 // CBrowserBookmarksContainer::TabIndex
   570 // CBrowserBookmarksContainer::TabIndex
   377 // ---------------------------------------------------------
   571 // ---------------------------------------------------------
   378 //
   572 //
   379 TInt CBrowserBookmarksContainer::TabIndex()
   573 TInt CBrowserBookmarksContainer::TabIndex()
   380     {
   574     {
   402 // ---------------------------------------------------------
   596 // ---------------------------------------------------------
   403 // CBrowserBookmarksContainer::CBrowserBookmarksContainer
   597 // CBrowserBookmarksContainer::CBrowserBookmarksContainer
   404 // ---------------------------------------------------------
   598 // ---------------------------------------------------------
   405 //
   599 //
   406 CBrowserBookmarksContainer::CBrowserBookmarksContainer()
   600 CBrowserBookmarksContainer::CBrowserBookmarksContainer()
   407 : iGotoPaneActive( EFalse )
   601 : iGotoPaneActive( EFalse ),iSearchPaneActive(EFalse)
   408     {
   602     {
   409     }
   603     }
   410 
   604 
   411 // ---------------------------------------------------------
   605 // ---------------------------------------------------------
   412 // CBrowserBookmarksContainer::ConstructComponentControlsL
   606 // CBrowserBookmarksContainer::ConstructComponentControlsL
   421 
   615 
   422 
   616 
   423     // Construct Goto Pane.
   617     // Construct Goto Pane.
   424     
   618     
   425     //pass view to bookmarks goto pane
   619     //pass view to bookmarks goto pane
   426     iGotoPane = CBrowserBookmarksGotoPane::NewL( *this, &aView );
   620     iGotoPane = CBrowserBookmarksGotoPane::NewL( *this, &aView, KAvkonBitmapFile,
       
   621             EMbmAvkonQgn_indi_find_goto,
       
   622             EMbmAvkonQgn_indi_find_goto_mask);
   427     iGotoPane->SetFocus( EFalse );
   623     iGotoPane->SetFocus( EFalse );
       
   624     
       
   625     if( View().ApiProvider().Preferences().SearchFeature() )
       
   626         {
       
   627         ConstructSearchPaneL();
       
   628         iSearchPane->SetFocus( EFalse );
       
   629         iDefaultSearchText = StringLoader::LoadL( R_IS_WEB_SEARCH );
       
   630         }
   428     }
   631     }
   429 
   632 
   430 // ---------------------------------------------------------
   633 // ---------------------------------------------------------
   431 // CBrowserBookmarksContainer::CreateListboxIconHandlerL
   634 // CBrowserBookmarksContainer::CreateListboxIconHandlerL
   432 // ---------------------------------------------------------
   635 // ---------------------------------------------------------
   456 void CBrowserBookmarksContainer::FocusChanged( TDrawNow aDrawNow )
   659 void CBrowserBookmarksContainer::FocusChanged( TDrawNow aDrawNow )
   457     {
   660     {
   458     if ( IsEditing() )
   661     if ( IsEditing() )
   459         {
   662         {
   460         iGotoPane->SetFocus( IsFocused(), aDrawNow );
   663         iGotoPane->SetFocus( IsFocused(), aDrawNow );
       
   664         }
       
   665     else if( IsEditingSearch() )
       
   666         {
       
   667         iSearchPane->SetFocus( IsFocused(), aDrawNow );
   461         }
   668         }
   462     else if ( Listbox() && Listbox()->IsVisible() )
   669     else if ( Listbox() && Listbox()->IsVisible() )
   463         {
   670         {
   464         Listbox()->SetFocus( IsFocused(), aDrawNow );
   671         Listbox()->SetFocus( IsFocused(), aDrawNow );
   465         }
   672         }
   476 		// if goto is active, if a pointer event falls within its rect, 
   683 		// if goto is active, if a pointer event falls within its rect, 
   477 		// pass all pointer events to it (such as, to bring up the editor's letter-entry)
   684 		// pass all pointer events to it (such as, to bring up the editor's letter-entry)
   478 		//
   685 		//
   479 		// otherwise, if it falls within the listbox's rect
   686 		// otherwise, if it falls within the listbox's rect
   480 		//
   687 		//
   481         if (iGotoPaneActive && iGotoPane)
   688         
   482 			{		
   689         // Now we have two different panes so we have to check explicitly before passing controls
   483     		iGotoPane->HandlePointerEventL(aPointerEvent);
   690         // to any panes.
   484 			}
   691         if( iGotoPane && ( iGotoPaneActive || iSearchPaneActive) )
       
   692             {
       
   693             if( iSearchPane )//implies presence of search feature.
       
   694                 {
       
   695                  if( iGotoPane->Rect().Contains( aPointerEvent.iPosition) )
       
   696                      {
       
   697                      if( iGotoPaneActive )
       
   698                          {
       
   699                          iGotoPane->HandlePointerEventL(aPointerEvent);
       
   700                          }
       
   701                      else
       
   702                          {
       
   703                          SetGotoActiveL();                         
       
   704                          }
       
   705                      iGotoPane->SetVKBFlag( ETrue );                        
       
   706                      }
       
   707                  else if( iSearchPane->Rect().Contains( aPointerEvent.iPosition) )
       
   708                      {
       
   709                      if( iSearchPaneActive )
       
   710                          {
       
   711                          iSearchPane->HandlePointerEventL(aPointerEvent);
       
   712                          }
       
   713                      else
       
   714                          {
       
   715                          SetSearchActiveL();                         
       
   716                          }
       
   717                      iSearchPane->SetVKBFlag( ETrue );                     
       
   718                      }
       
   719                  else
       
   720                      {
       
   721                      CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneCancel);
       
   722                      SetGotoInactiveL();
       
   723                      }
       
   724                 }
       
   725              else
       
   726                  {
       
   727                  iGotoPane->HandlePointerEventL(aPointerEvent);
       
   728                  }
       
   729             }
   485         else
   730         else
   486         	{
   731         	{
   487     		// normally, pass all pointer events down to the listbox
   732     		// normally, pass all pointer events down to the listbox
   488     		Listbox()->HandlePointerEventL(aPointerEvent);        		
   733     		Listbox()->HandlePointerEventL(aPointerEvent);        		
   489         	}
   734         	}
   490         }
   735         }
   491     }
   736     }
   492 
   737 
       
   738 // ----------------------------------------------------------------------------
       
   739 // CBrowserBookmarksContainer::ConstructSearchPaneL
       
   740 // ----------------------------------------------------------------------------
       
   741 //
       
   742 
       
   743 void CBrowserBookmarksContainer::ConstructSearchPaneL()
       
   744     {
       
   745     TFileName iconFile;
       
   746     MPreferences& preferences = View().ApiProvider().Preferences();
       
   747     
       
   748     TInt iconId = preferences.GetIntValue( KBrowserSearchIconId );
       
   749     // Get the Search Icon File Path.
       
   750     preferences.GetStringValueL( KBrowserSearchIconPath, KMaxFileName, iconFile );
       
   751       
       
   752     // If Icon File Path Changed or Icon Id Changed, Refresh the Icon for Search Pane.
       
   753     // Comparing Icon File path as well, because it may be possible that two different 
       
   754     // Icon files have same icon id.
       
   755     if( iconId != iSearchIconId  
       
   756             || iSearchIconFilePath.Compare( iconFile ) != 0 )
       
   757         {
       
   758           
       
   759         TInt iconMaskId = preferences.GetIntValue( KBrowserSearchIconMaskId );
       
   760 
       
   761         // Save IconId 
       
   762         iSearchIconId = iconId;
       
   763         // Save Icon File
       
   764         iSearchIconFilePath = iconFile;
       
   765 
       
   766         
       
   767         // No Icon file or IconId or IconMaskId set , then it means no search provider is still 
       
   768         // selected and set by search application, in that case we use the default icon for Search.
       
   769         if( ! iconFile.Length() 
       
   770                 || iconId == -1
       
   771                 || iconMaskId == -1 )
       
   772             {
       
   773             iconId = EMbmAvkonQgn_indi_find_glass;
       
   774             iconMaskId = EMbmAvkonQgn_indi_find_glass_mask;
       
   775             iconFile = KAvkonBitmapFile;
       
   776             }
       
   777                  
       
   778         if( iSearchPane )
       
   779             {
       
   780             delete iSearchPane;
       
   781             iSearchPane = NULL;
       
   782             }
       
   783        
       
   784         
       
   785         // iSearchPane != NULL, implies presence of search feature, hence it can be
       
   786         // used to validate search feature avoiding repetative calls to utils and
       
   787         // avoiding need of separate variable.
       
   788         iSearchPane = CBrowserBookmarksGotoPane::NewL( *this, 
       
   789                             &(View()), 
       
   790                             iconFile, 
       
   791                             iconId,
       
   792                             iconMaskId,
       
   793                             GOTOPANE_POPUPLIST_DISABLE,
       
   794                             ETrue
       
   795                             );
       
   796        
       
   797         CBrowserBookmarksView* bookmarkView = REINTERPRET_CAST( CBrowserBookmarksView* ,  &( View() ));
       
   798         // Set Pane observer
       
   799         iSearchPane->SetGPObserver( bookmarkView );
       
   800         }
       
   801     }
       
   802 
       
   803 // ----------------------------------------------------------------------------
       
   804 // CBrowserBookmarksContainer::HandleResourceChange
       
   805 // ----------------------------------------------------------------------------
       
   806 //
       
   807 void CBrowserBookmarksContainer::HandleResourceChange(TInt aType)
       
   808     {
       
   809     CBrowserFavouritesContainer::HandleResourceChange( aType);
       
   810     if( aType == KEikDynamicLayoutVariantSwitch)
       
   811         {
       
   812         // If search feature exsist
       
   813         if( iSearchPane  ) 
       
   814             {
       
   815             if( iSearchPaneActive )
       
   816                 {
       
   817                 iGotoPane->SetTextModeItalicL( );
       
   818                 }
       
   819             else
       
   820                 {
       
   821                 iSearchPane->SetTextModeItalicL( );
       
   822                 }
       
   823             }
       
   824         }
       
   825     }
   493 // End of File
   826 // End of File