diff -r 000000000000 -r f72a12da539e widgetmanager/src/wmmaincontainerview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/widgetmanager/src/wmmaincontainerview.cpp Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,436 @@ +/* +* Copyright (c) 2009 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 of the main container view for WidgetManager application. +* +*/ + +// INCLUDES +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wmplugin.h" +#include "widgetmanager.hrh" +#include "wmmaincontainerview.h" +#include "wmresourceloader.h" +#include "wmmaincontainer.h" +#include + + +// --------------------------------------------------------- +// CWmMainContainerView::CWmMainContainerView() +// --------------------------------------------------------- +// +CWmMainContainerView::CWmMainContainerView( + CWmPlugin& aWmPlugin ): + iWmPlugin( aWmPlugin ) + { + iWmMainContainer = NULL; + } + +// --------------------------------------------------------- +// CWmMainContainerView::~CWmMainContainerView() +// --------------------------------------------------------- +// +CWmMainContainerView::~CWmMainContainerView() + { + if ( iWmMainContainer != NULL ) + { + AppUi()->RemoveFromViewStack( *this, iWmMainContainer ); + delete iWmMainContainer; + iWmMainContainer = NULL; + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::NewL +// --------------------------------------------------------- +// +CWmMainContainerView* CWmMainContainerView::NewL( + CWmPlugin& aWmPlugin ) + { + CWmMainContainerView* self = CWmMainContainerView::NewLC( + aWmPlugin ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------- +// CWmMainContainerView::NewLC +// --------------------------------------------------------- +// +CWmMainContainerView* CWmMainContainerView::NewLC( + CWmPlugin& aWmPlugin ) + { + CWmMainContainerView* self = + new ( ELeave ) CWmMainContainerView( aWmPlugin ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------- +// CWmMainContainerView::ConstructL +// --------------------------------------------------------- +// +void CWmMainContainerView::ConstructL() + { + BaseConstructL( R_WM_MAIN_CONTAINER_VIEW ); + } + +// --------------------------------------------------------- +// CWmMainContainerView::Id +// --------------------------------------------------------- +// +TUid CWmMainContainerView::Id() const + { + return TUid::Uid( EWmMainContainerViewId ); + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleCommandL +// --------------------------------------------------------- +// +void CWmMainContainerView::HandleCommandL( TInt aCommand ) + { + if ( !iWmMainContainer->ClosingDown() ) + { + switch ( aCommand ) + { + case EWmMainContainerViewOpenPortalMenuItemCommand: + HandleOpenMenuItemSelectedL(); + break; + case EWmMainContainerViewAddMenuItemCommand: + HandleAddMenuItemSelectedL(); + break; + case EWmMainContainerViewLaunchMenuItemCommand: + HandleLaunchMenuItemSelectedL(); + break; + case EWmMainContainerViewSearchMenuItemCommand: // flow through + case EAknSoftkeySearch: + HandleSearchMenuItemSelectedL(); + break; + case EWmMainContainerViewSortAlphaMenuItemCommand: + HandleSortAlphaMenuItemSelectedL(); + break; + case EWmMainContainerViewUninstallMenuItemCommand: + HandleUninstallMenuItemSelectedL(); + break; + case EWmMainContainerViewHelpMenuItemCommand: + HandleHelpMenuItemSelectedL(); + break; + case EWmMainContainerViewBackMenuItemCommand: // flow through + case EAknSoftkeyBack: + iWmPlugin.Deactivate(); + break; + case EWmMainContainerViewWiddetDetailsMenuItemCommand: + HandleDetailsMenuItemSelectedL(); + break; + case EAknSoftkeySelect: + if ( iWmMainContainer ) + iWmMainContainer->SelectL(); + break; + case EAknSoftkeyCancel: // flow through + case EEikCmdCanceled: + { + HandleDeactivateFindPaneL(); + break; + } + default: + break; + } + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::DoActivateL +// --------------------------------------------------------- +// +void CWmMainContainerView::DoActivateL( + const TVwsViewId& aPrevViewId, + TUid /*aCustomMessageId*/, + const TDesC8& /*aCustomMessage*/ ) + { + if ( iWmMainContainer == NULL ) + { + iWmMainContainer = CreateContainerL(); + iWmMainContainer->SetClosingDown( EFalse ); + iWmMainContainer->SetMopParent( this ); + AppUi()->AddToStackL( *this, iWmMainContainer ); + } + + SetupStatusPaneL(); + + iWmMainContainer->SetExitStatus( KErrNone ); + iWmPlugin.MainViewActivated( aPrevViewId, iWmMainContainer ); + StatusPane()->SwitchLayoutL( + R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); + StatusPane()->ApplyCurrentSettingsL(); + StatusPane()->DrawNow(); + CEikButtonGroupContainer* bgc( Cba() ); + + CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() ); + if ( cba ) + { + + bgc->SetBoundingRect( TRect() ); + cba->DrawNow(); + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::DoDeactivate +// --------------------------------------------------------- +// +void CWmMainContainerView::DoDeactivate() + { + TInt exitStatus = KErrNone; + if ( iWmMainContainer != NULL ) + { + exitStatus = iWmMainContainer->ExitStatus(); + AppUi()->RemoveFromViewStack( *this, iWmMainContainer ); + delete iWmMainContainer; + iWmMainContainer = NULL; + } + + // display error, if such exists + if ( exitStatus == KHsErrorViewFull || + exitStatus == KHsErrorDoesNotFit ) + { + TRAP_IGNORE( iWmPlugin.ResourceLoader().InfoPopupL( + R_QTN_HS_ADD_WIDGET_NO_SPACE_NOTE, KNullDesC ) ); + } + else if ( exitStatus == KHsErrorMaxInstanceCountExceeded ) + { + TRAP_IGNORE( iWmPlugin.ResourceLoader().InfoPopupL( + R_QTN_HS_ADD_WIDGET_MAX_COUNT_NOTE, KNullDesC ) ); + } + else if ( exitStatus != KErrNone ) + { + iWmPlugin.ResourceLoader().ErrorPopup( exitStatus ); + } + + iWmPlugin.MainViewDeactivated(); + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleStatusPaneSizeChange +// --------------------------------------------------------- +// +void CWmMainContainerView::HandleStatusPaneSizeChange() + { + CAknView::HandleStatusPaneSizeChange(); + + // this may fail, but we're not able to propagate exceptions here + TVwsViewId view; + AppUi()->GetActiveViewId( view ); + if ( view.iViewUid == Id() ) + { + if ( iWmMainContainer ) + { + iWmMainContainer->SetRect( AppUi()->ClientRect() ); + } + } + + } + +// --------------------------------------------------------- +// CWmMainContainerView::SetupStatusPaneL +// --------------------------------------------------------- +// +void CWmMainContainerView::SetupStatusPaneL() + { + // setup the title pane + TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle ); + CEikStatusPaneBase::TPaneCapabilities subPaneTitle = + StatusPane()->PaneCapabilities( titlePaneUid ); + if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() ) + { + CAknTitlePane* title = static_cast< CAknTitlePane* >( + StatusPane()->ControlL( titlePaneUid ) ); + if ( title ) + { + TResourceReader reader; + iEikonEnv->CreateResourceReaderLC( + reader, R_WM_MAIN_CONTAINER_TITLE_RESOURCE ); + title->SetFromResourceL( reader ); + title->DrawDeferred(); + CleanupStack::PopAndDestroy(); // reader internal state + } + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::CreateContainerL +// --------------------------------------------------------- +// +CWmMainContainer* CWmMainContainerView::CreateContainerL() + { + return CWmMainContainer::NewL( ClientRect(), NULL, this, iWmPlugin ); + } + +// --------------------------------------------------------- +// CWmMainContainerView::DynInitMenuPaneL +// --------------------------------------------------------- +// +void CWmMainContainerView::DynInitMenuPaneL( + TInt aResourceId, CEikMenuPane* aMenuPane ) + { + if ( aResourceId == R_WM_MAIN_CONTAINER_MENU_PANE && + iWmMainContainer ) + { + aMenuPane->SetItemDimmed( EWmMainContainerViewAddMenuItemCommand, + !iWmMainContainer->CanDoAdd() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewWiddetDetailsMenuItemCommand, + !iWmMainContainer->CanDoDetails() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewLaunchMenuItemCommand, + !iWmMainContainer->CanDoLaunch() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewSearchMenuItemCommand, + !iWmMainContainer->CanDoFind() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewSortAlphaMenuItemCommand, + !iWmMainContainer->CanDoSort() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewHelpMenuItemCommand, + !iWmMainContainer->CanDoHelp() ); + aMenuPane->SetItemDimmed( EWmMainContainerViewUninstallMenuItemCommand, + !iWmMainContainer->CanDoUninstall() ); + if ( !iWmMainContainer->PortalSelected() ) + aMenuPane->DeleteMenuItem( EWmMainContainerViewOpenPortalMenuItemCommand ); + if ( !iWmMainContainer->WidgetSelected() ) + aMenuPane->DeleteMenuItem( EWmMainContainerViewAddMenuItemCommand ); + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleOpenMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleOpenMenuItemSelectedL() + { + if ( iWmMainContainer && iWmMainContainer->PortalSelected() ) + { + iWmMainContainer->OpenOviPortalL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleDetailsMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleDetailsMenuItemSelectedL() + { + if ( iWmMainContainer && iWmMainContainer->WidgetSelected() ) + { + iWmMainContainer->LaunchDetailsDialogL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleAddMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleAddMenuItemSelectedL() + { + if ( iWmMainContainer && iWmMainContainer->WidgetSelected() ) + { + iWmMainContainer->AddWidgetToHomeScreenL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleLaunchMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleLaunchMenuItemSelectedL() + { + if ( iWmMainContainer && iWmMainContainer->WidgetSelected() ) + { + iWmMainContainer->LaunchWidgetL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleSearchMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleSearchMenuItemSelectedL() + { + if ( iWmMainContainer ) + { + iWmMainContainer->ActivateFindPaneL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleSortAlphaMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleSortAlphaMenuItemSelectedL() + { + if ( iWmMainContainer ) + { + iWmMainContainer->SortListAlphabeticallyL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleUninstallMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleUninstallMenuItemSelectedL() + { + if ( iWmMainContainer ) + { + iWmMainContainer->UninstallWidgetL(); + } + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleHelpMenuItemSelectedL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleHelpMenuItemSelectedL() + { + iWmMainContainer->ShowHelpL(); + return ETrue; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleDeactivateFindPaneL +// --------------------------------------------------------- +// +TBool CWmMainContainerView::HandleDeactivateFindPaneL() + { + if ( iWmMainContainer ) + { + iWmMainContainer->DeactivateFindPaneL(); + } + return ETrue; + } + +// End of file