diff -r 159fc2f68139 -r d59c248c9d36 ImagePrint/ImagePrintEngine/DeviceProtocols/dpof/inc/cprintercapabilities.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ImagePrint/ImagePrintEngine/DeviceProtocols/dpof/inc/cprintercapabilities.h Wed Sep 01 12:30:38 2010 +0100 @@ -0,0 +1,92 @@ +/* +* 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: Contains the CPrinterCapabilities class definition. +* +*/ + + +#ifndef CPRINTERCAPABILITIES_H +#define CPRINTERCAPABILITIES_H + +#include +#include + +#include "ccapabilityarray.h" + +/** + * @brief Class that stores a printer class capabilities in full detail. + * + * class PrinterCapabilities - An array which holds pointers to capabilities that + * exist in the CapabilitiesArray(s). Each printer that is found will have it's own + * PrinterCapabilities object, and when the PrinterCapability functions are called from + * the ClientAPI, the data is obtained directly from this PrinterCapabilities class. + * Different printers may refer back to the same object from the capabilities Array. + * When the PrinterCapabilities object is created, it will contain the default + * capabilities and current settings. If the printer is selected for the print job, + * the settings and configuration may change to reflect the current print job settings. + * + * BUILDING PRINTER CAPABILITIES + * Each resource contains a printerclass field, which identifies which class of printer this + * capability is defined for. When a printer is discovered and a new PrinterCapabilities + * object is created, the CapabilitiyArray is searched for capabilites with that class to + * add. This occurs in the BuildCCapabilityArray function. + * + * While a resource file can have the same capabilitiy defined multiple times for multiple + * PrinterClasses, A PrinterClass can have a capability defined only once for the class. + * One of the classes is "ELinked". Capabilities of this class are dependent upon the current + * value of other capabilities and can be linked into one or more other PrinterCapability arrays. + * Each enumerated value in the resource is a value pair, with the second number being a link code. + * If non-zero, then the resource with right LinkID is also added to the PrinterCapabilites. + * When SetCurrentCapability is called and a current value is changed, the linked capability must + * also be checked to see if it is changed. + * + * Note that setting the current value can only occur for the current print job, but when it does + * the capabilities for a particular printer can actually change during the life of the job, + * requiring the application to get the printer capabilities multiple times. + * Notes on implementation Limitations: + * + * The current implementation uses one and only one CapabilitiesInfo object for + * each capabiltiy described in the resource file. All references to the capability + * refer back to this object. This is fine as long as there is only one print job. + * When we have multiple print jobs, this will not work for two reasons. + * + * 1 - There could be multiple current settings fora particular capability. + * + * 2 - Different jobs could configure linked capabilities for a printer. + */ +class CPrinterCapabilities : public CBase + { + public: + static CPrinterCapabilities* NewL(CCapabilityArray* aSourceArray, TInt aPrinterClass); + ~CPrinterCapabilities(); + TInt Count() const; + void GetIDs(RArray& aCapabilityIDs) const; + TInt GetCapability(TInt aCapabilityID, TPrintCapability& aCapability) const; + TInt SetCurrentValueL(TInt aCapabilityID, TInt aValue); + TBool GetCurrentValue(TInt aCapabilityID, TInt &aCapabilityValue) const; + + private: + CPrinterCapabilities(CCapabilityArray* aSourceArray, TInt aPrinterClass); + void ConstructL(); + void BuildCapabilityArrayL(); + + private: + TInt iPrinterClass; + RPointerArray iPrinterDataArray; + CCapabilityArray* iSourceArray; + }; + +#endif // CPRINTERCAPABILITIES_H + +// End of File