diff -r 159fc2f68139 -r d59c248c9d36 ImagePrint/ImagePrintEngine/DeviceProtocols/btprotocol/inc/cbtprintingdevice.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ImagePrint/ImagePrintEngine/DeviceProtocols/btprotocol/inc/cbtprintingdevice.h Wed Sep 01 12:30:38 2010 +0100 @@ -0,0 +1,248 @@ +/* +* Copyright (c) 2004-2007 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 CBTPRINTINGDEVICE_H +#define CBTPRINTINGDEVICE_H + +#include "mprotprintingdevice.h" +#include "mbtpcobserver.h" +#include "imageprint.h" +#include "btprotocolconsts.h" +#include "crsbtdiscoverengine.h" +#include "crsbtdevice.h" +#include "cbtprintercontroller.h" +#include "cprintjob.h" + +static const TUid KBtProtocolUid = { 0x01007779 }; + +/** + * @brief CBtPrintingDevice implements MProtPrintingDevice. This makes the class the "published" class of the DLL it is in. + */ +class CBtPrintingDevice : public CActive, public MProtPrintingDevice, public MBtPCObserver + { + public: + + static MProtPrintingDevice* NewL(); + + // Default constructor and destructor. + CBtPrintingDevice(); + ~CBtPrintingDevice(); + + public: // From MProtPrintingDevice + + // General. + void ConstructL(const TDesC& aDLLPath); + TVersion Version(); + TUint SupportedProtocols(); + // Discovery. + void StartDiscoveryL(MProtDiscoveryObserver& aObserver, TUint aProtocols = 0); + TInt RemoveCachedDeviceL(TInt aDeviceID); + void CancelDiscovery(TBool aDoCallBack = ETrue); + // Print. + TInt CreatePrintJobL(TInt aDeviceID, RPointerArray& aImages, MProtPrintEventObserver& aObserver); + + /** + * @brief Submit a job previously created with CreatePrintJobL() + */ + void SubmitPrintJobL(); + + /** + * @brief Cancels and ongoing print job. + * + * @return KErrNone if successful, KErrInvalidSequence if no printing job was previously submitted. + */ + TInt CancelPrintJob(); + TInt ContinuePrintJobL(); + TInt GetNumPrintPages(); + TInt GetPrintJobStatus(); + TInt GetPrinterStatus(TInt aDeviceID); + // Capabilities. + TInt GetDeviceCapabilityIDsL(TInt aDeviceID, RArray& aCapabilityIDs); + TInt GetDeviceCapabilityL(TInt aDeviceID, TInt aCapabilityID, TPrintCapability& aCapability); + TInt GetJobSetting(TInt aCapabilityID, TInt& aValue); + + /** + * @brief Sets the value of a single capability. + * + * Sets the value of a single capability. The value is passed as a TInt. + * For Float capabilities it is the numerator. + * + * Changes in certain capability values can affect other capabilities, + * such as a change in paper size changes the available templates. + * When this occurs, the affected capabilities are returned in the + * aAffectedCapability field. If there are any, the client should get + * these capabilities again. + * + * @param[in] aCapabilityID Id of the capability to be setted. + * @param[in] aValue Value to set the capability to. + * @param[out] aAffectedCapability 0=None, else CapabilityID + * + * @return KErrNone if successful, KErrInvalidSequence if job is not active, + * KErrInvalidData if setting request is invalid (either capability ID or value). + * Otherwise another of the system-wide error codes. + */ + TInt SetJobSettingL(TInt aCapabilityID, TInt aValue, TInt& aAffectedCapability); + + // Preview. + TInt GetNumPreviewPages(); + + /** + * @brief Creates a CFbsBitmap object and fills it with the preview bitmap. + * + * @param[in] aTemplateID Layout Capability ID of the icon desired. + * @param[out] aFsBitmapHandle + * + * @return KErrNone, or another of the system-wide error codes. + */ + TInt GetJobTemplateIconL(TInt aTemplateID, TInt& aFsBitmapHandle); + + /** + * Creates a preview image in a CFbsBitmap object. PreviewImageEvent() is called on the PrintEventObserver. + * + * @param aPageNumber Currently unused + * + * @return KErrNone if successful, KErrInvalidData if the Preview Image could not be loaded, or another of the system-wide error codes. + */ + TInt CreatePreviewImage(TInt aPageNumber); + + void RegisterIdleObserver(MProtIdleObserver * /*aObserver*/) {}; + + void SetNumsOfCopiesL( const RArray& aNumsOfCopies, TInt& aErr ); + + void CreateJobResponse( TInt aJobId, TInt aErrorCode ); + + void CancelJobResponse(TInt aErrorCode ); + + void GetPrinterStateResponse(TInt aState, + TInt aStateReasons, + TInt aOperationStatus, TInt aDeviceId); + + void GetEventResponse(TInt aJobId, + TInt aJobState, + TInt aPrinterState, + TInt aStateReasons, + TInt aOperationStatus); + + void GetJobAttributesResponse( TInt aJobState, + const TDesC8& aJobName, + const TDesC8& aOriginator, + TInt aSheetsCompleted, + TInt aPendingJobs, + TInt aErrorCode ); + + void DeviceDiscovered( CRsBtDevice& aDevice ); + void DeviceDisappeared( CRsBtDevice& aDevice ); + void DiscoveryError(TInt aError); + + /* + * Updates OPP printing progress bar. + * */ + void OPPSendProgress( TInt aProgress ); + + public: //own + static TBool HandleTimeout(TAny *aWho); + + private: + + virtual void RunL(); + virtual void DoCancel(); + virtual TInt RunError(TInt aError); + + void GetUsedDevicesL(); + + void InitJobL(CRsBtDevice *aPrinter, RPointerArray& aImages); + + TBool InformObserver(TInt aUsedProtocol); + + void GetCapabilities(CRsBtDevice& aPrinter, TBool aForcedGet = EFalse); + void GetDefaultCapabilities(RArray& aCapabilities); + + void FoundDeviceL(CRsBtDevice& aDevice); + void UpdateCacheList(); + + TBool DoHandleTimeout(); + + void ResetTimer(); + void StartTimer(TTimeIntervalMicroSeconds32 aDelay, + TTimeIntervalMicroSeconds32 anInterval, + TCallBack aCallBack); + + CRsBtDevice* FindDevice(TInt aPrinterID); + + TInt AddBtDeviceL(CRsBtDevice& aDevice); + + void FinishPrinting(TInt aErrorCode); + + void ManagePrintingState(TInt aJobId, TInt aJobState, TInt aPrinterState, + TInt aStateReasons, TInt aOperationStatus); + + void GetJobAttributesL(); + void GetPrinterStateL(); + void CancelJobL(); + void Deactivate(); + // updates the printing proggress if increased and resets the pending counter if so. + TInt UpdateProggress(); + void GetLocalBTNameL(TDes8& aName); + void OPPJobRollBack(); + + private: + + enum TDeviceState + { + ENone, + EReady, + EGetPrinterState, + EGetJobAttributes, + EFinish, + EDiscovering, + EJobProgress, + ECancelJob + }; + + /// State operating. + TDeviceState iState; + + /// Print job object. + CPrintJob* iPrintingJob; + + CBtPrinterController* iPrinterController; + CBtDeviceContainer* iDeviceContainer; + + /// Requested Protocols for Discovery + TUint iRequestedProtocols; + + /// Print error. + TInt iPrintError; + /// Print error message code. + TInt iPrintErrorMsgCode; + + TUint iPendingCount; + + CPeriodic* iPrinterTimer; + + TInt iProggress; + + // used BlueTooth profile + TUint iUsedBtProfile; + + + }; + +#endif // CBTPRINTINGDEVICE_H + +// End of File