videditor/SimpleCutVideo/src/VeiSimpleCutVideoAppUi.cpp
changeset 0 951a5db380a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videditor/SimpleCutVideo/src/VeiSimpleCutVideoAppUi.cpp	Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,333 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "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:
+* Ixonos Plc
+*
+* Description:  
+*
+*/
+
+
+
+// INCLUDE FILES
+// System includes
+#include <avkon.hrh>
+#include <eikmenup.h>
+#include <eikenv.h>
+#include <hlplch.h>     // HlpLauncher
+#include <VedSimpleCutVideo.rsg>
+#include <stringloader.h>
+#include <bautils.h>
+#include <mgfetch.h> 
+#include <data_caging_path_literals.hrh>
+
+// User includes
+#include "VedSimpleCutVideo.hrh"
+#include "veisimplecutvideoappui.h"
+#include "veisimplecutvideoview.h"
+
+#include "VeiTempMaker.h"
+#include "VideoEditorCommon.h"
+
+// ================= MEMBER FUNCTIONS =======================
+//
+// ----------------------------------------------------------
+// CVeiSimpleCutVideoAppUi::ConstructL()
+// ?implementation_description
+// ----------------------------------------------------------
+//
+void CVeiSimpleCutVideoAppUi::ConstructL()
+    {
+    LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::ConstructL: In");
+
+   	BaseConstructL( EAppOrientationAutomatic|EAknEnableSkin|EAknEnableMSK );
+	
+	CVeiTempMaker* maker = CVeiTempMaker::NewL();
+	maker->EmptyTempFolder();
+	delete maker;
+	
+/*
+*	Cut video view and Cut audio view are references to edit video view and
+*	ownerships must be transfered(AddViewL(...)) to CAknViewAppUi(this) 
+*	AFTER references are taken to edit video view. Otherwise exit is not clean.
+*/
+
+
+// Cut Video view	    
+	/*iSimpleMergeView = CVeiSimpleCutVideoView::NewLC( ClientRect() );
+	AddViewL( iSimpleMergeView );  // transfer ownership to CAknViewAppUi
+	CleanupStack::Pop( iSimpleMergeView );
+	*/
+
+    LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::ConstructL: Out");
+    }
+
+// ----------------------------------------------------
+// CVeiSimpleCutVideoAppUi::~CVeiSimpleCutVideoAppUi()
+// Destructor
+// Frees reserved resources
+// ----------------------------------------------------
+//
+CVeiSimpleCutVideoAppUi::~CVeiSimpleCutVideoAppUi()
+    {
+    LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::~CVeiSimpleCutVideoAppUi()");
+	}
+	
+void CVeiSimpleCutVideoAppUi::Exit()
+	{
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::Exit(): In");
+
+	TRAP_IGNORE ( 
+		CVeiTempMaker* maker = CVeiTempMaker::NewL();
+		maker->EmptyTempFolder();
+		delete maker; 
+		);
+
+	CAknAppUiBase::Exit();
+	
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::Exit(): Out");
+	}
+
+//=============================================================================
+CVeiSimpleCutVideoAppUi::CVeiSimpleCutVideoAppUi()
+	{
+	}
+
+//=============================================================================
+void CVeiSimpleCutVideoAppUi::CutVideoL( TBool aDoOpen, const RFile& aFile )
+	{
+    LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::CutVideoL: In");
+
+	// Cut Video view
+	if ( !iSimpleCutVideoView )
+		{		
+		CVeiSimpleCutVideoView* simpleCutVideoView = 
+		    new (ELeave) CVeiSimpleCutVideoView;
+		CleanupStack::PushL( simpleCutVideoView );
+		simpleCutVideoView->ConstructL();
+		iSimpleCutVideoView = simpleCutVideoView;
+	    TFileName filename;
+	    User::LeaveIfError( aFile.FullName(filename) );
+	    simpleCutVideoView->AddClipL( filename, aDoOpen );
+		
+		AddViewL(simpleCutVideoView);
+		CleanupStack::Pop( simpleCutVideoView );
+		iVolume = -1;		// Volume not set
+
+	   	iCoeEnv->RootWin().EnableScreenChangeEvents(); 
+
+		SetDefaultViewL( *simpleCutVideoView );   
+		ActivateLocalViewL(simpleCutVideoView->Id());		
+		}
+
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::CutVideoL: Out");
+	}
+
+// ----------------------------------------------------
+// CVeiSimpleCutVideoAppUi::HandleKeyEventL(
+//     const TKeyEvent& aKeyEvent,TEventCode /*aType*/)
+// ?implementation_description
+// ----------------------------------------------------
+//
+TKeyResponse CVeiSimpleCutVideoAppUi::HandleKeyEventL(
+    const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/)
+    {
+    return EKeyWasNotConsumed;
+    }
+
+
+// ----------------------------------------------------
+// CVeiSimpleCutVideoAppUi::HandleCommandL(TInt aCommand)
+// ?implementation_description
+// ----------------------------------------------------
+//
+void CVeiSimpleCutVideoAppUi::HandleCommandL( TInt aCommand )
+    {
+    LOGFMT(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleCommandL( %d ): In", aCommand);
+    
+    switch ( aCommand )
+        {
+        //
+        // Context Sensitive Help launching for:
+        //  -'Settings' view
+        //  -'Trim for MMS' view
+        //  -'Edit video' view
+        //  -'Cut video' view
+        //  -'Cut audio' view
+        //
+    case EAknCmdHelp:        
+    case EVeiCmdCutVideoViewHelp:
+            {
+            // Get the current context
+            CArrayFix<TCoeHelpContext>* context = AppHelpContextL();
+
+            // Launch the help application with current context topic
+            HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
+                                                 context );
+            break;
+            }
+    case EAknSoftkeyBack:
+    case EEikCmdExit:
+    case EAknSoftkeyExit:
+    case EAknCmdExit:
+            {
+            iOnTheWayToDestruction = ETrue;
+            
+            CVeiTempMaker* maker = CVeiTempMaker::NewL();
+            maker->EmptyTempFolder();
+            delete maker;
+				
+            Exit();
+            break;
+            }
+        default:
+            break;      
+        }
+        LOG(KVideoEditorLogFile, "CVeiAppUi::HandleCommandL: Out");
+    }
+
+//=============================================================================
+void CVeiSimpleCutVideoAppUi::ReadSettingsL( TVeiSettings& aSettings ) const
+	{
+	LOG(KVideoEditorLogFile, "CVeiAppUi::ReadSettingsL: in");
+	CDictionaryStore* store = Application()->OpenIniFileLC( iCoeEnv->FsSession() );
+
+	TBool storePresent = store->IsPresentL( KUidVideoEditor );	// UID has an associated stream?
+
+	if( storePresent ) 
+		{
+		RDictionaryReadStream readStream;
+		readStream.OpenLC( *store, KUidVideoEditor );
+
+		readStream >> aSettings;	// Internalize data to TVeiSettings.
+		
+		CleanupStack::PopAndDestroy( &readStream );
+		}
+	else {
+		// In the case of simple cut, the video name is generated automatically
+		// when saving is started.
+		aSettings.DefaultVideoName() = KNullDesC;
+
+		/* Read the default snapshot filename from resource */
+		const CFont* myFont = AknLayoutUtils::FontFromId( EAknLogicalFontSecondaryFont );
+		HBufC*	snapshotName = iEikonEnv->AllocReadResourceLC( R_VEI_SETTINGS_VIEW_SETTINGS_ITEM2_VALUE );
+		aSettings.DefaultSnapshotName() = AknTextUtils::ChooseScalableText(snapshotName->Des(), *myFont, 400 );
+		CleanupStack::PopAndDestroy( snapshotName );
+
+		/* Memory card is used as a default target */
+		aSettings.MemoryInUse() = CAknMemorySelectionDialog::EMemoryCard;
+
+         /* Set save quality to "Auto" by default. */
+        aSettings.SaveQuality() = TVeiSettings::EAuto;
+
+		RDictionaryWriteStream writeStream;
+		writeStream.AssignLC( *store, KUidVideoEditor );
+
+		writeStream << aSettings;
+
+		writeStream.CommitL();
+
+		store->CommitL();
+		
+		CleanupStack::PopAndDestroy( &writeStream );	
+		}
+	CleanupStack::PopAndDestroy( store );
+	LOG(KVideoEditorLogFile, "CVeiAppUi::ReadSettingsL: out");
+	}
+
+//=============================================================================
+void CVeiSimpleCutVideoAppUi::WriteSettingsL( const TVeiSettings& aSettings ) 
+	{
+	LOG(KVideoEditorLogFile, "CVeiAppUi::WriteSettingsL: in");
+	CDictionaryStore* store = Application()->OpenIniFileLC( iCoeEnv->FsSession() );
+
+	RDictionaryWriteStream writeStream;
+	writeStream.AssignLC( *store, KUidVideoEditor );
+	writeStream << aSettings;
+	writeStream.CommitL();
+
+	store->CommitL();
+
+	CleanupStack::PopAndDestroy( &writeStream );
+	CleanupStack::PopAndDestroy( store );
+	LOG(KVideoEditorLogFile, "CVeiAppUi::WriteSettingsL: out");
+	}
+
+//=============================================================================
+void CVeiSimpleCutVideoAppUi::HandleScreenDeviceChangedL()
+	{
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleScreenDeviceChangedL: In");
+
+	CAknAppUi::HandleScreenDeviceChangedL();
+
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleScreenDeviceChangedL: Out");
+	}
+
+//=============================================================================
+void CVeiSimpleCutVideoAppUi::HandleResourceChangeL(TInt aType)
+	{
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleResourceChangeL: In");
+	CAknAppUi::HandleResourceChangeL(aType);
+	if ( iSimpleCutVideoView )
+		{
+		iSimpleCutVideoView->HandleResourceChange(aType);
+		}
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleResourceChangeL: Out");
+	}
+
+//=============================================================================
+void CVeiSimpleCutVideoAppUi::HandleFileNotificationEventL()
+	{
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleFileNotificationEventL: In");
+	/*if ( iSimpleCutVideoView )
+		{
+		if( iSimpleCutVideoView->WaitMode() == CVeiEditVideoView::EProcessingMovieSaveThenQuit )
+			{
+			HandleCommandL( EAknCmdExit );
+			}
+		}*/
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleFileNotificationEventL: Out");
+	}
+
+//=============================================================================
+void CVeiSimpleCutVideoAppUi::HandleForegroundEventL  ( TBool aForeground )
+	{
+	LOGFMT(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleForegroundEventL: In: %d", aForeground);
+	CAknViewAppUi::HandleForegroundEventL( aForeground );
+	if ( !aForeground )
+		{
+		// Set the priority to low. This is needed to handle the situations 
+		// where the engine is performing heavy processing while the application 
+		// is in background.
+		RProcess myProcess;
+		iOriginalProcessPriority = myProcess.Priority();
+		LOGFMT3(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleForegroundEventL: changing priority of process %Ld from %d to %d", myProcess.Id().Id(), iOriginalProcessPriority, EPriorityLow);
+		myProcess.SetPriority( EPriorityLow );
+		iProcessPriorityAltered = ETrue;
+		}
+	else if ( iProcessPriorityAltered )
+		{
+		// Return to normal priority.
+		RProcess myProcess;
+		TProcessPriority priority = myProcess.Priority();
+		if ( priority < iOriginalProcessPriority )
+			{
+			myProcess.SetPriority( iOriginalProcessPriority );
+			}
+		iProcessPriorityAltered = EFalse;
+		LOGFMT2(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleForegroundEventL: process %Ld back to normal priority %d", myProcess.Id().Id(), priority);
+		}
+
+	LOG(KVideoEditorLogFile, "CVeiSimpleCutVideoAppUi::HandleForegroundEventL: Out");
+	}
+
+// End of File