--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/uiservicetab/vimpstui/src/cvimpstuiblockview.cpp Tue Feb 02 10:12:18 2010 +0200
@@ -0,0 +1,357 @@
+/*
+* 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 <StringLoader.h>
+// Pbk2
+#include <MPbk2AppUi.h>
+#include <CPbk2UIExtensionView.h>
+#include <MPbk2ViewActivationTransaction.h>
+#include <MPbk2ViewExplorer.h>
+#include <MPbk2StartupMonitor.h>
+#include <eikmenup.h>
+#include <aiwcommon.hrh>
+//resource
+#include <vimpstuires.rsg>
+#include <ExtensionManagerRes.rsg>
+
+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()
+ {
+ 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)
+ {
+ 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 )
+ {
+
+ 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 )
+ {
+ //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(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*/ )
+ {
+
+ 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( )
+ {
+ // Change the navigation pane from tabs to text label
+ CEikStatusPane* sp = CEikonEnv::Static()->AppUiFactory()->StatusPane();
+ CAknNavigationControlContainer* np =
+ static_cast<CAknNavigationControlContainer*>(
+ 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