diff -r 2b7283837edb -r 3104fc151679 uiservicetab/vimpstui/src/cvimpstuiblockviewcontrol.cpp --- a/uiservicetab/vimpstui/src/cvimpstuiblockviewcontrol.cpp Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,441 +0,0 @@ -/* -* Copyright (c) 2008 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 : Implementation for cvimpstuiblockviewcontrol. - * -*/ - -// INCLUDE FILES -#include "cvimpstuiblockviewcontrol.h" -#include "cvimpstuiblockview.h" -#include "vimpstutils.h" -#include "tvimpstconsts.h" -#include "vimpstui.hrh" - -// system include -#include -#include -#include - -#include -#include "uiservicetabtracer.h" - - -// ================= MEMBER FUNCTIONS ======================= - - -// -------------------------------------------------------------------------- -// CVIMPSTUiBlockViewControl::CVIMPSTUiBlockViewControl -// -------------------------------------------------------------------------- -// -CVIMPSTUiBlockViewControl::CVIMPSTUiBlockViewControl( CVIMPSTUiBlockView& aBlockedView,MPbk2KeyEventHandler& aKeyEventHandler, - MVIMPSTEngine& aEngine, - RPointerArray* aBlockedList) - :iBlockedView(aBlockedView), - iKeyEventHandler(aKeyEventHandler), - iEngine( aEngine ), - iBlockedList(aBlockedList) - { - - } - - -// -------------------------------------------------------------------------- -// CVIMPSTUiBlockViewControl::ConstructL -// -------------------------------------------------------------------------- -// -void CVIMPSTUiBlockViewControl::ConstructL() - { - TRACER_AUTO; - CreateWindowL(); - iItemArray = new ( ELeave ) CDesCArrayFlat( KArrayGranularity ); - // Create listbox - iListBox = new ( ELeave ) CAknSingleGraphicStyleListBox; - iListBox->ConstructL( this, EAknListBoxSelectionList ); - - iListBox->SetContainerWindowL(*this); - iListBox->CreateScrollBarFrameL(ETrue); - iListBox->ScrollBarFrame()->SetScrollBarVisibilityL - (CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); - - // set marquee on - iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue ); - iListBox->Model()->SetItemTextArray( iItemArray ); - iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); - - iListBox->SetListBoxObserver( this ); - - iCurrentItemIndex = 0; - UpdateBlockedListL(); - ActivateL(); - - } - - -// -------------------------------------------------------------------------- -// CVIMPSTUiBlockViewControl::NewL -// -------------------------------------------------------------------------- -// -CVIMPSTUiBlockViewControl* CVIMPSTUiBlockViewControl::NewL( CVIMPSTUiBlockView& aBlockedView, - MPbk2KeyEventHandler& aKeyEventHandler, - MVIMPSTEngine& aEngine, - RPointerArray* aBlockedList ) - { - CVIMPSTUiBlockViewControl* self = NewLC(aBlockedView,aKeyEventHandler,aEngine, aBlockedList ); - CleanupStack::Pop(self); - return self; - } - - -// -------------------------------------------------------------------------- -// CVIMPSTUiBlockViewControl::NewLC -// -------------------------------------------------------------------------- -// -CVIMPSTUiBlockViewControl* CVIMPSTUiBlockViewControl::NewLC( CVIMPSTUiBlockView& aBlockedView, - MPbk2KeyEventHandler& aKeyEventHandler, - MVIMPSTEngine& aEngine, - RPointerArray* aBlockedList ) - { - CVIMPSTUiBlockViewControl* self = - new (ELeave) CVIMPSTUiBlockViewControl(aBlockedView,aKeyEventHandler, aEngine, aBlockedList ); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -// ----------------------------------------------------------------------------- -// CVIMPSTUiBlockViewControl::Destructor -// ----------------------------------------------------------------------------- -// -CVIMPSTUiBlockViewControl::~CVIMPSTUiBlockViewControl() - { - - delete iItemArray; - iItemArray = NULL; - delete iListBox; - iListBox = NULL; - } - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::HandleControlEventL -// --------------------------------------------------------- -// -void CVIMPSTUiBlockViewControl::HandleControlEventL(CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/) - { - } - - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::HandleListBoxEventL -// Handles list box events -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiBlockViewControl::HandleListBoxEventL( CEikListBox* /*aListBox*/, - TListBoxEvent aEventType ) - { - iCurrentItemIndex = iListBox->CurrentItemIndex(); - if(aEventType == EEventEnterKeyPressed) - { - iBlockedView.HandleCommandL(ECmdUnBlock); - } - } - - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::SizeChanged() -// Called by framework -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiBlockViewControl::SizeChanged() - { - if ( iListBox ) - { - iListBox->SetRect(Rect()); - } - } - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::CountComponentControls() -// Returns number of controls -// (other items were commented in a header). -// --------------------------------------------------------- -// -TInt CVIMPSTUiBlockViewControl::CountComponentControls() const - { - //Only one compound control so returning 1 - return 1; - } - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::ComponentControl( TInt aIndex ) -// Returns control for given index -// (other items were commented in a header). -// --------------------------------------------------------- -// -CCoeControl* CVIMPSTUiBlockViewControl::ComponentControl( TInt aIndex ) const - { - if( aIndex == 0 ) - { - return iListBox; - } - else - { - return NULL; - } - } - - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::UpdateBlockedListL() -// --------------------------------------------------------- -// -void CVIMPSTUiBlockViewControl::UpdateBlockedListL() - { - TRACER_AUTO; - iItemArray->Reset(); - - TInt granularity( iItemArray->Count() ); - ++granularity; - - CDesCArray* tempArray = new ( ELeave ) CDesCArrayFlat( granularity ); - CleanupStack::PushL( tempArray ); - - iListBox->Model()->SetItemTextArray( tempArray ); - iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); - iListBox->HandleItemAdditionL(); - for ( TInt i =0; i < iBlockedList->Count() ; ++ i) - { - TInt sizeOfItemText; - // Calculating the size of the text that will be entered into listbox. - // 3 * KTab().Length() calculates the length of the tabs that is - // appended to the actual text. - sizeOfItemText = (*iBlockedList)[i]->Length() + 3 * KTab().Length(); - HBufC* itemText = HBufC::NewLC( sizeOfItemText ); // changing stuff.. - TPtr itemTextPtr( itemText->Des() ); - itemTextPtr.Append( KTab ); - itemTextPtr.Append( (*iBlockedList)[i]->Des()); - itemTextPtr.Append( KTab ); - itemTextPtr.Append( KTab ); - - iItemArray->AppendL( itemTextPtr ); - CleanupStack::PopAndDestroy( itemText ); - } - CleanupStack::PopAndDestroy(tempArray ); // tempArray - - iItemArray->Sort(); - iListBox->Model()->SetItemTextArray( iItemArray ); - iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray ); - - iListBox->HandleItemAdditionL(); - - if(0==iBlockedList->Count()) - { - SetEmptyTextsToListboxL(); - } - - if ( iItemArray->MdcaCount() > 0 ) - { - iListBox->SetCurrentItemIndexAndDraw( 0 ); - } - iListBox->UpdateScrollBarsL(); - SetCurrentIndex(iCurrentItemIndex); - UpdateCbaL(); - } - - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::ListBox() -// (other items were commented in a header). -// --------------------------------------------------------- -// -CEikListBox* CVIMPSTUiBlockViewControl::ListBox() const - { - return iListBox; - } - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::GetFocusedItemText -// (other items were commented in a header). -// --------------------------------------------------------- -// -HBufC* CVIMPSTUiBlockViewControl::GetFocusedContactLC() const - { - TRACER_AUTO; - HBufC* retText = NULL; - TInt curIndex = iListBox->CurrentItemIndex(); - if(KErrNotFound != curIndex) - { - TPtrC ptr= iItemArray->MdcaPoint(curIndex); - ptr.Set(ptr.Mid(1)); // set pointer from next char :since first char is KTab - TInt pos=ptr.FindC(KTab); - if( pos !=KErrNotFound && (pos != ptr.Length()-1)) - { - ptr.Set(ptr.Mid( 0, pos)); - retText = ptr.AllocLC(); - } - } - return retText; - } - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::GetCurrentIndex -// (other items were commented in a header). -// --------------------------------------------------------- -// -TInt CVIMPSTUiBlockViewControl::GetCurrentIndex() const - { - return iCurrentItemIndex ; - } - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::GetCurrentIndex -// (other items were commented in a header). -// --------------------------------------------------------- -// -void CVIMPSTUiBlockViewControl::SetCurrentIndex(TInt aIndex) - { - TRACER_AUTO; - if(aIndex>0) - { - TInt blockedCount = iListBox->Model()->NumberOfItems(); - if(blockedCount > 0) - { - TInt itemIndex = aIndex % blockedCount; - iListBox->SetCurrentItemIndex(itemIndex); - } - } - } - - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::UpdateCbaL() -// Updates Softkeys according to current focus. -// --------------------------------------------------------- -// -void CVIMPSTUiBlockViewControl::UpdateCbaL() - { - TRACER_AUTO; - TInt cbaRes = R_SERVTAB_SOFTKEYS_EMPTY_EMPTY__BACK; - if ( !iCba ) - { - iCba = CEikButtonGroupContainer::Current(); - } - - if( iCba ) - { - iCba->SetCommandSetL( cbaRes ); - iCba->DrawNow(); - } - } - -// --------------------------------------------------------- -// CVIMPSTUiBlockViewControl::OfferKeyEventL() -// Handles user key inputs -// (other items were commented in a header). -// --------------------------------------------------------- -// -TKeyResponse CVIMPSTUiBlockViewControl::OfferKeyEventL( const TKeyEvent& aKeyEvent, - TEventCode aType ) - { - TRACER_AUTO; - if ( !aKeyEvent.iCode ) - { - //The character code generated - //for an EEventKey, or 0 for a down or up event. - //For down or up key return key consumed.. handle only the events - - if((EEventKeyDown == aType) && (EStdKeyDevice3 == aKeyEvent.iScanCode)) - { - //for setting the command to be executed for the "Selection key" - //in case of selection key, container's OfferKeyEventL() is called only for EEventKeyDown and EEventKeyUp - //and not for EEventKey - UpdateCbaL(); - } - return EKeyWasConsumed; - } - TKeyResponse result = EKeyWasNotConsumed; - if (iListBox) - { - iCurrentItemIndex = iListBox->CurrentItemIndex(); - } - // Offer key event first to the key event handler - if ( (&iKeyEventHandler ) && iKeyEventHandler.Pbk2ProcessKeyEventL - ( aKeyEvent, aType ) ) - { - result = EKeyWasConsumed; - } - switch(aKeyEvent.iCode ) - { - /* case EKeyEnter: - { - iBlockedView.HandleCommandL(ECmdUnBlock); - result = EKeyWasConsumed; - break; - } */ - default: - { - break; - } - } - if( result == EKeyWasConsumed ) - { - // user might has choosen back/end key/application key etc - // application might switch to background - // return from here - return result; - } - // Not consumed by the key handler, offer to the control next - if ( result == EKeyWasNotConsumed ) - { - if ( iListBox ) - { - result = iListBox->OfferKeyEventL(aKeyEvent, aType); - } - } - UpdateCbaL(); - return result; - - } - -// --------------------------------------------------------------------------- -// CVIMPSTUiBlockViewControl::SetEmptyTextsToListboxL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CVIMPSTUiBlockViewControl::SetEmptyTextsToListboxL() - { - TRACER_AUTO; - HBufC* emptyFinal = VIMPSTUtils::LoadResourceL(R_SERVTAB_BLOCKLIST_BKGD); - CleanupStack::PushL(emptyFinal); - iListBox->View()->SetListEmptyTextL( *emptyFinal ); - CleanupStack::PopAndDestroy(emptyFinal); - } - -// --------------------------------------------------------------------------- -// CVIMPSTUiBlockViewControl::SetUpdatingTextsToListboxL() -// See header for details. -// --------------------------------------------------------------------------- -// -void CVIMPSTUiBlockViewControl::SetUpdatingTextsToListboxL() - { - TRACER_AUTO; - HBufC* updating = VIMPSTUtils::LoadResourceL(R_SERVTAB_BLOCKLIST_BKGDTO); - CleanupStack::PushL(updating); - iListBox->View()->SetListEmptyTextL( *updating ); - CleanupStack::PopAndDestroy(updating); - } - - -// End of File