idlehomescreen/widgetmanager/src/wmmaincontainerview.cpp
branchRCL_3
changeset 83 5456b4e8b3a8
child 93 b01126ce0bec
--- /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 <aknViewAppUi.h>
+#include <eikmenub.h>
+#include <avkon.hrh>
+#include <akncontext.h>
+#include <akntitle.h>
+#include <StringLoader.h>
+#include <barsread.h>
+#include <eikbtgpc.h>
+#include <widgetmanagerview.rsg>
+#include <hscontentcontroller.h>
+#include <AknUtils.h>
+#include <avkon.rsg>
+#include <layoutmetadata.cdl.h>
+
+#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