diff -r 3104fc151679 -r 9a48e301e94b uiservicetab/vimpstui/src/cvimpstuiblockview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiservicetab/vimpstui/src/cvimpstuiblockview.cpp Wed Sep 01 12:33:36 2010 +0100 @@ -0,0 +1,363 @@ +/* +* 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 CVIMPSTUiBlockView. + * +*/ + +// INCLUDE FILES + +#include "cvimpstuiblockview.h" +#include "cvimpstuiblockviewcontrol.h" +#include "cvimpstenginepresencesubservice.h" +#include "vimpstutilswaitnote.h" +#include "mvimpstengine.h" +#include "vimpstextentionuiuid.h" +#include "cvimpstuiextensionservice.h" +#include "vimpstui.hrh" +#include "cvimpstuistatuspanehandler.h" +#include "cvimpstcmdhandler.h" +// System includes +#include +// Pbk2 +#include +#include +#include +#include +#include +#include +#include +//resource +#include +#include +#include "uiservicetabtracer.h" + +using namespace Phonebook2; + +// ================= MEMBER FUNCTIONS ======================= + +// -------------------------------------------------------------------------- +// CVIMPSTUiBlockView::CVIMPSTUiBlockView +// -------------------------------------------------------------------------- +// +CVIMPSTUiBlockView::CVIMPSTUiBlockView( + MxSPViewMapper& aMapper, + MxSPContactManager& aContactManager, + TUint aBlockViewId, + CPbk2UIExtensionView& aView, + CVIMPSTUIExtensionService& aServiceData, + MVIMPSTEngine& aEngine , + MVIMPSTCmdHandler& aCommandHandler) : + CxSPBaseView( aMapper, aContactManager, aView ), + iBlockViewId( aBlockViewId ), + iEngine(aEngine), + iExtensionService( aServiceData ), + iCommandHandler( aCommandHandler ) + { + + } + +// -------------------------------------------------------------------------- +// CVIMPSTUiBlockView::ConstructL +// -------------------------------------------------------------------------- +// +void CVIMPSTUiBlockView::ConstructL() + { + TRACER_AUTO; + ViewBaseConstructL( KIMCONTACTSEXTNIMPLEMENTATIONUID, iBlockViewId ); + + iPresenceSubService = iEngine.GetPreseceSubService(); + if(iPresenceSubService) + { + iBlockedList = iPresenceSubService->GetBlockedList(); + } + + } + + +// -------------------------------------------------------------------------- +// CVIMPSTUiBlockView::NewL +// -------------------------------------------------------------------------- +// +CVIMPSTUiBlockView* CVIMPSTUiBlockView::NewL( MxSPViewMapper& aMapper, + MxSPContactManager& aContactManager, + TUint aBlockViewId, + CPbk2UIExtensionView& aView, + CVIMPSTUIExtensionService& aServiceData, + MVIMPSTEngine& aEngine , + MVIMPSTCmdHandler& aCommandHandler) + { + TRACER_AUTO; + CVIMPSTUiBlockView* self = new(ELeave) CVIMPSTUiBlockView( aMapper, + aContactManager, + aBlockViewId, + aView, + aServiceData, + aEngine, + aCommandHandler ); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + + + +// --------------------------------------------------------- +// CVIMPSTUiBlockView::~CVIMPSTUiBlockView() +// C++ Destructor +// --------------------------------------------------------- +// +CVIMPSTUiBlockView::~CVIMPSTUiBlockView() + { + delete iNaviDecorator; + } + +// --------------------------------------------------------- +// CVIMPSTUiBlockView::HandleCommandL( TInt aCommand ) +// This class handles all commands from menu +// --------------------------------------------------------- +// +void CVIMPSTUiBlockView::HandleCommandL( TInt aCommand ) + { + TRACER_AUTO; + switch ( aCommand ) + { + //Next two commands have same function + case EAknSoftkeyBack: + { + + // this might get called when the view is not active + // back key pressed, activate tabbed view. + // CPbk2ViewState is not utilized here, but here the + // focused contact info could be delivered to next view, if required later + CPbk2ViewState* state = NULL; + + TInt tabViewId; + TInt err = iMapper.GetNewView( KIMCONTACTSEXTNIMPLEMENTATIONUID, + iExtensionService.TabbedViewId(), + tabViewId ); + User::LeaveIfError( err ); + Pbk2AppUi()->Pbk2ViewExplorer()->ActivatePhonebook2ViewL( + TUid::Uid(tabViewId), + state ); + + break; + } + case ECmdUnBlock: + { + //show wait note + // load, format and show confirmation note + HBufC* unblockContact = iContainer->GetFocusedContactLC(); + if(unblockContact) + { + HBufC* prompt = StringLoader::LoadLC( R_QTN_CHAT_UNBLOCKING, *unblockContact ); + CVIMPSTUtilsWaitNote* note = CVIMPSTUtilsWaitNote::ShowWaitNoteLC( *prompt ); + iCommandHandler.HandleCommandL(ECmdUnBlockContact, this, unblockContact ); + CleanupStack::PopAndDestroy( 3,unblockContact );//note;prompt;unblockContact. + } + break; + } + default: + { + Pbk2AppUi()->HandleCommandL( aCommand ); + break; + } + + } + } + + +// --------------------------------------------------------- +// CVIMPSTUiSearchView::DynInitMenuPaneL() +// Initialises menu pane when needed +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CVIMPSTUiBlockView::DynInitMenuPaneL( TInt aResourceId, + CEikMenuPane* aMenuPane ) + { + TRACER_AUTO; + //using the existing menu resource as it contains unblock item + if( aResourceId == R_EXTENSION_MANAGER_MENU) + { + //add search view menu items + aMenuPane->AddMenuItemsL( R_SERVTAB_TABBED_VIEW_MENU ); + aMenuPane->SetItemDimmed(ECmdOpenConversation, ETrue); + aMenuPane->SetItemDimmed(ECmdContactAddAsFriend,ETrue); + aMenuPane->SetItemDimmed(KAiwCmdCall,ETrue); + aMenuPane->SetItemDimmed(ECmdCloseConversation,ETrue); + aMenuPane->SetItemDimmed(ECmdCreateNewOption,ETrue); + aMenuPane->SetItemDimmed(ECmdContactDetails,ETrue); + aMenuPane->SetItemDimmed(ECmdOpenFriendRequest,ETrue); + aMenuPane->SetItemDimmed(ECmdContactEdit,ETrue); + aMenuPane->SetItemDimmed(ECmdAIWAddToContact,ETrue); + aMenuPane->SetItemDimmed(ECmdAIWLinkToContact,ETrue); + aMenuPane->SetItemDimmed(ECmdBlock,ETrue); + aMenuPane->SetItemDimmed(ECmdContactDelete,ETrue); + aMenuPane->SetItemDimmed(ECmdMyAvatar,ETrue); + aMenuPane->SetItemDimmed(ECmdChangeStatus,ETrue); + if(0==iBlockedList->Count()) + { + aMenuPane->SetItemDimmed(ECmdUnBlock,ETrue); + } + } + } + +// --------------------------------------------------------- +// CVIMPSTUiBlockView::DoActivateViewL() +// Activates view +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CVIMPSTUiBlockView::DoActivateViewL( const TVwsViewId& aPrevViewId, + TUid /*aCustomMessageId*/, + const TDesC8& /*aCustomMessage*/ ) + { + TRACER_AUTO; + HBufC* titleText = StringLoader::LoadLC( R_QTN_SERVTAB_TITLE_BLOCKEDLIST ); + + //to set the icon ( context pane image) as in tabbed view + MPbk2ViewActivationTransaction* viewActivationTransaction = + Pbk2AppUi()->Pbk2ViewExplorer()->HandleViewActivationLC( + iView.Id(), + aPrevViewId, + titleText, + NULL, + EUpdateAll ); + + // Notifies startup monitor of view activation + if( Pbk2AppUi()->Pbk2StartupMonitor() ) + { + Pbk2AppUi()->Pbk2StartupMonitor()-> + NotifyViewActivationL( iView.Id() ); + } + + if (!iContainer) + { + iContainer = CVIMPSTUiBlockViewControl::NewL(*this,iView, iEngine, iBlockedList ); + CCoeEnv::Static()->AppUi()->AddToStackL( iView, iContainer ); + iContainer->SetMopParent( &iView ); + iContainer->SetRect( iView.ClientRect() ); + iContainer->ActivateL(); + iContainer->UpdateCbaL(); + } + + // Commit application-wide state changes + viewActivationTransaction->Commit(); + CleanupStack::PopAndDestroy(); //viewActivationTransaction + CleanupStack::PopAndDestroy( titleText ); + // Change the navigation pane from tabs to text label + UpdateNaviPaneTextL(); + //resetting the blocked list to empty.and show it in blocked view. + iBlockedList->ResetAndDestroy(); + iContainer->UpdateBlockedListL(); + //set the text as updating blocked list while fetching blocked list + iContainer->SetUpdatingTextsToListboxL(); + //fetch the fresh blocked list from server.. + FetchBlockedListFromServerL(); + } + +// --------------------------------------------------------- +// CVIMPSTUiBlockView::DoDeactivate() +// Deactivates the view +// (other items were commented in a header). +// --------------------------------------------------------- +// +void CVIMPSTUiBlockView::DoDeactivate() + { + if (iContainer) + { + CCoeEnv::Static()->AppUi()->RemoveFromStack(iContainer); + delete iContainer; + iContainer = NULL; + } + } + + +// --------------------------------------------------------- +// CVIMPSTUiBlockView::UpdateNaviPaneTextL() +// --------------------------------------------------------- +// +void CVIMPSTUiBlockView::UpdateNaviPaneTextL( ) + { + TRACER_AUTO; + // Change the navigation pane from tabs to text label + CEikStatusPane* sp = CEikonEnv::Static()->AppUiFactory()->StatusPane(); + CAknNavigationControlContainer* np = + static_cast( + sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) ); + delete iNaviDecorator; + iNaviDecorator = NULL; + //fix for disableing navigation search string text, makeing it null + iNaviDecorator = np->CreateNavigationLabelL( iEngine.ServiceName()); + + np->PushL( *iNaviDecorator ); + sp->DrawNow(); + } + +// -------------------------------------------------------------------------- +// CVIMPSTUiSearchView::HandleStatusPaneSizeChange +// -------------------------------------------------------------------------- +// +void CVIMPSTUiBlockView::HandleStatusPaneSizeChange() + { + // Resize the container to fill the client rectangle + if (iContainer) + { + iContainer->SetRect( iView.ClientRect() ); + } + } + +// -------------------------------------------------------------------------- +// CVIMPSTUiSearchView::FetchBlockedListFromServerL +// -------------------------------------------------------------------------- +// +void CVIMPSTUiBlockView::FetchBlockedListFromServerL() + { + iEngine.RegisterBlockedListObserver(this); + iCommandHandler.HandleCommandL(EFetchBlockedList, this, NULL ); + } + +// -------------------------------------------------------------------------- +// CVIMPSTUiSearchView::HandleBlockedListFetchCompleteL +// -------------------------------------------------------------------------- +// +void CVIMPSTUiBlockView::HandleBlockedListFetchCompleteL() + { + if(iContainer) + { + iContainer->UpdateBlockedListL(); + } + } + +// -------------------------------------------------------------------------- +// CVIMPSTUiSearchView::CommandFinishedL +// -------------------------------------------------------------------------- +// +void CVIMPSTUiBlockView::CommandFinishedL( const MVIMPSTCmd& /*aCommand */) + { + + } + +// -------------------------------------------------------------------------- +// CVIMPSTUiSearchView::HandleCommandEventL +// -------------------------------------------------------------------------- +// +void CVIMPSTUiBlockView::HandleCommandEventL( TVIMPSTEnums::TVIMPSTRegistrationState /*aState*/, + TInt /*aServiceError*/) + { + + } + +// End of File