--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videditor/ManualVideoEditor/src/VeiAppUi.cpp Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,374 @@
+/*
+* 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 <manualvideoeditor.rsg>
+#include <sendui.h> // CSendAppUi
+#include <stringloader.h>
+#include <bautils.h>
+#include <apparc.h>
+
+// User includes
+#include "manualvideoeditor.hrh"
+#include "VeiAppUi.h"
+#include "VeiEditVideoView.h"
+#include "VeiSettingsView.h"
+#include "VeiCutVideoView.h"
+#include "VeiCutAudioView.h"
+#include "VeiTrimForMmsView.h"
+#include "VeiTempMaker.h"
+#include "VideoEditorCommon.h"
+
+
+// ================= MEMBER FUNCTIONS =======================
+//
+// ----------------------------------------------------------
+// CVeiAppUi::ConstructL()
+// ?implementation_description
+// ----------------------------------------------------------
+//
+void CVeiAppUi::ConstructL()
+ {
+ LOG( KVideoEditorLogFile, "CVeiAppUi::ConstructL In" );
+
+ BaseConstructL( EAppOrientationAutomatic | EAknEnableSkin );
+
+ CVeiTempMaker* maker = CVeiTempMaker::NewL();
+ maker->EmptyTempFolder();
+ delete maker;
+
+ iSendAppUi = CSendUi::NewL();
+ /*
+ * 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
+ iCutVideoView = new( ELeave )CVeiCutVideoView;
+ iCutVideoView->ConstructL();
+
+ // Cut Audio view
+ iCutAudioView = CVeiCutAudioView::NewL();
+
+ // Edit Video view
+ iEditVideoView = CVeiEditVideoView::NewL( *iCutVideoView, * iCutAudioView, * iSendAppUi );
+
+ AddViewL( iEditVideoView ); // transfer ownership to CAknViewAppUi
+ LOG( KVideoEditorLogFile, "CVeiAppUi::ConstructL EditVideoView OK" );
+
+ AddViewL( iCutAudioView );
+ LOG( KVideoEditorLogFile, "CVeiAppUi::ConstructL CutAudioView OK" );
+
+ AddViewL( iCutVideoView ); // transfer ownership to CAknViewAppUi
+ LOG( KVideoEditorLogFile, "CVeiAppUi::ConstructL CutVideoView OK" );
+
+ //Trim for MMS view
+ iTrimForMmsView = CVeiTrimForMmsView::NewL( *iSendAppUi );
+ AddViewL( iTrimForMmsView ); // Transfer ownership to CAknViewAppUi
+ LOG( KVideoEditorLogFile, "CVeiAppUi::ConstructL TrimForMmsView OK" );
+
+ //Settings view
+ iSettingsView = CVeiSettingsView::NewL();
+ AddViewL( iSettingsView ); // Transfer ownership to CAknViewAppUi
+ LOG( KVideoEditorLogFile, "CVeiAppUi::ConstructL SettingsView OK" );
+
+ iVolume = - 1; // Volume not set
+
+ iCoeEnv->RootWin().EnableScreenChangeEvents();
+
+ SetDefaultViewL( *iEditVideoView );
+
+ LOG( KVideoEditorLogFile, "CVeiAppUi::ConstructL Out" );
+ }
+
+// ----------------------------------------------------
+// CVeiAppUi::~CVeiAppUi()
+// Destructor
+// Frees reserved resources
+// ----------------------------------------------------
+//
+CVeiAppUi::~CVeiAppUi()
+ {
+ LOG( KVideoEditorLogFile, "CVeiAppUi::~CVeiAppUi: In" );
+
+ delete iSendAppUi;
+
+ LOG( KVideoEditorLogFile, "CVeiAppUi::~CVeiAppUi: Out" );
+ }
+
+//=============================================================================
+CVeiAppUi::CVeiAppUi()
+ {
+ }
+
+//=============================================================================
+void CVeiAppUi::InsertVideoClipToMovieL( TBool aDoOpen, const TDesC& aFilename )
+ {
+ LOGFMT( KVideoEditorLogFile, "CVeiAppUi::InsertVideoClipTomovieL (%S)", &aFilename );
+
+
+ if ( iEditVideoView )
+ {
+ iEditVideoView->AddClipL( aFilename, aDoOpen );
+ }
+ }
+
+// ----------------------------------------------------
+// CVeiAppUi::HandleKeyEventL(
+// const TKeyEvent& aKeyEvent,TEventCode /*aType*/)
+// ?implementation_description
+// ----------------------------------------------------
+//
+TKeyResponse CVeiAppUi::HandleKeyEventL( const TKeyEvent& /*aKeyEvent*/,
+ TEventCode /*aType*/ )
+ {
+ return EKeyWasNotConsumed;
+ }
+
+
+// ----------------------------------------------------
+// CVeiAppUi::HandleCommandL(TInt aCommand)
+// ?implementation_description
+// ----------------------------------------------------
+//
+void CVeiAppUi::HandleCommandL( TInt aCommand )
+ {
+ LOGFMT( KVideoEditorLogFile, "CVeiAppUi::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 EVeiCmdSettingsViewHelp:
+ case EVeiCmdTrimForMmsViewHelp:
+ case EVeiCmdEditVideoViewHelp:
+ 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;
+
+ iEditVideoView->HandleCommandL( EAknSoftkeyOk );
+ Exit();
+ break;
+ }
+ default:
+ break;
+ }
+ LOG( KVideoEditorLogFile, "CVeiAppUi::HandleCommandL: Out" );
+ }
+
+//=============================================================================
+void CVeiAppUi::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
+ {
+ /* Read the default filenames from resources */
+ HBufC* videoName = iEikonEnv->AllocReadResourceLC( R_VEI_SETTINGS_VIEW_SETTINGS_ITEM_VALUE );
+
+ const CFont* myFont = AknLayoutUtils::FontFromId( EAknLogicalFontSecondaryFont );
+
+ aSettings.DefaultVideoName() = AknTextUtils::ChooseScalableText( videoName->Des(), * myFont, 400 );
+ CleanupStack::PopAndDestroy( videoName );
+
+ 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 CVeiAppUi::WriteSettingsL( const TVeiSettings& aSettings )const
+ {
+ 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 CVeiAppUi::HandleScreenDeviceChangedL()
+ {
+ LOG( KVideoEditorLogFile, "CVeiAppUi::HandleScreenDeviceChangedL: In" );
+ CAknViewAppUi::HandleScreenDeviceChangedL();
+ if ( iEditVideoView )
+ {
+ iEditVideoView->HandleScreenDeviceChangedL();
+ }
+ LOG( KVideoEditorLogFile, "CVeiAppUi::HandleScreenDeviceChangedL: Out" );
+ }
+
+//=============================================================================
+void CVeiAppUi::HandleResourceChangeL( TInt aType )
+ {
+ LOG( KVideoEditorLogFile, "CVeiAppUi::HandleResourceChangeL: In" );
+ CAknAppUi::HandleResourceChangeL( aType );
+ if ( iEditVideoView )
+ {
+ iEditVideoView->HandleResourceChange( aType );
+ }
+ if ( iCutVideoView )
+ {
+ iCutVideoView->HandleResourceChange( aType );
+ }
+ if ( iCutAudioView )
+ {
+ iCutAudioView->HandleResourceChange( aType );
+ }
+ if ( iTrimForMmsView )
+ {
+ iTrimForMmsView->HandleResourceChange( aType );
+ }
+ LOG( KVideoEditorLogFile, "CVeiAppUi::HandleResourceChangeL: Out" );
+ }
+
+//=============================================================================
+void CVeiAppUi::HandleFileNotificationEventL()
+ {
+ LOG( KVideoEditorLogFile, "CVeiAppUi::HandleFileNotificationEventL: In" );
+ if ( iEditVideoView )
+ {
+ if ( iEditVideoView->WaitMode() == CVeiEditVideoView ::EProcessingMovieSaveThenQuit )
+ {
+ HandleCommandL( EAknCmdExit );
+ }
+ }
+ LOG( KVideoEditorLogFile, "CVeiAppUi::HandleFileNotificationEventL: Out" );
+ }
+
+//=============================================================================
+void CVeiAppUi::HandleForegroundEventL( TBool aForeground )
+ {
+ LOGFMT( KVideoEditorLogFile, "CVeiAppUi::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,
+ "CVeiAppUi::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,
+ "CVeiAppUi::HandleForegroundEventL: process %Ld back to normal priority %d", myProcess.Id().Id(), priority );
+ }
+
+ LOG( KVideoEditorLogFile, "CVeiAppUi::HandleForegroundEventL: Out" );
+ }
+
+//=============================================================================
+TErrorHandlerResponse CVeiAppUi::HandleError ( TInt aError,
+ const SExtendedError & aExtErr,
+ TDes & aErrorText,
+ TDes & aContextText )
+ {
+ LOGFMT( KVideoEditorLogFile, "CVeiAppUi::HandleError: %d", aError );
+
+ // Let the framework handle errors
+ return CAknViewAppUi::HandleError ( aError, aExtErr, aErrorText, aContextText );
+ }
+
+// End of File