diff -r 072a5fa0c63b -r c6bafb5162d8 voicerecorder/AppSrc/CVRAppUI.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/voicerecorder/AppSrc/CVRAppUI.cpp Wed Sep 01 12:29:14 2010 +0100 @@ -0,0 +1,436 @@ +/* +* Copyright (c) 2002-2006 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: + * This class is a part of the standard application framework. + * It instantiates the application views. + * It also acts as the default command handler for the application. + * +*/ + + + +#include +#include + +#include // For layout change event definitions + +#include "CVRRecView.h" +#include "MVRSelectionProvider.h" +#include "CVRAppUi.h" +#include +#include +#include "CVRDocument.h" +#include +#include "VRConsts.h" + +#include +#include +#include "voicerecorder.hrh" +#include "VRUtils.h" +#include "CVRSettingsDialog.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef RD_MULTIPLE_DRIVE +#include +#endif +#include +_LIT( KVRCommandRecord, "record" ); + +// --------------------------------------------------------------------------- +// CVRAppUi::CVRAppUi +// +// --------------------------------------------------------------------------- +// +CVRAppUi::CVRAppUi() + { + } + + +// --------------------------------------------------------------------------- +// CVRAppUi::~CVRAppUi +// +// --------------------------------------------------------------------------- +// +CVRAppUi::~CVRAppUi() + { + if (iActiveWait.IsStarted()) + { + iActiveWait.AsyncStop(); + } + + if (iDoorObserver) + { + iDoorObserver->NotifyExit(MApaEmbeddedDocObserver::EEmpty); + } + + delete iErrorUI; + FeatureManager::UnInitializeLib(); + } + +// --------------------------------------------------------------------------- +//CVRAppUi::ConstructL +// +// --------------------------------------------------------------------------- +// +void CVRAppUi::ConstructL() + { + BaseConstructL( EAknEnableSkin | EAknEnableMSK +#ifdef SINGLE_CLICK_INCLUDED + | EAknSingleClickCompatible +#endif + ); + + iErrorUI = CErrorUI::NewL(); + + // Exit if video or voip call is ongoing + if ( VRUtils::UnsupportedCallTypeOngoing( ETrue ) ) + { + Exit(); + } + + FeatureManager::InitializeLibL(); + + if ( FeatureManager::FeatureSupported( KFeatureIdMmc ) ) + { + +#ifndef RD_MULTIPLE_DRIVE + TVRDriveInfo mmcInfo; + VRUtils::GetMMCInfo( mmcInfo ); + TVRMemoStore memoStore = VRUtils::MemoStoreL(); + + if ( memoStore == EMemoStoreMMC ) + { + // check if USB is connected, if so, then need to switch to phone memory + if (CVRUSBStateHanlder::IsUsbActive()) + { + HBufC* noteText = iCoeEnv->AllocReadResourceLC( + R_QTN_MEMC_VOREC_NOTE1 ); + CAknInformationNote* infoNote = + new( ELeave ) CAknInformationNote( ETrue ); + infoNote->ExecuteLD( *noteText ); + CleanupStack::PopAndDestroy( noteText ); + VRUtils::SetMemoStoreL( EMemoStorePhoneMemory ); + } + + // MMC not available or locked + else if ( memoStore && ( mmcInfo.iDriveLocked || !mmcInfo.iDrivePresent ) ) + { + HBufC* noteText = iCoeEnv->AllocReadResourceLC( + R_QTN_MEMC_VOREC_NOTE1 ); + CAknInformationNote* infoNote = + new( ELeave ) CAknInformationNote( ETrue ); + infoNote->ExecuteLD( *noteText ); + CleanupStack::PopAndDestroy( noteText ); + VRUtils::SetMemoStoreL( EMemoStorePhoneMemory ); + } + else if ( mmcInfo.iDriveReadOnly ) + { + HBufC* noteText = iCoeEnv->AllocReadResourceLC( + R_QTN_MEMC_VOREC_NOTE2 ); + CAknInformationNote* infoNote = + new( ELeave ) CAknInformationNote( ETrue ); + infoNote->ExecuteLD( *noteText ); + CleanupStack::PopAndDestroy( noteText ); + VRUtils::SetMemoStoreL( EMemoStorePhoneMemory ); + } + else if ( mmcInfo.iDriveCorrupted ) + { + // MMC corrupted -> use phone memory + VRUtils::SetMemoStoreL( EMemoStorePhoneMemory ); + } + + } +// for multiple drives +#else + + +#endif + } + + CVRRecView* view = CVRRecView::NewLC(R_VR_RECORDER_VIEW, + R_VR_RECVIEW_STATES); + + AddViewL( view ); + iLayoutChangeObserver = view; + CleanupStack::Pop( view ); + + SetDefaultViewL( *view ); + + // Activate view straight away, if started through new file service + if (iEikonEnv->StartedAsServerApp()) + { + ActivateLocalViewL(TUid::Uid(KVRRecorderViewUID), TUid::Uid( + EContextRecordNewForRemote), KNullDesC8); + } + + } + +// --------------------------------------------------------------------------- +// CVRAppUi::HandleCommandL +// +// --------------------------------------------------------------------------- +// +void CVRAppUi::HandleCommandL( TInt aCommand ) + { + switch ( aCommand ) + { + case EAknSoftkeyExit: // Fall through + { + if ( iView ) + { + iView->HandleCommandL( ECmdCancelNote ); + } + Exit(); + break; + } + case EEikCmdExit: + { + if ( iView ) + { + iView->HandleCommandL( ECmdCancelNote ); + } + + // The file service needs to abort if it's still going on + if (iEmbeddedObserver) + { + CNewFileServiceBase * iNewFileService = NULL; + iNewFileService + = dynamic_cast (iEmbeddedObserver); + if (iNewFileService != NULL) + { + iNewFileService->SetErrorCode(KErrAbort); + } + iEmbeddedObserver->AbortL(); + } + + Exit(); + break; + } + case EAknCmdExit: + { + if ( iView ) + { + iView->HandleCommandL( ECmdCancelNote ); + } + + // The file service needs to abort if it's still going on + if (iEmbeddedObserver) + { + CNewFileServiceBase * iNewFileService = NULL; + iNewFileService + = dynamic_cast (iEmbeddedObserver); + if (iNewFileService != NULL) + { + iNewFileService->SetErrorCode(KErrAbort); + } + iEmbeddedObserver->AbortL(); + } + + Exit(); + break; + } + case ECmdHelp: + { + if (FeatureManager::FeatureSupported(KFeatureIdHelp)) + { + if (iIsSettingsOpen) + { + CArrayFix* contexts = AppHelpContextL(); + contexts->At(0).iContext = KVOREC_HLP_SETTINGS; + HlpLauncher::LaunchHelpApplicationL( + iEikonEnv->WsSession(), contexts); + } + else + { + HlpLauncher::LaunchHelpApplicationL( + iEikonEnv->WsSession(), AppHelpContextL()); + } + } + break; + } + case ECmdSettings: + { + if (FeatureManager::FeatureSupported(KFeatureIdMmc) + || VRUtils::FeatureEnabled(EVRFeatureShowQualitySetting)) + { + iIsSettingsOpen = ETrue; + CVRSettingsDialog* settingsDlg = CVRSettingsDialog::NewL(); + settingsDlg->ExecuteLD(R_VR_SETTINGS_DIALOG); + iIsSettingsOpen = EFalse; + } + break; + } + case ECmdNewFileServiceNotify: + { + if (iActiveWait.IsStarted()) + { + iActiveWait.AsyncStop(); + } + break; + } + case ECmdEmbeddedRecordingReady: + { + if (iEmbeddedObserver) + { + TBool canExit(ETrue); + + TVRSelectionStyle selStyle; + TPtrC memoFile(SelectionProviderL()-> GetSelectedFilesLC( + selStyle)-> MdcaPoint(0)); + if (memoFile.Length() > 0) + { + TFileName myFilename(memoFile); + canExit = iEmbeddedObserver->FileCompleteL(myFilename); + } + + // destroy array from GetSelectedFilesLC() + CleanupStack::PopAndDestroy(); + + if ( canExit ) + { + HandleCommandL( EEikCmdExit ); + } + else + { + // Wait until file service has completed + // transfering filename array back to client + if( !iActiveWait.IsStarted() ) + { + iActiveWait.Start(); // CSI: 10 # + } + } + } + break; + } + + default: + { + break; + } + } + } + +// --------------------------------------------------------------------------- +// CVRAppUi::SelectionProviderL +// +// --------------------------------------------------------------------------- +// +MVRSelectionProvider* CVRAppUi::SelectionProviderL() + { + return reinterpret_cast< CVRRecView* >( iView ); + } + +// --------------------------------------------------------------------------- +// CVRAppUi::HandleResourceChangeL +// +// --------------------------------------------------------------------------- +// +void CVRAppUi::HandleResourceChangeL( TInt aType ) + { + CAknViewAppUi::HandleResourceChangeL( aType ); + + if (iLayoutChangeObserver != NULL && (aType == KEikDynamicLayoutVariantSwitch || aType + == KAknsMessageSkinChange)) + { + iLayoutChangeObserver->LayoutChangedL(aType); + } + } + +// --------------------------------------------------------------------------- +// CVRAppUi::RecordNewFileL +// +// --------------------------------------------------------------------------- +// +void CVRAppUi::RecordNewFileL( RFile& aFile, MVREmbeddedObserver* aObserver ) + { + if ( aObserver ) + { + iEmbeddedObserver = aObserver; + + if ( aFile.SubSessionHandle() != 0) + { + // Pass file handle to recview + SelectionProviderL()->SetFileHandle( aFile ); + } + } + } + +// --------------------------------------------------------------------------- +// CVRAppUi::ProcessCommandParametersL +// +// --------------------------------------------------------------------------- +// +TBool CVRAppUi::ProcessCommandParametersL( TApaCommand /*aCommand*/, + TFileName& aDocumentName, const TDesC8& aTail ) + { + + // Check if we got "-record" as command line parameter + // convert 8-bit descriptor to a 16-bit one without altering data. + const TUint16* ptr16 = reinterpret_cast (aTail.Ptr()); + TPtrC16 tail(ptr16, aTail.Size() >> 1); + + if (aDocumentName.Compare(KVRCommandRecord) == 0 || tail.Compare( + KVRCommandRecord) == 0) + { + // Enter recording context + ActivateLocalViewL(TUid::Uid(KVRRecorderViewUID), TUid::Uid( + EContextRecordNewNormal), KNullDesC8); + return EFalse; + } + else // No record parameter, start normally + { + ActivateLocalViewL(TUid::Uid(KVRRecorderViewUID), TUid::Uid( + EContextEmptyNormal), KNullDesC8); + } + + if ( !ConeUtils::FileExists( aDocumentName ) ) + { + aDocumentName.Copy( aTail ); + } + return ConeUtils::FileExists( aDocumentName ); + } + +// --------------------------------------------------------------------------- +// CVRAppUi::HandleApplicationSpecificEventL +// +// --------------------------------------------------------------------------- +// +void CVRAppUi::HandleApplicationSpecificEventL(TInt aType, + const TWsEvent& aEvent) + { + if( aType == EAknSoftkeyExit || aType == KAknShutOrHideApp) + { + Exit(); + } + CEikAppUi::HandleApplicationSpecificEventL(aType, aEvent); + } + +// --------------------------------------------------------------------------- +// CVRAppUi::SetEmbeddedObserver +// +// --------------------------------------------------------------------------- +// +void CVRAppUi::SetEmbeddedObserver( MVREmbeddedObserver* aObserver ) + { + iEmbeddedObserver = aObserver; + } + +// End of file