diff -r 000000000000 -r 522cd55cc3d7 basiclocationinfodisplay/blid/ui/src/CBlidSavedWayptsContainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/basiclocationinfodisplay/blid/ui/src/CBlidSavedWayptsContainer.cpp Tue Feb 02 00:16:03 2010 +0200 @@ -0,0 +1,349 @@ +/* +* Copyright (c) 2005 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: Provides blid main view's container class methods. +* +*/ + + +// INCLUDE FILES +#include +#include +#include +#include +#include // CAknSingleLargeStyleListBox +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "CBlidSavedWayptsContainer.h" +#include "Blid.hrh" +#include "CBlidSavedWayptsLBModel.h" + +// CONSTANTS +#ifdef _DEBUG +_LIT( KPanicText, "CBlidSavedWayptsContainer" ); + +enum TPanicCode + { + KBlidNullPointer = 1 + }; +#endif +// Unnamed namespace for local definitions +namespace { +const TInt KViewListboxGranularity = 2; // list box granularity +} // namespace + + +// ================= MEMBER FUNCTIONS ======================= +// ---------------------------------------------------------------------------- +// CBlidSavedWayptsContainer::NewL +// ---------------------------------------------------------------------------- +// +CBlidSavedWayptsContainer* CBlidSavedWayptsContainer::NewL( + MKeyProcessor& aKeyProcessor, + MObjectProvider* aParent, + const TRect& aRect, + MBlidLocation* aLocation, + MBlidSettings* aSettings, + MBlidRouter* aRouter, + CBlidBaseView& aView) + { + CBlidSavedWayptsContainer* self = + new (ELeave) CBlidSavedWayptsContainer( aKeyProcessor, aView ); + CleanupStack::PushL(self); + self->SetMopParent( aParent ); + self->ConstructL( aRect, aLocation, aSettings,aRouter ); + CleanupStack::Pop( self ); // self + return self; + } + +// ---------------------------------------------------------------------------- +// CBlidSavedWayptsContainer::CBlidSavedWayptsContainer +// ---------------------------------------------------------------------------- +// +CBlidSavedWayptsContainer::CBlidSavedWayptsContainer( MKeyProcessor& aKeyProcessor, + CBlidBaseView& aView ) + :CBlidBaseContainer( aKeyProcessor, KBLID_HLP_WAYPOINTS ), iView(aView) + { + } + +// --------------------------------------------------------- +// CBlidSavedWayptsContainer::ConstructL +// Symbian 2nd phase constructor can leave. +// --------------------------------------------------------- +// +void CBlidSavedWayptsContainer::ConstructL( const TRect& aRect, + MBlidLocation* aLocation, + MBlidSettings* aSettings,MBlidRouter* aRouter ) + { + CreateWindowL(); + SetBlank(); + + iDecoratedTabGroup = CreateNaviPaneL( EFalse ); + ActivateTabL( *iDecoratedTabGroup, EBlidSavedWayptsView ); + + CreateListboxL(aLocation, aSettings,aRouter); + + MakeTitleL(R_BLID_TITLE_WAYPOINTS); + SetRect(aRect); + ActivateL(); + } + +// ---------------------------------------------------------------------------- +// CBlidSavedWayptsContainer::~CBlidSavedWayptsContainer +// ---------------------------------------------------------------------------- +// +CBlidSavedWayptsContainer::~CBlidSavedWayptsContainer() + { + delete iDecoratedTabGroup; + delete iListBox; + } + +// ---------------------------------------------------------------------------- +// CBlidSavedWayptsContainer::UpdateL +// ---------------------------------------------------------------------------- +// +void CBlidSavedWayptsContainer::UpdateL() + { + __ASSERT_DEBUG( iListBox, User::Panic( KPanicText, KBlidNullPointer ) ); + iListBox->DrawNow(); + } + +// ---------------------------------------------------------------------------- +// CBlidSavedWayptsContainer::OfferKeyEventL +// ---------------------------------------------------------------------------- +// +TKeyResponse CBlidSavedWayptsContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent, + TEventCode aType) + { + if ( aKeyEvent.iCode == EKeyOK ) + { + TBool shiftKeyPressed = (aKeyEvent.iModifiers & EModifierShift); + if(shiftKeyPressed) + { + iListBox->OfferKeyEventL( aKeyEvent, aType); + return EKeyWasConsumed; + } + CEikMenuBar* menubar = static_cast + (iAvkonAppUi)->View(TUid::Uid( EBlidSavedWayptsView ))->MenuBar(); + if ( menubar ) + { + menubar->SetMenuTitleResourceId(R_BLID_SAVEDWAYPTS_VIEW_OK_MENUBAR); + + menubar->StopDisplayingMenuBar(); + TRAPD(err,menubar->TryDisplayMenuBarL()); + User::LeaveIfError(err); + menubar->SetMenuTitleResourceId(R_BLID_SAVEDWAYPTS_MENUBAR); + } + + return EKeyWasConsumed; + } + else if( aKeyEvent.iCode == EKeyBackspace ) + { + static_cast + (iAvkonAppUi)->View(TUid::Uid( EBlidSavedWayptsView ))->HandleCommandL(EBlidCmdDeleteWaypt); + } + return CBlidBaseContainer::OfferKeyEventL( aKeyEvent, aType ); + } + +// --------------------------------------------------------- +// CBlidSavedWayptsContainer::SizeChanged() +// Called by framework when the view size is changed +// --------------------------------------------------------- +// +void CBlidSavedWayptsContainer::SizeChanged() + { + iListBox->SetRect( Rect() ); + } + +// --------------------------------------------------------- +// CBlidSavedWayptsContainer::CountComponentControls() const +// --------------------------------------------------------- +// +TInt CBlidSavedWayptsContainer::CountComponentControls() const + { + return 1; // return nbr of controls inside this container + } + +// --------------------------------------------------------- +// CBlidSavedWayptsContainer::ComponentControl(TInt aIndex) const +// --------------------------------------------------------- +// +CCoeControl* CBlidSavedWayptsContainer::ComponentControl(TInt /*aIndex*/) const + { + return iListBox; + } + +// --------------------------------------------------------- +// CBlidSavedWayptsContainer::CreateListboxL +// --------------------------------------------------------- +// +void CBlidSavedWayptsContainer::CreateListboxL( MBlidLocation* aLocation, + MBlidSettings* aSettings,MBlidRouter* aRouter ) + { + delete iListBox; + iListBox = NULL; + iListBox = new(ELeave) CAknSingleGraphicStyleListBox(); + iListBox->SetContainerWindowL(*this); + + #ifndef RD_SCALABLE_UI_V2 + iListBox->ConstructL( this, EAknGenericListBoxFlags + | EAknListBoxMarkableList); + #else + iListBox->ConstructL( this, EAknGenericListBoxFlags + | EAknListBoxStylusMarkableList); + #endif + + MDesCArray* model = CBlidSavedWayptsLBModel::NewLC( aLocation, aSettings,aRouter ); + // listbox takes the ownership + iListBox->Model()->SetItemTextArray( model ); + iListBox->Model()->SetOwnershipType( ELbmOwnsItemArray ); + CleanupStack::Pop(); // model + + UpdateIconsL(); + + // Make scroll arrows + iListBox->CreateScrollBarFrameL( ETrue ); + iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( + CEikScrollBarFrame::EAuto,CEikScrollBarFrame::EAuto ); + MakeEmptyTextListBoxL(R_BLID_NO_WAYPOINTS); + + iListBox->ActivateL(); + } + +// ----------------------------------------------------------------------------- +// CBlidSavedWayptsContainer::UpdateIconsL +// ----------------------------------------------------------------------------- +// +void CBlidSavedWayptsContainer::UpdateIconsL() + { + TAknsItemID skinId = KAknsIIDNone; + + CAknIconArray* icons = new( ELeave ) CAknIconArray( + KViewListboxGranularity ); + CleanupStack::PushL( icons ); + + TFileName* aknIconFile = new (ELeave) TFileName; + CleanupStack::PushL(aknIconFile); + *aknIconFile = AknIconUtils::AvkonIconFileName(); + + AddIconL( icons, skinId, *aknIconFile, EMbmAvkonQgn_indi_marked_add , + EMbmAvkonQgn_indi_marked_add_mask ); + AddIconL( icons, skinId, *aknIconFile, EMbmAvkonQgn_prop_empty , + EMbmAvkonQgn_prop_empty_mask ); + + + //get old icons and delete those + CAknIconArray* Oldicons = static_cast( + iListBox->ItemDrawer()->ColumnData()->IconArray() ); + delete Oldicons; + + //set new icons to array + iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons ); + CleanupStack::PopAndDestroy(aknIconFile); + CleanupStack::Pop(icons); + } + +// ----------------------------------------------------------------------------- +// CLocMainContainer::SelectedRow +// ----------------------------------------------------------------------------- +// +TInt CBlidSavedWayptsContainer::SelectedRow() const + { + return iListBox->CurrentItemIndex(); + } + +// ----------------------------------------------------------------------------- +// CLocMainContainer::SetSelectedRow +// ----------------------------------------------------------------------------- +// +void CBlidSavedWayptsContainer::SetSelectedRow(TInt aIndex) const + { + iListBox->SetCurrentItemIndex(aIndex); + } + +// ----------------------------------------------------------------------------- +// CLocMainContainer::HandleResourceChange +// ----------------------------------------------------------------------------- +// +void CBlidSavedWayptsContainer::HandleResourceChange(TInt aType) + { + CBlidBaseContainer::HandleResourceChange( aType ); + if( aType == KAknsMessageSkinChange ) + { + TRAPD( error, UpdateIconsL() ); + if ( error != KErrNone ) + { + iCoeEnv->HandleError( error ); + } + iListBox->DrawDeferred(); + } + else if ( aType == KEikDynamicLayoutVariantSwitch ) + { + iView.Update(this); + } + } + +// ---------------------------------------------------------------------------- +// CBlidSavedWayptsContainer::FocuChanged() +// ---------------------------------------------------------------------------- +// +void CBlidSavedWayptsContainer::FocusChanged(TDrawNow aDrawNow) + { + if (iListBox) + { + iListBox->SetFocus(IsFocused(), aDrawNow); + } + } + +// ----------------------------------------------------------------------------- +// CLocMainContainer::HandleMarkCommandL +// ----------------------------------------------------------------------------- +// +void CBlidSavedWayptsContainer::HandleMarkCommandL(TInt aCommand) + { + AknSelectionService::HandleMarkableListProcessCommandL(aCommand,iListBox); + } + +// ---------------------------------------------------- +// CBlidSavedWayptsContainer::MakeEmptyTextListBoxL +// ---------------------------------------------------- +// +void CBlidSavedWayptsContainer::MakeEmptyTextListBoxL( TInt aResourceText ) + { + HBufC* textFromResourceFile; + textFromResourceFile = iCoeEnv->AllocReadResourceLC( aResourceText ); + iListBox->View()->SetListEmptyTextL( *textFromResourceFile ); + CleanupStack::PopAndDestroy(); // textFromResourceFile. + } + +#ifdef RD_SCALABLE_UI_V2 +// --------------------------------------------------------------------------- +// CBlidSavedWayptsContainer::SetListBoxObserver +// --------------------------------------------------------------------------- +// +void CBlidSavedWayptsContainer::SetListBoxObserver( MEikListBoxObserver* aObserver ) + { + iListBox->SetListBoxObserver( aObserver ); + } +#endif // RD_SCALABLE_UI_V2 +// End of File