diff -r 26673e532f65 -r 159fc2f68139 ImagePrint/ImagePrintUI/imageprinteng/src/csettingsmanager.cpp --- a/ImagePrint/ImagePrintUI/imageprinteng/src/csettingsmanager.cpp Tue May 25 12:42:41 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,691 +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: -* -*/ - - -#include -#include -#include - -#include "tprintcapability.h" -#include "csettingsmanager.h" -#include "ctemplatesettings.h" -#include "cprintsettings.h" -#include "ctintcapability.h" -#include "clistcapability.h" -#include "cfloatcapability.h" -#include "ctemplatedata.h" -#include "printcapabilitycodes.h" -#include "settingsconverter.h" -#include "crealfactory.h" -#include "imageprint.h" -#include "cimageprint.h" -#include "imageprintvariant.h" -#include -#include "imageprintprivatecrkeys.h" -#include "mdiscovery.h" -#include "clog.h" - -namespace - { - const TInt KDefaultPrinterNameMaxLength = 100; - const TInt KTemplateSize = 16; - const TInt KTemplates[] = {1554,1552,1565,1555,1501,1553,1551,1558,1502,1504,1564,1506,1509,1512,1513,1516}; - } - -#include "clog.h" - -// CONSTRUCTION -CSettingsManager* CSettingsManager::NewL( - CRealFactory* aFactory ) - { - CSettingsManager* self = CSettingsManager::NewLC( - aFactory ); - CleanupStack::Pop(); // self - - return self; - } - -CSettingsManager* CSettingsManager::NewLC( - CRealFactory* aFactory ) - { - CSettingsManager* self = - new ( ELeave ) CSettingsManager( aFactory ); - CleanupStack::PushL( self ); - self->ConstructL(); - - return self; - } - -// Constrcutor -CSettingsManager::CSettingsManager( - CRealFactory* aFactory ) : - iFactory( aFactory ), - iActivePage( 1 ) - { - } - -// Destructor -CSettingsManager::~CSettingsManager() - { - delete iPrintSettings; - delete iTemplateSettings; - delete iCurrentPrinterName; - delete iCRSession; - iNumberOfCopiesArray.Close(); - iNumberOfCopiesCumulativeArray.Close(); - } - -// 2nd phase constructor -void CSettingsManager::ConstructL() - { - iPrintSettings = new ( ELeave ) CPrintSettings; - iTemplateSettings = CTemplateSettings::NewL( iFactory ); - - iCRSession = CRepository::NewL( KCRUidImagePrint ); - } - -// Clones the current template settings -CTemplateSettings* CSettingsManager::TemplateSettingsL() - { - return iTemplateSettings->CloneL(); - } - -// Changes active template to a new one -void CSettingsManager::SetActiveTemplateL( - TUint aUid ) - { - LOG1( "CSettingsManager::SetActiveTemplateL START || aUid = %d", aUid ); - // Set active template to preview manager, if one available - iTemplateSettings->iActiveTemplateUid = aUid; - - CListCapability* capab = static_cast( - FetchCapabilityL( EPrintCapabLayout ) ); - capab->iValue = aUid; - LOG1( "CSettingsManager::SetActiveTemplateL || iImagesOnPage = %d", iImagesOnPage ); - } - -// Returns the number of pages -TUint CSettingsManager::NumOfPagesL() - { - // Always 1, fix this for the release 2 - // return iFactory->Engine()->GetNumPrintPages(); - - TInt num( 1 ); - return num; - } - -// Returns the number of copies -TInt CSettingsManager::NumberOfCopies( RArray& aArray ) - { - TInt err( KErrNone ); - aArray.Reset(); - for( TInt i=0; i& aArray ) - { - TInt err( KErrNone ); - TInt numberOfCopiesCumulative( 1 ); - iNumberOfCopiesArray.Close(); - iNumberOfCopiesCumulativeArray.Close(); - for( TInt i=0; iEngine()->SetNumberOfCopies( iNumberOfCopiesArray ); - } - -// Returns -TBool CSettingsManager::IsMMC() - { - TBool retVal = EFalse; - TInt supportedProtocols = iFactory->DiscoveryIF()->SupportedProtocols(); - - if( (supportedProtocols & KImagePrint_PrinterProtocol_DPOF) && - ( iPrinterUid == iMMCUid )) - { - retVal = ETrue; - } - LOG1( "CSettingsManager::IsMMC: %d ", retVal ); - return retVal; - } - -// Changes active page for drawing a new preview -void CSettingsManager::SetActivePageL( - TUint aActivePage ) - { - } - -// Returns current active page -TUint CSettingsManager::CurActivePageL() - { - TUint num( 1 ); - return num; - } - -// Clones current print settings -CPrintSettings* CSettingsManager::PrinterSettingsL() - { - return iPrintSettings->CloneL(); - } - -// Sets all settings, not supported at the moment -void CSettingsManager::SetPrinterSettingsL( - CPrintSettings& /*aSettings*/ ) - { - User::Leave( KErrNotSupported ); - } - -// Sets a single setting -TInt CSettingsManager::SetPrinterSettingL( - CBaseCapability& aCapab ) - { - LOG( "CSettingsManager::SetPrinterSettingL START" ); - TInt getSettings( 0 ); - TInt err = iFactory->Engine()->SetJobSettingL( - aCapab.iUid, aCapab.iValue, getSettings ); - getSettings = 0; - User::LeaveIfError( err ); - - CBaseCapability* capab = FetchCapabilityL( aCapab.iUid ); - capab->iValue = aCapab.iValue; - -#ifdef IMG_PRINT_DYNAMIC_PRINT_SETTINGS - // Do not initialize if only template was changed - if( aCapab.iUid != 500 ) - { - LOG( "CSettingsManager::SetPrinterSettingL || aCapab.iUid != 500" ); - InitCapabilitiesL( iPrinterUid ); - InitTemplateSettingsL(); - } - else - { - LOG( "CSettingsManager::SetPrinterSettingL || aCapab.iUid == 500" ); - SetActiveTemplateL( aCapab.iValue ); - } -#else - InitCapabilitiesL( iPrinterUid ); - InitTemplateSettingsL(); -#endif - - LOG1( "CSettingsManager::SetPrinterSettingL getSettings = %d", getSettings ); - return getSettings; - } - -// Initializes the printer settings -void CSettingsManager::InitSettingsL( - TInt aPrinterUid, - TInt aMMCUid ) - { - LOG1( "CSettingsManager::InitSettingsL aPrinterUid = %d", aPrinterUid ); - LOG1( "CSettingsManager::InitSettingsL aMMCUid = %d", aMMCUid ); - - iMMCUid = aMMCUid; - InitCapabilitiesL( aPrinterUid ); - InitTemplateSettingsL(); - iPrinterUid = aPrinterUid; - } - -// Inititalizes the capabilities -void CSettingsManager::InitCapabilitiesL( - TInt aPrinterUid ) - { - LOG1("CSettingsManager::InitCapabilitiesL Begin: %d", aPrinterUid); - RArray capabIDs; - CleanupClosePushL( capabIDs ); - - // Get list of IDs - iFactory->Engine()->GetPrinterCapabilityIDsL( aPrinterUid, capabIDs ); - CPrintSettings* printSettings = new ( ELeave ) CPrintSettings; - CleanupStack::PushL( printSettings ); - - TInt i( 0 ); - TInt num( capabIDs.Count() ); - LOG1("CSettingsManager::InitCapabilitiesL number of capabs: %d", num); - for ( i = 0; i < num; i++ ) - { - TPrintCapability capab; - iFactory->Engine()->GetPrinterCapabilityL( aPrinterUid, capabIDs[i], capab ); - capab.iType = TPrintCapability::Enum; - - CBaseCapability* capability = 0; - - // Create capability - switch ( capab.iType ) - { - case TPrintCapability::Int: - capability = SettingsConverter::AddTIntCapabilityLC( - capab, i, capabIDs[i] ); - break; - - case TPrintCapability::Enum: - capability = SettingsConverter::AddListCapabilityLC( - capab, i, capabIDs[i], iFactory ); - break; - - case TPrintCapability::Float: - capability = SettingsConverter::AddFloatCapabilityLC( - capab, i, capabIDs[i] ); - break; - - default: - User::Leave( KErrUnknown ); - break; - } - iFactory->Engine()->GetJobSetting( capabIDs[i], capability->iValue ); - - // Add the capability to the list - User::LeaveIfError( - printSettings->iCapabilities.Append( capability ) ); - CleanupStack::Pop(); // capability - } - - delete iPrintSettings; - iPrintSettings = printSettings; - - CleanupStack::Pop(); // printSettings - CleanupStack::PopAndDestroy(); // capabIDs - LOG("CSettingsManager::InitCapabilitiesL End"); - } - -// Initializes the templates -void CSettingsManager::InitTemplateSettingsL() - { - LOG("CSettingsManager::InitTemplateSettingsL Begin"); - CTemplateSettings* settings = CTemplateSettings::NewL( iFactory ); - CleanupStack::PushL( settings ); - TInt templateBuffer = iFactory->SettingsIF()->TemplateUid(); - - TInt i( 0 ); - TInt num( iPrintSettings->iCapabilities.Count() ); - for ( i = 0; i < num; i++ ) - { - if ( iPrintSettings->iCapabilities[i]->iUid == EPrintCapabLayout ) - { - TInt j( 0 ); - CListCapability* layouts = - static_cast - ( iPrintSettings->iCapabilities[i] ); - for ( j = 0; j < layouts->iEnumIDs.Count(); j++ ) - { - // Create new template data with the icon and Uid value - CTemplateData* data = CTemplateData::NewL(); - data->iUid = layouts->iEnumIDs[j]; - CleanupStack::PushL( data ); - LOG1( "CSettingsManager::InitTemplateSettingsL, UID: %d", data->iUid ); - User::LeaveIfError( settings->iTemplates.Append( data ) ); - CleanupStack::Pop( data ); - } - } - } - - // Sort the templates to "standard" order - CTemplateSettings* sortsettings = CTemplateSettings::NewL( iFactory ); - CleanupStack::PushL( sortsettings ); - for ( TInt i = 0; i < KTemplateSize; i++ ) - { - for ( TInt j = 0; j < settings->iTemplates.Count(); j++ ) - { - if ( KTemplates[i] == settings->iTemplates[j]->iUid ) - { - CTemplateData* data = CTemplateData::NewL(); - data->iUid = settings->iTemplates[j]->iUid; - CleanupStack::PushL( data ); - LOG1( "CSettingsManager::InitTemplateSettingsL, UID: %d", data->iUid ); - User::LeaveIfError( sortsettings->iTemplates.Append( data ) ); - CleanupStack::Pop( data ); - break; - } - } - } - - CleanupStack::Pop( sortsettings ); - CleanupStack::PopAndDestroy( settings ); - delete iTemplateSettings; - iTemplateSettings = sortsettings; - - TBool templateFound = EFalse; - if ( iTemplateSettings->iTemplates.Count() > 0 ) - { - for (TInt g = 0; g < iTemplateSettings->iTemplates.Count(); g++) - { - if (iTemplateSettings->iTemplates[g]->iUid == templateBuffer) - { - iTemplateSettings->iActiveTemplateUid = templateBuffer; - templateFound = ETrue; - } - } - if (!templateFound){ - iTemplateSettings->iActiveTemplateUid = - iTemplateSettings->iTemplates[0]->iUid; - } - - SetActiveTemplateL( iTemplateSettings->iActiveTemplateUid ); - } - // If there are no templates available, draw the preview using - // 1/page template - else - { - LOG("CSettingsManager::InitTemplateSettingsL || No templates available!"); - SetActiveTemplateL( EPrintCapabLayout1UpMedium ); - } - LOG("CSettingsManager::InitTemplateSettingsL End"); - } - -// Fetches capability from the list and returns it -CBaseCapability* CSettingsManager::FetchCapabilityL( - TInt aUid ) - { - LOG1("CSettingsManager::FetchCapabilityL Begin: %d", aUid); - CBaseCapability* capab = NULL; - TInt found( KErrNotFound ); - - TInt i( 0 ); - TInt num( iPrintSettings->iCapabilities.Count() ); - for ( i = 0; i < num && found != KErrNone; i++ ) - { - if ( iPrintSettings->iCapabilities[i]->iUid == aUid ) - { - capab = iPrintSettings->iCapabilities[i]; - found = KErrNone; - } - } - - User::LeaveIfError( found ); - LOG("CSettingsManager::FetchCapabilityL End"); - return capab; - } - -TInt CSettingsManager::TemplateUid() - { - LOG1( "CSettingsManager::TemplateUid || iActiveTemplateUid = %d", iTemplateSettings->iActiveTemplateUid ); - return iTemplateSettings->iActiveTemplateUid; - } - -TBool CSettingsManager::UpdatePageNumberL( TInt aCurrentImage ) - { - TBool retValue = EFalse; - TUint pageNumber; - - if( iNumberOfCopiesCumulativeArray.Count() > aCurrentImage-1 ) - { - aCurrentImage = iNumberOfCopiesCumulativeArray[aCurrentImage-1]; - } - - pageNumber = aCurrentImage / iImagesOnPage; - if ( ( aCurrentImage % iImagesOnPage ) != 0 ) - { - pageNumber++; - } - - if ( iActivePage != pageNumber ) - { - iActivePage = pageNumber; - retValue = ETrue; - } - return retValue; - } - -TInt CSettingsManager::PrinterUid() - { - return iPrinterUid; - } - - -TBool CSettingsManager::GetUsbState() - { - return iUsbConnected; - } - -void CSettingsManager::SetUsbState( TBool aConnected ) - { - iUsbConnected = aConnected; - } - -TInt CSettingsManager::GetDefaultPrinterProtocol() - { - TInt retValue; - TInt err = iCRSession->Get( KDefaultPrinterProtocol, retValue ); - - LOG2("CSettingsManager::GetDefaultPrinterProtocol: %d, err: %d", retValue, err); - return ( err ) ? err : retValue; - } - - -TInt CSettingsManager::SetDefaultPrinterProtocol( TInt aProtocol ) - { - TInt err = iCRSession->Set( KDefaultPrinterProtocol, aProtocol ); - LOG2("CSettingsManager::SetDefaultPrinterProtocol: %d, err: %d", aProtocol, err); - return err; - } - -TInt CSettingsManager::GetCurrentPrinterProtocol() - { - LOG1("CSettingsManager::GetCurrentPrinterProtocol: %d", iCurrentPrinterProtocol ); - return iCurrentPrinterProtocol; - } - -void CSettingsManager::SetCurrentPrinterProtocol( TInt aProtocol ) - { - LOG1("CSettingsManager::SetCurrentPrinterProtocol: %d", aProtocol ); - iCurrentPrinterProtocol = aProtocol; - } - -TUint CSettingsManager::GetCurrentPrinterVendor() - { - LOG1("CSettingsManager::GetCurrentPrinterVendor() vendor: %d",iVendor); - return iVendor; - } - -void CSettingsManager::SetCurrentPrinterVendor( TUint aVendor ) - { - LOG1("CSettingsManager::SetCurrentPrinterVendor() vendor: %d",aVendor); - iVendor = aVendor; - } - -TInt CSettingsManager::GetDefaultPrintID() - { - TInt retValue; - TInt err = iCRSession->Get( KDefaultPrinterID, retValue ); - LOG2("CSettingsManager::GetDefaultPrintID: get: %d, err: %d", retValue, err); - return ( err ) ? err : retValue; - } - -TInt CSettingsManager::SetDefaultPrinterID( TInt aId ) - { - TInt err = iCRSession->Set( KDefaultPrinterID, aId ); - LOG2("CSettingsManager::SetDefaultPrinterID: set: %d, err: %d", aId, err); - return err; - } - -HBufC* CSettingsManager::GetDefaultPrinterNameLC() - { - HBufC* name = HBufC::NewLC( KDefaultPrinterNameMaxLength ); - TPtr ptr( name->Des() ); - TInt err = iCRSession->Get( KDefaultPrinterName, ptr ); - LOG2("CSettingsManager::GetDefaultPrinterNameLC: name: %S, err: %d", &ptr, err); - return name; - } - -TInt CSettingsManager::SetDefaultPrinterNameL( const TDesC& aPrinterName ) - { - TInt err = KErrNone; - HBufC* stringholder = HBufC::NewLC( aPrinterName.Length() ); - *stringholder = aPrinterName; - - // Clear the printer name string from all formatting tabs & numbers - TPtr ptr = stringholder->Des(); - TInt pos = stringholder->Find( KTabChar ); - if ( pos == 1 ) // 1st possible icon formatting tab is at pos 1 - { - ptr.Delete( 0, 2 ); // delete the first icon tab and the number previous to it - pos = stringholder->Find( KTabChar ); - } - while ( pos != KErrNotFound && - pos != stringholder->Length() - 2 ) - { - ptr.Delete( pos, 1); // delete all middle tabs - pos = stringholder->Find( KTabChar ); - } - // 2nd possible iconformatting tab is 2nd last char - if ( pos != KErrNotFound && - pos == stringholder->Length() - 2 ) - { - // delete the 2nd icon formatting tab and the number next to it - ptr.Delete( stringholder->Length() - 2, 2 ); - } - - err = iCRSession->Set( KDefaultPrinterName, *stringholder ); - LOG2("CSettingsManager::SetDefaultPrinterNameL: name: %S err: %d", &ptr, err); - CleanupStack::PopAndDestroy( stringholder ); - return err; - } - -HBufC* CSettingsManager::GetCurrentPrinterName() - { - TPtr ptr = iCurrentPrinterName->Des(); - LOG1("CSettingsManager::GetCurrentPrinterName: name: %S", &ptr ); - return iCurrentPrinterName; - } - -TInt CSettingsManager::SetCurrentPrinterName( const TDesC& aPrinterName ) - { - if( iCurrentPrinterName ) - { - delete iCurrentPrinterName; - iCurrentPrinterName = NULL; - } - - TInt err; - HBufC* tmpBuf = aPrinterName.Alloc(); - if( !tmpBuf ) - { - return KErrGeneral; - } - else - { - err = KErrNone; - iCurrentPrinterName = tmpBuf; - } - - // Clear the printer name string from all formatting tabs & numbers - TPtr ptr = iCurrentPrinterName->Des(); - TInt pos = iCurrentPrinterName->Find( KTabChar ); - if ( pos == 1 ) // 1st possible icon formatting tab is at pos 1 - { - ptr.Delete( 0, 2 ); // delete the first icon tab and the number previous to it - pos = iCurrentPrinterName->Find( KTabChar ); - } - while ( pos != KErrNotFound && - pos != iCurrentPrinterName->Length() - 2 ) - { - ptr.Delete( pos, 1); // delete all middle tabs - pos = iCurrentPrinterName->Find( KTabChar ); - } - // 2nd possible iconformatting tab is 2nd last char - if ( pos != KErrNotFound && - pos == iCurrentPrinterName->Length() - 2 ) - { - // delete the 2nd icon formatting tab and the number next to it - ptr.Delete( iCurrentPrinterName->Length() - 2, 2 ); - } - - LOG1("CSettingsManager::SetCurrentPrinterName: name: %S", &ptr ); - return err; - } - -HBufC* CSettingsManager::GetCurrentPaperSizeTextL() - { - HBufC* retValue = NULL; - CListCapability* paperSizeCapab = NULL; - // Searches the paper size capability from the capability list - // Search the UID for paper size (= 4) - TInt counter = iPrintSettings->iCapabilities.Count(); - for( TInt i = 0 ; i < counter ; i++ ) - { - - //Use the searched ListCapability - if( iPrintSettings->iCapabilities[ i ]->iUid == EPrintCapabPaperSize ) - { - paperSizeCapab = static_cast< CListCapability* > - ( iPrintSettings->iCapabilities[ i ] ); - } - } - - - TBool found( EFalse ); - - if ( paperSizeCapab ) - { - const TInt expectedNumberOfStrings( 2 ); - CDesCArrayFlat* strings = - new ( ELeave ) CDesCArrayFlat( expectedNumberOfStrings ); - CleanupStack::PushL( strings ); - - TInt i( 0 ); - TInt counter = paperSizeCapab->iEnumIDs.Count(); - for ( i = 0; i < counter && !found; i++ ) - { - if ( paperSizeCapab->iEnumIDs[i] == - paperSizeCapab->iValue ) - { - retValue = paperSizeCapab->iTexts[i]; - } - } - CleanupStack::PopAndDestroy(); // strings - } - return retValue; - } - -// End of File