diff -r 17af172ffa5f -r 630d2f34d719 fax/faxclientandserver/FAXCLI/CFAXSET.CPP --- a/fax/faxclientandserver/FAXCLI/CFAXSET.CPP Thu Aug 19 11:03:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,252 +0,0 @@ -// Copyright (c) 1997-2009 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 "CFAX32.H" -#include "faxsettings.h" - - #include - - using namespace CommsDat; - -// amended August 1998 as follows : - -// 1. TFaxSettings is defined, with its internalize and externalize functions, - // in this module solely for use by the apps that use faxtrans. They should - // decide where the setting are stored and get or set them using the - // functions here. A reference to the settings to use are passed to - // faxtrans as parameters on instantiation of the CFaxTransfer object - eg - // - // CFaxTransfer * session = CFaxTransfer::NewL (aFaxSettings); - // - // 2. A number of items previous part of TFaxSettings are now kept as part of - // the modem definitions by Dialstor - these include both ModemInitString - // and FaxInitString, together with the CSY module name and the comm port - // name and number. Most importantly, the fax modem class is now part of the - // Dialstor data. A TDialstorModemPreferences object with this information in it is now - // part of the TFaxSettings, but this need NOT be initialized in the - // reference passed to CFaxTransfer on instantiation. If the modem class - // does happen to be unknown, then a special CFaxModemDriver is used which - // does autodetection and nothing else. - // - // 3. As a conseqence, CFaxSettings no longer has Get or Set functions - // for TFaxSettings. Instead, we have a ValidateAndGetClass function to - // validate the passed values in TFaxSettings (in case they are - // nonsense) and get the values from DialStore. - // - -/********************************************************************/ - -EXPORT_C TFaxSettings& TFaxSettings::operator=(const TFaxSettings& aFaxSettings) -/** Assignment operator. - -Copies the content of one TFaxSettings into another, replacing the existing -content. - -@param aFaxSettings A reference to the TFaxSettings to be copied. -@return A reference to this TFaxSettings. -@capability None -*/ - { - iFaxId = aFaxSettings.iFaxId; - iMaxSpeed = aFaxSettings.iMaxSpeed; - iMinSpeed = aFaxSettings.iMinSpeed; - iPreferredResolution = aFaxSettings.iPreferredResolution; - iPreferredCompression = aFaxSettings.iPreferredCompression; - iPreferredECM = aFaxSettings.iPreferredECM; - iVerbose = aFaxSettings.iVerbose; - iFaxOnDemandDelay = aFaxSettings.iFaxOnDemandDelay; - iFaxClass = aFaxSettings.iFaxClass; - return (*this); - } - -/********************************************************************/ - -EXPORT_C void TFaxSettings::ExternalizeL (RWriteStream & inifile) const -/** Externalises the TFaxSettings object to a write stream. The presence of this -function means that the standard templated operator<<() (defined in s32strm.h) is available -to externalise objects of this class. - -@param inifile The stream to which the object should be externalised. -@capability None -*/ - { - inifile << iFaxId; - inifile.WriteInt32L (iMaxSpeed); - inifile.WriteInt32L (iMinSpeed); - inifile.WriteInt32L (iPreferredResolution); - inifile.WriteInt32L (iPreferredCompression); - inifile.WriteInt32L (iPreferredECM); - inifile.WriteInt32L (iVerbose); - inifile.WriteInt32L (iFaxOnDemandDelay); - inifile.WriteInt32L (iFaxClass); - } -/********************************************************************/ - -EXPORT_C void TFaxSettings::InternalizeL (RReadStream & inifile) -/** Internalises the TFaxSettings object from a read stream. The presence of this -function means that the standard templated operator>>() (defined in s32strm.h) is -available to internalise objects of this class. This function may leave if there -is a problem reading from the stream, or if internalisation causes an out of memory -error. -@param inifile The stream from which the object should be internalised. -@capability None -*/ - { - inifile >> iFaxId; - iMaxSpeed = inifile.ReadInt32L (); - iMinSpeed = inifile.ReadInt32L (); - iPreferredResolution = (TFaxResolution) inifile.ReadInt32L (); - iPreferredCompression = (TFaxCompression) inifile.ReadInt32L (); - iPreferredECM = inifile.ReadInt32L (); - iVerbose = inifile.ReadInt32L (); - iFaxOnDemandDelay = inifile.ReadInt32L (); - iFaxClass = (TFaxClass) inifile.ReadInt32L (); - } -/********************************************************************/ - -CFaxSettings *CFaxSettings::NewLC () - { - CFaxSettings *self = new (ELeave) CFaxSettings; - CleanupStack::PushL (self); - self->ConstructL (); - return self; - } -/********************************************************************/ - -CFaxSettings *CFaxSettings::NewL () - { - CFaxSettings *self = NewLC (); - CleanupStack::Pop (); - return self; - } -/********************************************************************/ - -void CFaxSettings::ConstructL() - { - - } -/********************************************************************/ - -CFaxSettings::~CFaxSettings () - { - } -/********************************************************************/ - -void CFaxSettings::ValidateAndSetClassL (TFaxSettings * aFaxSettings) - { - TInt badspeed; - - TFaxClass passedFaxClass = aFaxSettings->iFaxClass; - // first we check that the settings we are making are within range - - badspeed = aFaxSettings->iMaxSpeed % 2400; - if (badspeed) - aFaxSettings->iMaxSpeed -= badspeed; - if ((aFaxSettings->iMaxSpeed > 14400) || (aFaxSettings->iMaxSpeed < 2400)) - aFaxSettings->iMaxSpeed = 9600; - - badspeed = aFaxSettings->iMinSpeed % 2400; - if (badspeed) - aFaxSettings->iMinSpeed -= badspeed; - if ((aFaxSettings->iMinSpeed > 14400) || (aFaxSettings->iMinSpeed < 2400)) - aFaxSettings->iMinSpeed = 2400; - - if (aFaxSettings->iMinSpeed > aFaxSettings->iMaxSpeed) - aFaxSettings->iMinSpeed = aFaxSettings->iMaxSpeed; - - if (aFaxSettings->iPreferredResolution != EFaxNormal) - aFaxSettings->iPreferredResolution = (TFaxResolution)EFaxFine; - - if (aFaxSettings->iPreferredCompression != (TFaxCompression)EModifiedHuffman) - aFaxSettings->iPreferredCompression = (TFaxCompression)EModifiedRead; - - // second we read the current modem class - - // AnnW, 9/8/99 - This all assumes that we are taking the modem settings from the - // dial out IAP, which is fince for now, but may not be in the future? This may also - // need modifying for Linda? - - CMDBSession* db = CMDBSession::NewL(KCDVersion1_1); - CleanupStack::PushL(db); - - // Read the currently selected connection preference and find preferred IAP - TInt prefRank = 1; - - CCDConnectionPrefsRecord *connectionPrefs = - static_cast(CCDRecordBase::RecordFactoryL(KCDTIdConnectionPrefsRecord)); - CleanupStack::PushL(connectionPrefs); - connectionPrefs->iRanking = prefRank; - connectionPrefs->iDirection = ECommDbConnectionDirectionOutgoing; - connectionPrefs->FindL(*db); - - // The following code is a temporary solution until an issue has been resolved in CommsDat - // start - CCDIAPRecord* tempPIapRecord = - static_cast(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); - tempPIapRecord->SetRecordId(connectionPrefs->iDefaultIAP); - connectionPrefs->iDefaultIAP.iLinkedRecord = tempPIapRecord; - - CCDIAPRecord* pIapRecord = (CCDIAPRecord*)connectionPrefs->iDefaultIAP.iLinkedRecord; - pIapRecord->SetRecordId(connectionPrefs->iDefaultIAP); - pIapRecord->LoadL(*db); - - CCDBearerRecordBase* tempBearerRecord = - static_cast(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord)); - tempBearerRecord->SetRecordId(pIapRecord->iBearer); - pIapRecord->iBearer.iLinkedRecord = tempBearerRecord; - - CCDBearerRecordBase* pBearerRecord = (CCDBearerRecordBase*) pIapRecord->iBearer.iLinkedRecord; - pBearerRecord->SetRecordId(pIapRecord->iBearer); - pBearerRecord->LoadL(*db); - // end - - TUint32 iapId = pBearerRecord->iRecordTag; - - CMDBField* bearerField = new(ELeave) CMDBField(KCDTIdIAPBearer); - CleanupStack::PushL(bearerField); - bearerField->SetRecordId(iapId); - bearerField->LoadL(*db); - TUint32 modemId = *bearerField; - CleanupStack::PopAndDestroy(bearerField); - - CMDBField* faxField = new(ELeave) CMDBField(KCDTIdFaxClassPref); - CleanupStack::PushL(faxField); - faxField->SetRecordId(modemId); - faxField->LoadL(*db); - TUint32 faxClass; - faxClass = *faxField; - aFaxSettings->iFaxClass = static_cast(faxClass); - - // finally we validate the modem class - if not class 1 or 2 or 2.0 we - // write back the class we came in with, which is assumed to be correct - // - this is how we update the Comms database - other settings are ignored - - if ((aFaxSettings->iFaxClass != EClass1) - && (aFaxSettings->iFaxClass != EClass2) - && (aFaxSettings->iFaxClass != EClass2point0)) - { - aFaxSettings->iFaxClass = passedFaxClass; - db->OpenTransactionL(); - *faxField = aFaxSettings->iFaxClass; - faxField->ModifyL(*db); - db->CommitTransactionL(); - } - CleanupStack::PopAndDestroy(faxField); - - CleanupStack::PopAndDestroy(2); // db, connectionPrefs - - } - -/********************************************************************/