diff -r 48060abbbeaf -r b3cee849fa46 filebrowser/src/FBFileListContainer.cpp --- 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -_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(reinterpret_cast(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(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(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(iListBox->Model())->Filter()->FilteredItemIndex(currentItemIndex); - else - return KErrNotFound; - } - else if (iListBox) - { - return iListBox->CurrentItemIndex(); - } - else - return KErrNotFound; - } - -// -------------------------------------------------------------------------------------------- - -const CArrayFix* CFileBrowserFileListContainer::ListBoxSelectionIndexes() - { - if (iListBox && iSearchField) - { - TRAP_IGNORE( static_cast(iListBox->Model())->Filter()->UpdateSelectionIndexesL() ); // !!! - return static_cast(iListBox->Model())->Filter()->SelectionIndexes(); - } - else if (iListBox) - { - const CListBoxView::CSelectionIndexArray* indices = iListBox->SelectionIndexes(); - return static_cast*>(indices); - } - else - return NULL; - } - -// -------------------------------------------------------------------------------------------- - -TInt CFileBrowserFileListContainer::ListBoxSelectionIndexesCount() - { - if (iListBox && iSearchField) - { - TRAP_IGNORE( static_cast(iListBox->Model())->Filter()->UpdateSelectionIndexesL() ); // !!! - return static_cast(iListBox->Model())->Filter()->SelectionIndexes()->Count(); - } - else if (iListBox) - { - return iListBox->SelectionIndexes()->Count(); - } - else - return KErrNotFound; - } - -// -------------------------------------------------------------------------------------------- - -TInt CFileBrowserFileListContainer::ListBoxNumberOfVisibleItems() - { - if (iListBox && iSearchField) - { - return static_cast(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(static_cast(iListBox)->ItemDrawer()->ColumnData()->IconArray()); - } - else if (iFileViewMode == EFileViewModeExtended) - { - return static_cast(static_cast(iListBox)->ItemDrawer()->ColumnData()->IconArray()); - } - } - - return NULL; - } - -// -------------------------------------------------------------------------------------------- - -void CFileBrowserFileListContainer::SetListBoxIconArrayL(CAknIconArray* aIconArray) - { - if (iListBox) - { - if (iFileViewMode == EFileViewModeSimple) - { - //CArrayPtr* currentIconArray = static_cast(iListBox)->ItemDrawer()->ColumnData()->IconArray(); - //delete currentIconArray; - //currentIconArray = NULL; - static_cast(iListBox)->ItemDrawer()->ColumnData()->SetIconArray(aIconArray); - } - else if (iFileViewMode == EFileViewModeExtended) - { - //CArrayPtr* currentIconArray = static_cast(iListBox)->ItemDrawer()->ColumnData()->IconArray(); - //delete currentIconArray; - //currentIconArray = NULL; - static_cast(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( 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(static_cast(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext()); - listBoxContext->SetRect(listBoxRect); - } - else if (iFileViewMode == EFileViewModeExtended) - { - CAknsListBoxBackgroundControlContext* listBoxContext = static_cast(static_cast(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(static_cast(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext()); - listBoxContext->SetRect(listBoxRect); - } - else if (iFileViewMode == EFileViewModeExtended) - { - CAknsListBoxBackgroundControlContext* listBoxContext = static_cast(static_cast(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(static_cast(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext()); - listBoxContext->SetRect(listBoxRect); - } - else if (iFileViewMode == EFileViewModeExtended) - { - CAknsListBoxBackgroundControlContext* listBoxContext = static_cast(static_cast(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(static_cast(iListBox)->ItemDrawer()->ColumnData()->SkinBackgroundContext()); - listBoxContext->SetRect(listBoxRect); - } - else if (iFileViewMode == EFileViewModeExtended) - { - CAknsListBoxBackgroundControlContext* listBoxContext = static_cast(static_cast(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