diff -r 000000000000 -r b497e44ab2fc omaprovisioning/provisioning/ProvisioningCx/Src/CWPCxView.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/ProvisioningCx/Src/CWPCxView.cpp Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,291 @@ +/* +* Copyright (c) 2002 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: Dumper application +* +*/ + + +// INCLUDE FILES +#include "CWPCxView.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "CWPEngine.h" +#include "CWPCxContainer.h" +#include "CWPCxDeleter.h" +#include "ProvisioningCx.hrh" +#include + +// CONSTANTS + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------- +// CWPCxView::ConstructL +// Symbian second phase constructor +// --------------------------------------------------------- +// +void CWPCxView::ConstructL() + { + BaseConstructL( R_PROVISIONINGCX_VIEW1 ); + FeatureManager::InitializeLibL(); + iEngine = CWPEngine::NewL(); + iEngine->RegisterContextObserverL( this ); + } + +// --------------------------------------------------------- +// CWPCxView::~CWPCxView +// --------------------------------------------------------- +// +CWPCxView::~CWPCxView() + { + if ( iContainer ) + { + AppUi()->RemoveFromStack( iContainer ); + } + + delete iContainer; + delete iEngine; + FeatureManager::UnInitializeLib(); + } + +// --------------------------------------------------------- +// TUid CWPCxView::Id +// --------------------------------------------------------- +// +TUid CWPCxView::Id() const + { + return KProvisioningCxViewId; + } + +// --------------------------------------------------------- +// CWPCxView::HandleCommandL +// --------------------------------------------------------- +// +void CWPCxView::HandleCommandL(TInt aCommand) + { + switch ( aCommand ) + { + case EProvisioningCxCmdDeleteContext: + { + DeleteContextL(); + break; + } + case EAknSoftkeyBack: + { + AppUi()->HandleCommandL(EEikCmdExit); + break; + } + case EProvisioningCxCmdSelect: + { + LaunchPopupL(); + break; + } + default: + { + AppUi()->HandleCommandL(aCommand); + break; + } + } + } + +// --------------------------------------------------------- +// CWPCxView::HandleClientRectChange +// --------------------------------------------------------- +// +void CWPCxView::HandleClientRectChange() + { + if ( iContainer ) + { + iContainer->SetRect( ClientRect() ); + } + } + +// --------------------------------------------------------- +// CWPCxView::DoActivateL +// --------------------------------------------------------- +// +void CWPCxView::DoActivateL( const TVwsViewId& /*aPrevViewId*/, + TUid /*aCustomMessageId*/, + const TDesC8& /*aCustomMessage*/) + { + iContainer = new (ELeave) CWPCxContainer( *iEngine, *this ); + iContainer->ConstructL( ClientRect() ); + iContainer->SetMopParent( this ); + AppUi()->AddToStackL( *this, iContainer ); + #ifdef __SERIES60_32__ + MenuBar()->SetContextMenuTitleResourceId( R_PROVISIONINGCX_CONTEXT_MENUBAR ); + + CEikButtonGroupContainer* bgc(NULL); + CCoeControl* MSK(NULL); + CEikCba* cba(NULL); + MopGetObject (bgc); + TInt count(iContainer->ContextCount()); + + + if (bgc) + { + cba = ( static_cast( bgc->ButtonGroup() ) ); // downcast from MEikButtonGroup + if (cba) + { + MSK = cba->Control(3); // MSK's position is 3 + } + + MSK->MakeVisible((count > 0)); + } + + #endif + } + +// --------------------------------------------------------- +// CWPCxView::DoDeactivate +// --------------------------------------------------------- +// +void CWPCxView::DoDeactivate() + { + if ( iContainer ) + { + AppUi()->RemoveFromStack( iContainer ); + } + + delete iContainer; + iContainer = NULL; + } + +// --------------------------------------------------------- +// CWPCxView::ContextChangeL +// --------------------------------------------------------- +// +void CWPCxView::ContextChangeL( RDbNotifier::TEvent /*aEvent*/ ) + { + iContainer->UpdateContextsL(); + + #ifdef __SERIES60_32__ + CEikButtonGroupContainer* bgc(NULL); + CCoeControl* MSK(NULL); + CEikCba* cba(NULL); + MopGetObject (bgc); + TInt count(iContainer->ContextCount()); + + + if (bgc) + { + cba = ( static_cast( bgc->ButtonGroup() ) ); // downcast from MEikButtonGroup + if (cba) + { + MSK = cba->Control(3); // MSK's position is 3 + } + + MSK->MakeVisible((count > 0)); + } + + #endif + } + +// ------------------------------------------------------------------------------ +// CWPCxView::::DynInitMenuPaneL +// ------------------------------------------------------------------------------ +// +void CWPCxView::DynInitMenuPaneL( + TInt aResourceId,CEikMenuPane* aMenuPane) + { + switch( aResourceId ) + { + case R_PROVISIONINGCX_APP_MENU: + { + if( !FeatureManager::FeatureSupported(KFeatureIdHelp) ) + { + aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue ); + } + + if( iContainer->ContextCount() == 0 ) + { + aMenuPane->SetItemDimmed( EProvisioningCxCmdDeleteContext, ETrue ); + } + + break; + } + + case R_PROVISIONINGCX_CONTEXT_MENU: + { + if( iContainer->ContextCount() == 0 ) + { + aMenuPane->SetItemDimmed( EProvisioningCxCmdDeleteContext, ETrue ); + } + break; + } + } + } + + +// ------------------------------------------------------------------------------ +// CWPCxView::::DeleteContextL +// ------------------------------------------------------------------------------ +// +void CWPCxView::DeleteContextL() + { + if(iContainer->ContextCount() == 0 ) + { + return; + } + TPtrC name( iContainer->CurrentContextName() ); + HBufC* query = StringLoader::LoadLC( R_QTN_OP_DELETE_CONTEXT, name ); + + CAknQueryDialog* dlg = CAknQueryDialog::NewL(); + if ( dlg->ExecuteLD( R_PROVISIONCX_QUERY_DELETE, *query ) ) + { + TUint32 cx( iContainer->CurrentContext() ); + CWPCxDeleter* deleter = new(ELeave) CWPCxDeleter( *iEngine, cx ); + TInt numDeleted( 0 ); + TInt err( deleter->ExecuteLD( numDeleted ) ); + if( err == KErrNone ) + { + iEngine->DeleteContextL( cx ); + } + else if( err != KErrCancel ) + { + // Some problem in saving or user cancelled. + HBufC* text = StringLoader::LoadLC( R_TEXT_QTN_OP_DEL_CONT_NO ); + CAknErrorNote* note = new(ELeave)CAknErrorNote( ETrue ); + note->ExecuteLD(*text); + CleanupStack::PopAndDestroy(); // text + } + } + CleanupStack::PopAndDestroy(); // query + } + + +// ---------------------------------------------------- +// CWPCxView::LaunchPopupL +// ---------------------------------------------------- +// +void CWPCxView::LaunchPopupL() + { + CEikMenuBar* menu = MenuBar(); + + menu->SetMenuTitleResourceId( R_PROVISIONINGCX_CONTEXT_MENUBAR ); + TRAPD( err, menu->TryDisplayMenuBarL() ); + menu->SetMenuTitleResourceId( R_PROVISIONINGCX_MENUBAR_VIEW1 ); + + User::LeaveIfError( err ); + + } + +// End of File