diff -r 48060abbbeaf -r b3cee849fa46 screengrabber/inc/SGModel.h --- a/screengrabber/inc/SGModel.h Thu Aug 19 09:55:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,242 +0,0 @@ -/* -* Copyright (c) 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: -* -*/ - - - -#ifndef __SCREENGRABBER_MODEL_H__ -#define __SCREENGRABBER_MODEL_H__ - -#include -#include - -#include -#include -#include -#include -#include "SGStd.h" - - -#define TRANSPARENCY_INDEX 30 -#define TRANSPARENCY_ALTERNATIVE_INDEX 24 - - -// setting keys (do not change uids of existing keys to maintain compatibility to older versions!) -const TUid KSGSettingCaptureMode = { 0x00 }; - -const TUid KSGSettingSingleCaptureHotkey = { 0x01 }; -const TUid KSGSettingSingleCaptureImageFormat = { 0x02 }; -const TUid KSGSettingSingleCaptureMemoryInUse = { 0x03 }; -const TUid KSGSettingSingleCaptureMemoryInUseMultiDrive = { 0x04 }; -const TUid KSGSettingSingleCaptureFileName = { 0x05 }; - -const TUid KSGSettingSequantialCaptureHotkey = { 0x06 }; -const TUid KSGSettingSequantialCaptureImageFormat = { 0x07 }; -const TUid KSGSettingSequantialCaptureDelay = { 0x08 }; -const TUid KSGSettingSequantialCaptureMemoryInUse = { 0x09 }; -const TUid KSGSettingSequantialCaptureMemoryInUseMultiDrive = { 0x0A }; -const TUid KSGSettingSequantialCaptureFileName = { 0x0B }; - -const TUid KSGSettingVideoCaptureHotkey = { 0x0C }; -const TUid KSGSettingVideoCaptureVideoFormat = { 0x0D }; -const TUid KSGSettingVideoCaptureMemoryInUse = { 0x0E }; -const TUid KSGSettingVideoCaptureMemoryInUseMultiDrive = { 0x0F }; -const TUid KSGSettingVideoCaptureFileName = { 0x10 }; - - -class CImageEncoder; -class CFbsBitmap; -class CFrameImageData; -class CAknGlobalConfirmationQuery; -class CSavedQuery; -class CDictionaryFileStore; -class CMGXFileManager; -class CMGXFileNotificationHandler; - -class TGrabSettings - { -public: - TInt iCaptureMode; - - TInt iSingleCaptureHotkey; - TInt iSingleCaptureImageFormat; - CAknMemorySelectionSettingPage::TMemory iSingleCaptureMemoryInUse; - TDriveNumber iSingleCaptureMemoryInUseMultiDrive; - TFileName iSingleCaptureFileName; - - TInt iSequantialCaptureHotkey; - TInt iSequantialCaptureImageFormat; - TInt iSequantialCaptureDelay; - CAknMemorySelectionSettingPage::TMemory iSequantialCaptureMemoryInUse; - TDriveNumber iSequantialCaptureMemoryInUseMultiDrive; - TFileName iSequantialCaptureFileName; - - TInt iVideoCaptureHotkey; - TInt iVideoCaptureVideoFormat; - CAknMemorySelectionSettingPage::TMemory iVideoCaptureMemoryInUse; - TDriveNumber iVideoCaptureMemoryInUseMultiDrive; - TFileName iVideoCaptureFileName; - }; - - -class TVideoFrame - { -public: - TUint iWidth; - TUint iHeight; - TUint iXPos; - TUint iYPos; - TUint iDelay; // 100 = 1 sec - TBool iEnableTransparency; - TBool iFillsWholeScreen; - TFileName iFileStorePath; - }; - - -typedef CArrayFixSeg CVideoFrameArray; - - -class CScreenGrabberModel : public CActive, public MMdaAudioToneObserver - { - // active object states - enum TState - { - EIdle = 0, // do nothing - EEncodingImage, // ICL encoding of an image - ESequenceDelay, // waiting till next capture - ECancelCapturing, // asking to cancel capturing - ENextVideoFrame, // get next frame for video - ECancelVideoCapturing, // asking to cancel video capturing - EQueryDelay // waiting till to remove query - }; - -public: - static CScreenGrabberModel* NewL(); - ~CScreenGrabberModel(); - void ActivateModelL(); - void DeActivateModelL(); - -private: - CScreenGrabberModel(); - void ConstructL(); - - void RunL(); - void DoCancel(); - - void LoadSettingsL(); - void TakeScreenShotAndSaveL(); - void CaptureFrameForVideoL(); - void SaveVideoL(TInt aErr); - void CapturingFinishedL(TInt aErr); - void CleanTemporaryFilesL(); - TBool MemoryCardOK(); - TBool DriveOK(TDriveNumber aNumber); - void PlayBeepSound(); - void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TInt& aValue); - void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TDes& aValue); - void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TInt& aValue); - void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TDes& aValue); - TInt UpdateFileToGallery(const TDesC& aFullPath); - -public: - inline TGrabSettings GrabSettings() { return iGrabSettings; } - void SaveSettingsL(TGrabSettings aGrabSettings); - void ActivateCaptureKeysL(TBool aChangeKey=EFalse); - void CancelCapturing(); - TBool HandleCaptureCommandsL(const TWsEvent& aEvent); - void MatoPrepareComplete(TInt aError); - void MatoPlayComplete(TInt aError); - -private: - CMdaAudioToneUtility* iMdaAudioToneUtility; // a tone player - TGrabSettings iGrabSettings; // a simple class to store the settings used in the screen capture - CEikonEnv* iEnv; // pointer to our eikon environment - RWindowGroup iRootWin; // application's window group - TInt iCapturedKey; // a handle to the key which is captured - TInt iCapturedKeyUnD; // a handle to the key which is captured, up and down - TInt iCapturedKeyHash; // a handle to the hash key which is captured - TInt iCapturedKeyHashUnD; // a handle to the hash key which is captured, up and down - CImageEncoder* iImageEncoder; // engine from ICL to do the image conversion - CFbsBitmap* iPreviouslyCapturedBitmap; // a previously captured bitmap - TState iState; // state of this active object - TFileName iSaveFileName; // target filename of the taken screen shot - CFrameImageData* iFrameImageData; // frame and image block data needed by ICL - CSavedQuery* iSavedQuery; // a class to display global queries - RTimer iTimer; // a timer for async delays - TBool iCapturingInProgress; // boolean to check if capturing is in progress - TBool iStopCapturing; // boolean to specify if to ask capturing - TUint iNumberOfTakenShots; // a number of the taken screen shots in the sequantial mode - TUint iCurrentFrameNumber; // a number of taken frames in video mode - TTime iPreviousFrameTaken; // time when the last frame was taken - TSize iVideoDimensions; // dimension of the video - TSize iPreviousFrameScreenDimension; // dimension of the screen in previous frame - CVideoFrameArray* iVideoFrameArray; // the frames of the video - TBool iHashKeyCapturingActivated; // captures hash key is activated - TBool iHashKeyDown; // stores state if hash key is currently down - TBool iGalleryUpdaterSupported; // specifies if it is possible to update the file to gallery - TBool iGalleryUpdaterInitialized; // specifies if gallery updater has been initialized or not - RLibrary iGalleryUpdaterDLL; // specifies pointer to Media Gallery File API DLL - CMGXFileManager* iMGXFileManager; // Media Gallery FileManager instance - }; - - -class CSavedQuery : public CActive - { -public: - static CSavedQuery* NewL(); - ~CSavedQuery(); - void DisplayL(const TDesC &aText, TBool aDisplayErrorNote=EFalse); - -private: - void DoCancel(); - void RunL(); - -private: - CSavedQuery(); - void ConstructL(); - void DisplayWithGraphicsL(const TDesC &aText, TBool aDisplayErrorNote); - void DisplayWithoutGraphicsL(const TDesC &aText); - -private: - CAknGlobalConfirmationQuery* iGlobalConfirmationQuery; - TBool iVisible; - }; - - -// these classes have been copied Media Gallery File API - -class MGXFileManagerFactory - { - public: - static CMGXFileManager* NewFileManagerL( RFs& aFs ); - static - CMGXFileNotificationHandler* NewFileNotificationHandlerL(); - }; - -class CMGXFileManager : public CBase - { - public: - virtual TBool SuccessFileNameL( const TDesC& aFileName, - TDriveNumber aDrive ) = 0; - virtual void UpdateL() = 0; - virtual void UpdateL( const TDesC& aFullPath ) = 0; - virtual void UpdateL( const TDesC& aOldName, - const TDesC& aNewName ) = 0; - virtual void UpdateL( const MDesCArray& aFileNameArray ) = 0; - }; - - -#endif // __SCREENGRABBER_MODEL_H__ \ No newline at end of file