mmsharing/mmshui/src/musuireceiveview.cpp
changeset 0 f0cf47e981f9
child 18 0da2e08216b6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshui/src/musuireceiveview.cpp	Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,498 @@
+/*
+* Copyright (c) 2005 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:  The MUS application's UI class.
+*
+*/
+
+
+
+#include "musuireceiveview.h"
+#include "musuireceivecontainer.h"
+#include "musuibackgroundviewcontainer.h"
+#include "musuireceivecontroller.h"
+#include "musuiactivitymanger.h"
+#include "musuiappui.h"
+#include "musuistatuspanehandler.h"
+#include "musui.hrh"
+#include "musuidefinitions.h"
+#include "muslogger.h" // debug logging
+#include <musui.rsg>
+#include <musui.mbg>
+
+#include <aknViewAppUi.h>
+#include <avkon.hrh>
+#include <eikmenup.h>
+#include <akntoolbar.h>
+
+
+// -----------------------------------------------------------------------------
+// EPOC two-phased constructor
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::ConstructL()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::ConstructL" );
+    
+    CMusUiGeneralView::ConstructL();
+
+    Toolbar()->SetToolbarObserver( this );
+    Toolbar()->UpdateBackground();
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::ConstructL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CMusUiReceiveView::~CMusUiReceiveView()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::~CMusUiReceiveView" );
+    if ( iContainer )
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        }
+    delete iContainer;
+
+    delete iController;
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::~CMusUiReceiveView" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TUid CMusUiReceiveView::Id() const
+    {
+    return KMusUidReceivingView;
+    }
+
+// -----------------------------------------------------------------------------
+// From MEikMenuObserver, Called by framework before constructing menupane
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::DynInitMenuPaneL( TInt aResourceId,
+                                          CEikMenuPane* aMenuPane )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::DynInitMenuPaneL" );
+    
+    // Base class initiated initialization first
+    CMusUiGeneralView::DynInitMenuPaneL( aResourceId, aMenuPane );
+    if(!MUS_NO_TOOLBAR)
+        {
+        SetInitialFocusedItemL();
+        }
+    
+    if ( aResourceId == R_MUSUI_VIEW_MENU )
+        {
+        // Delete item which is present on toolbar
+        if ( !MUS_NO_TOOLBAR )
+            {
+            aMenuPane->DeleteMenuItem( EMusuiCmdViewFullScreen );
+            }
+
+        // Delete items not related to receiving side:
+        aMenuPane->DeleteMenuItem( EMusuiCmdViewReplay );
+        aMenuPane->DeleteMenuItem( EMusuiCmdToolbarZoom );
+        aMenuPane->DeleteMenuItem( EMusuiCmdToolbarBrightness );
+        aMenuPane->DeleteMenuItem( EMusuiCmdViewZoom );
+        aMenuPane->DeleteMenuItem( EMusuiCmdViewBrightness );
+        aMenuPane->DeleteMenuItem( EMusuiCmdRecord );
+        aMenuPane->DeleteMenuItem( EMusuiCmdStopRecording );
+        
+        // Delete EMusuiCmdViewAudioNormal or EMusuiCmdViewAudioMute
+        // depending on the audio state of the clip:
+        if ( iController->ClipContainsAudioL() )
+            {
+            aMenuPane->DeleteMenuItem( iController->ClipMutedL() ? 
+                                        EMusuiCmdViewAudioMute : 
+                                        EMusuiCmdViewAudioNormal );
+            }
+         else
+            {
+            aMenuPane->DeleteMenuItem( EMusuiCmdViewAudioMute );
+            aMenuPane->DeleteMenuItem( EMusuiCmdViewAudioNormal );
+            }
+        
+        }
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::DynInitMenuPaneL" );
+    }
+ 
+    
+// -----------------------------------------------------------------------------
+// Called when focus event occurs.
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::DoHandleForegroundEventL( TBool aForeground )
+    {
+    CMusUiGeneralView::HandleForegroundEventL( aForeground, EFalse );
+    }
+
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::HandleToolbarCommandL( TInt aCommand )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::HandleToolbarCommandL" );
+    
+    __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
+    
+    switch ( aCommand )
+        {
+        case EKeyLeftArrow:
+            {
+            HandleCommandL( 
+                    iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
+                    EMusUiCmdToolbarLastIndex );
+            break;
+            }
+        case EKeyRightArrow:
+            {
+            HandleCommandL( 
+                    iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
+                    EMusUiCmdToolbarLastIndex );
+            break;
+            }
+        case EKeyUpArrow:
+            {
+            HandleCommandL( 
+                    iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
+                    EMusUiCmdToolbarLastIndex );
+            break;
+            }
+        case EKeyDownArrow:
+            {
+            HandleCommandL( 
+                    iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
+                    EMusUiCmdToolbarLastIndex );
+            break;
+            }
+        case EMusuiCmdViewVolumeDown:
+            {
+            HandleCommandL( EMusuiCmdViewVolumeDown );
+            break;
+            }
+        case EMusuiCmdViewVolumeUp:
+            {
+            HandleCommandL( EMusuiCmdViewVolumeUp );
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::HandleToolbarCommandL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::SetInitialFocusedItemL()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::SetInitialFocusedItemL" );
+    
+    __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
+    
+    if ( iOperatorSpecificFunctionality && !AknLayoutUtils::PenEnabled()  )
+        {
+        MUS_LOG( "Focus changed in OPERATOR mode !!!!!!!!!!!!!" );
+         if ( !( iController->DeviceHasDedicatedVolumeKeys() ) )
+            {
+            Toolbar()->SetFocusedItemL( EMusuiCmdToolbarVolume );
+            }
+        else
+            {
+       
+        	Toolbar()->SetFocusedItemL( EMusuiCmdToolbarFullScreen );    
+        	}
+        
+        }
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::SetInitialFocusedItemL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::SetToolbarVisibility( TBool aVisible )
+    {
+    MUS_LOG1( "mus: [MUSUI ]  -> CMusUiReceiveView::SetToolbarVisibility: %d",
+                            aVisible );
+    if ( MUS_NO_TOOLBAR )
+        {
+        MUS_LOG( "                  Operator variant, no toolbar! Ignoring.." )
+        MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::SetToolbarVisibility" );
+        return;        
+        }
+    
+    // Show toolbar only after established session and before of exit procedure
+    if ( iController->FullScreenSelected() )
+        {
+        MUS_LOG( "mus: [MUSUI ] setting toolbar invisible" );
+        
+        Toolbar()->SetToolbarVisibility( EFalse );
+        
+        SharingContainer().RequestToolbarVisibilityOnceDialogDismissed( NULL );
+        }
+    else
+        {
+        CMusUiGeneralView::SetToolbarVisibility( aVisible );
+        }
+        
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiGeneralView::SetToolbarVisibility" );
+    }
+
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::DynInitToolbarL( TInt aResourceId, 
+                                         CAknToolbar* aToolbar )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::DynInitToolbarL" );
+    
+    // Items to be removed in Receive View:  
+ 	if (!AknLayoutUtils::PenEnabled())//(aResourceId == R_MUS_TOOLBAR_NONTOUCH)//
+	{
+	    if ( iController->DeviceHasDedicatedVolumeKeys() )
+	        {
+	        MUS_LOG( "mus: [MUSUI ]     CMusUiReceiveView::DynInitToolbarL\
+	                                    DeviceHasDedicatedVolumeKeys" );
+	        Toolbar()->RemoveItem( EMusuiCmdToolbarVolume );
+	        }
+	    else
+	        {
+	        aToolbar->SetFocusedItemL( EMusuiCmdToolbarVolume );
+	        }   
+
+	    Toolbar()->RemoveItem( EMusuiCmdToolbarFFRev );
+	    Toolbar()->RemoveItem( EMusuiCmdToolbarZoom );
+	    Toolbar()->RemoveItem( EMusuiCmdToolbarBrightness);
+	}
+             
+    Toolbar()->RemoveItem( EMusuiCmdToolbarPauseLive );
+    Toolbar()->RemoveItem( EMusuiCmdToolbarUnPauseLive );
+    Toolbar()->RemoveItem( EMusuiCmdToolbarPause );
+    Toolbar()->RemoveItem( EMusuiCmdToolbarUnPause );
+    
+    if ( aToolbar->FocusedItem() == KErrNotFound && 
+         !AknLayoutUtils::PenEnabled() )
+        {
+        aToolbar->SetFocusedItemL( EMusuiCmdToolbarFullScreen );
+        }
+    
+    // Last generic base class functionality
+    CMusUiGeneralView::DynInitToolbarL( aResourceId, aToolbar );
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::DynInitToolbarL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::ShowInvitationQueryL( const TDesC& aQuery )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::ShowInvitationQueryL" );
+    iContainer->ShowInvitationQueryL( aQuery, *iController );
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::ShowInvitationQueryL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::DismissInvitationQuery( TBool aDelete )
+    {
+    iContainer->DismissInvitationQuery( aDelete );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::SetFullScreenL( TBool aFullScreen )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::SetFullScreenL" );
+
+    if ( aFullScreen )
+        {
+        Cba()->MakeVisible( EFalse );
+		SetToolbarVisibility( EFalse );
+        MusAppUi()->StatusPane()->MakeVisible( EFalse );
+        
+		if( MusAppUi()->CurrentFixedToolbar() )
+                MusAppUi()->CurrentFixedToolbar()->MakeVisible( EFalse );  
+		
+        if( MusAppUi()->CurrentPopupToolbar() )
+                MusAppUi()->CurrentPopupToolbar()->MakeVisible( EFalse );    
+		
+        if( MusAppUi()->PopupToolbar() )
+                MusAppUi()->PopupToolbar()->MakeVisible( EFalse );        
+        iController->ChangeOrientationL( CAknAppUiBase::EAppUiOrientationLandscape );
+
+        iContainer->SetFullScreen( ETrue, MusAppUi()->ApplicationRect() );
+        iController->SetRect( MusAppUi()->ApplicationRect() );
+        }
+    else
+        {
+        if( MusAppUi()->CurrentFixedToolbar() )
+                MusAppUi()->CurrentFixedToolbar()->MakeVisible( ETrue );   
+		
+        if( MusAppUi()->CurrentPopupToolbar() )
+                MusAppUi()->CurrentPopupToolbar()->MakeVisible( ETrue );   
+		
+        if( MusAppUi()->PopupToolbar() )
+                MusAppUi()->PopupToolbar()->MakeVisible( ETrue);
+        // First make toolbar, cba and statuspane visible as those affect
+        // to client rect
+        MusAppUi()->StatusPane()->MakeVisible( ETrue );
+        SetToolbarVisibility( ETrue );
+        Cba()->MakeVisible( ETrue );
+        
+        iController->ChangeOrientationL( CAknAppUiBase::EAppUiOrientationAutomatic );
+        iContainer->SetFullScreen( EFalse, ClientRect() );
+        iController->SetRect( ClientRect() );
+        }
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::SetFullScreenL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::RefreshView()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::RefreshView" );
+    
+    if ( iContainer )
+        {
+        iContainer->SetRect( ClientRect() );
+        }
+    
+    TRect videoRect( ClientRect().iTl.iX,
+                     ClientRect().iTl.iY,
+                     ClientRect().iBr.iX,
+                     ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
+    
+    if ( iController )
+        {
+        iController->SetRect( videoRect );
+        }
+        
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::RefreshView" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusUiEventController* CMusUiReceiveView::EventController() const
+    {
+    return iController;
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusUiViewContainer& CMusUiReceiveView::SharingContainer() const
+    {
+    return *iContainer;
+    }
+        
+
+// -----------------------------------------------------------------------------
+// From CAknView, Gets called from framework when activating this view
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::DoActivateL( const TVwsViewId& aPrevViewId,
+                                         TUid aCustomMessageId,
+                                         const TDesC8& aCustomMessage )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::DoActivateL" );
+
+    // Base class activation first
+    CMusUiGeneralView::DoActivateL( aPrevViewId,
+                                    aCustomMessageId,
+                                    aCustomMessage );
+                                    
+    if ( !iContainer )
+        {
+        // create the container and then add myself to the view stack
+        iContainer = CMusUiReceiveContainer::NewL( *this, ClientRect() );
+        iContainer->SetMopParent( this );
+        AppUi()->AddToViewStackL( *this, iContainer );
+        }
+    
+    /* Increase the ordinal position of background container
+     * So that other control will be drawn first.     
+     */
+    UpdateBackgroundOrdinalPosition( ETrue );
+        
+    TRect videoRect( ClientRect().iTl.iX,
+                     ClientRect().iTl.iY,
+                     ClientRect().iBr.iX,
+                     ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
+
+    if ( !iController )
+        {
+        iController = CMusUiReceiveController::NewL( *MusAppUi(),
+                                                     *this, 
+                                                     *this, 
+                                                     videoRect );
+        }
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::DoActivateL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+// From AknView, Gets called from framework when deactivating this view
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveView::DoDeactivate()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::DoDeactivate" );
+    
+    CMusUiGeneralView::DoDeactivate(); // Base class deactivation first
+    
+    if ( iContainer )
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveView::DoDeactivate" );
+    }
+
+
+// end of file