browserui/browser/FavouritesSrc/BrowserAdaptiveListPopup.cpp
changeset 51 48e827313edd
parent 37 481242ead638
child 53 f427d27b98d8
--- a/browserui/browser/FavouritesSrc/BrowserAdaptiveListPopup.cpp	Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1214 +0,0 @@
-/*
-* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: 
-*       Implementation of CBrowserPopupList and CBrowserAdaptiveListPopup
-*
-*
-*/
-
-// INCLUDE FILES
-#include <e32std.h>
-#include <AknPopup.h>
-#include <AknListQueryDialog.h>
-#include <AknIconArray.h>
-#include <recenturlstore.h>
-#include <AknsUtils.h>
-#include <AknsListBoxBackgroundControlContext.h>
-#include <AppApacLayout.cdl.h>
-#include <AppLayout.cdl.h>
-#include <AknLayout.cdl.h>
-#include <SkinLayout.cdl.h>
-#include <AknLayout2ScalableDef.h>
-#include <AknLayoutScalable_Avkon.cdl.h>
-#include <AknLayoutScalable_Apps.cdl.h>
-#include <LayoutMetaData.cdl.h>
-#include <AknEnv.h>
-#include <aknsdrawutils.h>
-#include <browser.mbg>
-#include "BrowserContentView.h"
-#include "BrowserAdaptiveListPopup.h"
-#include "BrowserAppUi.h"
-#include "CommonConstants.h"
-#include "BrowserAppViewBase.h"
-#include <data_caging_path_literals.hrh>
-
-#include "eikon.hrh"
-
-// CONSTANTS
-const TInt KMaxIcons = 2;
-const TInt KListLengthToShow = 64;//the length of the string in the list
-_LIT( KItemTab, "1\t");//prefix for items
-_LIT( KDirTab, "0\t");//prefix for directories
-const TInt KArrayGranularity = 10;
-_LIT( KProtocolIdentifier,"://" );
-const TUint KSlash('/');
-const TUint KPeriod('.');
-
-static void TextPos(TPoint *aResultArray, const TAknTextLineLayout
-&aLayout, TSize aItemSize)
-    {
-    TRect itemRect(TPoint(0,0), aItemSize);
-    TAknLayoutText textLayout;
-    textLayout.LayoutText(itemRect, aLayout);
-    aResultArray[0] = textLayout.TextRect().iTl;
-    aResultArray[1] = textLayout.TextRect().iTl +
-textLayout.TextRect().Size();
-    }
-
-static void GfxPos(TPoint *aResultArray, const TAknWindowLineLayout
-&aLayout, TSize aItemSize)
-    {
-    TRect itemRect(TPoint(0,0), aItemSize);
-    TAknLayoutRect layout;
-    layout.LayoutRect(itemRect, aLayout);
-    aResultArray[0] = layout.Rect().iTl;
-    aResultArray[1] = layout.Rect().iTl + layout.Rect().Size();
-    }
-
-TSize ListBoxItemSize(CEikListBox &aListBox, CFormattedCellListBoxItemDrawer *aItemDrawer)
-    {
-    TSize size = TSize( aItemDrawer->LafItemSize().iWidth, aListBox.View()->ItemSize().iHeight );
-    return size;
-    }
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CBrowserPopupList::CBrowserPopupList()
-//
-// ---------------------------------------------------------
-//
-CBrowserPopupList::CBrowserPopupList(TParentType aParentType):CAknSingleGraphicPopupMenuStyleListBox()
-    {
-    iParentType = aParentType;
-    }
-
-// ---------------------------------------------------------
-// CBrowserPopupList::~CBrowserPopupList()
-//
-// ---------------------------------------------------------
-//
-CBrowserPopupList::~CBrowserPopupList()
-    {
-    }
-
-// ---------------------------------------------------------
-// CBrowserPopupList::ConstructL
-//
-// ---------------------------------------------------------
-//
-void CBrowserPopupList::ConstructL(const CCoeControl* aParent, TInt aFlags)
-    {
-    CAknSingleGraphicPopupMenuStyleListBox::ConstructL( aParent, aFlags);
-    }
-
-// ---------------------------------------------------------
-// CBrowserPopupList::SetHighLight
-// Sets the highlight of the list
-// ---------------------------------------------------------
-//
-void CBrowserPopupList::SetHighLight(TBool aHighLight)
-    {
-#ifdef BRDO_SINGLE_CLICK_ENABLED_FF
-    iItemDrawer->SetFlags( CListItemDrawer::ESingleClickEnabled );
-#endif    
-    iListBoxFlags = ( aHighLight ?  iListBoxFlags &~ CEikListBox::EDisableHighlight : iListBoxFlags | CEikListBox::EDisableHighlight );
-    if ( aHighLight )
-        {
-        iItemDrawer->ClearFlags( CListItemDrawer::EDisableHighlight );
-        }
-    else
-        {
-        iItemDrawer->SetFlags( CListItemDrawer::EDisableHighlight );
-        }
-    }
-
-// ---------------------------------------------------------
-// CBrowserPopupList::HighLightEnabled()
-// Enables the highlight in the list
-// ---------------------------------------------------------
-//
-TBool CBrowserPopupList::HighLightEnabled()
-    {
-    return !( iItemDrawer->Flags() & CListItemDrawer::EDisableHighlight );
-    }
-
-// ---------------------------------------------------------
-// CBrowserPopupList::SizeChanged()
-// sets the inner layout
-// ---------------------------------------------------------
-//
-void CBrowserPopupList::SizeChanged()
-    {
-    CAknSingleGraphicPopupMenuStyleListBox::SizeChanged();
-    TAknWindowLineLayout windowLineLayout;
-    TAknWindowLineLayout windowLineLayoutTmp;
-    TAknWindowLineLayout windowLineLayoutTmp2;
-    TAknLayoutRect layoutRect;
-    TPoint area[2] ;
-    TRgb color;
-    CEikFormattedCellListBox &aListBox = *this;
-    CFormattedCellListBoxItemDrawer *itemDrawer = aListBox.ItemDrawer();
-    AknListBoxLayouts::SetupStandardListBox(aListBox);
-
-    AknListBoxLayouts::SetupListboxPos( aListBox, AppLayout::list_single_graphic_popup_wml_pane( 0 ));
-
-    GfxPos(area,
-    AknLayoutScalable_Apps::list_single_graphic_popup_wml_pane_g1(),
-    ListBoxItemSize(*this, ItemDrawer()) );
-
-    AknListBoxLayouts::SetupFormGfxCell(aListBox,
-                                        itemDrawer,
-                                        0,
-                                        AknLayoutScalable_Apps::list_single_graphic_popup_wml_pane_g2(),
-                                        area[0],
-                                        area[1]);
-
-    //sets the rectangle of the text
-    TextPos(area,
-    AknLayoutScalable_Apps::list_single_graphic_popup_wml_pane_t1( ),
-    ListBoxItemSize(*this, ItemDrawer()) );
-    AknListBoxLayouts::SetupFormAntiFlickerTextCell(aListBox,
-                                                    itemDrawer,
-                                                    1,
-                                                    AknLayoutScalable_Apps::list_single_graphic_popup_wml_pane_t1( ),
-                                                    area[0],
-                                                    area[1]);
-    }
-
-// ---------------------------------------------------------
-// CBrowserPopupList::Draw()
-// ---------------------------------------------------------
-//
-void CBrowserPopupList::Draw(const TRect& /*aRect*/) const
-    {
-    TRect windowRect = this->Rect();
-    CEikFormattedCellListBox::Draw( windowRect );
-    return;
-    }
-
-
-// ================= CBrowserAdaptiveListPopup =======================
-
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::CBrowserAdaptiveListPopup()
-// ---------------------------------------------------------
-//
-CBrowserAdaptiveListPopup::CBrowserAdaptiveListPopup( CEikEdwin* aGotoPaneEdit, 
-        CCoeControl* aParent, TParentType aParentType, TBool aSearchFeature): 
-        iEditor( aGotoPaneEdit ), iParent( aParent ),
-        iParentType( aParentType ), iSearchFeature( aSearchFeature )
-    {
-    iTouchSupported = AknLayoutUtils::PenEnabled();
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::ConstructL(const TRect& aRect)
-// EPOC two-phased constructor
-// ---------------------------------------------------------
-void CBrowserAdaptiveListPopup::ConstructL( )
-    {
-    CreateWindowL();
-//-------- list ------
-    iList = new(ELeave) CBrowserPopupList( iParentType );
-#ifdef BRDO_SINGLE_CLICK_ENABLED_FF
-    iList->ConstructL( this , CEikListBox::EDisableItemSpecificMenu );
-#else
-    iList->ConstructL( this , CEikListBox::ELeftDownInViewRect );
-#endif
-    iList->SetContainerWindowL( *this );
-    if (iTouchSupported)
-        {
-        iList->SetListBoxObserver( this );
-        }
-    iList->CreateScrollBarFrameL( ETrue );
-    iList->SetMopParent(iParent);
-    iList->ScrollBarFrame()->SetScrollBarVisibilityL(
-                                CEikScrollBarFrame::EOff,
-                                CEikScrollBarFrame::EAuto);
-    iList->ScrollBarFrame()->SetTypeOfVScrollBar( CEikScrollBarFrame::EDoubleSpan );
-    iList->UpdateScrollBarsL();
-    iList->SetBorder(TGulBorder::ESingleBlack);
-    iList->ItemDrawer()->FormattedCellData()->EnableMarqueeL( ETrue );
-//---------- items storing arrays ---------
-    iItems = new(ELeave) CDesCArrayFlat(KArrayGranularity);
-    iItemNames = new(ELeave) CDesCArrayFlat(KArrayGranularity);
-    iItemNamesToShow = new(ELeave) CDesCArrayFlat(KArrayGranularity);
-//---------- model ----------
-    CTextListBoxModel* model = iList->Model();
-    model->SetItemTextArray( iItemNamesToShow );
-    model->SetOwnershipType( ELbmDoesNotOwnItemArray );
-//---------- icons -----------
-    SetIconsL();
-//--------- other --------
-    iFirstGotoContent = KNullDesC().AllocL();
-    iPrevGotoContent = KNullDesC().AllocL();
-    iPoppedUp = EFalse;
-    iDirectoryMode = ETrue;
-    iOpenCBA=EFalse;
-    iItemDrawer = iList->ItemDrawer();
-    iPrevItem = -2;
-    iUrlCompletionMode = EFalse;
-    iRecentUrlStore = CBrowserAppUi::Static()->RecentUrlStore();
-    if (!iRecentUrlStore)
-        {
-        User::Leave(KErrCouldNotConnect);
-        }
-
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::~CBrowserAdaptiveListPopup()
-// Destructor
-// ---------------------------------------------------------
-CBrowserAdaptiveListPopup::~CBrowserAdaptiveListPopup()
-    {
-    delete iList;
-    delete iItems;
-    delete iItemNames;
-    delete iItemNamesToShow;
-    delete iPrevGotoContent;
-    delete iFirstGotoContent;
-}
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::SetOrdinalPosition
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::SetOrdinalPosition( TInt aPos )
-    {
-    Window().SetOrdinalPosition( aPos );
-    }
-
-void CBrowserAdaptiveListPopup::HandlePointerEventL(const TPointerEvent& aPointerEvent)
-    {
-    if (iList && iTouchSupported)
-        {
-        //using ComponentControl(0) instead of iList because need access to a
-        //protected function
-        ComponentControl(0)->HandlePointerEventL( aPointerEvent );
-        }
-    }
-
-void CBrowserAdaptiveListPopup::HandleListBoxEventL(CEikListBox* aListBox,TListBoxEvent aEventType)
-    {
-    if (iList && aListBox == iList && iTouchSupported)
-        {
-        switch (aEventType)
-            {
-            case MEikListBoxObserver::EEventItemDoubleClicked:
-                {
-                TKeyEvent keyEvent;
-                keyEvent.iModifiers = 0;
-                keyEvent.iRepeats = 0;
-                keyEvent.iCode = EKeyDevice3;
-                keyEvent.iScanCode = EStdKeyDevice3;
-                if ( iParentType == EBookmarksGotoPane )
-                    {
-                    CCoeEnv::Static()->SimulateKeyEventL( keyEvent, EEventKeyDown );
-                    }
-                CCoeEnv::Static()->SimulateKeyEventL( keyEvent, EEventKey );
-                if ( iParentType == EBookmarksGotoPane )
-                    {
-                    CCoeEnv::Static()->SimulateKeyEventL( keyEvent, EEventKeyUp );
-                    }
-                }
-                break;
-            case  MEikListBoxObserver::EEventItemClicked:
-#ifdef BRDO_SINGLE_CLICK_ENABLED_FF                
-            case  MEikListBoxObserver::EEventItemSingleClicked:      
-#endif                
-                HandleItemClickedL( aListBox );
-                break;
-            default:
-                break;
-            }
-        }
-    }
-
-void CBrowserAdaptiveListPopup::HandleItemClickedL( CEikListBox* aListBox )
-    {
-    //the first time
-   if ( !iList->HighLightEnabled() )
-       {
-       iList->SetHighLight( ETrue );
-
-       //save the original content
-       if ( !iFirstGotoContent )
-           {
-           delete iFirstGotoContent;
-           iFirstGotoContent = NULL;
-           }
-       iFirstGotoContent = iEditor->GetTextInHBufL();
-       if ( !iFirstGotoContent )
-           {
-           iFirstGotoContent = KNullDesC().AllocL();
-           }
-       }
-    TInt index = aListBox->CurrentItemIndex();
-    index = iItems->Count() - index - 1;
-    TPtrC16 item((*iItems)[ index ] );
-    TPtrC rightSide;
-
-    //cut the slash from the end if needed
-    //permanent sollution until AHLE does not
-    //solve this problem related to ID: TMCN-5TTRXV error
-    if ( item[item.Length() - 1] != KSlash )
-      {
-      rightSide.Set( item.Left( item.Length() ) );
-      }
-    else
-      {
-      rightSide.Set( item.Left( item.Length() - 1 ) );
-      }
-    
-    //if true then append the suffix(rightSide), to the
-    //user-typed data
-    //else just use the recent URLs text(rightSide) only
-    if ( iUrlCompletionMode )
-      {
-      HBufC* currentCompletion = HBufC::NewLC(
-          iFirstGotoContent->Des().Length() + rightSide.Length() + 1 );
-      TPtr currentCompletionPtr = currentCompletion->Des();
-    
-      currentCompletionPtr.Copy( iFirstGotoContent->Des() );
-      currentCompletionPtr.Append( rightSide );
-      currentCompletionPtr.ZeroTerminate();
-      iEditor->SetTextL( currentCompletion );
-      iEditor->SetCursorPosL( currentCompletionPtr.Length(), EFalse );
-      CleanupStack::PopAndDestroy( currentCompletion );
-      }
-    else
-      {
-      iEditor->SetTextL( &rightSide );
-      iEditor->SetCursorPosL( rightSide.Length(), EFalse );
-      }
-    iEditor->HandleTextChangedL();
-    
-    delete iPrevGotoContent;
-    iPrevGotoContent = NULL;
-    iPrevGotoContent = item.AllocL();
-    iEditor->DrawNow();
-    //change the CBA depending on whether the highlight is
-    //on url or domain
-    CBrowserAppUi::Static()->UpdateCbaL();
-    }
-
-
-//------------------------------------------------------------------
-// CBrowserAdaptiveListPopup::ShowSingleItemPopupListWithGraphicsL(TBool aShowTitle)
-// shows "List pane for single item with graphic"
-//------------------------------------------------------------------
-void CBrowserAdaptiveListPopup::ShowPopupListL(TBool aRelayout)
-    {
-    TAknWindowLineLayout windowLineLayout;
-    TAknWindowLineLayout windowLineLayoutTmp;
-    TAknWindowLineLayout windowLineLayoutMain;
-    TAknWindowLineLayout windowLineLayoutMainTmp;
-    TAknWindowLineLayout windowLineLayoutLW;
-    TAknWindowLineLayout windowLineLayoutLWTmp;
-    TAknWindowLineLayout windowLineLayoutSLW;
-    TAknWindowLineLayout windowLineLayoutSLWTmp;
-    TAknLayoutRect layoutRect;
-    TAknLayoutRect layoutMainRect;
-    TAknLayoutRect layoutLWRect;
-    TAknLayoutRect layoutSLWRect;
-
-    //turn of the highlight
-    iList->SetHighLight( EFalse );
-    //clear arrays
-    iItems->Reset();
-    iItemNames->Reset();
-    iItemNamesToShow->Reset();
-
-    TInt offset;
-    HBufC* newText;
-    //get create and get the string from the edit field
-    if ( iEditor->TextLength() > 0 )
-        {
-        newText = iEditor->GetTextInHBufL();
-        CleanupStack::PushL( newText );
-        //cut the protokolidentifier from the string
-        offset = newText->Find( KProtocolIdentifier );
-        if ( offset == KErrNotFound )
-            {
-            offset = newText->Length();
-            }
-        else
-            {
-            offset = newText->Length() - offset - 3;
-            }
-        }
-    else
-        {
-             offset = 0;
-             newText = KNullDesC().AllocLC();
-        }
-    TPtrC trimmedContent( newText->Right( offset ) );
-    TBuf<KListLengthToShow> buf;
-
-    //find out if the user typed a ".", if so, bring up the url completion list
-    TInt periodPos = trimmedContent.LocateReverse( TChar(KPeriod) );
-    if ((periodPos != KErrNotFound) && ((periodPos + 1) == trimmedContent.Length()))
-        {
-        //add the url completion entries to the popup list
-        iUrlCompletionMode = ETrue;
-        CreateURLCompletionListL();
-        }
-    else
-        {
-        iUrlCompletionMode = EFalse;
-        //only include recent URLs if not including the url completion items
-        iRecentUrlStore->GetData( *iItems, *iItemNames, trimmedContent );
-        }
-    iDirectoryMode = EFalse;
-    CleanupStack::PopAndDestroy();//newText
-    TInt k;
-    k = iItems->Count();
-    iItemNo = k;
-    TInt length = KListLengthToShow - 2;
-    if ( k > 0 )
-        {
-        TInt j;
-        TPtrC textToShow;
-        TPtrC itemJ;
-        //changeing the order
-        for (j=k-1; j>-1; j--)
-            {
-            itemJ.Set( (*iItems)[j] );
-            textToShow.Set( itemJ.Left( length ) );
-            if ( iDirectoryMode )
-                {
-            //directories and items
-                if ( itemJ[ itemJ.Length() - 1 ] == KSlash )
-                    {
-                //item
-                    buf.Format( _L( "%S%S" ), &KItemTab, &textToShow );
-                    }
-                else
-                    {
-                    //directory
-                    buf.Format( _L( "%S%S" ), &KDirTab, &textToShow );
-                    }
-                }
-            else
-                {
-            //items only
-                buf.Format( _L( "%S%S" ), &KItemTab, &textToShow );
-                }
-            iItemNamesToShow->AppendL( buf );
-            }
-        //set how many item will be shown
-        TInt itemstoshow;
-
-        if ( k >  iMaxRecentUrlsToShow)
-            {
-            itemstoshow = iMaxRecentUrlsToShow;
-            }
-        else
-            {
-            itemstoshow = k;
-            }
-
-        //set the main rect of the window
-        // fixing bug RFON-7E2PPV, don't use ApplicationRect()
-        TRect  rect;
-        AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect);
-        windowLineLayoutMain = AknLayout::main_pane( rect, 0, 2, 1 );
-        windowLineLayoutMainTmp = windowLineLayoutMain;
-        layoutMainRect.LayoutRect( rect, windowLineLayoutMainTmp );
-
-      
-        windowLineLayoutLW = AppLayout::popup_wml_address_window( 1, itemstoshow );
-      
-        windowLineLayoutLWTmp = windowLineLayoutLW;
-        layoutLWRect.LayoutRect( layoutMainRect.Rect(), windowLineLayoutLWTmp );
-        windowLineLayoutSLW = AknLayoutScalable_Apps::listscroll_popup_wml_pane();
-        windowLineLayoutSLWTmp = windowLineLayoutSLW;
-        layoutSLWRect.LayoutRect( layoutLWRect.Rect(), windowLineLayoutSLWTmp );
-        windowLineLayout = AppLayout::list_wml_pane( itemstoshow - 1 );
-        windowLineLayoutTmp = windowLineLayout;
-        layoutRect.LayoutRect( layoutLWRect.Rect(), windowLineLayoutTmp );
-
-        TRect rectTemp(layoutSLWRect.Rect());
-        // force listbox on top of goto pane
-        rectTemp.iBr.iY = iParent->PositionRelativeToScreen().iY;
-        rectTemp.iTl.iX = iParent->PositionRelativeToScreen().iX;
-        // shrink list box to size of list
-        rectTemp.iTl.iY =  rectTemp.iBr.iY - (AppLayout::list_single_graphic_popup_wml_pane( 0 ).iH * itemstoshow);
-        // set bottom right x axis to full width
-        rectTemp.iBr.iX = rect.iBr.iX;
-        
-        // we only want to call SetRect() when we have a relayout, otherwise just
-        // scroll the list to the correct position. Doing this will reduce the amount
-        // of flicker seen while typing into the gotopane
-        if ((rectTemp.Size() != Rect().Size()) || aRelayout)
-            {
-            //set the window rect
-            SetRect( rectTemp );
-            }
-        rectTemp = TRect( 0, 0, Rect().Width(), Rect().Height() );
-        if ( rectTemp!=iList->Rect() )
-            {
-            //set the rect of the list
-            iList->SetRect( rectTemp );
-            }
-        else
-            {
-            // this scrolls list to the correct position, probably still does too much work
-            AknListBoxLayouts::SetupListboxPos( *iList, AppLayout::list_single_graphic_popup_wml_pane( 0 ));
-            }
-        //the last item is visible
-        iList->ScrollToMakeItemVisible( iList->Model()->NumberOfItems()-1 );
-        MakeVisible( ETrue );
-        iPoppedUp = ETrue;
-        DrawNow();
-        iList->Draw(rectTemp);
-        }
-    else
-        {
-        MakeVisible( EFalse );
-        iPoppedUp = EFalse;
-        CBrowserAppUi::Static()->UpdateCbaL();
-        }
-    if (!IsActivated())
-        {
-        ActivateL();
-        }
-    iPrevItem = -2;
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::CreateURLCompletionListL
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::CreateURLCompletionListL()
-    {
-    _LIT(KSeparator, ",");
-
-    if (iUrlSuffixBuf)
-        {
-        TPtrC urlSuffix(iUrlSuffixBuf->Des());
-        TInt index(urlSuffix.FindF(KSeparator));
-        TInt offset = 0;
-
-        while (index != KErrNotFound)
-            {
-            // Omit empty string
-            if (index > 0)
-                {
-                iItems->AppendL( urlSuffix.Mid(offset,index) );
-                }
-
-            offset += (index + 1);
-            TPtrC remainder(urlSuffix.Mid(offset));
-            index = remainder.FindF(KSeparator);
-            }
-
-        // Cover the cases where we only have one suffix in the list and/or
-        // the last suffix in the list does not have a comma
-        if (offset < urlSuffix.Length())
-            {
-            TPtrC remainderB(urlSuffix.Mid(offset, urlSuffix.Length() - offset));
-            iItems->AppendL( remainderB );
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::HandleControlEventL
-// if the content of the edit box changes
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::HandleControlEventL(CCoeControl* aControl,enum MCoeControlObserver::TCoeEvent aEventType)
-    {
-    CEikEdwin* edwin = ( CEikEdwin* )aControl;
-    // the content of the edit box changes
-    if ( MCoeControlObserver::EEventStateChanged == aEventType )
-        {
-        HBufC* newText = edwin->GetTextInHBufL();
-        if (!newText)
-            {
-            newText = KNullDesC().AllocL();
-            }
-        CleanupStack::PushL( newText );
-        //check whether the last content is different to the one in the editbox
-        if ( !iPrevGotoContent || iPrevGotoContent->Compare( *newText ) )
-            {
-            ShowPopupListL();
-            delete iPrevGotoContent;
-            iPrevGotoContent = NULL;
-            iPrevGotoContent = newText;
-            CleanupStack::Pop( newText );//ownership is taken
-            }
-        else
-            {
-            if ( !iPrevGotoContent )
-                {
-                CleanupStack::PopAndDestroy( newText );
-                }
-            else
-                {
-                ShowPopupListL();
-                delete iPrevGotoContent;
-                iPrevGotoContent = NULL;
-                iPrevGotoContent = newText;
-                CleanupStack::Pop( newText );//ownership is taken
-                }
-            }
-        //change the CBA
-        if ( iOpenCBA )
-            {
-            iOpenCBA = EFalse;
-            CBrowserAppUi::Static()->UpdateCbaL();
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::CountComponentControls
-//
-// ---------------------------------------------------------
-//
-TInt CBrowserAdaptiveListPopup::CountComponentControls() const
-    {
-    if ( iList == NULL )
-        {
-        return 0;
-        }
-    return 1;
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::ComponentControl
-//
-// ---------------------------------------------------------
-//
-CCoeControl* CBrowserAdaptiveListPopup::ComponentControl(TInt aIndex) const
-    {
-    if (aIndex==0)
-        {
-        return iList;
-        }
-    else
-        {
-        return NULL;
-        }
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::OfferKeyEventL
-// Handles key events
-// ---------------------------------------------------------
-//
-TKeyResponse CBrowserAdaptiveListPopup::OfferKeyEventL
-( const TKeyEvent& aKeyEvent, TEventCode aType )
-    {
-    TKeyResponse resp = EKeyWasNotConsumed;
-    if (( iPoppedUp &&
-    !CBrowserAppUi::Static()->ContentView()->MenuBar()->MenuPane()->IsVisible() &&
-    (CBrowserAppUi::Static()->LastActiveViewId() == KUidBrowserContentViewId) ) || (( iPoppedUp ) &&
-    (CBrowserAppUi::Static()->LastActiveViewId() != KUidBrowserContentViewId)))
-        {
-        TInt currIndex = iItems->Count() - iList->CurrentItemIndex() - 1;
-
-        //the joystick is pressed
-        if ( aKeyEvent.iCode == EKeyOK )
-            {
-            if ( ( iList->HighLightEnabled() )
-              && ( iDirectoryMode )
-              && ( (*iItems)[ currIndex ][(*iItems)[ currIndex ].Length() - 1] != KSlash ) )
-                {
-                SetDirectoryModeL( EFalse );
-                resp = EKeyWasConsumed;
-                }
-            else
-                {
-                if (iEditor->TextLength()!=0)
-                    {
-                    HidePopupL();
-                    }
-                }
-            }
-
-        //the joystick is pressed up
-        else if (    aKeyEvent.iCode == EKeyLeftUpArrow      // Northwest
-                  || aKeyEvent.iCode == EStdKeyDevice10      //   : Extra KeyEvent supports diagonal event simulator wedge
-                  || aKeyEvent.iCode == EKeyUpArrow          // North
-                  || aKeyEvent.iCode == EKeyRightUpArrow     // Northeast
-                  || aKeyEvent.iCode == EStdKeyDevice11 )    //   : Extra KeyEvent supports diagonal event simulator wedge
-            {
-            resp = EKeyWasConsumed;
-            //the first time
-            if ( !iList->HighLightEnabled() )
-                {
-                iList->SetHighLight( ETrue );
-                currIndex = iList->Model()->NumberOfItems()-1;
-                iList->ScrollToMakeItemVisible( currIndex );
-                iList->SetCurrentItemIndex( currIndex );
-                DrawNow();
-                //save the original content
-                if ( iFirstGotoContent != NULL )
-                    {
-                    delete iFirstGotoContent;
-                    iFirstGotoContent = NULL;
-                    }
-                iFirstGotoContent = iEditor->GetTextInHBufL();
-                if (iFirstGotoContent == NULL)
-                    {
-                    iFirstGotoContent = KNullDesC().AllocL();
-                    }
-                }
-            else
-                {
-                if(  iSearchFeature )
-                    {
-                    if( iList->CurrentItemIndex() == 0 )
-                        {
-                        resp = EKeyWasConsumed;
-                        return resp;
-                        }
-                    }
-                resp=iList->OfferKeyEventL( aKeyEvent, aType );
-                }
-            if ( currIndex > -1 )
-                {
-                //copy the selected item to edit field
-                TPtrC16 item;
-                TPtrC rightSide;
-                TInt newIndex;
-                newIndex = iItems->Count() - iList->CurrentItemIndex() - 1;
-                item.Set( (*iItems)[ newIndex ] );
-                //cut the slash from the end if needed
-                //permanent sollution until AHLE does not
-                //solve this problem related to ID: TMCN-5TTRXV error
-
-                //if URL completion, then we want to append the item to the item in the edit field
-                if (iUrlCompletionMode)
-                    {
-                    TPtr16 ptr = iFirstGotoContent->Des();
-
-                    HBufC* buf = HBufC::NewLC(ptr.Length() + item.Length() + 1);
-
-                    buf->Des().Copy(ptr);
-                    buf->Des().Append(item);
-                    buf->Des().ZeroTerminate();
-
-
-                    rightSide.Set(buf->Des());
-
-                    iEditor->SetTextL( &rightSide );
-                    iEditor->SetCursorPosL( rightSide.Length(), EFalse );
-
-                    CleanupStack::PopAndDestroy(); //buf
-                    }
-                else
-                    {
-                    if ( (*iItems)[ newIndex ][(*iItems)[ newIndex ].Length() - 1] != KSlash )
-                        {
-                        rightSide.Set( item.Left( item.Length() ) );
-                        }
-                    else
-                        {
-                        rightSide.Set( item.Left( item.Length() - 1 ) );
-                        }
-                    iEditor->SetTextL( &rightSide );
-                    iEditor->SetCursorPosL( rightSide.Length(), EFalse );
-                    }
-                delete iPrevGotoContent;
-                iPrevGotoContent = NULL;
-                iPrevGotoContent = item.AllocL();
-                iEditor->DrawNow();
-                //change the CBA depending on whether the highlight is
-                //on url or domain
-                if ( ( (*iItems)[ newIndex ][(*iItems)[ newIndex ].Length() - 1] != KSlash ) && iDirectoryMode )
-                    {
-                    iOpenCBA = ETrue;
-                    }
-                else
-                    {
-                    iOpenCBA = EFalse;
-                    }
-                CBrowserAppUi::Static()->UpdateCbaL();
-                }
-            }
-
-        //the joystisk is pressed down
-        else if (    aKeyEvent.iCode == EKeyLeftDownArrow    // Southwest
-                  || aKeyEvent.iCode == EStdKeyDevice13      //   : Extra KeyEvent supports diagonal event simulator wedge
-                  || aKeyEvent.iCode == EKeyDownArrow        // South
-                  || aKeyEvent.iCode == EKeyRightDownArrow   // Southeast
-                  || aKeyEvent.iCode == EStdKeyDevice12 )    //   : Extra KeyEvent supports diagonal event simulator wedge
-            {
-            resp = EKeyWasConsumed;
-            if(  iSearchFeature )
-                {
-                if ( iPrevItem <= 0 )
-                    {
-                    if(! iList->HighLightEnabled() )
-                        {
-                        resp = EKeyWasNotConsumed;
-                        return resp;
-                        }
-                    }
-                }
-            //it was the last item
-            if ( iPrevItem == 0 )
-                {
-                //write back the original string
-                iList->SetHighLight( EFalse );
-                iEditor->SetTextL( iFirstGotoContent );
-                iEditor->HandleTextChangedL();
-                iEditor->SetCursorPosL( iFirstGotoContent->Length(), EFalse );
-                delete iPrevGotoContent;
-                iPrevGotoContent = NULL;
-                iPrevGotoContent = iFirstGotoContent->AllocL();
-                iEditor->DrawNow();
-                DrawNow();
-                //change the CBA
-                if ( iOpenCBA )
-                    {
-                    iOpenCBA = EFalse;
-                    CBrowserAppUi::Static()->UpdateCbaL();
-                    }
-                return resp;
-                }
-            else if ( ( currIndex > -1 ) && iList->HighLightEnabled() )
-                {
-                //write the selected items string to the editor
-                TPtrC16 item;
-                TPtrC rightSide;
-                TInt newIndex;
-                resp = iList->OfferKeyEventL( aKeyEvent, aType );
-                newIndex = iItems->Count() - iList->CurrentItemIndex() - 1;
-                item.Set( (*iItems)[ newIndex ] );
-                //cut the slash from the end if needed
-                //permanent sollution until AHLE does not
-                //solve this problem related to ID: TMCN-5TTRXV error
-                if ( (*iItems)[ newIndex ][(*iItems)[ newIndex ].Length() - 1] != KSlash )
-                    {
-                    rightSide.Set( item.Left( item.Length() ) );
-                    }
-                else
-                    {
-                    rightSide.Set( item.Left( item.Length() - 1 ) );
-                    }
-
-                //if true then append the suffix (rightSide), to the
-                //user-typed data
-                //else just use the recent URLs text(rightSide) only
-                if ( iUrlCompletionMode )
-                    {
-                    HBufC* currentCompletion = HBufC::NewLC(
-                        iFirstGotoContent->Des().Length() + rightSide.Length() + 1 );
-                    TPtr currentCompletionPtr = currentCompletion->Des();
-
-                    currentCompletionPtr.Copy( iFirstGotoContent->Des() );
-                    currentCompletionPtr.Append( rightSide );
-                    currentCompletionPtr.ZeroTerminate();
-                    iEditor->SetTextL( currentCompletion );
-                    iEditor->SetCursorPosL( currentCompletionPtr.Length(), EFalse );
-                    CleanupStack::PopAndDestroy( currentCompletion );
-                    }
-                else
-                    {
-                    iEditor->SetTextL( &rightSide );
-                    iEditor->SetCursorPosL( rightSide.Length(), EFalse );
-                    }
-                iEditor->HandleTextChangedL();
-
-                if ( iPrevGotoContent != NULL )
-                    {
-                    delete iPrevGotoContent;
-                    iPrevGotoContent = NULL;
-                    }
-                iPrevGotoContent = item.AllocL();
-                iEditor->DrawNow();
-                //change the CBA depending on whether the highlight is
-                //on url or domain
-                if ( ( (*iItems)[ newIndex ][(*iItems)[ newIndex ].Length() - 1] != KSlash ) && iDirectoryMode )
-                    {
-                    iOpenCBA = ETrue;
-                    }
-                else
-                    {
-                    iOpenCBA = EFalse;
-                    }
-                CBrowserAppUi::Static()->UpdateCbaL();
-                }
-            }
-
-        if ( iList->HighLightEnabled() )
-            {
-            iPrevItem = currIndex;
-            }
-        }
-    return resp;
-    }
-
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::HidePopupL
-// Hides the popup list
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::HidePopupL()
-    {
-    //clear the lists
-    if ( iPoppedUp )
-        {
-        HBufC* newText = HBufC::NewLC( iEditor->TextLength() );
-        TPtr newTextDes = newText->Des();
-        iEditor->GetText( newTextDes );
-        iEditor->ClearSelectionL();
-        iEditor->SetTextL( newText );
-        iEditor->SetCursorPosL( iEditor->TextLength(), EFalse );
-        CleanupStack::PopAndDestroy( newText );
-        iItemNames->Reset();
-        iList->Reset();
-        if (!IsActivated())
-            {
-            ActivateL();
-            }
-        MakeVisible(EFalse);
-        DrawNow();
-        iPrevItem = -2;
-        iPoppedUp = EFalse;
-        // highlight a directory, cancel goto pane
-        // activate goto pane again -> softkey problem
-        iOpenCBA = EFalse;
-        CBrowserAppUi::Static()->UpdateCbaL();
-        }
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::IsInDirectoryMode
-// gives back the directory mode
-// ---------------------------------------------------------
-//
-TBool CBrowserAdaptiveListPopup::IsInDirectoryMode()
-    {
-    return iDirectoryMode;
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::SetDirectoryMode
-// Sets the directory mode
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::SetDirectoryModeL(TBool aDirMode)
-    {
-    iDirectoryMode = aDirMode;
-    if ( aDirMode == EFalse )
-        {
-        //put the slash to the back of the editor fileds string
-        //it will show the directory mode
-        TInt length;
-        length = iEditor->TextLength() + 1;
-        HBufC* newText = HBufC::NewLC( length );
-        TPtr newTextDes = newText->Des();
-        iEditor->GetText( newTextDes );
-        newTextDes.Append( TChar(KSlash) );
-        iEditor->SetTextL( newText );
-        iEditor->SetCursorPosL( length, EFalse );
-        CleanupStack::PopAndDestroy( newText );
-        iEditor->DrawNow();
-        ShowPopupListL();
-        //change the CBA
-        if ( iOpenCBA )
-            {
-            iOpenCBA = EFalse;
-            CBrowserAppUi::Static()->UpdateCbaL();
-            }
-        }
-    return;
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::IsOpenDirToShow
-// Show which CBA is about to show
-// ---------------------------------------------------------
-//
-TBool CBrowserAdaptiveListPopup::IsOpenDirToShow()
-{
-    return iOpenCBA;
-}
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::IsPoppedUp
-// Show whether the list is popped up or not
-// ---------------------------------------------------------
-//
-TBool CBrowserAdaptiveListPopup::IsPoppedUp()
-{
-    return iPoppedUp;
-}
-
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::HandleResourceChange
-// If new skin is set the icons will be reloaded
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::HandleResourceChange( TInt aType )
-    {
-    TRAP_IGNORE( HandleResourceChangeL( aType ) );
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::HandleResourceChangeL
-// If new skin is set the icons will be reloaded
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::HandleResourceChangeL( TInt aType )
-    {
-    if (( aType == KAknsMessageSkinChange )||
-       ( aType == KEikDynamicLayoutVariantSwitch ) )
-        {
-        CArrayPtr<CGulIcon>* array =
-                            iList->ItemDrawer()->ColumnData()->IconArray();
-
-        array->ResetAndDestroy();
-        delete array;
-        SetIconsL();
-        }
-
-    CCoeControl::HandleResourceChange(aType);
-    if (aType == KEikDynamicLayoutVariantSwitch)
-        {
-        TRect  rect;
-        if (AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect))
-            {
-            SetRect(rect);
-            }
-        }
-
-    if ( ( aType == KEikDynamicLayoutVariantSwitch ) && ( iPoppedUp ) )
-        {
-
-        if ( AknLayoutUtils::PenEnabled() )
-            {
-            SetOrdinalPosition( 0 );
-            }
-
-        TInt selectionIndex = -1;
-        HBufC* originalText = NULL;
-        TInt popitem( 0 );
-        if ( iList->HighLightEnabled() )
-            {
-            selectionIndex = iList->CurrentItemIndex();
-            //save the editors content
-            originalText = iEditor->GetTextInHBufL();
-            if (originalText == NULL)
-                {
-                originalText = KNullDesC().AllocL();
-                }
-            CleanupStack::PushL( originalText );
-            ++popitem;
-            //write back the first string
-            iEditor->SetTextL( iFirstGotoContent );
-            iEditor->HandleTextChangedL();
-            }
-        ShowPopupListL(ETrue);
-        if ( selectionIndex > -1)
-            {
-            iEditor->SetTextL( originalText );
-            iEditor->SetCursorPosL( originalText->Length(), EFalse );
-            iEditor->HandleTextChangedL();
-            iList->SetHighLight( ETrue );
-            iList->ScrollToMakeItemVisible( selectionIndex );
-            iList->SetCurrentItemIndex( selectionIndex );
-            DrawNow();
-            iEditor->DrawNow();
-            }
-        if ( popitem )
-            {
-            CleanupStack::PopAndDestroy( popitem );  // originalText
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::SetIconsL()
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::SetIconsL()
-{
-    CArrayPtr<CGulIcon>* icons =
-    new(ELeave) CAknIconArray( KMaxIcons );
-    CleanupStack::PushL(icons); // PUSH Icon
-    CGulIcon* newIcon;
-    CFbsBitmap *newIconBmp;
-    CFbsBitmap *newIconMaskBmp;
-
-    TParse* fp = new(ELeave) TParse();
-    CleanupStack::PushL(fp);
-    TInt err = fp->Set(KBrowserDirAndFile, &KDC_APP_BITMAP_DIR, NULL);
-    if (err != KErrNone)
-        {
-        User::Leave(err);
-        }
-    TBuf<KMaxFileName> iconFile= fp->FullName();
-    CleanupStack::PopAndDestroy(fp);
-
-    MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
-    AknsUtils::CreateIconLC( skinInstance,
-                                           KAknsIIDQgnPropWmlFolderAdap,
-                                           newIconBmp,
-                                           newIconMaskBmp,
-                                           iconFile,
-                                           EMbmBrowserQgn_prop_wml_folder_adap,
-                                           EMbmBrowserQgn_prop_wml_folder_adap_mask);
-    newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
-    CleanupStack::Pop(2);
-    CleanupStack::PushL(newIcon);
-    icons->AppendL( newIcon );
-    CleanupStack::Pop(newIcon);
-    AknsUtils::CreateIconLC( skinInstance,
-                                           KAknsIIDQgnPropWmlBmAdap,
-                                           newIconBmp,
-                                           newIconMaskBmp,
-                                           iconFile,
-                                           EMbmBrowserQgn_prop_wml_bm_adap,
-                                           EMbmBrowserQgn_prop_wml_bm_adap_mask);
-    newIcon = CGulIcon::NewL( newIconBmp, newIconMaskBmp);
-    CleanupStack::Pop(2);
-    CleanupStack::PushL(newIcon);
-    icons->AppendL( newIcon );
-    CleanupStack::Pop(newIcon);
-    iList->ItemDrawer()->FormattedCellData()->SetIconArrayL(icons);
-    CleanupStack::Pop();    // POP Icon
-}
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::SetUrlSuffixList()
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::SetUrlSuffixList(HBufC* urlSuffixList)
-    {
-    iUrlSuffixBuf = urlSuffixList;
-    }
-
-// ---------------------------------------------------------
-// CBrowserAdaptiveListPopup::SetMaxRecentUrls()
-// ---------------------------------------------------------
-//
-void CBrowserAdaptiveListPopup::SetMaxRecentUrls (TInt maxRecentUrls)
-    {
-    iMaxRecentUrlsToShow = maxRecentUrls;
-    }
-
-
-// End of File