--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ImagePrint/ImagePrintEngine/DeviceProtocols/dpof/src/ccapabilityinfo.cpp Thu Dec 17 08:45:53 2009 +0200
@@ -0,0 +1,143 @@
+/*
+* 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 CCapabilityInfo class definition.
+*
+*/
+
+
+#include "ccapabilityinfo.h"
+
+//**********************************************************************
+// CCapabilityInfo
+//**********************************************************************
+void CCapabilityInfo::ConstructL(TResourceReader& aReader)
+ {
+ iPrinterClass = aReader.ReadInt32();
+ iCapability.iCapabilityID = aReader.ReadInt32();
+ iCapability.iType = (TPrintCapability::ECapType)aReader.ReadInt32();
+ iCapability.iDefaultValue = aReader.ReadInt32();
+ iCapability.iLow = aReader.ReadInt32();
+ iCapability.iHigh = aReader.ReadInt32();
+
+ TInt count = aReader.ReadInt16()/2;
+ iCapability.iEnumCount = count;
+
+ for( TInt i = 0; i < count ; i++ )
+ {
+ TInt value = aReader.ReadInt32();
+ iCapability.iEnumCodes[i] = value;
+ value = aReader.ReadInt32();
+ iLinks.Append(value);
+ }
+ iLinkID = aReader.ReadInt32();
+ iCurrentValue = 0;
+ }
+
+
+CCapabilityInfo* CCapabilityInfo::NewLC(TResourceReader& aReader)
+ {
+ CCapabilityInfo* self=new (ELeave) CCapabilityInfo;
+ CleanupStack::PushL(self);
+ self->ConstructL(aReader);
+ return self;
+ }
+
+CCapabilityInfo::~CCapabilityInfo()
+ {
+ iLinks.Close();
+ }
+
+TInt CCapabilityInfo::SetCurrentValue( TInt aValue )
+ // returns the link number from the resource file
+ {
+ if( aValue == iCurrentValue )
+ return 0;
+
+ iCurrentValue = aValue;
+ if( iCapability.iType == TPrintCapability::Enum ) // links are only on Enums.
+ {
+ for( TInt i = 0 ; i < iCapability.iEnumCount; i++ )
+ {
+ if( iCapability.iEnumCodes[i] == aValue )
+ {
+ return iLinks[i];
+ }
+ }
+ }
+ return 0;
+ }
+
+TInt CCapabilityInfo::ValueLink( TInt aValue )
+ {
+ if( iCapability.iType == TPrintCapability::Enum ) // links are only on Enums.
+ {
+ for( TInt i = 0; i < iCapability.iEnumCount; i++ )
+ {
+ if( iCapability.iEnumCodes[i] == aValue )
+ {
+ return iLinks[i];
+ }
+ }
+ }
+ return 0;
+ }
+
+CCapabilityInfo* CCapabilityInfo::CopyL() const
+ {
+ CCapabilityInfo *workCap = new (ELeave) CCapabilityInfo;
+ CleanupStack::PushL(workCap);
+
+ workCap->iPrinterClass = iPrinterClass;
+ workCap->iCapability.iCapabilityID = iCapability.iCapabilityID;
+ workCap->iCapability.iType = iCapability.iType;
+ workCap->iCapability.iDefaultValue = iCapability.iDefaultValue;
+ workCap->iCapability.iLow = iCapability.iLow;
+ workCap->iCapability.iHigh = iCapability.iHigh;
+ workCap->iCapability.iEnumCount = iCapability.iEnumCount;
+
+ for( TInt i = 0; i < iCapability.iEnumCount; i++ )
+ {
+ workCap->iCapability.iEnumCodes[i] = iCapability.iEnumCodes[i];
+ workCap->iLinks.AppendL( iLinks[i] );
+ }
+
+ workCap->iLinkID = iLinkID;
+ workCap->iCurrentValue = iCurrentValue;
+
+ CleanupStack::Pop(workCap);
+ return workCap;
+ }
+
+
+TInt CCapabilityInfo::CurrentValue() const
+ {
+ return iCurrentValue;
+ }
+
+TInt CCapabilityInfo::LinkID() const
+ {
+ return iLinkID;
+ }
+
+TInt CCapabilityInfo::PrinterClass() const
+ {
+ return iPrinterClass;
+ }
+
+TPrintCapability& CCapabilityInfo::Capability()
+ {
+ return iCapability;
+ }
+
+// End of File