diff -r 000000000000 -r 951a5db380a0 videditor/SimpleCutVideo/src/VeiSimpleCutVideoAppUi.cpp --- /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 +#include +#include +#include // HlpLauncher +#include +#include +#include +#include +#include + +// 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* 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