filebrowser/src/FBFileListContainer.cpp
branchRCL_3
changeset 45 b3cee849fa46
parent 43 48060abbbeaf
child 46 fad26422216a
--- a/filebrowser/src/FBFileListContainer.cpp	Thu Aug 19 09:55:38 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1133 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "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:  
-*
-*/
-
-
-// INCLUDE FILES
-#include "FBFileListContainer.h"
-#include "FB.hrh"
-#include "FBDocument.h"
-#include "FBAppUi.h"
-#include "FBModel.h"
-#include "FBFileUtils.h"
-#include "FBStd.h"
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-    #include "FBToolbar.h"
-#endif
-
-#include <w32std.h>
-#include <AknDef.h>
-#include <AknUtils.h> 
-#include <eikspane.h>
-#include <akntitle.h>
-#include <aknnavilabel.h>
-#include <aknlists.h>
-#include <aknsfld.h>
-#include <eikclbd.h>
-#include <eiktxlbm.h>
-#include <AknsListBoxBackgroundControlContext.h>
-#include <AknInfoPopupNoteController.h>
-#include <AknIconArray.h>
-#include <layoutmetadata.cdl.h>
-
-_LIT(KEmptyDirectory, "No entries");
-_LIT(KNoMatches, "No matches");
-
-const TInt KSimpleViewFontHeight = 127;
-const TInt KExtendedViewFontHeight1 = 127;
-const TInt KExtendedViewFontHeight2 = 105;
-
-const TInt KSimpleViewFontHeightQHD = 120;
-const TInt KExtendedViewFontHeight1QHD = 115;
-const TInt KExtendedViewFontHeight2QHD = 90;
-
-// ===================================== MEMBER FUNCTIONS =====================================
-
-void CFileBrowserFileListContainer::ConstructL(const TRect& /*aRect*/)
-    {
-    iModel = static_cast<CFileBrowserDocument*>(reinterpret_cast<CEikAppUi*>(iEikonEnv->AppUi())->Document())->Model();
-    iModel->SetFileListContainer(this);
-    
-    iFileViewMode = -1;
-    iIsDragging = EFalse;
-    
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __SERIES60_32__)
-    iToolbar = CFileBrowserToolbar::NewL();
-    if ( iModel->Settings().iEnableToolbar && 
-         AknLayoutUtils::PenEnabled() )
-        {
-        iToolbar->ShowToolbarL();        
-        }
-    else
-        {
-        iToolbar->HideToolbarL();
-        }
-#endif
-    
-    CreateWindowL();
-    Window().SetShadowDisabled(EFalse);
-    SetBlank();
-
-    SetScreenLayoutL(iModel->Settings().iDisplayMode);
-    
-    CreateEmptyNaviPaneLabelL();
-    
-    iModel->FileUtils()->RefreshViewL();
-
-    EnableDragEvents();
-    
-    ActivateL();
-    
-    iInfoPopup = CAknInfoPopupNoteController::NewL();
-    iInfoPopup->SetTimePopupInView(5000);
-    iInfoPopup->SetTimeDelayBeforeShow(500);
-    iInfoPopup->SetTextL(_L("TIP: Use left arrow key or touch drag to left to move up in the directory structure."));
-    iInfoPopup->ShowInfoPopupNote();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CFileBrowserFileListContainer::~CFileBrowserFileListContainer()
-    {
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-    delete iToolbar;
-#endif
-    delete iInfoPopup;
-    
-    DeleteNaviPane();
-
-    if (iSearchField)
-        delete iSearchField;
-    
-    if (iListBox)
-        delete iListBox;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::CreateEmptyNaviPaneLabelL()
-    {
-    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
-
-    iNaviContainer = static_cast<CAknNavigationControlContainer*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
-    iNaviDecorator = iNaviContainer->CreateNavigationLabelL();
-    iNaviContainer->PushL(*iNaviDecorator);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::DeleteNaviPane()
-    {
-    if (iNaviContainer)
-        {
-        iNaviContainer->Pop(iNaviDecorator);
-        }
-    
-    if (iNaviDecorator)
-        {
-        delete iNaviDecorator;
-        iNaviDecorator = NULL;
-        }
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::Draw(const TRect& aRect) const
-    {
-    CWindowGc& gc = SystemGc();
-    gc.Clear(aRect);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::HandleControlEventL(
-    CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/)
-    {
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TKeyResponse CFileBrowserFileListContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
-    {
-    // open search field with alpha digit numbers
-    if (aType == EEventKeyDown && !iSearchField && aKeyEvent.iScanCode < EStdKeyF1 && TChar(aKeyEvent.iScanCode).IsAlphaDigit())
-        {
-        EnableSearchFieldL();
-        
-        if (iSearchField)
-            {
-            //static_cast<CAknFilteredTextListBoxModel*>(iListBox->Model())->Filter()->DeferredSendKeyEventToFepL(aKeyEvent.iCode);
-            return EKeyWasConsumed;
-            }
-        }
-    
-    // close search field with clear-button if it's empty
-    if (iSearchField && aKeyEvent.iCode == EKeyBackspace)
-        {
-           TFileName searchText;
-           iSearchField->GetSearchText(searchText);
-           
-           if (searchText == KNullDesC)
-               {
-               DisableSearchFieldL();
-               return EKeyWasConsumed; 
-               }
-        }
-
-    // check file/directory handling related cases
-    if (iModel->FileUtils()->HandleOfferKeyEventL(aKeyEvent, aType) == EKeyWasConsumed)
-        return EKeyWasConsumed;
-    
-    TKeyResponse result = EKeyWasNotConsumed;
-
-    if (iSearchField && iListBox)
-        {
-        // find items with all event codes (that's the reason why there is EEventKey instead of aType)
-        TBool needsRefresh(EFalse);
-        result = AknFind::HandleFindOfferKeyEventL(aKeyEvent, EEventKey, this, iListBox, iSearchField, EFalse, needsRefresh);
-        
-        if (needsRefresh)
-            DrawNow();
-        }
-
-    // scroll one page up/down with volume keys
-    if (result == EKeyWasNotConsumed && iListBox && iListBox->Model()->NumberOfItems() > 0 && (aKeyEvent.iCode == EKeyIncVolume || (aKeyEvent.iCode=='#' && !iModel->IsHashKeySelectionInUse())))
-        {
-        CListBoxView::TSelectionMode selectionMode = CListBoxView::ENoSelection;
-        CListBoxView::TCursorMovement moveto = CListBoxView::ECursorPrevScreen;
-        
-        iListBox->View()->MoveCursorL(moveto, selectionMode);
-      
-        iListBox->SetCurrentItemIndex(iListBox->CurrentItemIndex()); 
-        iListBox->DrawDeferred();
-
-        return EKeyWasConsumed;
-        
-        }
-    else if (result == EKeyWasNotConsumed && iListBox && iListBox->Model()->NumberOfItems() > 0 && (aKeyEvent.iCode == EKeyDecVolume || aKeyEvent.iCode=='*'))
-        {
-        CListBoxView::TSelectionMode selectionMode = CListBoxView::ENoSelection;
-        CListBoxView::TCursorMovement moveto = CListBoxView::ECursorNextScreen;
-        
-        if (iListBox->CurrentItemIndex() >= iListBox->Model()->NumberOfItems() - iListBox->View()->NumberOfItemsThatFitInRect(iListBox->View()->ViewRect()))
-            moveto = CListBoxView::ECursorLastItem;
-        
-        iListBox->View()->MoveCursorL(moveto, selectionMode);
-
-        iListBox->SetCurrentItemIndex(iListBox->CurrentItemIndex()); 
-        iListBox->DrawDeferred();
-
-        return EKeyWasConsumed;
-        }
-
-    // offer key event to the listbox if not already consumed
-    else if (result == EKeyWasNotConsumed && iListBox)
-        return iListBox->OfferKeyEventL(aKeyEvent, aType);
-    else
-        return result;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
-    {
-    switch (aEventType)
-        {
-        case EEventEnterKeyPressed:
-        case EEventItemDoubleClicked:
-            {
-            // "emulate" enter key press and send it to file utils for prosessing
-            
-            TKeyEvent keyEvent;
-            keyEvent.iCode = EKeyEnter;
-            keyEvent.iModifiers = 0;
-            
-            TEventCode type = EEventKey;
-    
-            iModel->FileUtils()->HandleOfferKeyEventL(keyEvent, type);          
-            }
-            break;
-        default:
-            break;
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::HandlePointerEventL(const TPointerEvent &aPointerEvent)
-    {
-    // detect direction of dragging by comparing the start and finish points
-    
-    if (aPointerEvent.iType == TPointerEvent::EButton1Down)
-        {
-        iDragStartPoint = aPointerEvent.iPosition;
-        iIsDragging = EFalse;
-        }
-    else if (aPointerEvent.iType == TPointerEvent::EDrag)
-        {
-        iIsDragging = ETrue;
-        
-        return;
-        }
-    else if (aPointerEvent.iType == TPointerEvent::EButton1Up)
-        {
-        if (iIsDragging)
-            {
-            const TInt KDelta = iDragStartPoint.iX - aPointerEvent.iPosition.iX;
-            const TInt KThreshold = 30;
-            
-            if (KDelta < -KThreshold) // dragging to right
-                {
-                // "emulate" right key press and send it to file utils for prosessing
-                
-                TKeyEvent keyEvent;
-                keyEvent.iCode = EKeyRightArrow;
-                keyEvent.iModifiers = 0;
-                
-                TEventCode type = EEventKey;
-        
-                iModel->FileUtils()->HandleOfferKeyEventL(keyEvent, type);
-                
-                return;
-                }
-            else if (KDelta > KThreshold) // dragging to left
-                {
-                // "emulate" left key press and send it to file utils for prosessing
-                
-                TKeyEvent keyEvent;
-                keyEvent.iCode = EKeyLeftArrow;
-                keyEvent.iModifiers = 0;
-                
-                TEventCode type = EEventKey;
-        
-                iModel->FileUtils()->HandleOfferKeyEventL(keyEvent, type);
-                
-                return;
-                }            
-            }
-        iIsDragging = EFalse;
-        }
-    else
-        {
-        iIsDragging = EFalse;        
-        }
-
-    CCoeControl::HandlePointerEventL(aPointerEvent);
-    }
-            
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::CreateListBoxL(TInt aFileViewMode)
-    {
-    iFileViewMode = aFileViewMode;
-    
-    if (iSearchField)
-        DisableSearchFieldL();
-    
-    if (iListBox)
-        {
-        delete iListBox;
-        iListBox = NULL;    
-        }
-    
-    if (iFileViewMode == EFileViewModeSimple)
-        {
-        iListBox = new(ELeave) CSimpleFileViewListBox;
-        }
-    else     
-        {
-        iListBox = new(ELeave) CExtendedFileViewListBox;
-        }
-        
-                
-    iListBox->SetContainerWindowL(*this);
-    iListBox->ConstructL(this, EAknListBoxMarkableList);
-    
-    iListBox->View()->SetListEmptyTextL(KEmptyDirectory);
-        
-    iListBox->CreateScrollBarFrameL(ETrue);
-    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
-    iListBox->SetListBoxObserver(this);
-
-    // make sure listbox has correct size
-    SizeChanged();
-
-    iListBox->ActivateL();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TInt CFileBrowserFileListContainer::CurrentListBoxItemIndex()
-    {
-    if (iListBox && iSearchField)
-        {
-        TInt currentItemIndex = iListBox->CurrentItemIndex();
-        
-        if (currentItemIndex >= 0)
-            return static_cast<CAknFilteredTextListBoxModel*>(iListBox->Model())->Filter()->FilteredItemIndex(currentItemIndex);
-        else
-            return KErrNotFound;
-        }
-    else if (iListBox)
-        {
-        return iListBox->CurrentItemIndex();
-        }
-    else
-        return KErrNotFound;    
-    }
-
-// --------------------------------------------------------------------------------------------
-
-const CArrayFix<TInt>* CFileBrowserFileListContainer::ListBoxSelectionIndexes()
-    {
-    if (iListBox && iSearchField)
-        {
-        TRAP_IGNORE( static_cast<CAknFilteredTextListBoxModel*>(iListBox->Model())->Filter()->UpdateSelectionIndexesL() ); // !!!
-        return static_cast<CAknFilteredTextListBoxModel*>(iListBox->Model())->Filter()->SelectionIndexes();
-        }
-    else if (iListBox)
-        {
-        const CListBoxView::CSelectionIndexArray* indices = iListBox->SelectionIndexes();
-        return static_cast<const CArrayFix<TInt>*>(indices);
-        }
-    else
-        return NULL;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TInt CFileBrowserFileListContainer::ListBoxSelectionIndexesCount()
-    {
-    if (iListBox && iSearchField)
-        {
-        TRAP_IGNORE( static_cast<CAknFilteredTextListBoxModel*>(iListBox->Model())->Filter()->UpdateSelectionIndexesL() ); // !!!
-        return static_cast<CAknFilteredTextListBoxModel*>(iListBox->Model())->Filter()->SelectionIndexes()->Count();
-        }
-    else if (iListBox)
-        {
-        return iListBox->SelectionIndexes()->Count();
-        }
-    else
-        return KErrNotFound;
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-TInt CFileBrowserFileListContainer::ListBoxNumberOfVisibleItems()
-    {
-    if (iListBox && iSearchField)
-        {
-        return static_cast<CAknFilteredTextListBoxModel*>(iListBox->Model())->Filter()->FilteredNumberOfItems();
-        }
-    else if (iListBox)
-        {
-        return iListBox->Model()->NumberOfItems();
-        }
-    else
-        return KErrNotFound;
-    }
-        
-// --------------------------------------------------------------------------------------------
-
-CAknIconArray* CFileBrowserFileListContainer::ListBoxIconArrayL()
-    {
-    if (iListBox)
-        { 
-        if (iFileViewMode == EFileViewModeSimple)
-            {
-            return static_cast<CAknIconArray*>(static_cast<CEikColumnListBox*>(iListBox)->ItemDrawer()->ColumnData()->IconArray());
-            }
-        else if (iFileViewMode == EFileViewModeExtended)
-            {
-            return static_cast<CAknIconArray*>(static_cast<CEikFormattedCellListBox*>(iListBox)->ItemDrawer()->ColumnData()->IconArray());
-            }
-        }
-
-    return NULL;
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::SetListBoxIconArrayL(CAknIconArray* aIconArray)
-    {
-    if (iListBox)
-        { 
-        if (iFileViewMode == EFileViewModeSimple)
-            {
-            //CArrayPtr<CGulIcon>* currentIconArray = static_cast<CEikColumnListBox*>(iListBox)->ItemDrawer()->ColumnData()->IconArray();
-            //delete currentIconArray;
-            //currentIconArray = NULL;       
-            static_cast<CEikColumnListBox*>(iListBox)->ItemDrawer()->ColumnData()->SetIconArray(aIconArray);
-            }
-        else if (iFileViewMode == EFileViewModeExtended)
-            {
-            //CArrayPtr<CGulIcon>* currentIconArray = static_cast<CEikFormattedCellListBox*>(iListBox)->ItemDrawer()->ColumnData()->IconArray();
-            //delete currentIconArray;
-            //currentIconArray = NULL;       
-            static_cast<CEikFormattedCellListBox*>(iListBox)->ItemDrawer()->ColumnData()->SetIconArray(aIconArray);
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::SetListBoxTextArrayL(CDesCArray* aTextArray)
-    {
-    if (iListBox)
-        {    
-        iListBox->Model()->SetItemTextArray(aTextArray);
-        iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray);
-        iListBox->HandleItemAdditionL();
-        iListBox->UpdateScrollBarsL();
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::EnableSearchFieldL()
-    {
-    if (iListBox && !iSearchField && iListBox->Model()->NumberOfItems() > 0)
-        {
-        iSearchField = CAknSearchField::NewL(*this, CAknSearchField::ESearch, NULL, KMaxFileName);
-        
-        iSearchField->SetObserver(this);
-        iSearchField->SetFocus(ETrue);
-        iSearchField->MakeVisible(ETrue);
-        iSearchField->ResetL();
-        
-        iListBox->View()->SetListEmptyTextL(KNoMatches);
-        
-        // enable filtering
-        ((CAknFilteredTextListBoxModel*)iListBox->Model())->CreateFilterL(iListBox, iSearchField);
-        
-        SizeChanged();   
-
-        // update cba
-        CEikButtonGroupContainer* cbaGroup = CEikButtonGroupContainer::Current();
-        cbaGroup->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_CANCEL);
-        cbaGroup->DrawNow();
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TBool CFileBrowserFileListContainer::IsSearchFieldEnabled()
-    {
-    return iSearchField != NULL;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::DisableSearchFieldL()
-    {
-    if (iSearchField)
-        {
-        iSearchField->MakeVisible( EFalse );
-        iSearchField->SetFocusing( EFalse );
-        
-        delete iSearchField;
-        iSearchField = NULL;  
-
-        iListBox->View()->SetListEmptyTextL(KEmptyDirectory);
-
-        // disable filtering
-        ((CAknFilteredTextListBoxModel*)iListBox->Model())->RemoveFilter();
-
-        SizeChanged();
-        DrawNow();
-
-        // update cba
-        CEikButtonGroupContainer* cbaGroup = CEikButtonGroupContainer::Current();
-        cbaGroup->SetCommandSetL(R_AVKON_SOFTKEYS_OPTIONS_EXIT);
-        cbaGroup->DrawNow();
-        
-        // Clear selections because using filter causes selections to go out of sync
-        UpdateToolbar();
-        AknSelectionService::HandleMarkableListProcessCommandL( EAknUnmarkAll, iListBox );
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-TInt CFileBrowserFileListContainer::CountComponentControls() const
-    {
-    TInt controls(0);
-
-    if (iListBox)
-        controls++;
-    
-    if (iSearchField)
-        controls++;
-    
-    return controls;
-    }
-
-// --------------------------------------------------------------------------------------------
-
-CCoeControl* CFileBrowserFileListContainer::ComponentControl(TInt aIndex) const
-    {
-    switch (aIndex)
-        {
-        case 0:
-            {
-            return iListBox;
-            }
-        case 1:
-            {
-            return iSearchField;
-            }
-        default:
-            {
-            return NULL;
-            }
-        }
-    }    
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::SetScreenLayoutL(TInt aLayoutMode)
-    {
-    // make sure that the search field has been disabled
-    DisableSearchFieldL();
-
-    // make sure that the title of the application is correct
-    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
-    CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
-    tp->SetTextL( _L("FileBrowser") );
-    
-    // change the layout mode
-    if (aLayoutMode == EDisplayModeFullScreen)
-        sp->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_SMALL);
-    else
-        sp->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL);
-    
-    // update layout
-    HandleResourceChange(KEikDynamicLayoutVariantSwitch);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::SetNaviPaneTextL(const TDesC& aText)
-    {
-    if (iNaviDecorator)
-        {
-        delete iNaviDecorator;
-        iNaviDecorator = NULL;
-        }
-    
-    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
-    iNaviDecorator = iNaviContainer->CreateMessageLabelL(aText);
-    iNaviContainer->PushL(*iNaviDecorator);
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::SizeChanged()
-    {
-    if (iListBox && iSearchField)
-        {
-        TSize findPaneSize;
-        AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EFindPane, findPaneSize);
-
-        TRect mainPaneRect;
-        TRect naviPaneRect;
-
-        if (Layout_Meta_Data::IsLandscapeOrientation() ||
-            iEikonEnv->AppUiFactory()->StatusPane()->CurrentLayoutResId() != R_AVKON_STATUS_PANE_LAYOUT_SMALL)
-            {
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-            if ( iToolbar && iModel->Settings().iEnableToolbar )
-                {
-                iToolbar->ShowToolbarL();
-                // Get location of softkeys 
-                AknLayoutUtils::TAknCbaLocation cbaLocation = AknLayoutUtils::CbaLocation(); 
-                if ( cbaLocation == AknLayoutUtils::EAknCbaLocationBottom ) 
-                    { 
-                    // here there is the BSK mode
-                    mainPaneRect.iBr.iX -= iToolbar->Rect().Width();
-                    findPaneSize.iWidth -= iToolbar->Rect().Width();
-                    }
-                }
-#endif
-            }
-        else
-            {
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::ENaviPane, naviPaneRect);
-            mainPaneRect.iTl.iY = naviPaneRect.Height();
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-            if ( iToolbar && iModel->Settings().iEnableToolbar )
-                {
-                iToolbar->ShowToolbarL();
-                mainPaneRect.iBr.iY -= iToolbar->Rect().Height();
-                }
-#endif
-            }
-        
-        mainPaneRect.iBr.iY -= findPaneSize.iHeight;  
-
-        TRect listBoxRect(mainPaneRect.Size());
-        iListBox->SetRect(listBoxRect);
-
-        if (iFileViewMode == EFileViewModeSimple)
-            {        
-            CAknsListBoxBackgroundControlContext* listBoxContext = static_cast<CAknsListBoxBackgroundControlContext*>(static_cast<CEikColumnListBox*>(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext());
-            listBoxContext->SetRect(listBoxRect);
-            }
-        else if (iFileViewMode == EFileViewModeExtended)
-            {        
-            CAknsListBoxBackgroundControlContext* listBoxContext = static_cast<CAknsListBoxBackgroundControlContext*>(static_cast<CEikFormattedCellListBox*>(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext());
-            listBoxContext->SetRect(listBoxRect);
-            }        
-
-        iSearchField->SetRect(TRect(TPoint(0,mainPaneRect.Height()), findPaneSize));
-        
-        if (iSearchField->IsVisible() && iListBox->IsVisible())
-            iSearchField->SetLinePos(2);
-
-        }
-        
-    else if (iListBox)
-        {
-        TRect mainPaneRect;
-        TRect naviPaneRect;
-
-        if (Layout_Meta_Data::IsLandscapeOrientation() ||
-            iEikonEnv->AppUiFactory()->StatusPane()->CurrentLayoutResId() != R_AVKON_STATUS_PANE_LAYOUT_SMALL)
-            {
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-            if ( iToolbar && iModel->Settings().iEnableToolbar )
-                {
-                iToolbar->ShowToolbarL();
-                // Get location of softkeys 
-                AknLayoutUtils::TAknCbaLocation cbaLocation = AknLayoutUtils::CbaLocation(); 
-                if ( cbaLocation == AknLayoutUtils::EAknCbaLocationBottom ) 
-                    { 
-                    // here there is the BSK mode
-                    mainPaneRect.iBr.iX -= iToolbar->Rect().Width();
-                    }
-                }
-#endif
-            }
-        else
-            {
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::ENaviPane, naviPaneRect);
-            mainPaneRect.iTl.iY = naviPaneRect.Height();
-            
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-            if ( iToolbar && iModel->Settings().iEnableToolbar )
-                {
-                iToolbar->ShowToolbarL();
-                mainPaneRect.iBr.iY -= iToolbar->Rect().Height();
-                }
-#endif
-            }
-        
-        TRect listBoxRect(mainPaneRect.Size());
-        iListBox->SetRect(listBoxRect);
-
-        if (iFileViewMode == EFileViewModeSimple)
-            {        
-            CAknsListBoxBackgroundControlContext* listBoxContext = static_cast<CAknsListBoxBackgroundControlContext*>(static_cast<CEikColumnListBox*>(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext());
-            listBoxContext->SetRect(listBoxRect);
-            }
-        else if (iFileViewMode == EFileViewModeExtended)
-            {        
-            CAknsListBoxBackgroundControlContext* listBoxContext = static_cast<CAknsListBoxBackgroundControlContext*>(static_cast<CEikFormattedCellListBox*>(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext());
-            listBoxContext->SetRect(listBoxRect);
-            }
-        }
-    }
-        
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::HandleResourceChange(TInt aType)
-    {
-    CCoeControl::HandleResourceChange(aType);
-
-    if (aType == KEikDynamicLayoutVariantSwitch)
-        {
-        TRect mainPaneRect;
-        TRect naviPaneRect;
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __SERIES60_32__)
-        TBool needToCutSearchFieldLength( EFalse );
-#endif
-        
-        if (Layout_Meta_Data::IsLandscapeOrientation() ||
-            iEikonEnv->AppUiFactory()->StatusPane()->CurrentLayoutResId() != R_AVKON_STATUS_PANE_LAYOUT_SMALL)
-            {
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __SERIES60_32__)
-            if ( iToolbar && iModel->Settings().iEnableToolbar )
-                {
-                iToolbar->ShowToolbarL();
-                // Get location of softkeys 
-                AknLayoutUtils::TAknCbaLocation cbaLocation = AknLayoutUtils::CbaLocation(); 
-                if ( cbaLocation == AknLayoutUtils::EAknCbaLocationBottom ) 
-                    { 
-                    // here there is the BSK mode
-                    mainPaneRect.iBr.iX -= iToolbar->Rect().Width();
-                    needToCutSearchFieldLength = ETrue;
-                    }
-                }
-#endif
-            }
-        else
-            {
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::ENaviPane, naviPaneRect);
-            mainPaneRect.iTl.iY = naviPaneRect.Height();
-
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __SERIES60_32__)
-            if ( iToolbar && iModel->Settings().iEnableToolbar )
-                {
-                iToolbar->ShowToolbarL();
-                mainPaneRect.iBr.iY -= iToolbar->Rect().Height();
-                }
-#endif
-            }
-
-        SetRect(mainPaneRect);
-
-        if (iListBox && iSearchField)
-            {
-            TSize findPaneSize;
-            AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EFindPane, findPaneSize);
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __SERIES60_32__)
-            if ( needToCutSearchFieldLength )
-                {
-                findPaneSize.iWidth -= iToolbar->Rect().Width();
-                }
-#endif
-            mainPaneRect.iBr.iY -= findPaneSize.iHeight;
-            
-            TRect listBoxRect(mainPaneRect.Size());
-            iListBox->SetRect(listBoxRect);
-            
-            if (iFileViewMode == EFileViewModeSimple)
-                {        
-                CAknsListBoxBackgroundControlContext* listBoxContext = static_cast<CAknsListBoxBackgroundControlContext*>(static_cast<CEikColumnListBox*>(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext());
-                listBoxContext->SetRect(listBoxRect);
-                }
-            else if (iFileViewMode == EFileViewModeExtended)
-                {        
-                CAknsListBoxBackgroundControlContext* listBoxContext = static_cast<CAknsListBoxBackgroundControlContext*>(static_cast<CEikFormattedCellListBox*>(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext());
-                listBoxContext->SetRect(listBoxRect);
-                }    
-            
-            iSearchField->SetRect(TRect(TPoint(0,mainPaneRect.Height()), findPaneSize));
-            
-            if (iSearchField->IsVisible() && iListBox->IsVisible())
-                iSearchField->SetLinePos(2);
-        
-            TRAP_IGNORE(iListBox->UpdateScrollBarsL());
-            }        
-        else if (iListBox)
-            {
-            TRect listBoxRect(mainPaneRect.Size());
-            iListBox->SetRect(listBoxRect);
-            
-            if (iFileViewMode == EFileViewModeSimple)
-                {        
-                CAknsListBoxBackgroundControlContext* listBoxContext = static_cast<CAknsListBoxBackgroundControlContext*>(static_cast<CEikColumnListBox*>(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext());
-                listBoxContext->SetRect(listBoxRect);
-                }
-            else if (iFileViewMode == EFileViewModeExtended)
-                {        
-                CAknsListBoxBackgroundControlContext* listBoxContext = static_cast<CAknsListBoxBackgroundControlContext*>(static_cast<CEikFormattedCellListBox*>(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext());
-                listBoxContext->SetRect(listBoxRect);
-                }    
-            
-            TRAP_IGNORE(iListBox->UpdateScrollBarsL());
-            }
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::HandleSettingsChangeL()
-    {
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-    if ( iModel->Settings().iEnableToolbar )
-        {
-        if ( AknLayoutUtils::PenEnabled() )
-            {
-            if ( !iToolbar )
-                {
-                iToolbar = CFileBrowserToolbar::NewL();
-                }
-            iToolbar->ShowToolbarL();
-            }
-        }
-    else
-        {
-        HideToolbar();
-        }
-    SizeChanged();
-#endif
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::HideToolbar()
-    {
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-    if ( iToolbar && iToolbar->IsShown() )
-        {
-        iToolbar->HideToolbarL();
-        }
-#endif
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CFileBrowserFileListContainer::UpdateToolbar()
-    {
-#if(!defined __SERIES60_30__ && !defined __SERIES60_31__ && !defined __S60_32__)
-    if ( iToolbar && iToolbar->IsShown() )
-        {
-        iToolbar->ResetState();
-        }
-#endif    
-    }
-
-// --------------------------------------------------------------------------------------------
-// --------------------------------------------------------------------------------------------
-
-CSimpleFileViewListBox::~CSimpleFileViewListBox()
-    {
-    ReleaseFonts();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CSimpleFileViewListBox::ReleaseFonts()
-    {
-    if (iFont)
-        {
-        CGraphicsDevice* dev = iCoeEnv->ScreenDevice();
-        dev->ReleaseFont(iFont);
-        iFont = NULL;   
-        }
-    }
-
-// --------------------------------------------------------------------------------------------
-    
-void CSimpleFileViewListBox::SizeChanged()
-    {
-    // call the base class function first
-    CAknSingleGraphicStyleListBox::SizeChanged();
-
-    // customize the list box
-    TRAP_IGNORE(SizeChangedL());
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CSimpleFileViewListBox::SizeChangedL()
-    {
-    // disable separator line
-    ItemDrawer()->ColumnData()->SetSeparatorLinePosition(ENoLine);
-
-    // enable marquee
-    ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
-
-    // get font
-    ReleaseFonts();
-    CGraphicsDevice* dev = iCoeEnv->ScreenDevice();
-    const TSize screenSize = dev->SizeInPixels();
-
-    TFontSpec fontSpec = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont)->FontSpecInTwips();
-    fontSpec.iHeight = IsQHD(screenSize) ? KSimpleViewFontHeightQHD : KSimpleViewFontHeight;
-    dev->GetNearestFontInTwips(iFont, fontSpec);
-    
-    // set fonts
-    ItemDrawer()->ColumnData()->SetColumnFontL(0, iFont);
-    ItemDrawer()->ColumnData()->SetColumnFontL(1, iFont);
-    ItemDrawer()->ColumnData()->SetColumnFontL(2, iFont);
-    ItemDrawer()->ColumnData()->SetColumnFontL(3, iFont);
-
-    // set row height
-    TInt rowHeight = iFont->HeightInPixels()+4;    
-    TSize itemCellSize = View()->ItemDrawer()->ItemCellSize();
-    itemCellSize.iHeight = rowHeight; 
-    SetItemHeightL(rowHeight);
-    View()->ItemDrawer()->SetItemCellSize(itemCellSize);
-    
-    // set icon sizes
-    TInt normalIconSize = rowHeight * 0.9;
-    TInt markingIconSize = rowHeight * 0.8;
-    ItemDrawer()->ColumnData()->SetSubCellIconSize(0, TSize(normalIconSize,normalIconSize));
-    ItemDrawer()->ColumnData()->SetSubCellIconSize(2, TSize(markingIconSize,markingIconSize));
-    ItemDrawer()->ColumnData()->SetSubCellIconSize(3, TSize(markingIconSize,markingIconSize));
-
-    // set column widths
-    ItemDrawer()->ColumnData()->SetColumnWidthPixelL(0, normalIconSize);
-    ItemDrawer()->ColumnData()->SetColumnWidthPixelL(1, itemCellSize.iWidth-normalIconSize-markingIconSize);
-    ItemDrawer()->ColumnData()->SetColumnWidthPixelL(2, markingIconSize);
-    ItemDrawer()->ColumnData()->SetColumnWidthPixelL(3, markingIconSize);
-
-    // set baseline for the text
-    ItemDrawer()->ColumnData()->SetColumnBaselinePosL(1, iFont->HeightInPixels()-iFont->BaselineOffsetInPixels()-1);
-
-    // set margins
-    TMargins iconMargins;
-    iconMargins.iBottom = 0;
-    iconMargins.iLeft = 0;
-    iconMargins.iRight = 0;
-    iconMargins.iTop = 0;
-
-    TMargins textMargins;
-    textMargins.iBottom = 0;
-    textMargins.iLeft = markingIconSize * 0.15;
-    textMargins.iRight = markingIconSize * 0.15;
-    textMargins.iTop = 0;
-
-    ItemDrawer()->ColumnData()->SetColumnMarginsL(0, iconMargins);
-    ItemDrawer()->ColumnData()->SetColumnMarginsL(1, textMargins);
-    ItemDrawer()->ColumnData()->SetColumnMarginsL(2, iconMargins);
-    ItemDrawer()->ColumnData()->SetColumnMarginsL(3, iconMargins);
-    }
-
-// --------------------------------------------------------------------------------------------
-// --------------------------------------------------------------------------------------------
-
-CExtendedFileViewListBox::~CExtendedFileViewListBox()
-    {
-    ReleaseFonts();
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CExtendedFileViewListBox::ReleaseFonts()
-    {
-    if (iFont1)
-        {
-        CGraphicsDevice* dev = iCoeEnv->ScreenDevice();
-        dev->ReleaseFont(iFont1);
-        iFont1 = NULL;     
-        }
-
-    if (iFont2)
-        {
-        CGraphicsDevice* dev = iCoeEnv->ScreenDevice();
-        dev->ReleaseFont(iFont2);
-        iFont2 = NULL;      
-        }        
-    }
-    
-// --------------------------------------------------------------------------------------------
-
-void CExtendedFileViewListBox::SizeChanged()
-    {
-    // call the base class function first
-    CAknDoubleGraphicStyleListBox::SizeChanged();
-
-    // customize the list box
-    TRAP_IGNORE(SizeChangedL());
-    }
-
-// --------------------------------------------------------------------------------------------
-
-void CExtendedFileViewListBox::SizeChangedL()
-    {
-    // disable separator line
-    ItemDrawer()->ColumnData()->SetSeparatorLinePosition(ENoLine);
-
-    // enable marquee
-    ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue);
-    
-    // get fonts
-    ReleaseFonts();
-    CGraphicsDevice* dev = iCoeEnv->ScreenDevice();
-    const TSize screenSize = dev->SizeInPixels();
-    
-    TFontSpec fontSpec1 = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont)->FontSpecInTwips();
-    fontSpec1.iHeight = IsQHD(screenSize) ? KExtendedViewFontHeight1QHD : KExtendedViewFontHeight1;
-    dev->GetNearestFontInTwips(iFont1, fontSpec1);
-
-    TFontSpec fontSpec2 = AknLayoutUtils::FontFromId(EAknLogicalFontSecondaryFont)->FontSpecInTwips();
-    fontSpec2.iHeight = IsQHD(screenSize) ? KExtendedViewFontHeight2QHD : KExtendedViewFontHeight2;
-    dev->GetNearestFontInTwips(iFont2, fontSpec2);    
-
-        
-    // set fonts
-    ItemDrawer()->ColumnData()->SetSubCellFontL(0, iFont1);
-    ItemDrawer()->ColumnData()->SetSubCellFontL(1, iFont1);
-    ItemDrawer()->ColumnData()->SetSubCellFontL(2, iFont2);
-    ItemDrawer()->ColumnData()->SetSubCellFontL(3, iFont1);
-    ItemDrawer()->ColumnData()->SetSubCellFontL(4, iFont1);
-
-    // set row height
-    TInt rowHeight1 = iFont1->HeightInPixels()+3;    
-    TInt rowHeight2 = iFont2->HeightInPixels()+3;    
-    TSize itemCellSize = View()->ItemDrawer()->ItemCellSize();
-    itemCellSize.iHeight = rowHeight1+rowHeight2; 
-    SetItemHeightL(rowHeight1+rowHeight2);
-    View()->ItemDrawer()->SetItemCellSize(itemCellSize);
-
-    
-    // set icon sizes
-    TInt normalIconSize = rowHeight1 * 0.9;
-    TInt markingIconSize = rowHeight1 * 0.8;
-    ItemDrawer()->ColumnData()->SetSubCellIconSize(0, TSize(normalIconSize,normalIconSize));
-    ItemDrawer()->ColumnData()->SetSubCellIconSize(3, TSize(markingIconSize,markingIconSize));
-    ItemDrawer()->ColumnData()->SetSubCellIconSize(4, TSize(markingIconSize,markingIconSize));
-
-    // set sub cell sizes
-    ItemDrawer()->ColumnData()->SetSubCellSizeL(0, TSize(normalIconSize,rowHeight1+rowHeight2));
-    ItemDrawer()->ColumnData()->SetSubCellSizeL(1, TSize(itemCellSize.iWidth-normalIconSize-markingIconSize,rowHeight1));
-    ItemDrawer()->ColumnData()->SetSubCellSizeL(2, TSize(itemCellSize.iWidth-normalIconSize-markingIconSize,rowHeight2));
-    ItemDrawer()->ColumnData()->SetSubCellSizeL(3, TSize(markingIconSize,rowHeight1+rowHeight2));
-    ItemDrawer()->ColumnData()->SetSubCellSizeL(4, TSize(markingIconSize,rowHeight1+rowHeight2));
-
-    // set sub cell positions
-    ItemDrawer()->ColumnData()->SetSubCellPositionL(0, TPoint(0,0));
-    ItemDrawer()->ColumnData()->SetSubCellPositionL(1, TPoint(normalIconSize,0));
-    ItemDrawer()->ColumnData()->SetSubCellPositionL(2, TPoint(normalIconSize,rowHeight1));
-    ItemDrawer()->ColumnData()->SetSubCellPositionL(3, TPoint(itemCellSize.iWidth-normalIconSize-markingIconSize,0));
-    ItemDrawer()->ColumnData()->SetSubCellPositionL(4, TPoint(itemCellSize.iWidth-normalIconSize-markingIconSize,0));
-    
-    // set baselines for the texts
-    ItemDrawer()->ColumnData()->SetSubCellBaselinePosL(1, iFont1->HeightInPixels()-iFont1->BaselineOffsetInPixels()-1);
-    ItemDrawer()->ColumnData()->SetSubCellBaselinePosL(2, rowHeight1+iFont2->HeightInPixels()-iFont2->BaselineOffsetInPixels()-1);
-    
-    // set margins
-    TMargins iconMargins;
-    iconMargins.iBottom = rowHeight2;
-    iconMargins.iLeft = 0;
-    iconMargins.iRight = 0;
-    iconMargins.iTop = 0;
-
-    TMargins textMargins;
-    textMargins.iBottom = 0;
-    textMargins.iLeft = markingIconSize * 0.15;
-    textMargins.iRight = markingIconSize * 0.15;
-    textMargins.iTop = 0;
-
-    ItemDrawer()->ColumnData()->SetSubCellMarginsL(0, iconMargins);
-    ItemDrawer()->ColumnData()->SetSubCellMarginsL(1, textMargins);
-    ItemDrawer()->ColumnData()->SetSubCellMarginsL(2, textMargins);
-    ItemDrawer()->ColumnData()->SetSubCellMarginsL(3, iconMargins);
-    ItemDrawer()->ColumnData()->SetSubCellMarginsL(4, iconMargins);
-    }
-    
-// --------------------------------------------------------------------------------------------
-        
-// End of File