diff -r 48060abbbeaf -r b3cee849fa46 screengrabber/src/enginewrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/screengrabber/src/enginewrapper.cpp Tue Aug 31 15:15:20 2010 +0300 @@ -0,0 +1,250 @@ +/* +* Copyright (c) 2010 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: +* +*/ +#include +#include +#include +#include "enginewrapper.h" + +#include "settingsview.h" +#include "sgengine.h" +#include "mainview.h" +#include "notifications.h" + + +// --------------------------------------------------------------------------- + +EngineWrapper::EngineWrapper() +: iSGEngine(0), iProgressNote(0) +{ +} + +// --------------------------------------------------------------------------- + +EngineWrapper::~EngineWrapper() +{ + if (iSGEngine) { + iSGEngine->DeActivateModelL(); + delete iSGEngine; + } + if(iProgressNote){ + delete iProgressNote; + } +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::init() +{ + TRAPD(error, iSGEngine = SGEngine::NewL(this)); + + + if (error == KErrNone) { + TRAP(error, iSGEngine->ActivateModelL()); + } + + if (error != KErrNone) { + return false; + } + else { + return true; + } + +} + +// --------------------------------------------------------------------------- + +GrabSettings EngineWrapper::getGrabSettings() +{ + TGrabSettings tSettings = iSGEngine->GrabSettings(); + GrabSettings settings; + + // Convert TGrabSettings to GrabSettings + settings.mCaptureMode = tSettings.iCaptureMode; + + // Single image settings + settings.mSingleCaptureHotkey = tSettings.iSingleCaptureHotkey; + settings.mSingleCaptureImageFormat = tSettings.iSingleCaptureImageFormat; + settings.mSingleCaptureMemoryInUseMultiDrive = tSettings.iSingleCaptureMemoryInUseMultiDrive; + settings.mSingleCaptureFileName = QString((QChar*)tSettings.iSingleCaptureFileName.Ptr(),tSettings.iSingleCaptureFileName.Length()); + + //Seguantial image settings + settings.mSequantialCaptureDelay = tSettings.iSequantialCaptureDelay; + settings.mSequantialCaptureHotkey = tSettings.iSequantialCaptureHotkey; + settings.mSequantialCaptureImageFormat = tSettings.iSequantialCaptureImageFormat; + settings.mSequantialCaptureMemoryInUseMultiDrive = tSettings.iSequantialCaptureMemoryInUseMultiDrive; + settings.mSequantialCaptureDelay = tSettings.iSequantialCaptureDelay; + //convert TFilename to QString + settings.mSequantialCaptureFileName = QString((QChar*)tSettings.iSequantialCaptureFileName.Ptr(),tSettings.iSequantialCaptureFileName.Length()); + + + // Video settings + settings.mVideoCaptureHotkey = tSettings.iVideoCaptureHotkey; + settings.mVideoCaptureVideoFormat = tSettings.iVideoCaptureVideoFormat; + settings.mVideoCaptureMemoryInUseMultiDrive = tSettings.iVideoCaptureMemoryInUseMultiDrive; + //convert TFilename to QString + settings.mVideoCaptureFileName = QString((QChar*)tSettings.iVideoCaptureFileName.Ptr(),tSettings.iVideoCaptureFileName.Length()); + + return settings; +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::saveSettings(const GrabSettings& settings) +{ + TGrabSettings tSettings; + // Convert GrabSettings to TGrabSettings + tSettings.iCaptureMode = settings.mCaptureMode; + + tSettings.iSingleCaptureHotkey = settings.mSingleCaptureHotkey; + tSettings.iSingleCaptureImageFormat = settings.mSingleCaptureImageFormat; + tSettings.iSingleCaptureMemoryInUseMultiDrive = settings.mSingleCaptureMemoryInUseMultiDrive; + //convert TFilename to QString + tSettings.iSingleCaptureFileName = TFileName(settings.mSingleCaptureFileName.utf16()); + tSettings.iSequantialCaptureDelay = settings.mSequantialCaptureDelay; + tSettings.iSequantialCaptureHotkey = settings.mSequantialCaptureHotkey; + tSettings.iSequantialCaptureImageFormat = settings.mSequantialCaptureImageFormat; + tSettings.iSequantialCaptureMemoryInUseMultiDrive = settings.mSequantialCaptureMemoryInUseMultiDrive; + tSettings.iSequantialCaptureDelay = settings.mSequantialCaptureDelay; + //convert TFilename to QString + tSettings.iSequantialCaptureFileName = TFileName(settings.mSequantialCaptureFileName.utf16()); + + tSettings.iVideoCaptureHotkey = settings.mVideoCaptureHotkey; + tSettings.iVideoCaptureVideoFormat = settings.mVideoCaptureVideoFormat; + tSettings.iVideoCaptureMemoryInUseMultiDrive = settings.mVideoCaptureMemoryInUseMultiDrive; + //convert TFilename to QString + tSettings.iVideoCaptureFileName = TFileName(settings.mVideoCaptureFileName.utf16()); + TRAPD(error, iSGEngine->SaveSettingsL(tSettings)); + + if (error == KErrNone) { + TRAP(error, iSGEngine->ActivateCaptureKeysL(true)); + } + + if (error == KErrNone) { + return true; + } + else { + return false; + } + + +} + +// --------------------------------------------------------------------------- + + +void EngineWrapper::ShowImageCapturedNote() +{ + Notifications::imageCaptured(); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::ShowErrorMessage(const TDesC16& aErrorMessage) +{ + QString errorMessage((QChar*)aErrorMessage.Ptr(),aErrorMessage.Length()); + Notifications::error(errorMessage); + +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::sendUIToBackground() +{ + CCoeEnv* coeEnv = CCoeEnv::Static(); + TApaTask selfTask(coeEnv->WsSession()); + selfTask.SetWgId(coeEnv->RootWin().Identifier()); + selfTask.SendToBackground(); +} + +// --------------------------------------------------------------------------- + + +#if defined(HB_QT_S60_EVENT_FILTER) +bool EngineWrapper::handleCaptureCommands(const TWsEvent* aEvent) +#else +bool EngineWrapper::handleCaptureCommands(const QSymbianEvent *aEvent) +#endif +{ + TBool retVal = ETrue; + TRAPD(errorCode, retVal = iSGEngine->HandleCaptureCommandsL(aEvent)); + if (errorCode != KErrNone) { + Notifications::error("Error occured when capturing screen."); + } + + return convertTBoolToBool(retVal); + +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::convertTBoolToBool(TBool value) +{ + if (value) { + return true; + } + else { + return false; + } +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::ShowSequantialImagesCapturedNote(TInt amount) +{ + Notifications::sequantialImagesCaptured(amount); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::ShowVideoCapturedNote() +{ + Notifications::videoCaptured(); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::ShowProgressBar(int max) +{ + iProgressNote = Notifications::showProgressBar(max); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::IncrementProgressbarValue() +{ + iProgressNote->setProgressValue(iProgressNote->progressValue() + 1); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::CloseProgressbar() +{ + delete iProgressNote; + iProgressNote = 0; +} + +void EngineWrapper::EnableRcpOfFoc(TBool aState) +{ + iSGEngine->EnableRcpOfFoc(aState); +} + +void EngineWrapper::LoadSettings(void) +{ + iSGEngine->LoadSettingsL(); +} + +// ---------------------------------------------------------------------------