diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/common/inc/CamUtility.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/common/inc/CamUtility.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,453 @@ +/* +* 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: Utility functions for the Camera Application* +*/ + + + + +#ifndef CAMUTILITY_H +#define CAMUTILITY_H + +// INCLUDES +#include +#include + +#include +#include "CamPSI.h" // Product Specific Information +#include "CamSettings.hrh" // for TCamMediaStorage +#include "CamSettingsInternal.hrh" +#include "camlogging.h" +#include "camconfigurationtypes.h" + +#ifndef CAMERAAPP_PLUGIN_BUILD +#include "CamResourceIDs.h" +#endif //CAMERAAPP_PLUGIN_BUILD + +#include + +// CONSTANTS +/* estimated average image sizes */ +const TInt KCamImageSize3MP = 750000; +const TInt KCamImageSize2MP = 475000; +const TInt KCamImageSize1_3MP = 325000; +const TInt KCamImageSize1MP = 90000; +const TInt KCamImageSizeVGA = 56500; + +const TInt KCamLocationTrailStopped = 0; +const TInt KCamLocationTrailNoValidData = 1; +const TInt KCamLocationTrailSearchingDevice = 2; +const TInt KCamLocationTrailGPSDataAvail = 3; + +// A multiple of the image size is kept as a buffer to ensure that a +// complex last image can be captured +const TInt KCamImageDataBufferMultiplier = 1; + +// Name of the server that takes foreground when charger is inserted +_LIT( KAknCapServer, "akncapserver" ); +// Location data notification windows use this server. +_LIT( KAknNotifyServer, "aknnfysrv" ); + +// Phonebook server +_LIT( KPbkServer, "Pbk2ServerApp" ); + +// DATA TYPES +/** +* Memory card status, as returned by MemoryCardStatus() +*/ +enum TCamMemoryCardStatus + { + ECamMemoryCardNotInserted, + ECamMemoryCardLocked, + ECamMemoryCardInserted + }; + +#ifndef CAMERAAPP_PLUGIN_BUILD +#define ROID(resource_id) (CamUtility::ResourceOrientationID(resource_id)) + +// Capture tone resources +_LIT( KCamCaptureTone1, "z:\\system\\sounds\\digital\\cameraappCapture1.wav" ); +_LIT( KCamCaptureTone2, "z:\\system\\sounds\\digital\\cameraappCapture2.wav" ); +_LIT( KCamCaptureTone3, "z:\\system\\sounds\\digital\\cameraappCapture3.wav" ); +_LIT( KCamCaptureTone4, "z:\\system\\sounds\\digital\\cameraappCapture4.wav" ); +_LIT( KCamBurstCaptureTone1, "z:\\system\\sounds\\digital\\cameraappCaptureShort1.wav" ); +_LIT( KCamBurstCaptureTone2, "z:\\system\\sounds\\digital\\cameraappCaptureShort2.wav" ); +_LIT( KCamBurstCaptureTone3, "z:\\system\\sounds\\digital\\cameraappCaptureShort3.wav" ); +_LIT( KCamBurstCaptureTone4, "z:\\system\\sounds\\digital\\cameraappCaptureShort4.wav" ); +_LIT( KCamVideoStartTone, "z:\\system\\sounds\\digital\\cameraappStart.wav" ); +_LIT( KCamVideoPauseTone, "z:\\system\\sounds\\digital\\cameraappStop.wav" ); +_LIT( KCamVideoStopTone, "z:\\system\\sounds\\digital\\cameraappStop.wav" ); +_LIT( KCamAutoFocusComplete, "z:\\system\\sounds\\digital\\cameraappFocusSucc.wav" ); +_LIT( KCamSelfTimerTone, "z:\\system\\sounds\\digital\\cameraappSelfTimer.wav" ); + +#endif //CAMERAAPP_PLUGIN_BUILD + +// CLASS DECLARATION + +/** +* Application wide utility functions +* +* @since 2.8 +*/ + +class CamUtility + { + public : // New functions + + /** + * Get free space in selected memory + * @since 2.8 + * @param aMemory memory card or internal memory + * @param aCriticalLevel The critical threshold on the specified drive + * @return free space in selected memory (in bytes) + */ + static TInt64 MemoryFree( + DriveInfo::TDefaultDrives aMemory, + TInt aCriticalLevel = 0 ); + + /** + * Returns the memory card status. + * @since 2.8 + * @return the status. + */ + static TCamMemoryCardStatus MemoryCardStatus(); + + /** + * Get drive number for memory card. + * @since 2.8 + * @return drive number for memory card + */ + static TInt MemoryCardDrive(); + + /** + * Get drive number for phone memory. + * @since 2.8 + * @return drive number for phone memory + */ + static TInt PhoneMemoryDrive(); + + + /** + * Get drive number for mass storage memory. + * @since 3.2 + * @return drive number for mass storage memory + */ + static TInt MassMemoryDrive(); + + /** + * Get drive type for a given drive number. + * @since 3.2 + * @return DriveInfo::TDefaultDrives type for the drive number + */ + static TInt GetDriveTypeFromDriveNumber( TInt aDrive ); + + /** + * Map camera storage location to memory selection dialog storage location + * @param aStorage The camera storage location to map + * @since 3.0 + * @return the memory selection dialog's mapped memory storage location value + */ + static TInt MapToSettingsListMemory( TInt aStorage ); + + /** + * Map memory selection dialog storage location to camera storage location + * @param aStorage The settings list memory location to map + * @since 3.0 + * @return the camera storage location mapped from the memory selection dialog's location value + */ + static TInt MapFromSettingsListMemory( TInt aStorage ); + + /** + * Suggest a new unique filename + * @since 2.8 + * @param aFilePath (in/out) drive and path for file name + * (must include trailing '\') + * On return contains the full path and + * generated file name with extension + * @param aFilename (in/out) filename (without path or extension) + * @param aSuggestedNumeral number initially appended to the name to ensure + * uniqueness, the actual number used may be higher + * @param aExt file extension (".jpg" or ".3gp") + */ + static void GetUniqueNameL( TDes& aFilePath, + TDes& aFilename, + TInt aSuggestedNumeral, + const TDesC& aExt ); + + /** + * Generate a image file name based on base name and counter. + * @since 2.8 + * @param aCounter image counter [1...] + * @param aBaseName name base + * @param aFilename descriptor to hold the generated file name. + * Does not include path or extension. Example: + * "Image(001)" + */ + static void FormatFileName( TUint aCounter, + const TDesC& aBaseName, + TDes& aFilename ); + + /** + * Checks if given filename contains illegal characters or + * is otherwise illegal. + * @since 2.8 + * @param aFilename descriptor that holds file name to check. + */ + static TBool CheckFileNameValidityL( const TDesC& aFilename ); + + /** + * Generate a file name based on date and counter. + * @since 2.8 + * @param aFilename descriptor to hold the generated file name. + * Does not include path or extension. Example: + * "240305(001)" + */ + static void FormatDateFileNameL( TDes& aFilename ); + + /** + * Format current date into given descriptor in a format + * suitable for file names. + * @since 2.8 + * @param aBuffer the buffer to receive the formatted date. + */ + static void GetCurrentDateForNameBaseL( TDes& aBuffer ); + + + /** + * Return the path and filename of the application MBM file + * @since 2.8 + * @param aResName Populated with path and filename of MBM file + */ + static void ResourceFileName( TDes& aResName ); + + /** + * Return Product Specific Information in the form of a TInt + * @since 2.8 + * @param aKey The enumeration key identifying the data required + * @param aValue A reference to TInt that will hold the data + * @return KErrNone if successful, KErrNotSupported if no valid data. + */ + static TInt GetPsiInt( TCamPsiKey aKey, TInt& aValue ); + + /** + * Return Product Specific Information in the form of a TInt array + * @since 3.0 + * @param aKey The enumeration key identifying the data required + * @param aValue A reference to a TInt array that will hold the data + * @return KErrNone if successful, KErrNotSupported if no valid data. + */ + static TInt GetPsiIntArrayL( TCamPsiKey aKey, RArray& aValue ); + + /** + * Return Product Specific Information in the form of a TInt + * @since 2.8 + * @param aKey The enumeration key identifying the data required + * @param aValue A reference to TInt that will hold the data + * @return KErrNone if successful, KErrNotSupported if no valid data. + */ + static TInt GetCommonPsiInt( TCamPsiKey aKey, TInt& aValue ); + + /** + * Return Product Specific Information in the form of a TAny* + * @since 2.8 + * @param aKey The enumeration key identifying the data required + * @param aValue A pointer to where the data should be copied to. + * note, data is Mem::Copied, so sufficient space must be + * available in the buffer passed in to "aValue" + * @return KErrNone if successful, KErrNotSupported if no valid data. + */ + static TInt GetPsiAnyL( TCamPsiKey aKey, TAny* aValue ); + + /** + * Return maximum size for an MMS message + * @since 2.8 + * @return The maximum size + */ + static TInt MaxMmsSizeInBytesL(); + + /** + * Compares two strings. + * @since 2.8 + * @param aFirst The first string. + * @param aSecond The second string + * @return ETrue if the strings are equivalent. + */ + static TBool CompareIgnoreCase( const TDesC& aFirst, + const TDesC& aSecond ); + + /** + * Deletes a video clip. + * @since 2.8 + * @param aFilename The filename of the video clip + */ + static void DeleteVideoL( const TDesC& aFilename ); + + /** + * Deletes an image. + * @since 2.8 + * @param aFilename The filename of the image + */ + static void DeleteStillImageL( const TDesC& aFilename ); + + /** + * Returns the thumbnail path for an image. + * @since 2.8 + * @param aImagePath The path of the image + * @param aThumbnailPath The path of the thumbnail image + */ + static void GetThumbnailPath( const TDesC& aImagePath, + TDes& aThumbnailPath ); + + /** + * Renames a still image. + * @since 2.8 + * @param aOldPath The old path of the image + * @param aNewName The new name of the image + * @param aNewPath Receives the new path of the image. + */ + static void RenameStillImageL( const TDesC& aOldPath, + const TDesC& aNewName, + TDes& aNewPath ); + + /** + * Takes a window group ID and a group name. Checks to see if the + * window group referred to by the ID has a name containing the + * window group name string. + * @since 3.0 + * @param aWindowId ID of the window group + * @param aWindowGroupName Name to check for + * @return ETrue if ID matches name + */ + static TBool IdMatchesName( TInt aWindowId, const TDesC& aWindowGroupName ); + + /** + * Returns the correct resource ID for the current orientation + * @since 3.0 + * @param aDefaultResourceID The resource ID for the default orientation + * @return The new resource ID + */ + + static TInt ResourceOrientationID( TInt aDefaultResourceID ); + + /** + * Map light sensitivity id to ISO rating value. + * + */ + static TInt MapLightSensitivity2IsoValueL( TCamLightSensitivityId aLightSensitivityId, RArray& aSupportedValues ); + + /** + * Map UI sharpness setting id to Camera sharpness setting value. + * + */ + static TInt MapSharpnessId2SharpnessValueL( TCamImageSharpnessId aSharpnessId ); + + /** + * Obtain resource id for specific video reoslution + * (for primary camera) + * @since 3.0 + * @param aResolution video reoslution + * @return resource id + */ + static TInt MapVideoQualityToViewFinderRes( TCamVideoResolution aResolution ); + + /** + * Determines if the battery power is good + * @since 3.0 + * @return ETrue if the battery is OK, and EFalse if it is + * low or almost empty + */ + static TBool IsBatteryPowerOK(); + + /** + * Determines if the battery power is empty + * @since 3.0 + * @return ETrue if the battery is Empty + */ + static TBool IsBatteryPowerEmpty(); + + /** + * Determines if the battery is being charged + * @since 3.0 + * @return ETrue if the battery is charging + */ + static TBool IsBatteryCharging(); + + /** + * Determines if LocationTrail is started + * @return ETrue if LocationTrail is started + */ + static TBool IsLocationAware(); + + /** + * Replaces original bitmap by bitmap with alpha channel. + * @since S60 5.0 + * @param aBmp, bitmap + * @param aMask, mask + * @param aColor, Color used instead of white. + */ + static void SetAlphaL( CFbsBitmap*& aBmp, CFbsBitmap*& aMask, + TRgb aColor = KRgbWhite ); + + /** + * Determines if USB is active + * @return ETrue if USB is active + */ + static TBool IsUsbActive(); + + /** + * Determines if the device has a NHD display. + * This method is meant to be used with the layouts only + * @return ETrue if NHD (640 x 360) display + */ + static TBool IsNhdDevice(); + + /** + * Determines device qwerty-mode state. + * This method is meant to be used with secondary camera. + * @return ETrue if qwerty keyboard is open + */ + static TBool IsQwertyOpen(); + + /** + * Get layout rectangle for given resolution in given mode. + * @param aMode ECamControllerVideo or ECamControllerImage. + * @param aResolution Resolution enumeration from + * CCamAppController::GetCurrentVideoResolution or + * CCamAppController::GetCurrentImageResolution depending + * on the mode. + * + */ + static TRect ViewfinderLayout( TCamCameraMode aMode, + TInt aResolution ); + + private: + + /** + * Helper method for ViewfinderLayout. + */ + static TAknWindowLineLayout ViewfinderLayoutTouch( TCamCameraMode aMode, + TInt aResolution ); + + /** + * Helper method for ViewfinderLayout. + */ + static TAknWindowLineLayout ViewfinderLayoutNonTouch( TCamCameraMode aMode, + TInt aResolution ); + + + }; + +#endif // CAMUTILITY_H + +// End of File