mmsharing/mmshui/src/musuiclipsharingview.cpp
branchRCL_3
changeset 33 bc78a40cd63c
child 38 ac48f0cc9f9c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshui/src/musuiclipsharingview.cpp	Wed Sep 01 12:31:01 2010 +0100
@@ -0,0 +1,677 @@
+/*
+* 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 "musuiclipsharingview.h"
+#include "musuiclipsharingviewcontainer.h"
+#include "musuibackgroundviewcontainer.h"
+#include "musuiclipsharingcontroller.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 "musuidialogutil.h"
+
+#include <aknViewAppUi.h>
+#include <avkon.hrh>
+#include <eikmenup.h>
+#include <eikbtgpc.h>
+#include <akntoolbar.h>
+
+
+const TInt KMusUiContainerHeight = 50;
+const TInt KDefaultResolutionHeight = 640;
+
+// -----------------------------------------------------------------------------
+// EPOC two-phased constructor
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::ConstructL()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::ConstructL" );
+
+    CMusUiSendView::ConstructL();
+
+    Toolbar()->SetToolbarObserver( this );
+    Toolbar()->UpdateBackground();
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::ConstructL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CMusUiClipSharingView::~CMusUiClipSharingView()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::~CMusUiClipSharingView" );
+    if ( iContainer )
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        }
+    delete iContainer;
+    
+    delete iController;
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::~CMusUiClipSharingView" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TUid CMusUiClipSharingView::Id() const
+    {
+    return KMusUidClipSharingView;
+    }
+
+// -----------------------------------------------------------------------------
+// From MEikMenuObserver, Called by framework before constructing menupane
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::DynInitMenuPaneL( TInt aResourceId,
+                                              CEikMenuPane* aMenuPane )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::DynInitMenuPaneL" );
+    
+ 
+    // Base class initiated initialization first
+    CMusUiGeneralView::DynInitMenuPaneL( aResourceId, aMenuPane );
+    
+    if(! MUS_NO_TOOLBAR )
+        {
+            SetInitialFocusedItemL();        
+        }
+    
+    if ( aResourceId == R_MUSUI_VIEW_MENU )
+        {
+        
+        // Delete items not related to clip sharing:
+        aMenuPane->DeleteMenuItem( EMusuiCmdRecord );
+        aMenuPane->DeleteMenuItem( EMusuiCmdStopRecording );        
+
+        aMenuPane->DeleteMenuItem( EMusuiCmdToolbarZoom );
+        aMenuPane->DeleteMenuItem( EMusuiCmdToolbarBrightness );
+        aMenuPane->DeleteMenuItem( EMusuiCmdViewZoom );
+        aMenuPane->DeleteMenuItem( EMusuiCmdViewBrightness );
+        aMenuPane->DeleteMenuItem( EMusuiCmdViewFullScreen );       
+        
+        // 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 );
+            }
+        
+        // Delete "Replay" item, if the end of the clip not reached:
+        if ( !iController->ClipEnded() )
+            {
+            aMenuPane->DeleteMenuItem( EMusuiCmdViewReplay );
+            }
+
+        }
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::DynInitMenuPaneL" );
+    }
+    
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::HandleToolbarCommandL( TInt aCommand )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::HandleToolbarCommandL" );
+
+     __ASSERT_ALWAYS( iController, User::Leave( KErrNotReady ) );
+
+    switch ( aCommand )
+        {
+        case EKeyLeftArrow:
+            {
+            HandleCommandL(
+                    iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
+                    iController->ToolbarFFRevSelected() ? EMusuiCmdViewFastReverse :
+                    EMusUiCmdToolbarLastIndex );
+            break;
+            }
+        case EKeyRightArrow:
+            {
+            HandleCommandL(
+                    iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
+                    iController->ToolbarFFRevSelected() ? EMusuiCmdViewFastForward :
+                    EMusUiCmdToolbarLastIndex );
+            break;
+            }
+        case EKeyUpArrow:
+            {
+            HandleCommandL(
+                    iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeUp :
+                    iController->ToolbarFFRevSelected() ? EMusuiCmdViewFastForward :
+                    EMusUiCmdToolbarLastIndex );
+            break;
+            }
+        case EKeyDownArrow:
+            {
+            HandleCommandL(
+                    iController->ToolbarVolumeSelected() ? EMusuiCmdViewVolumeDown :
+                    iController->ToolbarFFRevSelected() ? EMusuiCmdViewFastReverse :
+                    EMusUiCmdToolbarLastIndex );
+            break;
+            }
+        case EMusuiCmdViewVolumeDown:
+            {
+            HandleCommandL( EMusuiCmdViewVolumeDown );
+            break;
+            }
+        case EMusuiCmdViewVolumeUp:
+            {
+            HandleCommandL( EMusuiCmdViewVolumeUp );
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::HandleToolbarCommandL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::HandleKeyUpEvent( TInt /*aKeyCode*/ )
+    {
+    TRAP_IGNORE( iController->StopWindingL() )
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::SetInitialFocusedItemL()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::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( EventControllerL().IsMicMutedL() ?
+                                                    EMusuiCmdToolbarUnmute :
+                                                    EMusuiCmdToolbarMute );
+    		}        
+        
+        }
+        
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::SetInitialFocusedItemL" );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::DynInitToolbarL( TInt aResourceId,
+                                             CAknToolbar* aToolbar )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::DynInitToolbarL" );
+
+    // Items to be removed in Clip Sharing View:
+    
+
+ 	if (!AknLayoutUtils::PenEnabled())//(aResourceId == R_MUS_TOOLBAR_NONTOUCH)//
+	{
+   		if ( iController->DeviceHasDedicatedVolumeKeys() )
+        	{
+        	aToolbar->RemoveItem( EMusuiCmdToolbarVolume );
+        	}
+    	else
+        	{
+        	aToolbar->SetFocusedItemL( EMusuiCmdToolbarVolume );
+        	}        	
+	    
+		aToolbar->RemoveItem( EMusuiCmdToolbarZoom );
+    	aToolbar->RemoveItem( EMusuiCmdToolbarBrightness );
+	}
+
+    Toolbar()->RemoveItem( EMusuiCmdToolbarPauseLive );
+    Toolbar()->RemoveItem( EMusuiCmdToolbarUnPauseLive );
+    Toolbar()->RemoveItem( EMusuiCmdToolbarFullScreen );
+    
+    
+    if ( iOperatorSpecificFunctionality )
+        {
+        // Remove pause/unpause functionality in operator variant case
+        Toolbar()->RemoveItem( EMusuiCmdToolbarPause );
+        Toolbar()->RemoveItem( EMusuiCmdToolbarUnPause );
+        
+        if ( aToolbar->FocusedItem() == KErrNotFound &&
+             !AknLayoutUtils::PenEnabled() )
+            {
+            aToolbar->SetFocusedItemL( EventControllerL().IsMicMutedL() ?
+                                                    EMusuiCmdToolbarUnmute :
+                                                    EMusuiCmdToolbarMute );
+            }                
+
+        }
+    else        
+        {
+        // Toggled items to be hidden:
+        Toolbar()->HideItem( iPauseSelected ?
+                                EMusuiCmdToolbarPause :
+                                EMusuiCmdToolbarUnPause,
+                             ETrue,
+                             ETrue );
+        if ( aToolbar->FocusedItem() == KErrNotFound &&
+             !AknLayoutUtils::PenEnabled() )
+            {
+            aToolbar->SetFocusedItemL( EMusuiCmdToolbarPause );
+            }    
+    	Toolbar()->RemoveItem( EMusuiCmdToolbarBlank );
+        }
+            
+    // Last generic base class functionality
+    CMusUiGeneralView::DynInitToolbarL( aResourceId, aToolbar );
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::DynInitToolbarL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::RunFetchDialogL()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::RunFetchDialogL" );
+    iContainer->RunFetchDialogL();
+    if ( iContainer->FileSelected() )
+        {
+        iController->SetFileNameL( iContainer->FetchedFileName() );
+		RefreshView();
+        }
+    else
+        {
+		if ( SendController() && SendController()->IsAudioRoutingLoudSpeaker() )
+            {
+            MusUiDialogUtil::ShowGlobalInformationDialogL(
+                             R_MUS_NOTE_HF_DEACTIVATED );
+            }
+        MusAppUi()->HandleExit();
+        }
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::RunFetchDialogL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::ShowTranscodingProgressDialogL()
+    {
+    iContainer->ShowTranscodingProgressDialogL();
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::UpdateClipTranscodingPercentageL( TInt aPercetage )
+    {
+    iContainer->UpdateClipTranscodingPercentageL( aPercetage );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::CancelTranscodingDialogL()
+    {
+    iContainer->CancelTranscodingL();
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::UpdateClipPositionL( 
+                                        TInt aPositionInSeconds,
+                                        const TDesC& aFormattedPosition )
+    {
+    MUS_LOG_TDESC( "mus: [MUSUI ] -> CMusUiClipSharingView::UpdateClipPositionL: ",
+                   aFormattedPosition );
+    
+    MusAppUi()->MusStatusPane()->SetRightLabelL( aFormattedPosition );
+    iContainer->SetPositionValueL( aPositionInSeconds );
+        
+    MUS_LOG( "mus: [MUSUI ] <- CMusUiClipSharingView::UpdateClipPositionL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::SetDurationValue( TInt aDurationValue )
+    {
+    iContainer->SetDurationValue( aDurationValue );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::SetPositionValueL( TInt aDurationValue )
+    {
+    iContainer->SetPositionValueL( aDurationValue );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::SetDurationVisible()
+    {
+    MUS_LOG1( "mus: [MUSUI ]  -> CMusUiLiveSharingView::SetDurationVisible: %d",
+                            iToolbarItemSelected );
+    if ( !iToolbarItemSelected )
+        {
+        iContainer->SetDurationIndicatorVisible( ETrue );
+        }
+    else
+        {
+        iContainer->SetDurationIndicatorVisible( EFalse );
+        }
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiLiveSharingView::SetDurationVisible" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::ReplaceToolbarCommand( TInt aOldCommand, 
+                                                   TInt aNewCommand,
+                                                   TBool aSetNewCommandFocused )
+    {
+    MUS_LOG1( "mus: [MUSUI ]  -> CMusUiClipSharingView::ReplaceToolbarCommand: %d",
+                            aOldCommand );
+    switch ( aOldCommand )
+        {
+        case EMusuiCmdToolbarPause:
+            {
+            iPauseSelected = ETrue;
+            break;
+            }
+        case EMusuiCmdToolbarUnPause:
+            {
+            iPauseSelected = EFalse;
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        
+        }
+
+    // Call base class version for generic part
+    
+    CMusUiGeneralView::ReplaceToolbarCommand( aOldCommand, 
+                                              aNewCommand,
+                                              aSetNewCommandFocused );
+    
+    MUS_LOG1( "mus: [MUSUI ]  <- CMusUiClipSharingView::ReplaceToolbarCommand: %d",
+                            aOldCommand );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::RefreshView()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::RefreshView" );
+    
+    RefreshBackgroundContainer();
+    
+    if ( iContainer )
+        {            
+        TInt height = MusAppUi()->ApplicationRect().Height();
+        MUS_LOG1( "mus: [MUSUI ]  -> application rect height: %d", height );
+        TInt containerHeight = (KMusUiContainerHeight * height) / KDefaultResolutionHeight;
+
+        MUS_LOG1( "mus: [MUSUI ]  -> container rect height: %d", containerHeight );
+        TRect containerRect( 
+                        ClientRect().iTl.iX, 
+                        ClientRect().iBr.iY - ToolbarPlaceHolderHeight() 
+                                            - containerHeight,//KMusUiContainerHeight,
+                        ClientRect().iBr.iX,
+                        ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
+
+        if (!AknLayoutUtils::PenEnabled())
+        	{
+        	containerRect = TRect(
+        			ClientRect().iTl.iX,
+        			ClientRect().iTl.iY,
+        			ClientRect().iBr.iX,
+        			ClientRect().iTl.iY +  containerHeight );
+        	}
+        iContainer->SetRect( containerRect );
+   
+        if ( iController )
+            {
+            
+            TRect videoRect( ClientRect().iTl.iX,
+                     ClientRect().iTl.iY,
+                     ClientRect().iBr.iX,
+                     ClientRect().iBr.iY - ToolbarPlaceHolderHeight()
+                                         - iContainer->Size().iHeight );
+
+             if (!AknLayoutUtils::PenEnabled())
+             	{
+             	TInt dy = iContainer->Size().iHeight;
+             	videoRect.Move(0, dy);
+            	}
+            iController->SetRect( videoRect );
+
+            }
+        }
+        
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::RefreshView" );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::CancelTranscodingL()
+    {
+    if ( iController )
+        {
+        iController->CancelTranscodingL();
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusUiSendController* CMusUiClipSharingView::SendController() const
+    {
+    return iController;
+    }
+    
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusUiSendViewContainer* CMusUiClipSharingView::SendContainer() const
+    {
+    return iContainer;
+    }
+
+
+// -----------------------------------------------------------------------------
+// From CAknView, Gets called from framework when activating this view
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::DoActivateL( const TVwsViewId& aPrevViewId,
+                                         TUid aCustomMessageId,
+                                         const TDesC8& aCustomMessage )
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::DoActivateL" );
+
+    // Base class activation first
+    CMusUiSendView::DoActivateL( aPrevViewId,
+                                 aCustomMessageId,
+                                 aCustomMessage );
+        
+    TInt height = MusAppUi()->ApplicationRect().Height();
+    MUS_LOG1( "mus: [MUSUI ]  -> application rect height: %d", height );
+    TInt containerHeight = (KMusUiContainerHeight * height) / KDefaultResolutionHeight;
+
+    MUS_LOG1( "mus: [MUSUI ]  -> container rect height: %d", containerHeight );  
+    TRect containerRect( 
+        ClientRect().iTl.iX, 
+        ClientRect().iBr.iY - ToolbarPlaceHolderHeight() 
+                            - containerHeight,//KMusUiContainerHeight,
+        ClientRect().iBr.iX,
+        ClientRect().iBr.iY - ToolbarPlaceHolderHeight() );
+                         
+   if (!AknLayoutUtils::PenEnabled())
+        {
+    	containerRect = TRect(
+    			ClientRect().iTl.iX,
+    			ClientRect().iTl.iY,
+    			ClientRect().iBr.iX,
+    			ClientRect().iTl.iY +  containerHeight );
+    	}
+ 
+    if ( !iContainer )
+        {
+        MUS_LOG( "mus: [MUSUI ]  CMusUiClipSharingView::DoActivateL: !iContainer" );
+        iContainer = new ( ELeave ) CMusUiClipSharingViewContainer();
+        iContainer->SetMopParent( this );
+        iContainer->ConstructL( this, containerRect );
+        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() 
+                                         - iContainer->Size().iHeight );
+
+    if (!AknLayoutUtils::PenEnabled())
+    	{
+    	TInt dy = iContainer->Size().iHeight;
+    	videoRect.Move(0, dy);
+    	}
+    if ( !iController )
+        {
+        MUS_LOG( "mus: [MUSUI ]  CMusUiClipSharingView::DoActivateL: !iController" );
+        iController = CMusUiClipSharingController::NewL( *MusAppUi(),
+                                                         *this, 
+                                                         *this,
+                                                         *this,
+                                                         videoRect );
+        }
+    
+    iContainer->SetController( iController );
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::DoActivateL" );
+    }
+
+
+// -----------------------------------------------------------------------------
+// From AknView, Gets called from framework when deactivating this view
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::DoDeactivate()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::DoDeactivate" );
+    
+    CMusUiSendView::DoDeactivate(); // Base class deactivation first
+    
+    if ( iContainer )
+        {
+        AppUi()->RemoveFromViewStack( *this, iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::DoDeactivate" );
+    }
+
+// -----------------------------------------------------------------------------
+// When Mmc is removed, dimmed the pause icon on toolbar
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingView::InvalidVideoFrame( TBool aInvalid )
+	{
+	MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::InvalidVideoFrame" );
+	Toolbar()->SetItemDimmed( iPauseSelected ?
+                                EMusuiCmdToolbarUnPause :
+                                EMusuiCmdToolbarPause,
+	                          aInvalid ?
+			                    ETrue :
+								EFalse,
+	                          ETrue ); 
+	MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingView::InvalidVideoFrame" );
+	}
+
+// end of file