diff -r 5f0182e07bfb -r 5456b4e8b3a8 idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp Wed Sep 01 12:32:46 2010 +0100 @@ -0,0 +1,446 @@ +/* +* 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 +#include +#include + +#include "wmplugin.h" +#include "widgetmanager.hrh" +#include "wmmaincontainerview.h" +#include "wmresourceloader.h" +#include "wmmaincontainer.h" +#include "wmspbgcleaner.h" + +// --------------------------------------------------------- +// CWmMainContainerView::CWmMainContainerView() +// --------------------------------------------------------- +// +CWmMainContainerView::CWmMainContainerView( + CWmPlugin& aWmPlugin ): + iWmPlugin( aWmPlugin ) + { + iWmMainContainer = NULL; + iWmSpBgCleaner = NULL; + } + +// --------------------------------------------------------- +// CWmMainContainerView::~CWmMainContainerView() +// --------------------------------------------------------- +// +CWmMainContainerView::~CWmMainContainerView() + { + if ( iWmMainContainer != NULL ) + { + AppUi()->RemoveFromStack( iWmMainContainer ); + + delete iWmMainContainer; + iWmMainContainer = NULL; + } + + if ( iWmSpBgCleaner != NULL ) + { + AppUi()->RemoveFromStack( iWmSpBgCleaner ); + delete iWmSpBgCleaner; + iWmSpBgCleaner = 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: + { + if ( iWmMainContainer && + !iWmMainContainer->IsLoadingWidgets() ) + { + iWmPlugin.CloseView(); + } + 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*/ ) + { + // setup status pane layout + StatusPane()->SwitchLayoutL( R_AVKON_STATUS_PANE_LAYOUT_USUAL_FLAT ); + // apply changes + StatusPane()->ApplyCurrentSettingsL(); + // disable transparancy + StatusPane()->EnableTransparent( EFalse ); + // create container + if ( iWmSpBgCleaner == NULL ) + { + iWmSpBgCleaner = CWmSpBgCleaner::NewL(); + iWmSpBgCleaner->SetMopParent( this ); + AppUi()->AddToStackL( *this, iWmSpBgCleaner ); + } + + // title in status pane + SetTitleL(); + + iWmSpBgCleaner->DrawNow(); + StatusPane()->DrawNow(); + + // update cba + if ( Layout_Meta_Data::IsMSKEnabled() ) + { + CEikButtonGroupContainer* bgc( Cba() ); + CEikCba* cba = static_cast< CEikCba* >( bgc->ButtonGroup() ); + cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK__SELECT ); + bgc->SetBoundingRect( TRect() ); + cba->DrawNow(); + } + + // create container + if ( iWmMainContainer == NULL ) + { + iWmMainContainer = CreateContainerL(); + iWmMainContainer->SetMopParent( this ); + AppUi()->AddToStackL( *this, iWmMainContainer ); + iWmMainContainer->DrawNow(); + } + + iWmPlugin.MainViewActivated( aPrevViewId, iWmMainContainer ); + } + +// --------------------------------------------------------- +// CWmMainContainerView::DoDeactivate +// --------------------------------------------------------- +// +void CWmMainContainerView::DoDeactivate() + { + if ( iWmMainContainer != NULL ) + { + AppUi()->RemoveFromStack( iWmMainContainer ); + delete iWmMainContainer; + iWmMainContainer = NULL; + iWmPlugin.MainViewDeactivated(); + } + + if ( iWmSpBgCleaner != NULL ) + { + AppUi()->RemoveFromStack( iWmSpBgCleaner ); + delete iWmSpBgCleaner; + iWmSpBgCleaner = NULL; + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::SetTitleL +// --------------------------------------------------------- +// +void CWmMainContainerView::SetTitleL() + { + // 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 ); + CleanupStack::PopAndDestroy(); // reader internal state + } + } + } + +// --------------------------------------------------------- +// CWmMainContainerView::CreateContainerL +// --------------------------------------------------------- +// +CWmMainContainer* CWmMainContainerView::CreateContainerL() + { + return CWmMainContainer::NewL( ClientRect(), 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->OpenPortalL(); + } + 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( ETrue ); + } + 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; + } + +// --------------------------------------------------------- +// CWmMainContainerView::HandleForegroundEventL +// --------------------------------------------------------- +// +void CWmMainContainerView::HandleForegroundEventL( TBool aForeground ) + { + CAknView::HandleForegroundEventL( aForeground ); + if ( iWmMainContainer ) + { + iWmMainContainer->ProcessForegroundEvent( aForeground ); + } + } + +// End of file