diff -r 6465d5bb863a -r 13e71d907dc3 profilesservices/MediaFileList/Src/mediafilevideopreviewdialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/profilesservices/MediaFileList/Src/mediafilevideopreviewdialog.cpp Thu Nov 04 13:38:47 2010 +0800 @@ -0,0 +1,350 @@ +/* +* Copyright (c) 2007 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: Dialog create for video preview +* +*/ + + + +#include +#include "mediafilevideopreviewdialog.h" +#include "mediafilepreview.h" +#include + + + +/****************************************************************************** + * class CVideoPreviewDialog + ******************************************************************************/ + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::ShowDialogLD +// +// NOTE: ExecuteLD deletes dialog object. +// ----------------------------------------------------------------------------- +TBool CVideoPreviewDialog::ShowDialogLD( TInt* aError ) + { + iError = aError; + *iError = KErrNone; + + TBool ret = ExecuteLD( R_VIDEO_PREVIEW_DIALOG ); + + return ret; + } + +// ---------------------------------------------------------------------------- +// Destructor +// +// ---------------------------------------------------------------------------- +// +CVideoPreviewDialog::~CVideoPreviewDialog() + { + CCoeEnv::Static()->RemoveForegroundObserver( *this ); + + delete iIdle; + + if ( iVideoHandlerCreated ) + { + delete iVideoHandler; + } + + if ( iAvkonAppUi ) + { + iAvkonAppUi->RemoveFromStack( this ); + } + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::CVideoPreviewDialog +// +// ----------------------------------------------------------------------------- +// +CVideoPreviewDialog::CVideoPreviewDialog( TAny* aVideoHandler ) + { + if ( aVideoHandler ) + { + iVideoHandler = static_cast( aVideoHandler ); + //iVideoHandler = aVideoHandler; + } + iVideoHandlerCreated = EFalse; + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::NewL +// +// ----------------------------------------------------------------------------- +CVideoPreviewDialog* CVideoPreviewDialog::NewL( TAny* aVideoHandler ) + { + CVideoPreviewDialog* self = new (ELeave) CVideoPreviewDialog( aVideoHandler ); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + return self; + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::ConstructL +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::ConstructL() + { + CCoeEnv::Static()->AddForegroundObserverL( *this ); + + CAknDialog::ConstructL( R_VIDEO_PREVIEW_DIALOG_MENU ); + + if ( !iVideoHandler ) + { + iVideoHandler = CMFVideoPreviewHandler::NewL(); + iVideoHandlerCreated = ETrue; + } + + iVideoHandler->SetObserver( this ); + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::SetAttrL +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::SetAttrL( TInt aAttr, TInt aValue ) + { + iVideoHandler->SetAttrL( aAttr, aValue ); + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::SetAttrL +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::SetAttrL( TInt aAttr, const TDesC& aValue ) + { + iVideoHandler->SetAttrL( aAttr, aValue ); + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::SetAttr +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::SetAttrL( TInt aAttr, TAny* aValue ) + { + iVideoHandler->SetAttrL( aAttr, aValue ); + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::PreLayoutDynInitL +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::PreLayoutDynInitL() + { + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::PostLayoutDynInitL +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::PostLayoutDynInitL() + { + // dialog has two lines (see .rss). Listbox line id is 1 + //CEikCaptionedControl *ctrl = Line( 1 ); + //iVideoPreviewHandler->SetAttrL( TMFDialogUtil::EAttrDrawingWindow, (ctrl->iControl->DrawableWindow()) ); + + iVideoHandler->SetAttrL( TMFDialogUtil::EAttrDrawingWindow, DrawableWindow() ); + iVideoHandler->PlayL(); + } + + +//------------------------------------------------------------------------------ +// CVideoPreviewDialog::OkToExitL +// +//------------------------------------------------------------------------------ +// +TBool CVideoPreviewDialog::OkToExitL(TInt aButtonId) + { + if ( aButtonId == EEikBidCancel ) + { + if ( iVideoHandler->IsPlaying() ) + { + iVideoHandler->Stop(); + } + + return ETrue; // close dialog + } + + if ( aButtonId == EAknSoftkeySelect || aButtonId == EEikBidOk ) + { + if ( iVideoHandler->IsPlaying() ) + { + iVideoHandler->Stop(); + } + return ETrue; // close dialog + } + + if ( aButtonId == EAknSoftkeyBack ) + { + if ( iVideoHandler->IsPlaying() ) + { + iVideoHandler->Stop(); + } + return ETrue; // close dialog + } + + return CAknDialog::OkToExitL( aButtonId ); + } + + +// ---------------------------------------------------------------------------- +// CVideoPreviewDialog::HandleResourceChange +// +// ---------------------------------------------------------------------------- +// +void CVideoPreviewDialog::HandleResourceChange(TInt aType) + { + if ( aType == KEikDynamicLayoutVariantSwitch ) + { + // handle change in layout orientation + + CAknDialog::HandleResourceChange( aType ); + + TRAP_IGNORE( iVideoHandler->SetDisplayWindowL() ); + return; + } + } + + +//------------------------------------------------------------------------------ +// CVideoPreviewDialog::ProcessCommandL +// +// Handle commands from menu. +//------------------------------------------------------------------------------ +// +void CVideoPreviewDialog::ProcessCommandL(TInt aCommandId) + { + HideMenu(); + + switch (aCommandId) + { + case EAknCmdExit: + case EEikCmdExit: + { + // close dialog and exit calling application + iAvkonAppUi->ProcessCommandL( EAknCmdExit ); + break; + } + + default: + break; + } + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::CloseDialogWithDelayL +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::CloseDialogWithDelayL() + { + // close after short delay (dialog cannot be closed from this function) + delete iIdle; + iIdle = NULL; + iIdle = CIdle::NewL( CActive::EPriorityIdle ); + if ( iIdle ) + { + iIdle->Start( TCallBack( CloseDialog, this ) ); + } + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::CloseDialogL() +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::CloseDialogL() + { + // close the dialogue immediately + CloseDialog( this ); + } + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::CloseDialog +// +// ----------------------------------------------------------------------------- +// +TInt CVideoPreviewDialog::CloseDialog( TAny *aObj ) + { + CVideoPreviewDialog *dlg = (CVideoPreviewDialog*) aObj; + + TRAP_IGNORE( dlg->TryExitL( EAknSoftkeyBack ) ); + + return 0; + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::HandlePreviewEventL (from MPreviewHandlerObserver) +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::HandlePreviewEventL( TInt aEvent, TInt aError ) + { + if ( aEvent == MPreviewHandlerObserver::EVideoPreviewComplete ) + { + *iError = aError; + CVideoPreviewDialog::CloseDialogWithDelayL(); + } + + if ( aEvent == MPreviewHandlerObserver::EPreviewError ) + { + *iError = aError; + CVideoPreviewDialog::CloseDialogWithDelayL(); + } + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::HandleLosingForeground (from MCoeForegroundObserver) +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::HandleLosingForeground() + { + TRAP_IGNORE( CVideoPreviewDialog::CloseDialogWithDelayL() ); + } + + +// ----------------------------------------------------------------------------- +// CVideoPreviewDialog::HandleGainingForeground (from MCoeForegroundObserver) +// +// ----------------------------------------------------------------------------- +// +void CVideoPreviewDialog::HandleGainingForeground() + { + } + +// End of File