--- a/camerauis/cameraapp/generic/inc/CamAppController.h Thu Aug 19 09:36:57 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2695 +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: Class for managing intercommunication between Camcera UI*
-*/
-
-
-#ifndef CAMAPPCONTROLLER_H
-#define CAMAPPCONTROLLER_H
-
-
-// ===========================================================================
-// INCLUDES
-#include <e32base.h>
-
-#include <cflistener.h> // publish zoom state related
-#include <cfclient.h>
-
-#include <sensrvdatalistener.h>
-#include <sensrvchannel.h>
-#include <sensrvorientationsensor.h>
-
-#include "MCamAppController.h"
-#include "CamControllerObservers.h"
-#include "mcamsettingsmodelobserver.h"
-#include "CamSettings.hrh"
-#include "Cam.hrh" // TCamSoundId
-#include "CamSettingsInternal.hrh"
-
-#include "mcamplayerobserver.h"
-
-#include "CamImageSaveActive.h"
-#include "CamCallStateAo.h"
-#include "CamObserver.h"
-#include "CamBurstModeObserver.h"
-#include "CamPerformance.h"
-
-#ifndef __WINSCW__
-#include <rlocationtrail.h>
-#endif
-
-#include "CamPropertyObserver.h"
-
-// <CAMERAAPP_CAPI_V2_MIGRATION>
-#include "mcamcameraobserver.h"
-#include "camcamerarequests.h"
-#include "camfolderutility.h"
-#include "camcameracontroller.h"
-#include "CamDriveChangeNotifier.h"
-#include "CamSyncRotatorAo.h"
-#include "camtvaccessorymonitor.h"
-
-// ===========================================================================
-// CONSTANTS
-
-// !Do not change the order of these without careful consideration!
-//
-enum TCamCameraState
- {
- ECamCameraIdle = 0,
- ECamCameraReserved = 1 << 0,
- ECamCameraPowerOn = 1 << 1,
- ECamCameraPreparedImage = 1 << 2,
- ECamCameraPreparedVideo = 1 << 3,
- ECamCameraStateLast // Not valid state, only marker
- };
-
-/**
-* Flags for ongoing operations
-*/
-enum TCamBusyFlags
- {
- EBusyNone = 0,
- EBusyRequest = 1<<0,
- EBusySequence = 1<<1,
- EBusySetting = 1<<2,
- EBusyLast // Marker
- };
-
-enum TCamHdmiEvent
- {
- ECamHdmiNoEvent,
- ECamHdmiCableConnectedBeforeRecording,
- ECamHdmiCableConnectedDuringRecording
- };
-
-// ===========================================================================
-// FORWARD DECLARATIONS
-class CRepository;
-//class CCamSettingsModelBase;
-class MCamAppController;
-class MCamSettingsModel;
-class MCamSettingPreviewHandler; // <CAMERAAPP_CAPI_V2_MIGRATION/>
-//class CCamConstantSettingProvider; // <CAMERAAPP_CAPI_V2_MIGRATION/>
-class CCamSettingProvider; // <CAMERAAPP_CAPI_V2_MIGRATION/>
-class CCamTimer;
-class CCamObserverHandler;
-class CCamBurstCaptureArray;
-class CCamAudioPlayerController;
-class MCamStaticSettings;
-class CCamGSInterface;
-class CCameraUiConfigManager;
-class CCamPropertyWatcher;
-class CCamSnapShotRotator;
-
-
-class CCamFlashStatus;
-class CCamConfiguration;
-class CCFClient;
-
-// ===========================================================================
-// CLASS DECLARATION
-
-class TCamAppControllerInfo
- {
- public:
- TCamAppControllerInfo();
-
- public:
- TCamActiveCamera iActiveCamera;
-
- TCamCameraMode iMode;
- TCamCameraMode iTargetMode;
-
- TCamImageCaptureMode iImageMode; // ECamImageCaptureNone in video controller mode
- TCamImageCaptureMode iTargetImageMode;
-
- TCamCaptureOperation iOperation; // Current operation
-
- // Target viewfinder state and mode
- TCamCameraTriState iTargetVfState;
- TBool iViewfinderMirror; // set when viewfinder initialized
-
- // Target image parameters
- TInt iTargetImageResolution;
- TInt iTargetImageQuality;
-
- // Target video parameters
- /** not supported yet */
-
- // Request being handled
- TCamCameraRequestId iBusyRequestId;
- };
-
-
-/**
-* Handle intercommunication between camcorder UI and engine.
-*
-* @since 2.8
-*/
-class CCamAppController : public CBase,
- public MCamAppController,
- public MCamSettingsModelObserver,
- public MCamCameraObserver,
- public MCamImageSaveObserver,
- public MCamCallStateObserver,
- public MPropertyObserver,
- public MSensrvDataListener,
- public MCamPlayerObserver,
- public MCamObserver,
- public MCamBurstModeObserver,
- public MCFListener
- ,public MCamDriveChangeNotifierObserver
- ,public MBitmapRotationObserver,
- public MCamTvAccessoryObserver
-
- {
- public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- * @since 2.8
- * @return pointer to the created CCamAppController object
- */
- static CCamAppController* NewL();
-
-
- /**
- * Complete construction of the engine and issue notification requests.
- * The camera engine cannot be instantiated until the application
- * orientation has been set by the CCamAppUi. This does not
- * exist when the CCamAppController is constructed. CompleteConstructionL
- * must be called in the CCamAppUi::ConstructL()
- * @since 3.0
- */
- void CompleteConstructionL();
-
-
- /**
- * Destructor.
- * @since 2.8
- */
- virtual ~CCamAppController();
-
- public:
- /**
- * Calls CamSettingModel to save user defined FT setting
- * @since S60 5.0
- * @param None
- * @return None
- */
- void StoreFaceTrackingValue();
-
- // -------------------------------------------------------
- // From MCamCameraObserver
- public:
-
- virtual void HandleCameraEventL( TInt aStatus,
- TCamCameraEventId aEventId,
- TAny* aEventData /*= NULL*/ );
-
-
-
- // -------------------------------------------------------
- // from MCamSettingsModelObserver
- public:
-
- virtual void IntSettingChangedL( TCamSettingItemIds aSettingItem,
- TInt aSettingValue );
- virtual void TextSettingChangedL( TCamSettingItemIds aSettingItem,
- const TDesC& aSettingValue );
-
-
- // -------------------------------------------------------
- // from MCamBurstModeObserver
-
- /**
- * Burst mode activation has changed
- * @since 2.8
- * @param aActive whether or not burst mode is active
- * @param aStillModeActive whether or not still capture is active
- */
- virtual void BurstModeActiveL( TBool aActive, TBool aStillModeActive );
-
- // -------------------------------------------------------
- // from MCamAudioPlayerObserver
- virtual void PlayComplete( TInt aStatus, TInt aSoundId );
-
-
- // -------------------------------------------------------
- public:
- // From MCFListener ( Context framework for publishing zoom state.
- /**
- * Indicates a change in context for subscribed clients.
- * If client has subscribed to partial context class path,
- * only the changed context will be indicated.
- *
- * @since S60 4.0
- * @param aIndication: Context indication.
- * @return None
- */
- inline void ContextIndicationL(
- const CCFContextIndication& /*aChangedContext*/ ) {};
-
- /**
- * Indicates that specified action is needed to be executed.
- * When action indication is received certain rule has been triggered
- * and action is needed to be performed.
- *
- * @since S60 4.0
- * @param aActionToExecute Action indication.
- * @return None
- */
- inline void ActionIndicationL(
- const CCFActionIndication& /*aActionToExecute*/ ) {};
-
- /**
- * Indicates that error has occured.
- * @since S60 4.0
- * @param aError Error code.
- * @return None
- */
- inline void HandleContextFrameworkError( TCFError /*aError*/,
- const TDesC& /*aSource*/,
- const TDesC& /*aType*/ ){};
-
- /**
- * Returns an extension interface.
- * The extension interface is mapped with the extension UID.
- *
- * If the client does not support the requested interface,
- * client must return NULL. Otherwise client needs to return
- * the correct interface combined with the UID.
- *
- * @since S60 5.0
- * @param aExtensionUid: The identifier of the extension.
- * @return Pointer to the extension.
- */
- inline TAny* Extension( const TUid& /*aExtensionUid*/ ) const { return NULL; };
-
- // New Function
-
- /*
- * Method to publish the zoom key and setting the
- * value or the state to enabled or disabled.
- * @Paran aEnabled used to set the the state of zoom key
- * to be enabled or disabled.
- */
- void PublishZoomStateL( const TBool aEnabled );
-
- public:
-
- /**
- * Returns whether or not the current profile is silent
- * @since 3.0
- * @return ETrue if current profile is silent
- */
- TBool IsProfileSilent();
-
- /**
- * Returns whether or not we have touch screen support in the device
- * @return ETrue if device supports touch screen
- */
- TBool IsTouchScreenSupported();
-
- /**
- * Returns whether or not we have direct screen viewfinder support in the device
- * @return ETrue if device supports direct screen viewfinder
- */
- TBool IsDirectScreenVFSupported( TBool aPrimaryCamera = ETrue );
-
- // ---------------------------------------------------------------------------
- //Helper function for making notification about deleted files
- //Added this method to do notification if files have been
- //deleted outside camera application and then camera is
- //put back to foreground in postcapture view.
- //Security note. Contents of the files might have been
- //changed when camera was in background.
- // ---------------------------------------------------------------------------
- //
- void MediaFileChangedNotification();
-
- TBool EngineRequestsPending() const;
- /**
- * Set settings restore to be done at earliest
- * convenient time.
- */
- void SetSettingsRestoreNeeded();
-
- /**
- * Set the flag to indicate that the original values
- * of remaining images is stored
- */
- void SetRemainingImageStored();
-
- /**
- * Returns the flag that indicates if the original value
- * of remaing images is stored or not.
- */
- TBool IsRemainingImageStored() const;
-
- /**
- * Return whether saving is still in progress.
- */
- TBool IsSavingInProgress() const;
-
- /**
- * Return if settings restore is set pending.
- */
- TBool IsSettingsRestoreNeeded() const;
-
-
- void RestartTimeLapseTimerL();
-
-
- static TInt CamerasAvailable();
-
- /**
- * Is time lapse supported.
- * Value read from Central Repository.
- */
- TBool TimeLapseSupported();
-
- /**
- * Is time lapse supported.
- * Value read from Central Repository.
- */
- TBool AlwaysOnSupported();
-
- /**
- * Release version number.
- * Value read from Central Repository.
- */
- const TVersion& Version();
-
- /***
- * Can a new request be made to controller or not.
- * Shutdown may be requested at any moment.
- */
- TBool Busy() const;
-
- /**
- * Returns true if the last captured image was saved
- * @since 2.8
- * @return ETrue if the last captured image has been saved.
- */
- TBool SavedCurrentImage() const;
-
- /**
- * Rename image/video.
- * @since 2.8
- * @param aNewName the new name for the current capture array file.
- * @param aMode the current capture mode.
- * @return ETrue if the file has been renamed successfully.
- */
- TBool RenameCurrentFileL( const TDesC& aNewName,
- const TCamCameraMode& aMode );
-
- /**
- * Add a controller observer.
- * @since 2.8
- * @param aObserver Pointer to an object implementing
- * MCamControllerObserver
- * @return ?description
- */
- void AddControllerObserverL( const MCamControllerObserver* aObserver );
-
- /**
- * Remove a controller observer
- * @since 2.8
- * @param aObserver Pointer to the observer to remove. The object
- * does not have to be added as an observer.
- */
- void RemoveControllerObserver
- ( const MCamControllerObserver* aObserver );
-
- /**
- * Add camera observer.
- * Forwards call to CCamCameraController.
- * @see CCamCameraController for more details.
- */
- void AddCameraObserverL( const MCamCameraObserver* aObserver,
- const TUint& aEventInterest );
-
- /**
- * Removes camera observer.
- * Forwards call to CCamCameraController.
- * @see CCamCameraController for more details.
- */
- void RemoveCameraObserver( const MCamCameraObserver* aObserver );
-
- void AddSettingsObserverL( const MCamSettingsModelObserver* aObserver );
- void RemoveSettingsObserver( const MCamSettingsModelObserver* aObserver );
-
- TBool CameraControllerBusy() const;
- TUint CameraControllerState() const;
-
- TCamCameraState CameraState() const;
- TCamCameraMode CurrentMode() const;
- TCamCameraMode TargetMode() const;
- TCamImageCaptureMode CurrentImageModeSetup() const;
- TCamCaptureOperation CurrentOperation() const;
- TCamCaptureOperation CurrentImageOperation() const;
- TCamCaptureOperation CurrentVideoOperation() const;
- TCamImageCaptureMode CurrentImageMode() const;
-
-
- TInt CaptureLimit() const;
- TInt CaptureLimitSetting() const;
- void SetCaptureLimitL( TInt aLimit );
-
- /**
- * From MBitmapRotationObserver
- * Notification of bitmap rotation complete events
- * @param aErr KErrNone if successful
- */
- void RotationCompleteL( TInt aErr );
-
- /**
- * From MCamTvaccessoryObserver
- * Handles TV Out/HDMI Cable connect Events
- */
- void HandleTvAccessoryConnectedL();
-
- /**
- * From MCamTvaccessoryObserver
- * Handles TV Out/HDMI Cable disconnect Events
- */
- void HandleTvAccessoryDisconnectedL();
-
-
- /**
- * Returns Etrue if HDMI Cable is connected
- */
- TBool IsHdmiCableConnected();
-
-
- /**
- * Called when exiting in secondary camera mode
- */
- void HandleSecondaryCameraExitL();
-
-private:
- void ReadVariantFlagsL();
-
-
- void SetMode( const TCamCameraMode& aNewMode );
- void SetTargetMode( const TCamCameraMode& aNewMode );
-
- void SetImageMode( const TCamImageCaptureMode& aNewMode );
- void SetTargetImageMode( const TCamImageCaptureMode& aNewMode );
-
- void SetOperation( TCamCaptureOperation aNewOperation,
- TInt aError = KErrNone );
-
- TCamCameraTriState ViewfinderTargetState() const;
-
-
-public:
- /*
- * Handle to Camera Ui Config Manager
- */
- CCameraUiConfigManager* UiConfigManagerPtr();
-
- /*
- * De-register harvester client events.
- */
- void DeRegisterHarverterClientEvents();
-
- /**
- * Return resource id for video viewfinder layout
- * @since 3.0
- * @param aResolution for current resolution
- * @return Resource id for video viewfinder layout
- */
- TInt VideoViewFinderResourceId( TCamVideoResolution aResolution );
-
- /**
- * Start the viewfinder for the specified mode
- * as soon as the engine is intialised
- * @since 2.8
- * @param aMode The viewfinder mode being entered
- */
- void EnterViewfinderMode( const TCamCameraMode& aMode );
-
- /**
- * ExitViewinderMode
- * @since 2.8
- * @param aMode The viewfinder mode being exited
- */
- void ExitViewfinderMode( const TCamCameraMode& aMode );
-
- /**
- * FreezeViewFinder
- * @since 2.8
- * @param aFreeze Whether or not the viewfinder is
- * being frozen after this frame
- */
- void FreezeViewFinder( TBool aFreeze );
-
- /**
- * Return number of images that can still be captured
- * @since 2.8
- * @param aStorage storage location - defaults to current loation
- * @param aBurstActive - set to ETrue if burst mode is active
- * @return the number of images
- */
- TInt ImagesRemaining( TCamMediaStorage aStorage,
- TBool aBurstActive );
-
- /**
- * Return number of images that can still be captured for a particular
- * image quality
- * @since 2.8
- * @param aStorage storage location - defaults to current loation
- * @param aBurstActive - set to ETrue if burst mode is active
- * @param aQualityIndex - index of the image quality
- * @return the number of images
- */
- TInt ImagesRemaining( TCamMediaStorage aStorage,
- TBool aBurstActive,
- TInt aQualityIndex );
-
- /**
- * Return amount of video that has been captured
- * @since 2.8
- * @return the amount of video in micro secs
- */
- TTimeIntervalMicroSeconds RecordTimeElapsed() const;
-
-
- /**
- * Set amount of video that has been captured
- * @param aElapsed - recorded video time.
- */
- void RecordTimeElapsed(TTimeIntervalMicroSeconds aElapsed );
-
-
- /*
- * Return amount of video that can still be captured
- * @since 2.8
- * @return the amount of video in secs
- */
- TTimeIntervalMicroSeconds RecordTimeRemaining();
-
- /**
- * Updates the interval used in next TimeLapse capture
- * @since 3.0
- * @param aInterval The new interval to use
- */
- void SetTimeLapseInterval( TTimeIntervalMicroSeconds aInterval );
-
- /**
- * Returns the interval used in next TimeLapse capture
- * @since 3.0
- * @return The current time lapse interval in microseconds
- */
- TTimeIntervalMicroSeconds TimeLapseInterval();
-
- /**
- * Returns the remaining time lapse interval until the next capture
- * @since 3.0
- * @return The remaining time to the next timelapse capture
- */
- TTimeIntervalMicroSeconds TimeLapseCountdown();
-
- /**
- * Start the autofocus procedure
- * @since 2.8
- */
- void StartAutoFocus();
-
- /**
- * Begin the capture procedure
- * @since 2.8
- */
- void Capture();
-
- /**
- * Stop the burst capture operation
- * @since 2.8
- */
- void StopSequenceCaptureL();
-
- /**
- * Whether or not a still capture operation is pending
- * i.e. a request to start still capture has been made and is
- * waiting for the focus operation to complete.
- * @since 2.8
- * @return ETrue if a still capture operation is pending
- */
- TBool CapturePending() const;
-
- /**
- * Whether or not a capture key pressed during image saving
- * @since 2.8
- * @return ETrue if capture key is pressed during image saving
- */
- TBool CaptureKeyPressedWhileImageSaving() const;
-
- /**
- * Stores shutter key press during saving image
- * @since 2.8
- */
- void SetCaptureKeyPressedWhileImageSaving(TBool aCaptureKeyPressed);
-
- /**
- * Whether or not a video recording operation is pending
- * i.e. a request to start video recording has been made and is
- * waiting for the engine to complete a video name update operation.
- * @since 2.8
- * @return ETrue if a record operation is pending
- */
- TBool VideoRecordPending() const;
-
- /**
- * Whether or not a sequence capture is in progress
- * @since 2.8
- * @return ETrue if a sequence capture is in progress
- */
- TBool SequenceCaptureInProgress() const;
-
- /**
- * Begin the recording procedure
- * @since 2.8
- */
- void StartVideoRecordingL();
-
- /**
- * End the recording procedure
- * @since 2.8
- */
- void StopVideoRecording();
-
- /**
- * End the recording procedure
- * @since 5.0
- */
- void StopVideoRecordingAsync();
-
- /**
- * Store the cause of the video stop
- * @since 3.0
- */
- void SetVideoStoppedForPhoneApp( TBool aIsPhoneApp );
-
- /**
- * Pause the recording procedure
- * @since 2.8
- */
- void PauseVideoRecording();
-
- /**
- * Continue the recording procedure
- * @since 2.8
- */
- void ContinueVideoRecording();
-
- /**
- * Issue AF request.
- */
- TBool TryAFRequest( TInt aAFRequest );
-
- /**
- * Cancel ongoing AutoFocus.
- */
- void CancelAFNow();
-
- /**
- * Cancel a requested capture
- * @since 2.8
- */
- void CancelFocusAndCapture();
-
- /**
- * Return the current snapshot image
- * @since 2.8
- * @return the current snapshot image
- */
- const CFbsBitmap* SnapshotImage();
-
- /**
- * Sets the specified burst mode item as the current image, in
- * preparation for a Post-capture view of the image.
- * @since 2.8
- * @param aIndex The index of the burst item in "CCamBurstCaptureArray"
- */
- void SetAsCurrentImage( TInt aIndex );
-
- /**
- * Get the user-visible name for next image.
- * @since 2.8
- * @return file name for the current image or video without path or
- * extension
- */
- const TDesC& CurrentImageName() const;
-
- /**
- * Delete the current image/video file
- * @since 2.8
- * @param aNofity Should notification be sent to observers about
- * change in media files. When this call is made
- * several times in a row, it's worth to do the
- * notification only once.
- * @return KErrNone if delete successful, otherwise system-wide
- * error code
- */
- TInt DeleteCurrentFile( TBool aNotify = ETrue );
-
- /**
- * Delete the timelapse sequence files
- * @since 3.0
- */
- void DeleteTimeLapseFiles();
-
- /**
- * Indicate whether or not the controller is actively engaged in still
- * or video capture - this includes paused video, saving photos/videos,
- * periods in between timelapse captures and pending captures
- * (captures that have been requested but not yet started)
- * @since 3.0
- * @return EFalse if not currently capturing, otherwise ETrue
- */
- TBool IsProcessingCapture();
-
- /**
- * Complete current capture asap, then report completion to the observer
- * @since 3.0
- * @param aObserver To be notified when the current capture process completes
- * @param aSafeCompletion ETrue if all captures should be saved. EFalse to complete
- * sooner and lose any images that have not yet begun to save
- */
- void CompleteCaptureAndNotifyL( MCamObserver* aObserver, TBool aSafeCompletion );
-
- /**
- * The application is closing. Complete any active operations then
- * exit the application.
- * @param aImmediateShutdown ETrue: shutdown immediately or
- * EFalse: wait for pending operations to complete.
- * @since 2.8
- */
- void EnterShutdownMode( TBool aImmediateShutdown );
-
- /**
- * Whether or not the controller is in shutdown mode
- * @since 2.8
- * @return ETrue if the controller is in shutdown mode else EFalse
- */
- TBool IsInShutdownMode() const;
-
- /**
- * Returns true if AppUi has been constructed, and not yet
- * destructed.
- */
- TBool IsAppUiAvailable() const;
-
- /**
- * Sets AppUi availablility (see IsAppUiAvailable())
- */
- void SetAppUiAvailable( TBool aAvailable );
-
-
- /**
- * Called to return the range of supported zoom values
- * @since 2.8
- * @param aMinZoom on return contains the minimum zoom value
- * @param aMaxZoom on return contains the maximum zoom value
- */
- void GetZoomRange( TInt& aMinZoom, TInt& aMaxZoom ) const;
-
- /**
- * Called to return current zoom value
- * @since 2.8
- * @return the current zoom value
- */
- TInt ZoomValue() const;
-
- /**
- * Sets the current zoom value
- * @since 2.8
- * @param aValue the new zoom value to be used
- */
- void SetZoomValue( TInt aValue );
-
- /**
- * Resets all user scene settings to their defaults.
- * @since 2.8
- */
- void ResetUserSceneL();
-
- /**
- * Previews a new value for the specified integer setting
- * @param aSettingItem specifies which setting item that want
- * to preview.
- * @param aSettingValue the new integer value for the specified
- * setting item to be previewed.
- * @since 2.8
- */
- void PreviewSettingChangeL( TInt aSettingItem, TInt aSettingValue );
-
- /**
- * Cancels all preview changes, since last commit/cancel.
- * @since 2.8
- */
- void CancelPreviewChangesL();
-
- /**
- * Commits last preview change.
- * @since 2.8
- */
- void CommitPreviewChanges();
-
- /**
- * Re-prepare video after e.g. a setting change requires this.
- */
- void RePrepareVideoL();
-
- /**
- * Returns the current integer value for the specified setting
- * @return the current integer setting value
- * @param aSettingItem specifies which setting item that want
- * the value of.
- * @since 2.8
- */
- TInt IntegerSettingValue( TInt aSettingItem ) const;
-
- /**
- * Returns the current integer value for the specified setting
- * without the filtering usually performed on storage location.
- * This is neccesary to allow the video/photo settings list to show
- * the selected storage location rather than the forced storage location.
- * @return the current integer setting value
- * @param aSettingItem specifies which setting item that want the value of.
- * @since 2.8
- */
- TInt IntegerSettingValueUnfiltered( TInt aSettingItem ) const;
-
- /**
- * Sets a new value for the specified integer setting
- * @param aSettingItem specifies which setting item that want
- * to set the value of.
- * @param aSettingValue the new integer value for the specified
- * setting item.
- * @since 2.8
- */
- void SetIntegerSettingValueL( TInt aSettingItem, TInt aSettingValue );
-
- /**
- * Sets pathnames for video and image files to point to the specified storage
- * @param aMediaStorage specifies phone memory or MMC
- * @since 2.8
- */
- void SetPathnamesToNewStorageL( TCamMediaStorage aMediaStorage );
-
- /**
- * Sets a new text value for the specified setting
- * @param aSettingItem specifies which setting item that want to set
- * the text value of.
- * @param aSettingValue the new text value for the specified setting
- * item.
- * @since 2.8
- */
- void SetTextSettingValueL( TInt aSettingItem,
- const TDesC& aSettingValue );
-
-
- /**
- * Returns the current text value for the specified setting
- * @return the current text setting value
- * @param aSettingItem specifies which setting item that want
- * the text value of.
- * @since 2.8
- */
- TPtrC TextSettingValue( TInt aSettingItem ) const;
-
- /**
- * Returns whether a particular setting value can be set or not.
- * @return ETrue if can be set. Otherwise, EFalse.
- * @param aSettingItem the setting item in question.
- * @param aSettingValue the value in question.
- * @since 2.8
- */
- TBool SettingValueEnabled( TInt aSettingItem, TInt aSettingValue ) const;
-
- /**
- * Loads the settings from shared data, or if unable to from the
- * resource file.
- * @param aIsEmbedded whether or not the application is running in
- * embedded mode.
- * @since 2.8
- */
- void LoadStaticSettingsL( TBool aIsEmbedded );
-
- /**
- * Get the default value for a setting item.
- * @param aSettingId The id of the setting.
- * @return The default value for setting item or KErrNotFound if not found.
- */
- TInt DynamicSettingDefaultValue( TInt aSettingId ) const;
-
- /**
- * Sets all dynamic settings to their defaults.
- * @since 2.8
- */
- void SetDynamicSettingsToDefaults();
-
- /**
- * Sets a single dynamic setting to its default.
- * @since 2.8
- */
- void SetDynamicSettingToDefault(TInt aSettingItem);
-
- /**
- * Set scene default value to a dynamic setting.
- * @param aSceneId Id of the scene to use.
- * @param aSceneField Id of scene field.
- * @param aSettingId If of the dynamic setting to set.
- * @param aVideoScene Does aSceneId refer to a video scene.
- * @return KErrNotFound, if setting could not be set.
- */
- TInt SetDynamicSettingToSceneDefaultL( TInt aSceneId,
- TInt aSceneField,
- TInt aSettingId,
- TBool aVideoScene );
-
-
-#ifdef PRODUCT_USES_GENERIC_SETUP_INDICATOR
- /**
- * Returns whether or not the video setup settings are set to the
- * defaults for its current scene.
- * @since 2.8
- * @return ETrue if set to defaults. Otherwise, EFalse
- */
- TBool VideoSceneDefaultsAreSet();
-
- /**
- * Returns whether or not the photo setup settings are set to the
- * defaults for its current scene.
- * @since 2.8
- * @return ETrue if set to defaults. Otherwise, EFalse
- */
- TBool PhotoSceneDefaultsAreSet();
-#endif // PRODUCT_USES_GENERIC_SETUP_INDICATOR
-
- /**
- * Returns the file name of the most recent saved image/video clip
- * @return Filename of most recent captured image/video
- * @since 2.8
- */
- const TDesC& CurrentFullFileName() const;
-
- /**
- * Get the current video filename.
- */
- const TDesC& CurrentVideoFileName() const;
-
- /**
- * Returns a pointer to an array representing the images in a burst
- * capture
- * @return reference to the burst capture array
- * @since 2.8
- */
- CCamBurstCaptureArray* BurstCaptureArray() const;
-
- /**
- * Returns the number of non-deleted items in the array
- * @return count of non-deleted items
- * @since 2.8
- */
- TInt CurrentItemCount();
-
- /**
- * Returns the number of burst capture moments that have taken
- * place in a current burst. If no burst is active this returns
- * 0
- * @return count of burst capture moments
- * @since 3.0
- */
- TInt CurrentCapturedCount();
-
- /**
- * Returns the number of items in a timelapse sequence
- * @return count of timelapse sequence items
- * @since 3.0
- */
- TInt TimeLapseImageCount();
-
- /**
- * Resets the array of filenames used in timelapse capture
- * @since 3.0
- */
- void ResetTimelapseArray();
-
- /**
- * Initiates the playing of the specified sound.
- * @since 2.8
- * @param aSoundId The enum value of the sound to play
- * @param aEnableCallback Whether we want a callback when play complete
- */
- void PlaySound( TCamSoundId aSoundId, TBool aEnableCallback );
-
-
- /**
- * Releases the camera hardware for other apps to use
- * @since 2.8
- */
- void ReleaseCamera();
-
- /**
- * Increments the engine usage count
- * @since 2.8
- */
- void IncCameraUsers();
-
- /**
- * Decrements the engine usage count If the engine is no longer required
- * then it is released. If it is still processing, the engine count will
- * be checked when the current process completes and the engine will be
- * released if it is no longer needed.
- * @since 2.8
- */
- void DecCameraUsers();
-
- /*
- * Gets the handle to the static settings model, which is used inturn by the
- * plugin to call the interfaces for performing needed actions.
- */
- MCamStaticSettings& StaticSettingsModel();
-
- /*
- * Check if image/video scene mode is supported
- */
- TBool IsSceneSupported( const TInt aSceneId, TBool aPhotoScene = ETrue ) const;
-
- /**
- * Whether a call is active, including the ringing state
- * @since 2.8
- * @return ETrue if in call or ringing, else EFalse
- */
- TBool InCallOrRinging() const;
-
- /**
- * Whether a video call is active, including the ringing state
- * @return ETrue if in videocall or ringing, else EFalse
- */
- TBool InVideocallOrRinging();
-
- /**
- * Whether or not a video clip is currently being saved
- * @since 2.8
- * @return ETrue if saving, else EFalse
- */
- TBool CurrentlySavingVideo() const;
-
- /**
- * Returns whether all the settings list options for a particular setting
- * item are visible or not
- * @since 2.8
- * @param aSettingItem The setting item to be checked.
- * @param aRevisedResourceId Receives the id of a resource if the return
- * value is EFalse. The resource contains the list of visible
- * options.
- * @return ETrue if all options are visible. Otherwise, EFalse.
- */
- TBool AllOptionsVisibleForSettingItem( TInt aSettingItem,
- TInt& aRevisedResourceId );
-
- /**
- * Switches the camera being used
- * @since 2.8
- */
- void SwitchCameraL();
-
- /**
- * Returns the active camera
- * @since 2.8
- * @return @return either primary, secondary or none ( if in process of switching )
- */
- TCamActiveCamera ActiveCamera() const;
-
- /**
- * Whether we currently have a camera switch required
- * @since 2.8
- * @return TCameraSwitchRequired a camera switch is required or not
- */
- TCameraSwitchRequired CameraSwitchQueued() const;
-
- /**
- * Check if exit is required
- * @since 2.8
- * @return TBool True if exit is required
- */
- TBool CheckExitStatus();
-
- /**
- * Informs the controller that an end key event is waiting
- * to close the app, or has been acted upon
- * This is used when the end key is pressed during sequence capture
- * @since 2.8
- */
- void SetEndKeyExitWaiting( TBool aEndKeyWaiting );
-
- /**
- * Returns the status of the camera slide
- * @since 2.8
- * @return the status of the camera slide
- */
- TInt CameraSlideState() const;
-
- /**
- * Informs the controller that a slider close event has
- * been reacted to by 'pretending' to exit
- * @since 2.8
- */
- void SliderCloseEventActioned();
-
- /**
- * Set camera switch to queue
- */
- void SetCameraSwitchRequired( TCameraSwitchRequired aSwitchRequired );
-
- /**
- * Check slide state and schedule camera switch if required
- * @since 2.8
- */
- void CheckSlideStatus();
-
-
- /**
- * Return range of EV value supported for current product
- * @since 3.0
- * @return TEvRange struct
- */
- TCamEvCompRange EvRange() const;
-
- /**
- * Switches camera to standby
- * @since 5.1
- * @param aSratus Error code for Standby mode
- * @return
- */
- void SwitchToStandbyL( TInt aStatus = KErrNone );
-
- public: // Derived from MCamCallStateObserver base class
- /**
- * Callback for when the current phone call state changes
- * @since 3.0
- * @param aState The new call state
- * @param aError An error code associated with the event
- */
- void CallStateChanged( TPSCTsyCallState aState, TInt aError );
-
- /**
- * Returns the file size of the specified file
- * @since 3.0
- * @param aFilename The file to retrieve the size of.
- * @return The size of the file or KErrNotFound
- */
- TInt FileSize( TDesC& aFilename ) const;
-
- /**
- * Returns whether the current scene uses forced
- * autofocus (so no AF required at capture time)
- * @since 3.0
- * @return ETrue if forced, EFalse if not
- */
- TBool CurrentSceneHasForcedFocus() const;
-
-public:
-
- /**
- * Get the actual resolution (WxH) of current image quality.
- */
- TSize GetCurrentImageDimensions() const;
-
- /**
- * Retrieves the current image resolution, taking into account
- * the user settings and and modifications due to zoom state.
- * @since 2.8
- * @returns The current image resolution.
- */
- TCamPhotoSizeId GetCurrentImageResolution() const;
-
- /**
- * Retrieves the current image compression
- * @since 2.8
- * @returns The current image compression.
- */
- TInt GetCurrentImageCompression() const;
-
- /**
- * Retrieves the current video resolution.
- * @since 2.8
- * @returns The current video resolution.
- */
- TCamVideoResolution GetCurrentVideoResolution() const;
-
- /**
- * Force use of phone memory storage
- * @since 2.8
- */
- void UsePhoneMemoryL() const;
-
- /**
- * Sets the correct memory to be used based on settings
- * and availability of MMC.
- * @since 4.0
- * @return ETrue if memory location changed
- */
- TBool CheckMemoryToUseL();
-
- /**
- * Indicate whether the phone memory is being force-used
- * because of un-availability or errors in MMC.
- * @since 4.0
- */
- TBool IsPhoneMemoryForced();
-
- /**
- * Retrieves the current image resolution from Settings.
- * @since 2.8
- * @returns The current image from Settings
- */
- TCamPhotoSizeId SettingsPhotoResolution() const;
-
-
- /**
- * Indication that a view has finished using the capture array
- * @since 2.8
- * @param aForcedRelease Should the array be released even if
- * the apparent usage count is not null.
- */
- void ReleaseArray( TBool aForcedRelease = EFalse );
-
- /**
- * Restore Camera settings to default
- * @since 3.0
- * @param aIsEmbedded if app is embedded
- */
- void RestoreFactorySettingsL( TBool aIsEmbedded );
-
-private:
- /**
- * Called when playback of a sound has completed
- * @since 2.8
- */
- void PlaySoundComplete();
-public:
-
- /**
- * Non-leaving version of StartViewFinderL()
- * @since 2.8
- */
- void StartViewFinder();
-
- /**
- * Stop viewfinder
- * @since 2.8
- */
- void StopViewFinder();
-
- /**
- * Stop viewfinder Ecam only
- * Needed with async video recording stopping
- * @since 5.0
- */
- void StopViewFinderEcam();
-
- /**
- * Sets the zoom mode of the engine
- * @param aZoomMode The zoom mode to set
- * @since 3.0
- */
- // Only digital mode supported currently - no need for this
- //void SetZoomMode( const TCamZoomMode& aZoomMode );
-
- /**
- * Report whether a capture mode transition is currently in progress
- * @since 2.8
- * @return TBool ETrue if transition (i.e. still/video capture prepare) is
- * currently in progress, EFalse otherwise;
- */
- TBool CaptureModeTransitionInProgress();
-
- /**
- * Check if viewfinder is active
- * @since 2.8
- * @returns ETrue if viewfinding
- */
- TBool IsViewFinding() const;
-
- /**
- * Check if capture key needs to be released before starting
- * new capture process. Used in post capture state to prevent
- * image capture before viewfinder is completely shown.
- * @since S60 v5.0
- * @return ETrue if waiting key release before next capture
- */
- TBool IsDemandKeyRelease();
-
- /**
- * Set iDemandKeyRelease value
- * @param aDemand Demand to release capture key
- * @since S60 v5.0
- */
- void SetDemandKeyRelease( TBool aDemand );
-
- /**
- * Stop the idle timer
- * @since 2.8
- */
- void StopIdleTimer();
-
- /**
- * Restart the idle timer
- * @since 2.8
- */
- void StartIdleTimer();
-
-
- /**
- * Flash modes supported by engine
- * @since 3.0
- * @return supported flash modes
- */
- TUint32 SupportedFlashModes();
-
-
- /**
- * White balance modes supported by engine
- * @since 3.0
- * @return supported white balance modes
- */
- TUint32 SupportedWBModes();
-
- /**
- * EV modes supported by engine
- * @since 3.0
- * @return supported EV modes
- */
- TUint32 SupportedEVModes();
-
- /**
- * Capture state
- * @return TInt capture state
- */
- TInt CaptureState();
-
- /**
- * Returns the current capture-tone id
- * @since 3.0
- * @return the current capture-tone id
- */
- TCamSoundId CaptureToneId( );
-
-#ifdef CAMERAAPP_PERFORMANCE_MEASUREMENT
- public:
- void SetPerformanceState( TCamPerformanceState aState );
-#endif
-
- /**
- * Set pointer to settings plug-in. Takes ownership!
- * @param aPlugin Pointer to settings plug-in. This object
- * takes ownership.
- * @since S60 v5.0
- */
-void SetSettingsPlugin( CCamGSInterface* aPlugin );
-
- /**
- * Set viewfinder window for direct screen viewfinder. The handle must remain
- * valid as long as viewfinder is running.
- * @since S60 v5.0
- * @param aWindow Handle to viewfinder window. Must remain valid while
- * viewfinder is running. Ownership not transferred.
- */
- void SetViewfinderWindowHandle( RWindowBase* aWindow );
-
- /**
- * Notify that the viewfinder window is about to be deleted. Viewfinder
- * will be stopped if this window handle is currently used for the
- * viewfinder.
- * @since S60 v5.0
- * @param aWindow Handle to viewfinder window. Ownership not transferred.
- */
- void ViewfinderWindowDeleted( RWindowBase* aWindow );
-
-protected: // New functions
-
- /**
- * C++ default constructor.
- * @since 2.8
- */
- CCamAppController();
-
- /**
- * Symbian OS 2nd phase constructor.
- * @since 2.8
- */
- void ConstructL();
-
-// -----------------------------------------------------
-// Burst related
-public:
-
- /**
- * Stop burst in a soft way:
- * - if have not moved yet to long burst mode,
- * wait until the short burst ends and do not
- * enter long burst mode (if aFastStop is true,
- * stop asap when atleast 2 images captured).
- * - if long burst already entered, stop capturing
- * after the next capture.
- * @param aFastStop Stop also short burst asap, but so that
- * atleast 2 images are captured.
- */
- void SoftStopBurstL( TBool aFastStop = EFalse );
-
- /**
- * Set iNoBurstCancel flag which is used to prevent stopping burst
- * when actual burst capture has started after focusing.
- */
- void SetNoBurstCancel( TBool aValue );
-
- /**
- * Set iKeyUPl flag which is used to prevent late
- * activated burst timer when capturekey is up already
- * before burstcapture has started.
- */
- void SetKeyUp( TBool aValue = EFalse );
-
- /**
- * Returns amount of images captured in burst mode
- * @return Amount of captured images
- *
- */
- TInt CapturedImages() const;
-
-private:
-
- /**
- * Start the burst timer for changing to long burst mode.
- */
- void StartBurstTimerL();
-
- /*
- * Stop the burst timer.
- */
- void StopBurstTimer();
-
- /**
- * Callback for short burst timer.
- * @param aController Pointer to app controller instance.
- * @return Always zero, implies no repeated callbacks wanted.
- */
- static TInt ShortBurstTimeout( TAny* aController );
-
- /**
- * Helper method for short burst timer callback.
- */
- void DoShortBurstTimeoutL();
-
-
- // -----------------------------------------------------
- private:
-
- /**
- * Return number of images that can still be captured for a particular
- * image photo resolution
- * @since 2.8
- * @param aStorage storage location - defaults to current loation
- * @param aBurstActive - set to ETrue if burst mode is active
- * @param aSize - the id of the photo resolution
- * @return the number of images
- */
- TInt ImagesRemaining( TCamMediaStorage aStorage,
- TBool aBurstActive,
- TCamPhotoSizeId aSize );
-
- /**
- * Change the controller's current state
- * Notifies controller observers of change
- * @since 2.8
- * @param aNewState new state code
- */
- void ChangeState( const TCamCameraState& aNewState );
-
- /**
- * Change the controller's target state. The state will not be
- * altered if the controller is already in shutdown mode.
- * @since 2.8
- * @param aNewState new state code
- */
- void ChangeTargetState( const TCamCameraState& aNewState );
-
- /**
- * Change the controller's current operation
- * Notifies controller observers of change
- * @since 2.8
- * @param aNewOperation new operation code
- * @param aError error code associated with new state (if any)
- */
- void ChangeOperation( TCamCaptureOperation aNewOperation,
- TInt aError = KErrNone );
-
- public:
- /**
- * Notify controller observers of an event.
- * @since 2.8
- * @param aEvent event code
- * @param aError error code
- */
- void NotifyControllerObservers( TCamControllerEvent aEvent,
- TInt aError = KErrNone ) const;
- private:
-
- /**
- * Starts the viewfinder if the engine has been prepared for the
- * current mode.
- * @since 2.8
- */
- void StartViewFinderL();
-
- /**
- * Initiate image capture
- * @since 2.8
- * @return ETrue if the capture was initiated otherwise EFalse
- */
- TBool DoCaptureL();
-
- /**
- * Initiate video recording
- * @since 2.8
- */
- void DoRecord();
-
- /**
- * Make a local copy of the viewfinder frame to use when
- * the viewfinder is frozen
- * @since 2.8
- */
- void CopyFrameL( const CFbsBitmap& aBitmap );
-
- /**
- * Reserve a set of file names for the current capture
- * Store the reserved name(s) in iCaptureArray
- * @since 2.8
- * @param aCaptureMode still, burst or video mode
- * @param aForcePhoneMem force path to use Phone memory (C:)
- */
- void ReserveFileNamesL(
- const TCamCameraMode& aCaptureMode,
- const TCamImageCaptureMode& aImageMode,
- TBool aForcePhoneMem = EFalse );
-
- /**
- * Create a file ready for saving captured image into
- * @since 2.8
- * @param aFs: Handle to RFs
- * @param aFullPath: Full path including drive and extension
- * @return error code from file creation
- */
- TInt CreateDummyFileL( RFs& aFs, const TDesC& aFullPath );
-
-
- /**
- * Store file name and full file name (incl. path)
- * to burst capture array
- * @since 2.8
- * @param aFullPath: Full path including drive and extension
- */
- void StoreNextFileNameL( const TDesC& aFullPath );
-
- /**
- * Generate a new file name and full path for saving the next video
- * according to the specified mode (unless specified otherwise)
- * @since 2.8
- * @param aForcePhoneMem force path to use Phone memory (C:)
- */
- void GenerateNextVideoFilePathL( TBool aForcePhoneMem = EFalse );
-
- /**
- * Generate a new path for saving the next image
- * @since 3.0
- */
- void GenerateNextValidImagesPathL();
-
- /**
- * Generate a new file name and full path for saving the next video
- * according to the specified mode. File will always be
- * available.
- * @since 2.8
- */
- void GenerateNextValidVideoPathL();
-
- /**
- * Handle a notification from the autofocus custom extension
- * @since 2.8
- */
- void HandleAutoFocusNotification( TCamExtAutoFocus aNotification );
-
- /**
- * Static callback function for idle timer expiry
- * @since 2.8
- * @param aPtr Pointer to an instance of the CCamAppController
- * @return TInt to indicate if function should be called again
- */
- static TInt IdleTimeoutL( TAny* aPtr );
-
- /**
- * Static callback function for time lapse timer expiry
- * @since 3.0
- * @param aPtr Pointer to an instance of the CCamAppController
- * @return TInt to indicate if function should be called again
- */
- static TInt TimeLapseTimeoutL( TAny* aPtr );
-
-private: // Deep sleep timer
- /**
- * Static callback function for camera deep sleep
- * @since S60 5.0
- * @param aPtr Pointer to an instance of the CCamAppController
- * @return TInt dummy
- */
- static TInt DeepSleepTimeout( TAny* aPtr );
-
- /**
- * Deep sleep timeout handler
- */
- void DoDeepSleepTimeout();
-
-public: // Deep sleep timer
- /**
- * Start deep sleep timer
- */
- void DeepSleepTimerStart();
-
- /**
- * Cancel deep sleep timer
- */
- void DeepSleepTimerCancel();
-
-private:
- /**
- * Set video length (max or short)
- * @param aLength Length of video
- * @since 2.8
- */
- void SetVideoLengthL( TInt aLength );
-
- /**
- * Returns the current photo storage location.
- * @return the photo storage location
- * @since 2.8
- */
- TInt CurrentPhotoStorageLocation() const;
-
- /**
- * Returns the current video storage location.
- * @return the video storage location
- * @since 2.8
- */
- TInt CurrentVideoStorageLocation() const;
-
- /**
- * Returns ETrue if the supplied toneId should be silent if the profile is
- * set to silent. Does *not* take into account network variant forcing
- * sounds on.
- * @since 3.0
- * @param aSoundId The tone to check
- * @return ETrue if sound should always be played, else EFalse
- */
- TBool ToneShouldBeSilent( TCamSoundId aSoundId );
-
- /**
- * Report to any observers that capture processing has completed
- * @since 3.0
- */
- void HandleCaptureCompletion();
-
- /**
- * Tries to autofocus, will do nothing if camera in use is not
- * primary camera, or focus range has not been set first
- * @since 3.0
- * @return Whether or not auto focus has been initiated
- */
- TBool TryAutoFocus();
-
- /**
- * Checks the current scene, and where required, updates the autofocus
- * mode in use. Called when the photo scene or based-on-scene change
- * @since 3.0
- * @param aForceAFReset Whether to force a ResetToIdle independant of scene mode
- */
- void CheckAfModeForScene( TBool aForceAFReset = EFalse );
-
- /**
- * Initalises the AutoFocus interface, if needed
- * @since 3.0
- */
- void InitAutoFocusL();
-
- /**
- * Timeout to play capture tone after delay (to match
- * capture tone to actual capture event)
- * @since 3.0
- * @param aPtr TAny* ptr (cast to CCamAppController)
- * @return Error code retruned by function
- */
- static TInt CaptureToneDelayTimeout( TAny* aPtr );
-
- /**
- * Play the capture tone (called from capture delay timeout)
- * @since 3.0
- */
- void PlayDelayedCaptureTone();
-
- /**
- * Copy Snapshot if needed. Helper function for McaeoSnapImageReady
- * @since 3.0
- * @param aSnapshot the snapshot to copy
- * @param aError Error code KErrNone to indicate success or a
- * standard Symbian OS error code.
- */
- void CopySnapshotIfNeeded(const CFbsBitmap& aSnapshot, TInt aError);
-
-
- /**
- * Checks whether flash is required for taking a picture.
- * @return true if flash is required current mode
- */
- TBool FlashRequired() const;
-
-
-private: // Functions from base classes
-
- /**
- * From MCamImageSaveObserver, image save has completed
- * @since 2.8
- */
- void HandleSaveEvent( TCamSaveEvent aEvent );
-
- /**
- * From MCamImageSaveObserver, image save has completed
- * @since 2.8
- */
- void HandleFileHarvestingComplete();
-
- /**
- * Idle timeout expiry - invoke switch to standby mode
- * @since 2.8
- * @return TInt to indicate if function should be called again
- */
- TInt DoIdleTimeoutL();
-
- /**
- * Time lapse timeout expiry - update the remaining time countdown
- * or initiate the next capture if the full period has expired
- * @return TInt to indicate if function should be called again
- */
- TInt DoTimeLapseTimeoutL();
-
- /**
- * Force the application to use phone memory for Video and Image saving.
- * Typically called when attempting to access MMC fails.
- * @since 2.8
- */
- void ForceUsePhoneMemoryL( TBool aEnable = ETrue );
-
- /**
- * Complete the burst operation
- * @since 2.8
- */
- void CompleteBurstOperation();
-
- /**
- * Complete the time lapse operation
- * @since 3.0
- */
- void CompleteTimeLapseOperation();
-
-
- /**
- * Whether or not the engine is currently processing a capture
- * still, video or sequence.
- * @since 2.8
- * @return ETrue if the engine is performing a capture operation
- */
- TBool EngineProcessingCapture() const;
-
- /**
- * Handle an arriving call. Stops video and cancels sequence capture
- * in early stages.
- * @since 2.8
- */
- void HandleIncomingCall();
-
- /**
-* Cleans up the controller active camera state
- * @param aAny Pointer to the object which is the target
- * of the cleanup operation
- * @since 2.8
- */
- static void Cleanup( TAny* aAny );
-
- /**
- * Immediately cancels a still capture at any stage.
- * @since 2.8
- */
- void CancelStillCaptureNow();
-
- /**
- * Attempt to cleanup capture array if burst capture fails
- * @since 2.8
- * @param aImageCountDelivered number of images delivered
- * @param aError error returned from burst capture operation
- */
- void TidyCaptureArray( TInt aImageCountDelivered,
- TInt aError );
-
- /**
- * Load 2ndary caera specifc settings (on construction or camera switch)
- * @since 3.0
- */
- void LoadSecondaryCameraSettingsL();
-
- // -------------------------------------------------------
- // Orientation sensor / rotation related
-public:
-
- /**
- * Get current orientation to be used on image rotation.
- * Always ECamOrientation0 if rotation setting is OFF.
- * @return Current image orientation value.
- */
- TCamImageOrientation ImageOrientation() const;
-
- /**
- * Checks if mass storage exist in current phone.
- * @ return True if Mass storage exist
- */
- TBool ExistMassStorage() const;
-
- /**
- * Checks if a memory type is available on the phone.
- * @param aStorage TCamMediaStorage enum specifiying the type of storage;
- * default=ECamMediaStorageCurrent
- * @return ETrue if the Memory type is available
- */
- TBool IsMemoryAvailable( const TCamMediaStorage aStorage =
- ECamMediaStorageCurrent, TBool aIgnoreUsbPersonality = EFalse ) const;
-
- public:
-
- /**
- * Update the sensor api object
- * @since 3.0
- * @param aStartupApi eTrue if we need to recreate the Api
- */
- void UpdateSensorApiL( TBool aStartupApi );
-
- /**
- * Forces a refresh of the local copy of the back slide status
- * @since 2.8
- */
- void RefreshSlideStatus();
-
- private:
-
- /**
- * From MSensrvDataListener receive Sensor Data
- *
- * Indicates data is available in the receiving buffer. A client can read
- * the data through GetData()-function in the related channel object. Data
- * is valid until the data received notification occurs again.
- *
- * @since 5.0
- * @param[in] aChannel Reference to the related channel object
- * @param[in] aCount Data object count in receiving buffer.
- * @param[in] aDataLost Number of lost data items. Data loss can occur if
- * the client does not request new data from server fast enough. This
- * can happen
- * when system is under heavy load and the client process has lower
- * priority than sensor server process. If data loss is a problem,
- * consider using higher object count in data listening, which will reduce
- * number of expensive IPC calls used in data transmission.
- */
- void DataReceived( CSensrvChannel& aChannel,
- TInt aCount,
- TInt aDataLost );
- /**
- * From MSensrvDataListener receive data error notice
- *
- * Data listening failed.
- * If error was fatal, channel has also been closed and sensor server session
- * terminated. If error was minor, some data has potentially been lost.
- *
- * @since 5.0
- * @param[in] aChannel Reference to the related channel object
- * @param[in] aError Error code.
- */
- void DataError( CSensrvChannel& aChannel,
- TSensrvErrorSeverity aError );
-
- /**
- * From MSensrvDataListener
- *
- * Returns a pointer to a specified interface - to allow future extension
- * of this class without breaking binary compatibility
- *
- * @since S60 5.0
- * @param aInterfaceUid Identifier of the interface to be retrieved
- * @param aInterface A reference to a pointer that retrieves the specified interface.
- */
- void GetDataListenerInterfaceL( TUid aInterfaceUid,
- TAny*& aInterface );
-
- /**
- * Set image rotation parameters
- * @since 3.0
- */
- void SetImageOrientationL();
-
- /**
- * Mapping from Sensor orientation data type to our own
- * image orientation type.
- * @param aSensorOrientation Orientation Sensor device orientation value.
- * @return Camera orientation value.
- */
- static TCamImageOrientation MapSensorOrientatio2CamOrientation(
- const TSensrvOrientationData::TSensrvDeviceOrientation& aSensorOrientation,
- TCamImageOrientation aLastImageOrientation,
- TCamActiveCamera aActiveCamera );
-
- /**
- * Mapping from camera orientation data type to bitmap orientation type.
- * @param camera orientation value.
- * @return CBitmapRotator::TRotationAngle.
- */
- static CBitmapRotator::TRotationAngle MapCamOrientation2RotationAngle(
- const TCamImageOrientation aOrientation );
-
- // -------------------------------------------------------
-
- private:
-
- /**
- * From MPropertyObserver Handle change in a watched property
- * @since 2.8
- * @param aCategory The type of property
- * @param aKey The property that has changed
- */
- void HandlePropertyChangedL( const TUid& aCategory, const TUint aKey );
-
- private:
-
- /**
- * Callback function that is called when lens cover state changes.
- * Used to implement delayed handling of lens cover events.
- * @param aPtr Pointer to CCamAppController
- * @return
- */
- static TInt LensCoverUpdateL( TAny* aPtr );
-
- /**
- * Handles the slide closed event
- * @since 2.8
- */
- void HandleSlideClosedL();
-
- /**
- * Handles the slide open event
- * @since 2.8
- */
- void HandleSlideOpenedL();
-
-
- private: // Functions from base classes
-
- /**
- * From MCamObserver
- * Receives event codes from observables
- * @since 3.0
- * @param aEvent The event code
- */
- void HandleObservedEvent( TCamObserverEvent aEvent );
-
- /**
- * Returns whether or not the current profile is silent
- * @since 3.0
- * @return ETrue if current profile is silent
- */
- TBool IsProfileSilentL();
-
- /**
- * Static callback function for backlight timer reset
- * since 3.0
- * @param aPtr Pointer to an instance of the CCamAppController
- * @return TInt to indicate if function should be called again
- */
- static TInt ResetInactivityTimer( TAny* aPtr );
-
- /**
- * Enable or disable the system screensaver
- * @since 3.0
- * @param aEnable ETrue if the screensaver is enabled
- * else EFalse
- */
- void EnableScreenSaver( TBool aEnable );
-
- /**
- * Static callback function for timer callback for closing
- * location trail.
- * @since S60 v5.0
- * @param aPtr Pointer to an instance of the CCamAppController
- * @return TInt to indicate if function should be called again
- */
- static TInt RetryStopLocationTrail( TAny* aPtr );
-
- public:
- void StartLocationTrailL();
- void StopLocationTrail( TBool aCloseSession = EFalse );
-
- public:
- /**
- * Returns a pointer to flash status object. Never NULL if
- * ConstructL has been executed successfully.
- * @return flashStatusPointer
- */
- CCamFlashStatus* FlashStatus() const;
-
- /**
- * Returns false, if a picture cannot be taken, due to flash being
- * required and recharged, true otherwise.
- * @return flashstatus
- */
- TBool CheckFlash() const;
-
- /**
- * Called when about to switch to burst or timelapse mode. Stores
- * the current flash mode and scene.
- */
- void SaveFlashMode();
-
- /**
- * Called when switching to single image capture mode. Restores
- * flash mode, if using same scene mode as was used when the
- * flash mode was stored. Otherwise clears the stored info.
- */
- void RestoreFlashMode();
-
- public:
- /**
- * Returns a pointer to dynamic Configuration Manager.
- *
- * Never NULL if ConstructL has been executed successfully.
- * @return Pointer to Configuration Manager
- */
- CCamConfiguration* Configuration() const;
-
-
- /**
- * Returns whether or not the keylock is on
- * @since 5.0
- * @return ETrue if keylock is on, otherwise EFalse
- */
- TBool IsKeyLockOn();
-
- /**
- * Used to get whether user is sliding in the self timer preview.
- * @return ETrue if user is sliding in the self timer preview.
- */
- inline TBool IsSlideInSelfTimerPreview() const { return iSlideInSelfTimerPreview; };
-
- /**
- * Used to set whether user is sliding in the self timer preview.
- * @param aValue the value to indicate whether user is sliding in the self timer preview.
- */
- inline void SetSlideInSelfTimerPreview( TBool aValue ) { iSlideInSelfTimerPreview = aValue; };
-
- /**
- * Used to get the current storage.
- * @return the current storage.
- */
- TCamMediaStorage CurrentStorage();
-
- /**
- * Returns whether autofocus is still needed before capturing.
- * @return ETrue if it's necessary to try autofocus one more time before the capture.
- */
- TBool IsAfNeeded();
-
- /**
- * Sets an autofocus needed flag, so that autofocus is done after cancel and range set are finished.
- */
- void SetAfNeeded( TBool aAfNeeded );
-
- /**
- * Returns whether recording was stopped because USB was connected.
- * @return ETrue if video recording was stopped because USB was connected.
- */
- TBool IsCaptureStoppedForUsb();
-
- /**
- * set the flag of iSetCaptureStoppedForUsb.
- */
- void SetCaptureStoppedForUsb( TBool aCaptureStoppedForUsb );
-
- /**
- * Cancels the memory card dismount monitoring
- */
- void CancelDismountMonitoring();
-
- /**
- * Start the memory card dismount monitoring
- */
- void StartDismountMonitoring();
-
- /**
- * Returns whether all snapshots have been received in burst mode
- * @return ETrue if all snapshots have been received in burst mode.
- */
- TBool AllSnapshotsReceived();
-
- /**
- * Returns the last made autofocusrequest type or 0, if there are
- * no pending autofocus requests.
- */
- TInt PendingAFRequest();
-
- /**
- * Calculates the remaining video recording time based on video
- * quality settings (instead of getting the value from camera
- * controller)
- * @param aStorage TCamMediaStorage enum specifying the type of storage;
- * default=ECamMediaStorageCurrent
- * @return remaining time
- */
- TTimeIntervalMicroSeconds
- CalculateVideoTimeRemainingL( TCamMediaStorage
- aStorage = ECamMediaStorageCurrent);
- /**
- * Sets orientation of the application to CCamera
- *
- */
- void SetCameraOrientationModeL( TInt aOrientation );
-
- /**
- * Final part in constructing cameracontroller
- *
- */
- void CompleteCameraConstructionL();
-
- /**
- * Returns index of current image.
- */
- TInt CurrentImageIndex();
-
- /**
- * Sets the value defining the need for CAE video init and prepare
- */
- void SetVideoInitNeeded( TBool aVideoInitNeeded );
-
- /**
- * Returns the value defining the need for CAE video init and prepare
- */
- TBool VideoInitNeeded();
-
- /**
- * Stores the UserScene settings
- */
- void StoreUserSceneSettingsL();
-
- /**
- * Toggles between highest 16:9 and 4:3 quality levels.
- */
- TBool ToggleWideScreenQuality( TBool aWide );
-
- /**
- * Returns the value of iSaveStarted
- */
- TBool IsSaveStarted();
-
- /**
- * Getter for iIssueModeChangeSequenceSucceeded
- */
- TBool IssueModeChangeSequenceSucceeded();
-
- /**
- * Initiates startup sequence in embedded mode
- */
- void EmbeddedStartupSequence();
-
- /**
- * Called by the snapshotrotator to indicate when snapshot
- * is rotated and ready for drawing
- */
- void SnapshotRotationComplete();
-
- /**
- * Method to retrieve Remaining Recording time from CCaeEngine
- */
- TTimeIntervalMicroSeconds RemainingVideoRecordingTime();
-
-
- /**
- * Handles hdmi connect event during recording after video stop
- */
- void HandlePostHdmiConnectDuringRecordingEventL();
-
- /**
- * Sets a Pending Hdmi Event
- */
- void SetPendingHdmiEvent( TCamHdmiEvent aPendingHdmiEvent );
-
- /**
- * Handles the current pending Hdmi EVent
- */
- void HandlePendingHdmiEvent();
-
- /**
- * Returns ETrue when scene mode is forced to
- * "Automatic" by secondary camera
- */
- TBool SceneModeForcedBySecondaryCamera();
-
- /**
- * Set value defining if capturing with touch capture button
- */
- void SetTouchCapture( TBool aTouchCapture );
-
- private:
-
- // -----------------------------------------------------
- // Construction parts
-
- void ConstructCameraControllerL( TInt aCameraIndex );
-
- // -----------------------------------------------------
- // Helper utility methods
- TInt GetCriticalMemoryLevelL( const TCamMediaStorage& aStorage );
-
- // -----------------------------------------------------
- // Events and requests handling
- void EventHandlingErrorRecovery( TInt aError );
-
- void HandleSequenceEventL( TInt aStatus,
- TCamCameraEventId aEventId,
- TAny* aEventData );
-
- void HandleRequestEventL( TInt aStatus,
- TCamCameraEventId aEventId,
- TAny* aEventData );
-
- void HandleSettingEventL( TInt aStatus,
- TCamCameraEventId aEventId,
- TAny* aEventData );
-
- void HandleImageCaptureEventL( TInt aStatus,
- CCamBufferShare* aShare );
- void HandleImageStopEventL( TInt aStatus,
- TInt aFullCaptureCount );
-
- void HandleViewfinderFrame( TInt aStatus, CFbsBitmap* aFrame );
- void HandleSnapshotEvent( TInt aStatus, CFbsBitmap* aBitmap );
- void HandleVideoAsyncStopEvent( TInt aStatus );
- void HandleVideoStopEvent( TInt aStatus );
-
- void IssueModeChangeSequenceL( TBool aStartup = EFalse );
- void GenerateModeChangeSequenceL( RCamRequestArray& aSequence );
- void GenerateStartupSequenceL( RCamRequestArray& aSequence );
-
- void IssueRequestL( const TCamCameraRequestId& aId );
- void IssueDirectRequestL( const TCamCameraRequestId& aId );
- void IssueSettingsChangeRequestL();
-
- void ProceedPendingOrNotifyReadyL();
-
- void DoVideoNameRetryL( TInt aStatus );
-
- /**
- * Sets the current image/video settings from UI to camera, by calling
- * RestoreSettingIfNecessaryL for each supported setting, and starting
- * the setting process if any of them needs setting.
- * This function needs to be called after camera release and switches
- * between image/video mode.
- */
- void RestoreSettingsToCameraL();
-
- /**
- * Checks if the setting needs restoring (UI setting value doesn't match
- * the actual setting value in camera). In that case, function adds
- * this setting to the list of pending settings.
- * @param aSettingItem Setting item id
- */
- void RestoreSettingIfNecessaryL( TCamSettingItemIds aSettingItem );
-
- /**
- * Checks if the setting needs restoring (UI setting value doesn't match
- * the actual setting value in camera). In that case, function
- * directly set settting to camera
- * @param aSettingItem Setting item id
- */
- void DirectRestoreSettingIfNecessaryL( TCamSettingItemIds aSettingItem );
-
- /**
- * Set internal state based on camera event.
- */
- void SetStateFromEvent( TCamCameraEventId aEventId );
-
- void InitCaptureLimitL();
-
- static TCamCameraRequestId
- NextRequestL( const TCamCameraState& aFrom,
- const TCamCameraState& aTo );
-
- static TCamCameraEventId
- ResponseForRequest( const TCamCameraRequestId& aRequestId );
-
-
- /**
- * Called when mmc is about to be dismounted
- */
- TInt DriveChangeL( TCamDriveChangeType aType );
-
- /**
- * Rotate the snapshot copy before thumbnail creation
- */
- void RotateSnapshotL();
-
- /**
- * Handle change in image quality setting.
- * Handle stopping viewfinder, re-preparing quality and
- * restarting viewfinder if viewfinder is running.
- * Notify observers about quality change.
- */
- void HandleImageQualitySettingChangeL();
-
- /**
- * Handle change in video quality setting.
- * Handle stopping viewfinder, re-preparing quality and
- * restarting viewfinder if viewfinder is running.
- * Notify observers about quality change.
- */
- void HandleVideoQualitySettingChangeL();
-
- // =======================================================
- private: // Data
- TBool iValueIsStored;
- CCamCameraController* iCameraController;
- CCamSettingProvider* iSettingProvider;
-
- TUint iBusyFlags; // TCamBusyFlags values
- TCamAppControllerInfo iInfo;
-
- // Temporarily stop notifications to observers
- TBool iMuteNotifications;
-
- // Observers of controller events
- RPointerArray<MCamControllerObserver> iControllerObservers;
- TInt iCameraReferences;
-
- // The settings model for dynamic and static data.
- // CCamSettingsModelBase* iSettingsModel;
- MCamSettingsModel* iSettingsModel;
- MCamSettingPreviewHandler* iSettingsPreviewHandler; // Currently same object as iSettingsModel.
- RArray<TCamSettingItemIds> iPreviewRollbacks; // Used when cancelling previews.
-
- // Used to indicate whether user is sliding in the self timer preview.
- TBool iSlideInSelfTimerPreview;
-
- TBool iVideoPrepareNeeded; // Video re-prepare needed due to setting change
-
- // Boolean to record if view finder should be frozen at next frame
- TBool iFreezeViewFinder;
- // Boolean to indicate that the frozen frame should be updated
- TBool iUpdateFrozenFrame;
-
- // name for next file, including path and extension
- TFileName iSuggestedVideoPath;
- // Used to indicate that the media storage has been changed tbe
- // pathnames need to be checked
- TCamMediaStorage iSetNewPathnamesPending;
- // Counters used for creating multiple month folders
- TInt iMonthFolderCounters[CCamFolderUtility::ECamFolderTypeLast];
- // Counter for image number.
- // Stored locally to avoid performance problems during burst.
- TInt iImageNumberCache;
-
- // Whether or not the engine is initialized for video recording
- TBool iVideoRecorderInitialized;
-
- // estimate of record time elapsed
- TTimeIntervalMicroSeconds iVideoTimeElapsed;
- // estimate of record time remaining
- TTimeIntervalMicroSeconds iVideoTimeRemaining;
-
- // Whether or not a capture mode transition is in progress
- TBool iCaptureModeTransitionInProgress;
-
- // Active object for saving images to file asynchronously
- CCamImageSaveActive* iImageSaveActive;
- // Array containing data that represents the images in a burst capture
- CCamBurstCaptureArray* iCaptureArray;
- // Index into burst capture array used to determine current image for
- // SnapshotImage(), CurrentImageName(), CurrentFullFileName() and
- // DeleteCurrentFile(). Set by call to SetAsCurrentImage().
- // Single capture and video always use index 0.
- TInt iCurrentImageIndex;
- // Filenames for a timelapse sequence used for the delete sequence option
- CDesCArray* iSequenceFilenameArray;
- // Tracks usage of the capture array, for timely release of memory
- TInt iArrayUsageCount;
- // Capture count requested.
- // Used in burst and self-timer+timelapse modes.
- TInt iRequestedCaptureCount;
- // Indicates wheter autofocuscancel requests should be handled or not..
- // Used in CancelFocusAndCapture.
- TBool iNoBurstCancel;
-
- // Indicates if capturekey has been raised or not. This is used to
- // determine if bursttimer should be activated or not.
- TBool iKeyUP;
-
- // Timer to control when short burst is changed to press and hold burst.
- CCamTimer* iBurstTimer;
- // Timer for switch to standby mode
- CCamTimer* iIdleTimer;
- // Timer for initiating Time Lapse captures
- CCamTimer* iTimeLapseTimer;
-
- // Status variable for location trail
- TBool iLocationTrailStarted;
-
- // Timer for stopping location trail
- CCamTimer* iLocationTrailTimer;
-
- // Whether or not a capture key pressed during image saving
- TBool iCaptureKeyPressedWhileImageSaving;
- // flag to indicate current VF status
- TBool iViewFinding;
- // timer to keep backlight active while VF is running
- CPeriodic* iBacklightTimer;
- // Class for playing sounds
- CCamAudioPlayerController* iSoundPlayer;
- CRepository* iRepository;
- TInt iDiskCriticalLevel; // critical threshold for card storage
- TInt iRamDiskCriticalLevel; // critical threshold for phone memory storage
- // Whether we are currently in a call or ringing
- TBool iInCallOrRinging;
- // Keep track of whether we are currently saving a video clip or image
- TBool iSaving;
- TBool iSaveStarted;
- // Keep track of whether a ReleaseEngine call has been made while an Init call has been made
- TBool iPendingRelease;
- TBool iEndKeyWaiting;
- TBool iCompleteTimeLapsePending;
- TBool iAutoFocusRequested;
- TBool iCaptureRequested;
- TBool iVideoRequested;
- TBool iAfNeeded;
-
- TBool iDemandKeyRelease; // Demand to release capture key
-
- // Keep track of the camera that the next switch will activate
- TInt iNextSwitchIsToPrimaryCamera;
-
- // Flag for queued Camera switch operation
- TCameraSwitchRequired iCameraSwitchRequired;
-
- TBool iForceUseOfPhoneMemory;
-
- // Keeps track of the number of times we have attempted to set the video name
- TInt iVideoNameRetries;
-
- // Specified whether an image save request is pending. That is,
- // we are waiting for the engine to return with an image that can be saved.
- // Required to let post-capture know whether an image has been saved yet.
- TBool iImageSaveRequestPending;
-
- // Keeps track of the camera slider state so that
- // we don't have to keep accessing the shared data file
- TInt iSlideState;
- TInt iNewSlideState;
-
- // callback used for delayed slider update
- CPeriodic* iSliderCallBack;
-
- // Slider event flag
- TBool iSliderCloseEvent;
-
- // The period between each timelapse capture
- TTimeIntervalMicroSeconds iTimeLapseInterval;
- // The time at which the previous timelapse capture was initiated
- TTime iTimeLapseStartTime;
-
-
-
- CSensrvChannel* iAccSensorChannel;
- TBool iAccSensorListening;
- TBool iAccSensorInfoInitialized;
- // Flag to allow delayed re-preparation of engine
- TBool iOrientationChangeOccured;
-
- // Outside flags, as available for Camera Controller at all times.
- TCamImageOrientation iImageOrientation;
- TCamImageOrientation iLastImageOrientation;
-
- // Property watcher to report changes in the slide state
- CCamPropertyWatcher* iSlideStateWatcher;
- // Property watcher to report changes in the keylock state
- CCamPropertyWatcher* iKeyLockStatusWatcher;
- // Property watcher to report changes in the profile state
- CCamPropertyWatcher* iProfileStatusWatcher;
- // Set to ETrue if shutter sound always played
- // otherwise playing shutter sound depends on
- // current profile
- TBool iShutterSndAlwaysOn;
- // Active object to listen to the call state.
- CCamCallStateAo* iCallStateAo;
- // Organises notifications to observers of capture completion
- CCamObserverHandler* iCaptureCompletionObserverHandler;
- TInt iActualBurst;
- CCamTimer* iCaptureToneDelayTimer;
- // Whether or not the video was stopped due to the phone app
- // having the foreground
- TBool iVideoStoppedForPhoneApp;
- // used to simulate the receipt of a viewfinder frame when
- // timelapse capturing.
- CFbsBitmap* iSnapShotCopy;
- // estimated snapshot size in bytes - used when monitoring free
- // RAM during burst capture
- TInt iSnapshotDataSize;
- // array of estimated jpeg sizes in bytes for different image
- // resolutions - used when monitoring free RAM during burst capture
- RArray<TInt> iJpegDataSizes;
- // array of estimated post capture sizes required in bytes for
- // different image resolutions - used when monitoring free RAM
- // during burst capture
- RArray<TInt> iSequencePostProcessDataSizes;
- // Array of CameraEventInterested observers which wanted to be camera
- // observers when camera wasn't yet created. When camera is created
- // Observers from this array should be attached first and array should
- // be cleared.
- RArray<const MCamCameraObserver*> iPendingObserversArray;
- RArray<TUint> iCameraEventInterested;
-
- // Used to wake the camera hardware approximately 2-3 seconds before
- // a timelapse capture
- TBool iCameraWoken;
- TBool iZoomWaitingForCamera;
- TBool iNewZoomPending;
- TInt iDesiredZoomVal;
-
- TBool iSequenceCaptureInProgress;
- TInt iLongSequenceLimit;
-
- // Boolean to determine whether filename has already been
- // reserved for the image being currently captured. Reserving
- // is done when either the image's snapshot snapshot or
- // image data arrives. (But not again when the other one comes)
- TBool iFilenameReserved;
- TCamEvCompRange iEvRange;
-
-#if defined(RD_MDS_2_5) && !defined(__WINSCW__)
- RLocationTrail iLocationUtility;
- TBool iLocationUtilityConnected;
-#endif // __WINSCW__
-
-#ifdef CAMERAAPP_PERFORMANCE_MEASUREMENT
- TCamPerformanceState iPerformanceState;
-#endif
-
- TBool iAppUiAvailable;
- // If this boolean is set to true, the next focus successful
- // or focus failed event should be ignored as it's resulted by
- // moving lens to hyperfocal position when cancelling AF.
- TBool iAFCancelInProgress;
- // Holds last made autofocusrequest type or 0, if there are no
- // pending autofocus requests.
- TInt iPendingAFRequest;
- // AFrequest currently in processing.
- TInt iCurrentAFRequest;
- CCamFlashStatus* iFlashStatus;
- TBool iFlashModeSaved;
- TCamSceneId iSavedFlashScene;
- TCamFlashId iSavedFlashMode;
- TBool iSettingsRestoreNeeded;
- CCamConfiguration* iConfiguration; //< Configuration Manager. *owned*
- CCFClient* iContextFwClient;
- TBool iDefineContextSuccessful;
- TBool iStorageChangeProcessOngoing;
- // own.
- CCamGSInterface* iPlugin;
- TBool iSilentProfile;
- TInt iTimeLapseCaptureCount;
- RFs iFs;
- CCamDriveChangeNotifier* iDriveChangeNotifier;
- TCamMediaStorage iCurrentStorage;
- TCamMediaStorage iPreferredStorageLocation;
- TCamMediaStorage iForcedStorageLocation;
- TCamMediaStorage iInitialVideoStorageLocation;
- TBool iCaptureStoppedForUsb;
- TBool iDismountPending;
- TBool iAllSnapshotsReceived;
- CCamTimer* iDeepSleepTimer; // own
- TBool iDeepSleepTimerExpired;
- // not owned by camappcontroller
- CCameraUiConfigManager* iConfigManager;
- TBool iVideoInitNeeded; // Used to decide if the need to call CAE video init
- CCamSyncRotatorAo* iRotatorAo;
- CFbsBitmap* iRotatedSnapshot;
- CCamBurstCaptureArray* iRotationArray;
- CCamSnapShotRotator* iSnapShotRotator;
- // orientation at capture time
- TCamImageOrientation iCaptureOrientation;
-
- TBool iIssueModeChangeSequenceSucceeded;
-
- CCamTvAccessoryMonitor* iTvAccessoryMonitor;
-
- TBool iHdmiCableConnectedDuringRecording;
-
- TBool iSnapshotRedrawNeeded;
-
- TCamHdmiEvent iPendingHdmiEvent;
-
- TBool iSceneModeForcedBySecondaryCamera;
-
- TBool iTouchCapture;
-
- };
-
-#endif // CAMAPPCONTROLLER_H
-
-// End of File