diff -r 08cc4cc059d4 -r 59ea2209bb67 ImagePrint/ImagePrintEngine/DeviceProtocols/dpof/src/cprintercapabilities.cpp --- a/ImagePrint/ImagePrintEngine/DeviceProtocols/dpof/src/cprintercapabilities.cpp Fri Jun 11 16:24:10 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,175 +0,0 @@ -/* -* 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. -* -*/ - - -#include "cprintercapabilities.h" -#include "imageprint.h" - -//********************************************************************** -// CPrinterCapabilities -//********************************************************************** - -CPrinterCapabilities::CPrinterCapabilities(CCapabilityArray* aSourceArray, TInt aPrinterClass) - { - iSourceArray = aSourceArray; - iPrinterClass = aPrinterClass; - } - -CPrinterCapabilities::~CPrinterCapabilities() - { - iPrinterDataArray.ResetAndDestroy(); - iPrinterDataArray.Close(); - } - -CPrinterCapabilities* CPrinterCapabilities::NewL(CCapabilityArray* aSourceArray, TInt aPrinterClass) - { - CPrinterCapabilities* self=new (ELeave) CPrinterCapabilities(aSourceArray,aPrinterClass); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -void CPrinterCapabilities::ConstructL() - { - BuildCapabilityArrayL(); - } - -void CPrinterCapabilities::BuildCapabilityArrayL() - { - CCapabilityInfo* capInfo; - CCapabilityInfo* workCap; - TInt count = iSourceArray->Count(); - - for( TInt i = 0; i < count; i++ ) - { - capInfo = (*iSourceArray)[i]; - if( capInfo->PrinterClass() == iPrinterClass ) - { - workCap = capInfo->CopyL(); - CleanupStack::PushL( workCap ); - iPrinterDataArray.AppendL( workCap ); - CleanupStack::Pop(); // workCap - TInt link = workCap->SetCurrentValue( workCap->Capability().iDefaultValue ); - if( link ) - { - workCap = iSourceArray->LinkedCapability( link )->CopyL(); - CleanupStack::PushL( workCap ); - iPrinterDataArray.AppendL( workCap ); - CleanupStack::Pop(); // workCap - } - } - } - } - -void CPrinterCapabilities::GetIDs( RArray& aCapabilityIDs ) const - { - for( TInt nCnt = 0; nCnt < iPrinterDataArray.Count(); nCnt++ ) - { - aCapabilityIDs.Append( iPrinterDataArray[nCnt]->Capability().iCapabilityID ); - } - } - -TInt CPrinterCapabilities::GetCapability( TInt aCapabilityID, TPrintCapability& aCapability ) const - { - TInt err( KErrInvalidData ); - for( TInt nCnt = 0; nCnt < iPrinterDataArray.Count() && err; nCnt++ ) - { - if( iPrinterDataArray[nCnt]->Capability().iCapabilityID == aCapabilityID ) - { - aCapability = iPrinterDataArray[nCnt]->Capability(); - err = KErrNone; - } - } - return err; - } - -TInt CPrinterCapabilities::SetCurrentValueL( TInt aCapabilityID, TInt aValue ) - // returns any affected capability ID - { - // locate the capability - CCapabilityInfo* capInfo = NULL; - for( TInt nCnt = 0; nCnt < iPrinterDataArray.Count() && !capInfo; nCnt++ ) - { - if( iPrinterDataArray[nCnt]->Capability().iCapabilityID == aCapabilityID ) - { - capInfo = iPrinterDataArray[nCnt]; - } - } - - TInt affectedCapability( 0 ); - - if( capInfo && aValue != capInfo->CurrentValue() ) - { - // has changed - TInt currentLink = capInfo->ValueLink( capInfo->CurrentValue() ); - TInt newLink = capInfo->SetCurrentValue( aValue ); - - if( newLink != currentLink ) - { - // Find and Delete the old link - for( TInt nCnt = 0; nCnt < iPrinterDataArray.Count(); nCnt++ ) - { - if( iPrinterDataArray[nCnt]->LinkID() == currentLink ) - { - CCapabilityInfo *tmpCap; - tmpCap = iPrinterDataArray[nCnt]; - iPrinterDataArray.Remove(nCnt); - delete tmpCap; - break; - } - } - - // add the new link - if( newLink ) - { - capInfo = iSourceArray->LinkedCapability( newLink ); - affectedCapability = capInfo->Capability().iCapabilityID; - CCapabilityInfo* tmpCap = capInfo->CopyL(); - CleanupStack::PushL( tmpCap ); - iPrinterDataArray.AppendL( tmpCap ); - CleanupStack::Pop(); // tmpCap - } - } - } - - return affectedCapability; - } - -TBool CPrinterCapabilities::GetCurrentValue( TInt aCapabilityID, TInt &aCapabilityValue ) const - { - TBool result( EFalse ); - - for( TInt nCnt = 0; nCnt < iPrinterDataArray.Count() && !result; nCnt++ ) - { - if( iPrinterDataArray[nCnt]->Capability().iCapabilityID == aCapabilityID ) - { - aCapabilityValue = iPrinterDataArray[nCnt]->CurrentValue(); - result = ETrue; - } - } - - return result; - } - - -TInt CPrinterCapabilities::Count() const - { - return iPrinterDataArray.Count(); - } - -// End of File