diff -r 8b2d6d0384b0 -r d9aefe59d544 camerauis/cameraapp/generic/src/CamVideoPostCaptureView.cpp --- a/camerauis/cameraapp/generic/src/CamVideoPostCaptureView.cpp Tue Feb 02 00:01:39 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,573 +0,0 @@ -/* -* Copyright (c) 2007-2009 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: Video Post-capture view class for Camera application* -*/ - - -// INCLUDE FILES - -#include -#include -#include -#include -#include -#include -#include -#ifndef __WINS__ - //#include - #include // CAknInformationNote -#endif - -#include -#include - -#include "CamAppUiBase.h" -#include "CamAppController.h" -#include "CamVideoPostCaptureView.h" -#include "CamPostCaptureContainer.h" -#include "CamLogger.h" -#include "CamAppUi.h" -#include "CamAppUiBase.h" -#include "CamUtility.h" -#include "Cam.hrh" -#include "camactivepalettehandler.h" -#include "camoneclickuploadutility.h" -#include "CameraUiConfigManager.h" - - - -//CONSTANTS - -// ========================= MEMBER FUNCTIONS ================================ - - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::NewLC -// Symbian OS two-phased constructor -// --------------------------------------------------------------------------- -// -CCamVideoPostCaptureView* CCamVideoPostCaptureView::NewLC( CCamAppController& aController ) - { - CCamVideoPostCaptureView* self = - new( ELeave ) CCamVideoPostCaptureView( aController ); - - CleanupStack::PushL( self ); - self->ConstructL(); - - return self; - } - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView destructor -// -// --------------------------------------------------------------------------- -// -CCamVideoPostCaptureView::~CCamVideoPostCaptureView() - { - } - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::Id -// Returns UID of view -// --------------------------------------------------------------------------- -// -TUid CCamVideoPostCaptureView::Id() const - { - return TUid::Uid( ECamViewIdVideoPostCapture ); - } - -// ----------------------------------------------------------------------------- -// CCamVideoPostCaptureView::HandleCommandL -// Handle commands -// ----------------------------------------------------------------------------- -// -void CCamVideoPostCaptureView::HandleCommandL( TInt aCommand ) - { - switch ( aCommand ) - { - case ECamCmdRenameVideo: - { - CCamAppUi* appUi = static_cast( AppUi() ); - QueryRenameL( ECamControllerVideo ); - - // inform the Media gallery of name change - TRAPD( ignore, - appUi->HandleControllerEventL( ECamEventMediaFileChanged, KErrNone ) ); - if ( ignore ) - { - // Do nothing (removes build warning) - } - break; - } - case EAknSoftkeySelect: - { - // In post-capture select key is disabled when embedded - if ( !iEmbedded ) - { - CEikMenuBar* menuBar = MenuBar(); - if ( menuBar ) - { - menuBar->SetMenuTitleResourceId( ROID(R_CAM_VIDEO_POST_CAPTURE_OK_MENUBAR_ID)); - menuBar->TryDisplayMenuBarL(); - menuBar->SetMenuTitleResourceId( ROID(R_CAM_VIDEO_POST_CAPTURE_MENUBAR_ID)); - } - CCamPostCaptureViewBase::HandleCommandL( aCommand ); - } - else - { - AppUi()->HandleCommandL( ECamCmdSelect ); - } - } - break; - case ECamCmdSend: - case ECamCmdSendToCallerMultimedia: - case ECamCmdQuickSend: - { - CCamPostCaptureViewBase::HandleCommandL( aCommand ); - } - break; - default: - { - PRINT1( _L("Camera => CCamVideoPostCaptureView::HandleCommandL default cmd (%d)"), aCommand ) - // Handle AIW commands - TInt aiwServiceCmd = iAiwServiceHandler->ServiceCmdByMenuCmd( aCommand ); - if ( aiwServiceCmd != KAiwCmdNone ) - { - PRINT1( _L("Camera => CCamVideoPostCaptureView::HandleCommandL default handle AIW cmd (%d)" ), aiwServiceCmd) - CAiwGenericParamList& inParams = iAiwServiceHandler->InParamListL(); - CAiwGenericParamList& outParams = iAiwServiceHandler->OutParamListL(); - // Add file path to AIW parameters - TAiwVariant variant( iController.CurrentFullFileName() ); - TAiwGenericParam param( EGenericParamFile, variant ); - inParams.AppendL( param ); - - // Don't add the mime type if uploading, since Share client - // will figure it out from the file - if ( aiwServiceCmd != KAiwCmdUpload ) - { - TAiwGenericParam param2( EGenericParamMIMEType, _L("video/*") ); - inParams.AppendL( param2 ); - } - - iAiwServiceHandler->ExecuteMenuCmdL( aCommand, inParams, outParams, 0, this ); - // we are 'embedding' Edit app - static_cast( AppUi() )->SetEmbedding( ETrue ); - } - else - { - CCamPostCaptureViewBase::HandleCommandL( aCommand ); - } - - } - } - } - -// ----------------------------------------------------------------------------- -// CCamVideoPostCaptureView::DisplayDeleteNoteL() -// Delete the current file -// ----------------------------------------------------------------------------- -// -TBool CCamVideoPostCaptureView::DisplayDeleteNoteL() - { - // Display the delete confirmation note - TInt err = KErrNone; - HBufC* confirmationText; - confirmationText = StringLoader::LoadLC( R_CAM_VIDEO_POST_CAPTURE_DELETE_NOTE_TEXT ); - CAknQueryDialog* confirmationDialog = - new( ELeave )CAknQueryDialog( *confirmationText ); - CleanupStack::PopAndDestroy( confirmationText ); - if ( confirmationDialog->ExecuteLD( R_CAM_VIDEO_POST_CAPTURE_DELETE_NOTE ) ) - { - if ( iEmbedded ) - { - BlankSoftkeysL(); - Cba()->DrawNow(); - SetSoftKeysL( R_CAM_SOFTKEYS_SELECT_DELETE__SELECT ); - } - err = iController.DeleteCurrentFile(); - if ( err ) - { - User::Leave( err ); - } - return ETrue; - } - else - { - if ( iEmbedded ) - { - BlankSoftkeysL(); - Cba()->DrawNow(); - SetSoftKeysL( R_CAM_SOFTKEYS_SELECT_DELETE__SELECT ); - } - return EFalse; - } - } - -// ----------------------------------------------------------------------------- -// CCamVideoPostCaptureView::DoActivateL() -// Activate this view -// ----------------------------------------------------------------------------- -// -void CCamVideoPostCaptureView::DoActivateL( - const TVwsViewId& aPreViewId, - TUid aCustomMessageId, - const TDesC8& aCustomMessage ) - { - // Ensure the correct menu is used for the current mode. - CEikMenuBar* menuBar = MenuBar(); - if ( menuBar ) - { - menuBar->SetMenuTitleResourceId( - ROID( R_CAM_VIDEO_POST_CAPTURE_MENUBAR_ID ) ); - } - - CCamAppUi* appUi = static_cast( AppUi() ); - - if ( iController.IsTouchScreenSupported() ) - { - if ( appUi->IsSecondCameraEnabled() ) - { - if ( iOneClickUploadUtility->OneClickUploadSupported() ) - { - TInt resourceId = appUi->IsQwerty2ndCamera()? - R_CAM_VIDEO_POSTCAPTURE_TOOLBAR_LANDSCAPE_UPLOAD: - R_CAM_VIDEO_POSTCAPTURE_TOOLBAR_PORTRAIT_UPLOAD; - CreateAndSetToolbarL( resourceId ); - } - else - { - TInt resourceId = appUi->IsQwerty2ndCamera()? - R_CAM_VIDEO_POSTCAPTURE_TOOLBAR_LANDSCAPE: - R_CAM_VIDEO_POSTCAPTURE_TOOLBAR_PORTRAIT; - CreateAndSetToolbarL( resourceId ); - } - } - else - { - if ( iOneClickUploadUtility->OneClickUploadSupported() ) - { - CreateAndSetToolbarL( R_CAM_VIDEO_POSTCAPTURE_TOOLBAR_UPLOAD ); - } - else - { - CreateAndSetToolbarL( R_CAM_VIDEO_POSTCAPTURE_TOOLBAR ); - } - } - } - - iAiwServiceHandler->Reset(); - iAiwServiceHandler->AttachMenuL( ROID( R_CAM_VIDEO_POST_CAPTURE_MENU_ID ), - R_CAM_SHARE_ON_OVI_INTEREST ); - - CCamPostCaptureViewBase::DoActivateL( - aPreViewId, aCustomMessageId, aCustomMessage ); - - if ( !iController.IsTouchScreenSupported() ) - { - TCamOrientation orientation = appUi->CamOrientation(); - - CCamActivePaletteHandler* apHandler = appUi->APHandler(); - if( !iEmbedded && ( orientation == ECamOrientationCamcorder || - orientation == ECamOrientationCamcorderLeft ) ) - { - iContainer->CreateActivePaletteL(); - MActivePalette2UI* activePalette = - appUi->APHandler()->ActivePalette(); - - if(activePalette) - { - activePalette->SetGc(); - } - - // install still pre-capture items - apHandler->InstallAPItemsL( R_CAM_VIDEO_POST_CAPTURE_AP_ITEMS ); - - // Hide Send or Send to caller - ResetSendAvailabilityL( apHandler ); - apHandler->SetView( this ); - - // Make AP visible - appUi->SetAlwaysDrawPostCaptureCourtesyUI( ETrue ); - } - else - { - } - } - iAiwServiceHandler->AttachMenuL( ROID( R_CAM_VIDEO_POST_CAPTURE_MENU_ID ), - R_CAM_SET_AS_RING_TONE_INTEREST ); - } - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::CCamVideoPostCaptureView -// C++ constructor -// --------------------------------------------------------------------------- -// -CCamVideoPostCaptureView::CCamVideoPostCaptureView( CCamAppController& aController ) - : CCamPostCaptureViewBase( aController ) - { - } - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::ConstructL -// Symbian OS 2nd phase constructor -// --------------------------------------------------------------------------- -// -void CCamVideoPostCaptureView::ConstructL() - { - PRINT( _L("Camera => CCamVideoPostCaptureView::ConstructL")) - BaseConstructL( ROID(R_CAM_VIDEO_POST_CAPTURE_VIEW_ID)); - CCamPostCaptureViewBase::ConstructL(); - - iAiwServiceHandler->AttachMenuL( ROID( R_CAM_VIDEO_POST_CAPTURE_MENU_ID ), R_CAM_SHARE_ON_OVI_INTEREST ); - - PRINT( _L("Camera <= CCamVideoPostCaptureView::ConstructL")) - } - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::DoDeactivate -// Deactivate this view -// --------------------------------------------------------------------------- -// -void CCamVideoPostCaptureView::DoDeactivate() - { - CCamPostCaptureViewBase::DoDeactivate(); - } - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::SetTitlePaneTextL -// Set the view's title text -// --------------------------------------------------------------------------- -// -void CCamVideoPostCaptureView::SetTitlePaneTextL() - { - TBool titleAlwaysShowsFileName = EFalse; - CCamAppUiBase* appUi = static_cast( AppUi() ); - - if ( appUi->CamOrientation() == ECamOrientationViewMode || - titleAlwaysShowsFileName ) - { - appUi->SetTitleL( iController.CurrentImageName() ); - } - } - - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::ProcessCommandL -// Handling ECamCmdToggleActiveToolbar from any of the PostCaptureView's -// either Image/Video. -// --------------------------------------------------------------------------- -// -void CCamVideoPostCaptureView::ProcessCommandL( TInt aCommand ) - { - CCamAppUi* appUi = static_cast( AppUi() ); - TCamOrientation orientation = appUi->CamOrientation(); - if( orientation == ECamOrientationCamcorder || - orientation == ECamOrientationCamcorderLeft || - orientation == ECamOrientationPortrait ) - { - if ( aCommand == ECamCmdToggleActiveToolbar ) - { - CCamPostCaptureViewBase::HandleCommandL( aCommand ); - } - else - { - CAknView::ProcessCommandL( aCommand ); - } - } - else - { - if ( aCommand == EAknSoftkeyContextOptions ) - { - iRockerKeyPress = ETrue; - MenuBar()->SetContextMenuTitleResourceId( - ROID(R_CAM_VIDEO_POST_CAPTURE_MENU_ID ) ); - MenuBar()->SetMenuType( CEikMenuBar::EMenuContext ); - MenuBar()->TryDisplayMenuBarL(); - MenuBar()->SetMenuType( CEikMenuBar::EMenuOptions ); - } - else - { - CAknView::ProcessCommandL( aCommand ); - } - - } - // CALL THE BASE CLASS - - } - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::DynInitMenuPaneL -// Changes MenuPane dynamically -// --------------------------------------------------------------------------- -// -void CCamVideoPostCaptureView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane ) - { - PRINT( _L("Camera => CCamVideoPostCaptureView::DynInitMenuPaneL")) - - if ( iAiwServiceHandler ) - { - PRINT( _L("Camera => CCamVideoPostCaptureView::DynInitMenuPaneL aiw")) - - // let AIW handle it's own submenus - if ( iAiwServiceHandler->HandleSubmenuL( *aMenuPane ) ) - { - PRINT( _L("Camera => CCamVideoPostCaptureView::DynInitMenuPaneL aiw handle sub")) - return; - } - } - - CCamPostCaptureViewBase::DynInitMenuPaneL( aResourceId, aMenuPane ); - - PRINT( _L("Camera => CCamVideoPostCaptureView::DynInitMenuPaneL A")) - if ( iAiwServiceHandler && iAiwServiceHandler->IsAiwMenu( aResourceId ) ) - { - PRINT1( _L("Camera => CCamVideoPostCaptureView::DynInitMenuPaneL res ID (%d)"),aResourceId ) - CAiwGenericParamList& paramList = iAiwServiceHandler->InParamListL(); - TAiwVariant variant( iController.CurrentFullFileName() ); - TAiwGenericParam param( EGenericParamFile, variant ); - paramList.AppendL( param ); - - TAiwVariant variant2( _L("video/*") ); - TAiwGenericParam param2( EGenericParamMIMEType, variant2 ); - paramList.AppendL( param2 ); - - PRINT( _L("Camera => CCamVideoPostCaptureView::DynInitMenuPaneL C")) - iAiwServiceHandler->InitializeMenuPaneL( - *aMenuPane, - aResourceId, - ECamCmdAIWCommands, - paramList ); - - PRINT( _L("Camera => CCamVideoPostCaptureView::DynInitMenuPaneL D")) - } - - TInt itemPos(0); - - if ( aResourceId == ROID( R_CAM_VIDEO_POST_CAPTURE_MENU_ID ) || - aResourceId == ROID( R_CAM_VIDEO_POST_CAPTURE_OK_MENU_ID ) ) - { - TBool showSend = ETrue; - TBool showSendToCaller = EFalse; - -/*#ifndef __WINS__ - if ( iSFIUtils->IsCLIValidL() ) - { - showSend = EFalse; - showSendToCaller = ETrue; - - if ( iController.IntegerSettingValue( ECamSettingItemVideoQuality ) - == ECamVideoQualityHigh ) - { - showSendToCaller = EFalse; - } - } -#endif*/ - - if ( !iController.IsTouchScreenSupported() || - !iOneClickUploadUtility->OneClickUploadSupported() ) - { - // In non-touch UI Send/Send to caller are always in AP. - // No need for Options menu items. - - // If 1-click upload is not supported in touch UI, then there is - // a send button in the fixed toolbar. There is no need to - // have it in Options menu. - showSend = EFalse; - showSendToCaller = EFalse; - } - - if( aMenuPane->MenuItemExists( ECamCmdSendToCallerMultimedia, itemPos ) ) - { - aMenuPane->SetItemDimmed( - ECamCmdSendToCallerMultimedia, !showSendToCaller ); - } - - if( aMenuPane->MenuItemExists( ECamCmdSend, itemPos ) ) - { - aMenuPane->SetItemDimmed( - ECamCmdSend, !showSend ); - } - - /* - * MSK : ContextOptions --> We just hide Help and Exit from the Options Menu when - * the MSK is pressed in the postcapture still view - * iRockerKeyPress represents MSK key event in still postcapture view - */ - if ( aMenuPane->MenuItemExists( EAknCmdHelp, itemPos ) && - aMenuPane->MenuItemExists( ECamCmdInternalExit, itemPos ) ) - { - if ( iRockerKeyPress ) - { // We hide Help and Exit - aMenuPane->SetItemDimmed( EAknCmdHelp, ETrue ); - aMenuPane->SetItemDimmed( ECamCmdInternalExit, ETrue ); - iRockerKeyPress = EFalse; - } - else - { // We show Help and Exit - aMenuPane->SetItemDimmed( EAknCmdHelp, EFalse ); - aMenuPane->SetItemDimmed( ECamCmdInternalExit, EFalse ); - } - } - } - } - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::HandleNotifyL -// Handles any notification caused by asynchronous ExecuteCommandL -// or event. -// --------------------------------------------------------------------------- -// -TInt CCamVideoPostCaptureView::HandleNotifyL( - TInt /*aCmdId*/, - TInt aEventId, - CAiwGenericParamList& /*aEventParamList*/, - const CAiwGenericParamList& /*aInParamList*/ ) - { - //AIW fails to assign. eg. the contact is locked for being used now. - if ( aEventId == KAiwEventError && iController.IsAppUiAvailable() ) - { - CCamAppUi* appUi = static_cast( AppUi() ); - TRAP_IGNORE( appUi->HandleCameraErrorL( KErrInUse ) ); - } - - return 0; - } - -// --------------------------------------------------------------------------- -// CCamVideoPostCaptureView::DynInitToolbarL -// Dynamically initialize toolbar contents -// --------------------------------------------------------------------------- -// -void CCamVideoPostCaptureView::DynInitToolbarL( TInt aResourceId, - CAknToolbar* aToolbar ) - { - PRINT2( _L("Camera => CCamVideoPostCaptureView::DynInitToolbarL(%d, 0x%X)" ), aResourceId, aToolbar ); - (void)aResourceId; // remove compiler warning - - // fixed toolbar is used only with touch devices - if ( iController.IsTouchScreenSupported() && iEmbedded && aToolbar ) - { - // HideItem will not do anything if a button for the given - // command ID is not found. - aToolbar->HideItem( ECamCmdSend, ETrue, EFalse ); - aToolbar->HideItem( ECamCmdDelete, ETrue, EFalse ); - aToolbar->HideItem( ECamCmdOneClickUpload, ETrue, EFalse ); - aToolbar->HideItem( ECamCmdPlay, ETrue, EFalse ); - } - - PRINT2( _L("Camera <= CCamVideoPostCaptureView::DynInitToolbarL(%d, 0x%X)" ), aResourceId, aToolbar ); - } - - -// End of File