diff -r 48060abbbeaf -r b3cee849fa46 loadgen/src/loadgen_maincontainer.cpp --- a/loadgen/src/loadgen_maincontainer.cpp Thu Aug 19 09:55:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,457 +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 "loadgen_maincontainer.h" -#include "loadgen.hrh" -#include "loadgen_document.h" -#include "loadgen_appui.h" -#include "loadgen_model.h" -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -_LIT(KExtraIconsPath, "\\resource\\apps\\loadgen_extraicons.mif"); - -// ===================================== MEMBER FUNCTIONS ===================================== - -void CLoadGenMainContainer::ConstructL(const TRect& aRect) - { - iModel = static_cast(reinterpret_cast(iEikonEnv->AppUi())->Document())->Model(); - iModel->SetMainContainer(this); - - CreateWindowL(); - SetRect(aRect); - SetBlank(); - - // init listbox - iListBox = new(ELeave) CLoadGenCAknSingleGraphicStyleListBox; - iListBox->SetContainerWindowL(*this); - iListBox->ConstructL(this, EAknListBoxMarkableList); - iListBox->View()->SetListEmptyTextL(_L("No loads activated\n(Select new load from Options to generate new load)")); - - // create icon array and add marking indicator to it - CAknIconArray* iconArray = new(ELeave) CAknIconArray(1); - CleanupStack::PushL(iconArray); - CFbsBitmap* markBitmap = NULL; - CFbsBitmap* markBitmapMask = NULL; - - TRgb defaultColor; - defaultColor = iEikonEnv->Color(EColorControlText); - - AknsUtils::CreateColorIconL(AknsUtils::SkinInstance(), - KAknsIIDQgnIndiMarkedAdd, - KAknsIIDQsnIconColors, - EAknsCIQsnIconColorsCG13, - markBitmap, - markBitmapMask, - AknIconUtils::AvkonIconFileName(), - EMbmAvkonQgn_indi_marked_add, - EMbmAvkonQgn_indi_marked_add_mask, - defaultColor - ); - - CGulIcon* markIcon = CGulIcon::NewL(markBitmap, markBitmapMask); - iconArray->AppendL(markIcon); - - // append icons from loadgen_extraicons.mif - TFileName extraIconsPath; - extraIconsPath.Copy(KExtraIconsPath); - TParsePtrC parse((CEikonEnv::Static()->EikAppUi()->Application())->AppFullName()); // get path where this app is installed - extraIconsPath.Insert(0, parse.Drive()); // drive letter - - CFbsBitmap* redBitmap = NULL; - CFbsBitmap* redBitmapMask = NULL; - CFbsBitmap* greenBitmap = NULL; - CFbsBitmap* greenBitmapMask = NULL; - - AknIconUtils::CreateIconL(redBitmap, redBitmapMask, extraIconsPath, EMbmLoadgen_extraiconsQgn_prob_status_red, EMbmLoadgen_extraiconsQgn_prob_status_red_mask); - AknIconUtils::CreateIconL(greenBitmap, greenBitmapMask, extraIconsPath, EMbmLoadgen_extraiconsQgn_prob_status_green, EMbmLoadgen_extraiconsQgn_prob_status_green_mask); - - CGulIcon* redIcon = CGulIcon::NewL(redBitmap, redBitmapMask); - iconArray->AppendL(redIcon); - - CGulIcon* greenIcon = CGulIcon::NewL(greenBitmap, greenBitmapMask); - iconArray->AppendL(greenIcon); - - // set icon array - CleanupStack::Pop(); // iconArray - iListBox->ItemDrawer()->ColumnData()->SetIconArray(iconArray); - - iListBox->CreateScrollBarFrameL(ETrue); - iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); - iListBox->SetListBoxObserver(this); - - // set size of the listbox - TSize outputRectSize; - AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, outputRectSize); - TRect outputRect(outputRectSize); - iListBox->SetRect(outputRect); - - iListBox->ActivateL(); - - ActivateL(); - } - -// -------------------------------------------------------------------------------------------- - -CLoadGenMainContainer::~CLoadGenMainContainer() - { - if (iListBox) - delete iListBox; - } - -// -------------------------------------------------------------------------------------------- - -void CLoadGenMainContainer::SizeChanged() -{ - TSize outputRectSize; - AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, outputRectSize); - TRect outputRect(outputRectSize); - - if (iListBox) - iListBox->SetRect(outputRect); -} - -// -------------------------------------------------------------------------------------------- - -TInt CLoadGenMainContainer::CountComponentControls() const - { - if (iListBox) - return 1; - else - return 0; - } - -// -------------------------------------------------------------------------------------------- - -CCoeControl* CLoadGenMainContainer::ComponentControl(TInt /*aIndex*/) const - { - if (iListBox) - return iListBox; - else - return NULL; - } - -// -------------------------------------------------------------------------------------------- - -TInt CLoadGenMainContainer::CurrentListBoxItemIndex() - { - if (iListBox) - { - return iListBox->CurrentItemIndex(); - } - else - return KErrNotFound; - } - -// -------------------------------------------------------------------------------------------- - -void CLoadGenMainContainer::SetListBoxTextArrayL(CDesCArray* aTextArray) - { - if (iListBox) - { - iListBox->Model()->SetItemTextArray(aTextArray); - iListBox->Model()->SetOwnershipType(ELbmOwnsItemArray); - iListBox->HandleItemAdditionL(); - iListBox->UpdateScrollBarsL(); - } - } - -// -------------------------------------------------------------------------------------------- - -const CArrayFix* CLoadGenMainContainer::ListBoxSelectionIndexes() - { - if (iListBox) - { - const CListBoxView::CSelectionIndexArray* indices = iListBox->SelectionIndexes(); - return static_cast*>(indices); - } - else - return NULL; - } - -// -------------------------------------------------------------------------------------------- - -TInt CLoadGenMainContainer::ListBoxSelectionIndexesCount() - { - if (iListBox) - { - return iListBox->SelectionIndexes()->Count(); - } - else - return KErrNotFound; - } - -// -------------------------------------------------------------------------------------------- - -void CLoadGenMainContainer::Draw(const TRect& aRect) const - { - CWindowGc& gc = SystemGc(); - gc.Clear(aRect); - } - -// -------------------------------------------------------------------------------------------- - -void CLoadGenMainContainer::HandleControlEventL(CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/) - { - } - -// -------------------------------------------------------------------------------------------- - -void CLoadGenMainContainer::SetDefaultTitlePaneTextL() - { - _LIT(KTitleText, "Load Gener."); - - CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane(); - CAknTitlePane* tp = static_cast( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); - tp->SetTextL( KTitleText ); - } - -// -------------------------------------------------------------------------------------------- - -TKeyResponse CLoadGenMainContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType) - { - if(aType != EEventKey) - return EKeyWasNotConsumed; - - if (iListBox && iListBox->Model()->NumberOfItems() > 0) - { - /* - if (aKeyEvent.iCode == EKeyBackspace || aKeyEvent.iCode == EKeyDelete) - { - iModel->StopSelectedOrHighlightedItemsL(); - return EKeyWasConsumed; - } - else - { - return iListBox->OfferKeyEventL(aKeyEvent, aType); - } - */ - TBool shiftKeyPressed = (aKeyEvent.iModifiers & EModifierShift) || - (aKeyEvent.iModifiers & EModifierLeftShift) || - (aKeyEvent.iModifiers & EModifierRightShift); - TBool controlKeyPressed = (aKeyEvent.iModifiers & EModifierCtrl) || - (aKeyEvent.iModifiers & EModifierRightCtrl); - - - // handle OK/Enter keys - if ((aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == EKeyEnter) && (shiftKeyPressed || controlKeyPressed)) - { - return iListBox->OfferKeyEventL(aKeyEvent, aType); //send to listbox if modifiers - } - - // handle OK/Enter keys - else if (aKeyEvent.iCode == EKeyOK || aKeyEvent.iCode == EKeyEnter) - { - iModel->ShowItemActionMenuL(); - } - - // handle delete key - else if (aKeyEvent.iCode == EKeyBackspace || aKeyEvent.iCode == EKeyDelete) - { - iModel->StopSelectedOrHighlightedItemsL(); - } - - else - return iListBox->OfferKeyEventL(aKeyEvent, aType); - } - - return EKeyWasNotConsumed; - } - -// -------------------------------------------------------------------------------------------- - -void CLoadGenMainContainer::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType) - { - switch (aEventType) - { - case EEventEnterKeyPressed: - case EEventItemDoubleClicked: - { - iModel->ShowItemActionMenuL(); - } - break; - default: - break; - } - } - -// -------------------------------------------------------------------------------------------- - -void CLoadGenMainContainer::HandleResourceChange(TInt aType) - { - if ( aType == KEikDynamicLayoutVariantSwitch ) - { - TRect mainPaneRect; - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); - SetRect(mainPaneRect); - - TSize outputRectSize; - AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, outputRectSize); - TRect outputRect(outputRectSize); - iListBox->SetRect(outputRect); - } - else - { - CCoeControl::HandleResourceChange(aType); - } - } - -// -------------------------------------------------------------------------------------------- -// -------------------------------------------------------------------------------------------- - -void CLoadGenCAknSingleGraphicStyleListBox::SizeChanged() - { - // call the base class function first - CAknSingleGraphicStyleListBox::SizeChanged(); - - // customize the list box - TRAP_IGNORE(SizeChangedL()); - } - -// -------------------------------------------------------------------------------------------- - -void CLoadGenCAknSingleGraphicStyleListBox::SizeChangedL() - { - const TInt KEmptySize = 2; - - // disable separator line - ItemDrawer()->ColumnData()->SetSeparatorLinePosition(ENoLine); - - // enable marquee - ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue); - - // set fonts - const CFont* font = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont); - ItemDrawer()->ColumnData()->SetColumnFontL(0, font); - ItemDrawer()->ColumnData()->SetColumnFontL(1, font); - ItemDrawer()->ColumnData()->SetColumnFontL(2, font); - ItemDrawer()->ColumnData()->SetColumnFontL(3, font); - - // set row height - TInt rowHeight = font->HeightInPixels()+5; - TSize itemCellSize = View()->ItemDrawer()->ItemCellSize(); - itemCellSize.iHeight = rowHeight; - SetItemHeightL(rowHeight); - View()->ItemDrawer()->SetItemCellSize(itemCellSize); - - // set icon sizes - TInt normalIconSize = rowHeight * 0.7; - TInt markingIconSize = rowHeight * 0.8; - ItemDrawer()->ColumnData()->SetSubCellIconSize(0, TSize(normalIconSize,normalIconSize)); - ItemDrawer()->ColumnData()->SetSubCellIconSize(2, TSize(markingIconSize,markingIconSize)); - ItemDrawer()->ColumnData()->SetSubCellIconSize(3, TSize(KEmptySize,KEmptySize)); - - // set column widths - ItemDrawer()->ColumnData()->SetColumnWidthPixelL(0, normalIconSize + 2*normalIconSize * 0.15); - ItemDrawer()->ColumnData()->SetColumnWidthPixelL(1, itemCellSize.iWidth-KEmptySize-markingIconSize); - ItemDrawer()->ColumnData()->SetColumnWidthPixelL(2, markingIconSize); - ItemDrawer()->ColumnData()->SetColumnWidthPixelL(3, KEmptySize); - - // set baseline for the text - ItemDrawer()->ColumnData()->SetColumnBaselinePosL(1, font->HeightInPixels()-font->BaselineOffsetInPixels()); - - // set margins - TMargins iconMargins; - iconMargins.iBottom = 0; - iconMargins.iLeft = normalIconSize * 0.15; - iconMargins.iRight = normalIconSize * 0.15; - 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); - -/* - const TInt KEmptySize = 2; - - // enable marquee - ItemDrawer()->ColumnData()->EnableMarqueeL(ETrue); - - // set fonts - const CFont* font = AknLayoutUtils::FontFromId(EAknLogicalFontPrimarySmallFont); - ItemDrawer()->ColumnData()->SetColumnFontL(0, font); - ItemDrawer()->ColumnData()->SetColumnFontL(1, font); - ItemDrawer()->ColumnData()->SetColumnFontL(2, font); - ItemDrawer()->ColumnData()->SetColumnFontL(3, font); - - // set row height - TInt rowHeight = font->HeightInPixels()+7; - TSize itemCellSize = View()->ItemDrawer()->ItemCellSize(); - itemCellSize.iHeight = rowHeight; - SetItemHeightL(rowHeight); - View()->ItemDrawer()->SetItemCellSize(itemCellSize); - - // set icon sizes - TInt normalIconSize = rowHeight * 0.6; - TInt markingIconSize = rowHeight * 0.8; - ItemDrawer()->ColumnData()->SetSubCellIconSize(0, TSize(normalIconSize,normalIconSize)); - ItemDrawer()->ColumnData()->SetSubCellIconSize(2, TSize(markingIconSize,markingIconSize)); - ItemDrawer()->ColumnData()->SetSubCellIconSize(3, TSize(KEmptySize,KEmptySize)); - - // set column widths - ItemDrawer()->ColumnData()->SetColumnWidthPixelL(0, normalIconSize); - ItemDrawer()->ColumnData()->SetColumnWidthPixelL(1, itemCellSize.iWidth-KEmptySize-markingIconSize); - ItemDrawer()->ColumnData()->SetColumnWidthPixelL(2, markingIconSize); - ItemDrawer()->ColumnData()->SetColumnWidthPixelL(3, KEmptySize); - - // set baseline for the text - ItemDrawer()->ColumnData()->SetColumnBaselinePosL(1, font->HeightInPixels()-font->BaselineOffsetInPixels()); - - // 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); -*/ - } - -// -------------------------------------------------------------------------------------------- - -// End of File