diff -r 000000000000 -r b497e44ab2fc syncmlfw/ds/settings/src/NSmlProfileContentHandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/ds/settings/src/NSmlProfileContentHandler.cpp Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,1018 @@ +/* +* Copyright (c) 2002 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: ?Description +* +*/ + + + +// INCLUDE FILES +#include "NSmlProfileContentHandler.h" +#include "nsmldssettings.h" + +#include //access point resolution +#include + + + +// ============================ MEMBER FUNCTIONS =============================== + + +CNSmlProfileContentHandler::CNSmlProfileContentHandler() + { + } + +// ----------------------------------------------------------------------------- +// CXMLAttributes::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CNSmlProfileContentHandler::ConstructL(CNSmlDSSettings* aSettings ,CNSmlProfileArray* aArray) + { + iCounter = 0; + //iDSAccountInProgress = FALSE; + iDSSettingInProgress = FALSE; + iDSContentInProgress = FALSE; + iSettings = aSettings; + iCustomProfileArray = aArray; + //iCustomProfileArray = new (ELeave) CArrayPtrFlat (5); + iContentArray = new (ELeave) CArrayPtrFlat (7); + iSyncTypeArray = new (ELeave) CArrayFixFlat (1); + iContentCounter = 0; + iInvalidContent = EFalse; + } + +// ----------------------------------------------------------------------------- +// CXMLAttributes::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CNSmlProfileContentHandler* CNSmlProfileContentHandler::NewL(CNSmlDSSettings* aSettings,CNSmlProfileArray* aArray) + { + CNSmlProfileContentHandler* self = new( ELeave ) CNSmlProfileContentHandler; + + CleanupStack::PushL( self ); + self->ConstructL(aSettings ,aArray); + CleanupStack::Pop(); + + return self; + } + + +// Destructor +CNSmlProfileContentHandler::~CNSmlProfileContentHandler() + { + if (iContentArray) + { + iContentArray->ResetAndDestroy(); + } + delete iContentArray; + delete iSyncTypeArray; + } + + +TInt CNSmlProfileContentHandler::StartDocument() + { + return 1; + } + +TInt CNSmlProfileContentHandler::EndDocument() + { + + return 1; + } + +//=============================================== +// CNSmlProfileContentHandler::StartElement() +// +// +//=============================================== + +TInt CNSmlProfileContentHandler::StartElement(TDesC& /*aURI*/, TDesC& /*aLocalName*/, TDesC& aName, MXMLAttributes* /*aAttributeList*/) + { + if (aName == _L("DSSettings")) + { + iDSSettingInProgress = TRUE; + CNSmlDSProfile* profile = iSettings->CreateProfileL(); + iCustomProfileArray->AppendL(profile); + + + } + if (aName == _L("DSContentSettings")) + { + iDSContentInProgress = TRUE; + CNSmlDSContentSettingType* content = CNSmlDSContentSettingType::NewL(); + iContentArray->AppendL(content); + + + } + if (iDSSettingInProgress) + { + if (aName.Compare(KNSmlDSProfileDisplayName) == 0) + { + iState = EProfileDisplayName; + } + + if (aName.Compare(KNSmlDSProfileServerURL) == 0) + { + iState = EProfileServerURL; + + } + if (aName.Compare(KNSmlDSProfileIAPId) == 0) + { + iState = EProfileIAPId; + + } + if (aName.Compare(KNSmlDSProfileTransportId) == 0) + { + iState = EProfileTransportId; + + } + if (aName.Compare(KNSmlDSProfileSyncServerUsername) == 0) + { + iState = EProfileSyncServerUsername; + } + if (aName.Compare(KNSmlDSProfileSyncServerPassword) == 0) + { + iState = EProfileSyncServerPassword; + } + if (aName.Compare(KNSmlDSProfileServerAlertedAction) == 0) + { + iState = EProfileServerAlertedAction; + } + if (aName.Compare(KNSmlDSProfileHidden) == 0) + { + iState = EProfileHidden; + } + if (aName.Compare(KNSmlDSProfileHttpAuthUsed) == 0) + { + iState = EProfileHttpAuthUsed; + } + if (aName.Compare(KNSmlDSProfileHttpAuthUsername) == 0) + { + iState = EProfileHttpAuthUsername; + } + if (aName.Compare(KNSmlDSProfileHttpAuthPassword) == 0) + { + iState = EProfileHttpAuthPassword; + } + if (aName.Compare(KNSmlDSProfileServerId) == 0) + { + iState = EProfileServerId; + + } + if (aName.Compare(KNSmlDSProfileProtocolVersion) == 0) + { + iState = EProfileProtocolVersion; + } + if (aName.Compare(KNSmlAdapterSyncType) == 0) + { + iState = ESyncType; + } + if (aName.Compare(KNSmlDSProfileDefaultProfile) == 0) + { + iState = EDefaultProfile; + } + } + else if(iDSContentInProgress) + { + if (aName.Compare(KNSmlDSProfileDisplayName) == 0) + { + iState = EProfileDisplayName; + } + if (aName.Compare(KNSmlDSProfileServerId) == 0) + { + iState = EProfileServerId; + } + if (aName.Compare(KNSmlAdapterImlementationUID) == 0) + { + iState = EAdapterImplementationId; + } + if (aName.Compare(KNSmlAdapterServerDataSource) == 0) + { + iState = EAdapterServerDataSource; + } + + } + + return 1; + } + +//=============================================== +// CNSmlProfileContentHandler::StartElement() +// +// +//=============================================== +TInt CNSmlProfileContentHandler::EndElement(TDesC& /*aURI*/, TDesC& /*aLocalName*/, TDesC& aName) + { + + if (aName == _L("DSSettings") && iDSSettingInProgress ) + { + iDSSettingInProgress = FALSE; + iCounter++; + + } + else if (aName == _L("DSContentSettings") && iDSContentInProgress ) + { + iDSContentInProgress = FALSE; + CreateContentTypeL(); + iContentCounter++; + iInvalidContent = EFalse; + } + + if (iState != EStateHandled) + { + iState = EStateHandled; //Assume that empty feild. No need to set. + } + + + + return 1; +} + +//=============================================== +// CNSmlProfileContentHandler::StartCDATA() +// +// +//=============================================== +TInt CNSmlProfileContentHandler::StartCDATA() +{ + + return 1; +} + +//=============================================== +// CNSmlProfileContentHandler::EndCDATA() +// +// +//=============================================== +TInt CNSmlProfileContentHandler::EndCDATA() +{ + + return 1; +} + +//=============================================== +// CNSmlProfileContentHandler::Charecters() +// +// +//=============================================== +TInt CNSmlProfileContentHandler::Charecters(TDesC& aBuf, TInt /*aStart*/, TInt /*aLength*/) +{ + + TInt aValue; + if (iDSSettingInProgress) + { + + if(iState == EProfileDisplayName) + { + if(aBuf.Length() > KNSmlMaxProfileNameLength) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileDisplayName, KEmpty) ; + } + else + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileDisplayName, aBuf) ; + } + iState = EStateHandled; + } + if(iState == EProfileServerURL) + { + if(aBuf.Length() > KDSMaxURLLength) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileDisplayName, KEmpty) ; + } + else + { + SetServerURL(aBuf); + } + iState = EStateHandled; + } + if(iState == EProfileIAPId) + { + + if(aBuf.Length() > KAccessPointNameMaxLen) + { + _LIT(KDefaultValue ,"-1"); + aBuf = KDefaultValue; + } + + TInt iapId = AccessPointIdL(aBuf); + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileIAPId, iapId) ; + iState = EStateHandled; + } + if(iState == EProfileTransportId) + { + _LIT16(KHexCode,"0x"); + TBuf<64> tempBuf(aBuf); + TInt temp = tempBuf.Find(KHexCode); + tempBuf.Delete(0, temp + 2); + + iLex = tempBuf; + TInt64 aVal; + User::LeaveIfError(iLex.Val(aVal ,EHex)); + if (aVal != KUidNSmlMediumTypeInternet.iUid && aVal != KUidNSmlMediumTypeBluetooth.iUid) + { + aVal = KUidNSmlMediumTypeInternet.iUid; + } + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileTransportId, aVal) ; + iState = EStateHandled; + } + + if(iState == EProfileSyncServerUsername) + { + if(aBuf.Length() > KNSmlMaxUsernameLength) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileDisplayName, KEmpty) ; + } + else + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileSyncServerUsername, aBuf) ; + } + iState = EStateHandled; + } + if(iState == EProfileSyncServerPassword) + { + if(aBuf.Length() > KNSmlMaxPasswordLength) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileDisplayName, KEmpty) ; + } + else + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileSyncServerPassword, aBuf) ; + } + iState = EStateHandled; + } + if(iState == EProfileServerAlertedAction) + { + iLex = aBuf; + User::LeaveIfError(iLex.Val(aValue)); + TInt typeId = ServerAlertType(aValue); + + if(aValue != ESmlEnableSync && aValue != ESmlConfirmSync && aValue != ESmlDisableSync) + { + aValue = ESmlEnableSync; + } + + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileServerAlertedAction, typeId) ; + iState = EStateHandled; + } + + if(iState == EProfileHidden) + { + iLex = aBuf; + User::LeaveIfError(iLex.Val(aValue)); + SetVisibility(aValue); + iState = EStateHandled; + } + + if(iState == EProfileHttpAuthUsed) + { + iLex = aBuf; + User::LeaveIfError(iLex.Val(aValue)); + if (aValue != 0 && aValue != 1) + { + aValue = 1; + } + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileHttpAuthUsed, aValue) ; + iState = EStateHandled; + } + + if(iState == EProfileHttpAuthUsername) + { + if(iCustomProfileArray->At(iCounter)->IntValue(EDSProfileTransportId) + == KUidNSmlMediumTypeBluetooth.iUid + || !iCustomProfileArray->At(iCounter)->IntValue(EDSProfileHttpAuthUsed)) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileHttpAuthUsername, KEmpty) ; + } + else if (aBuf.Length() > KNSmlMaxHttpAuthUsernameLength) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileDisplayName, KEmpty) ; + } + else + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileHttpAuthUsername, aBuf) ; + } + iState = EStateHandled; + } + + if(iState == EProfileHttpAuthPassword) + { + if(iCustomProfileArray->At(iCounter)->IntValue(EDSProfileTransportId) + == KUidNSmlMediumTypeBluetooth.iUid + || !iCustomProfileArray->At(iCounter)->IntValue(EDSProfileHttpAuthUsed)) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileHttpAuthPassword, KEmpty) ; + } + else if(aBuf.Length() > KNSmlMaxHttpAuthPasswordLength) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileDisplayName, KEmpty) ; + } + else + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileHttpAuthPassword, aBuf) ; + } + iState = EStateHandled; + } + + if(iState == EProfileServerId) + { + if(aBuf.Length() > KNSmlMaxServerIdLength) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileDisplayName, KEmpty) ; + } + else + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileServerId, aBuf) ; + } + iState = EStateHandled; + } + if(iState == EProfileProtocolVersion) + { + iLex = aBuf; + User::LeaveIfError(iLex.Val(aValue)); + + if(aValue != ESmlVersion1_1_2 && aValue != ESmlVersion1_2) + { + aValue = ESmlVersion1_2; + } + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileProtocolVersion, aValue) ; + iState = EStateHandled; + } + + if(iState == ESyncType) + { + TInt syncType = SyncType (aBuf); + iSyncTypeArray->AppendL(syncType); + iState = EStateHandled; + } + + if(iState == EDefaultProfile) + { + if(aBuf.Compare(_L("true")) == 0) + { + aValue = 1; + } + else + { + aValue = 0; + } + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileDefaultProfile, aValue ); + iState = EStateHandled; + } + } + else if (iDSContentInProgress) + { + if(iState == EProfileDisplayName) + { + if(aBuf.Length() > KNSmlMaxProfileNameLength) + { + iContentArray->At(iContentCounter)->SetStrValue( EXMLDSProfileName, KEmpty) ; + iInvalidContent = ETrue; + } + else + { + iContentArray->At(iContentCounter)->SetStrValue( EXMLDSProfileName ,aBuf); + } + iState = EStateHandled; + } + if(iState == EProfileServerId) + { + if(aBuf.Length() > KNSmlMaxServerIdLength || iInvalidContent) + { + iContentArray->At(iContentCounter)->SetStrValue( EXMLDSProfileName, KEmpty) ; + iContentArray->At(iContentCounter)->SetStrValue( EXMLDSServerId, KEmpty) ; + } + else + { + iContentArray->At(iContentCounter)->SetStrValue( EXMLDSServerId ,aBuf); + } + iState = EStateHandled; + } + if(iState == EAdapterServerDataSource ) + { + if(aBuf.Length() > KDSMaxRemoteNameLength) + { + iContentArray->At(iContentCounter)->SetStrValue( EXMLDSServerDataSource, KEmpty) ; + } + else + { + iContentArray->At(iContentCounter)->SetStrValue( EXMLDSServerDataSource, aBuf); + } + iState = EStateHandled; + } + if(iState == EAdapterImplementationId ) + { + if(aBuf.Length() > KNSmlMaxAdapterIdLength) + { + iContentArray->At(iContentCounter)->SetStrValue( EXMLDSAdapaterId, KEmpty) ; + } + else + { + iContentArray->At(iContentCounter)->SetStrValue( EXMLDSAdapaterId, aBuf); + } + iState = EStateHandled; + } + + + } + + return 1; +} + + +//===================================================== +// CNSmlProfileContentHandler::CreateContentTypeL() +// +// +//===================================================== +void CNSmlProfileContentHandler::CreateContentTypeL() +{ + + TBuf<128> buffer; + buffer = iContentArray->At(iContentCounter)->StrValue( EXMLDSAdapaterId); + + TInt64 adapterId = 0; + + if (buffer.Compare(KEmpty) == 0) + { + return; + } + _LIT16(KHexCode,"0x"); + TInt temp = buffer.Find(KHexCode); + buffer.Delete(0, temp + 2); + iLex = buffer; + User::LeaveIfError(iLex.Val(adapterId ,EHex)); + + if (IsContentAdded(adapterId)) + { + return; + } + + buffer = iContentArray->At(iContentCounter)->StrValue( EXMLDSServerDataSource); + TBuf<16> clientDataSource(KEmpty) ; + TInt index; + if(CheckXMLContentSetting()) + { + if(iContentArray->At(iContentCounter)->StrValue( EXMLDSServerId).Compare(KEmpty) != 0) + { + for(index = 0; index < iCounter; index++) + { + if(iContentArray->At(iContentCounter)->StrValue( EXMLDSServerId). + Compare(iCustomProfileArray->At(index)->StrValue(EDSProfileServerId)) == 0) + { + break; + } + } + + } + else + { + for(index = 0; index < iCounter; index++) + { + if(iContentArray->At(iContentCounter)->StrValue( EXMLDSProfileName). + Compare(iCustomProfileArray->At(index)->StrValue(EDSProfileDisplayName)) == 0) + { + break; + } + } + } + + if (index < iCounter) + { + if (adapterId == KUidNSmlAdapterEMail.iUid && + iCustomProfileArray->At(index)->IntValue(EDSProfileProtocolVersion) == ESmlVersion1_1_2) + { + return; + } + iCustomProfileArray->At(index)->AddContentTypeL( adapterId, clientDataSource, buffer); + + CNSmlDSContentType* content = iCustomProfileArray->At(index)->ContentType(adapterId); + content->SetIntValue( EDSAdapterSyncType, iSyncTypeArray->At(index)); + } + + } + +} + +//===================================================== +// CNSmlProfileContentHandler::IsContentAdded() +// +// +//===================================================== +TBool CNSmlProfileContentHandler::IsContentAdded(TInt aAdapter) +{ + TBuf serverId; + TBuf profileName; + + serverId = iContentArray->At(iContentCounter)->StrValue( EXMLDSServerId); + + if (serverId.Compare(KEmpty) != 0) + { + for(TInt i = 0; i < iCounter; i++) + { + if(serverId.Compare(iCustomProfileArray->At(i)->StrValue(EDSProfileServerId)) == 0) + { + if(iCustomProfileArray->At(i)->ContentType(aAdapter)) + { + return ETrue; + } + } + } + } + else + { + profileName = iContentArray->At(iContentCounter)->StrValue( EXMLDSProfileName); + for(TInt i = 0; i < iCounter; i++) + { + if(profileName.Compare(iCustomProfileArray->At(i)->StrValue(EDSProfileDisplayName)) == 0) + { + if(iCustomProfileArray->At(i)->ContentType(aAdapter)) + { + return ETrue; + } + } + } + + } + + return EFalse; +} + +//===================================================== +// CNSmlProfileContentHandler::AccessPointIdL() +// +// +//===================================================== +TInt CNSmlProfileContentHandler::AccessPointIdL(TDesC& aBuf) +{ + + const TInt defConn = -2; + if (aBuf == _L("-1")) + { + return defConn; // return default connection always + } + + CCommsDatabase *database = CCommsDatabase::NewL(); + TUint32 aId ; + TInt retVal; + CleanupStack::PushL(database); + CCommsDbTableView* checkView; + checkView = database->OpenViewMatchingTextLC(TPtrC(IAP),TPtrC(COMMDB_NAME), aBuf); + TInt error = checkView->GotoFirstRecord(); + if (error == KErrNone) + { + //Get the IAP ID + checkView->ReadUintL(TPtrC(COMMDB_ID), aId); + retVal = aId; + } + else + { + retVal = defConn; + } + + CleanupStack::PopAndDestroy(2); + return retVal; + + +} + +//===================================================== +// CNSmlProfileContentHandler::SetServerURL() +// +// +//===================================================== +void CNSmlProfileContentHandler::SetServerURL(TDesC &aBuf) +{ + + _LIT(KColon, ":"); + _LIT(KSlash, "/"); + + const TInt KPortMaxLen = 5; + TBuf<150> temp; + TBuf port; + + _LIT(KHttpHeader, "http://"); + _LIT(KHttpsHeader, "https://"); + _LIT(KDefaultPort,":80"); + + const TInt KHttpLength = 7; + const TInt KHttpsLength = 8; + + TInt insertPos = 0; + + if (iCustomProfileArray->At(iCounter)->IntValue(EDSProfileTransportId) == KUidNSmlMediumTypeBluetooth.iUid) + { + if (aBuf.Left(KHttpLength).Compare(KHttpHeader) == 0 + || aBuf.Left(KHttpsLength).Compare(KHttpsHeader) == 0) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileServerURL, KEmpty); + } + else + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileServerURL, aBuf); + } + return; + } + if (aBuf.Compare(KEmpty) == 0 || aBuf.Compare(KHttpHeader) == 0 || aBuf.Compare(KHttpsHeader) == 0 + || (aBuf.Left(KHttpLength).Compare(KHttpHeader) != 0 && aBuf.Left(KHttpsLength).Compare(KHttpsHeader) != 0)) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileServerURL, KEmpty); + return; + } + + temp = aBuf; + if(temp.Left(KHttpsLength).Compare(KHttpsHeader) == 0) + { + temp.Delete(0, KHttpsLength); + insertPos += KHttpsLength; + } + else if(temp.Left(KHttpLength).Compare(KHttpHeader) == 0) + { + temp.Delete(0, KHttpLength); + insertPos += KHttpLength; + } + TInt start = temp.Find(KColon); + + if (start > 0) + { + + temp.Delete(0, start+1); + TInt length = temp.Find(KSlash); + if (length == KErrNotFound) + { + length = temp.Length(); + } + if (length > KPortMaxLen) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileServerURL, KEmpty); + return; + } + if (length > 0) + { + port.Append(temp.Left(length)); + } + insertPos += length; + } + else + { + TInt len = temp.Find(KSlash); + insertPos += len; + } + + if(port.Compare(KEmpty) != 0) + { + iLex = port; + TInt portNum; + TInt err = iLex.Val(portNum); + const TInt KMinURIPortNumber = 1; + const TInt KMaxURIPortNumber = 65535; + + if( err != KErrNone || portNum < KMinURIPortNumber || portNum > KMaxURIPortNumber ) + { + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileServerURL, KEmpty); + return; + } + } + else + { + temp = aBuf; + TBuf<150> temp1; + + temp1.Append(temp.Left(insertPos)); + temp1.Append(KDefaultPort); + temp.Delete(0, insertPos); + temp1.Append(temp); + + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileServerURL, temp1); + return; + } + + + iCustomProfileArray->At(iCounter)->SetStrValue( EDSProfileServerURL, aBuf); + +} +//===================================================== +// CNSmlProfileContentHandler::ServerAlertType() +// +// +//===================================================== +TSmlServerAlertedAction CNSmlProfileContentHandler::ServerAlertType(TInt aType) +{ + TSmlServerAlertedAction retVal = ESmlEnableSync; + switch(aType) + { + case 1: + { + retVal = ESmlEnableSync; + break; + } + + case 2: + { + retVal = ESmlConfirmSync; + break; + } + + case 3: + { + retVal = ESmlDisableSync; + break; + } + + } + + return retVal; + +} + +//===================================================== +// CNSmlProfileContentHandler::SyncType() +// +// +//===================================================== +TSmlSyncType CNSmlProfileContentHandler::SyncType(TDesC& aBuf) +{ + TSmlSyncType retVal = ESmlTwoWay; + if (aBuf == _L("ESmlTwoWay")) + { + retVal = ESmlTwoWay; + } + else if(aBuf ==_L("ESmlOneWayFromServer")) + { + retVal = ESmlOneWayFromServer; + + } + else if(aBuf ==_L("ESmlOneWayFromClient")) + { + retVal = ESmlOneWayFromClient; + } + + return retVal;; +} + +//===================================================== +// CNSmlProfileContentHandler::CheckXMLContentSetting() +// +// +//===================================================== +TBool CNSmlProfileContentHandler::CheckXMLContentSetting() +{ + +if (iContentArray->At(iContentCounter)->StrValue(EXMLDSServerDataSource).Compare(KEmpty) == 0 + || (iContentArray->At(iContentCounter)->StrValue(EXMLDSServerId).Compare(KEmpty) == 0 + &&iContentArray->At(iContentCounter)->StrValue(EXMLDSProfileName).Compare(KEmpty) == 0) + || iContentArray->At(iContentCounter)->StrValue(EXMLDSAdapaterId).Compare(KEmpty) == 0) + { + return EFalse; + } + +if(iSyncTypeArray->At(iCounter - 1) != ESmlTwoWay && iSyncTypeArray->At(iCounter - 1) != ESmlOneWayFromServer + && iSyncTypeArray->At(iCounter - 1) != ESmlOneWayFromClient) + { + return EFalse; + } + +for (TInt index = 0; index < iCustomProfileArray->Count() ;index++ ) + { + if (iContentArray->At(iContentCounter)->StrValue(EXMLDSProfileName). + Compare(iCustomProfileArray->At(index)->StrValue(EDSProfileDisplayName)) == 0) + { + break; + } + else if (index == (iCustomProfileArray->Count() - 1) + && iContentArray->At(iContentCounter)->StrValue(EXMLDSProfileName).Compare(KEmpty) != 0) + { + return EFalse; + } + } + +return ETrue; +} + +//===================================================== +// CNSmlProfileContentHandler::SetVisibility() +// +// +//===================================================== +void CNSmlProfileContentHandler::SetVisibility(TInt aValue) +{ + switch(aValue) + { + case 0: + { + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileHidden, EFalse) ; + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileDeleteAllowed, ETrue) ; + break; + } + case 1: + { + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileHidden, EFalse) ; + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileDeleteAllowed, EFalse) ; + iCustomProfileArray->At(iCounter)->InitVisibilityArray(KReadOnlyVisiblity); + break; + } + case 2: + { + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileHidden, ETrue) ; + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileDeleteAllowed, EFalse) ; + break; + } + default: + + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileHidden, EFalse) ; + iCustomProfileArray->At(iCounter)->SetIntValue( EDSProfileDeleteAllowed, ETrue) ; + } + +} + +//===================================================== +// CNSmlProfileContentHandler::Comment() +// +// +//===================================================== + +TInt CNSmlProfileContentHandler::Comment(TDesC& /*aComment*/) +{ + + return 1; +} + +//===================================================== +// CNSmlProfileContentHandler::ProcessingInstructions() +// +// +//===================================================== +TInt CNSmlProfileContentHandler::ProcessingInstructions(TDesC& /*aTarget*/, TDesC& /*aData*/) +{ + + return 1; +} + +//===================================================== +// CNSmlProfileContentHandler::IgnoreWhiteSpace() +// +// +//===================================================== +TInt CNSmlProfileContentHandler::IgnoreWhiteSpace(TDesC& /*aString*/) +{ + return 1; +} + +//===================================================== +// CNSmlProfileContentHandler::StartEntity() +// +// +//===================================================== +TInt CNSmlProfileContentHandler::StartEntity(TDesC& /*aName*/) +{ + + return 1; +} + +//===================================================== +// CNSmlProfileContentHandler::EndEntity() +// +// +//===================================================== +TInt CNSmlProfileContentHandler::EndEntity(TDesC& /*aName*/) +{ + + return 1; +} + +//===================================================== +// CNSmlProfileContentHandler::SkippedEntity() +// +// +//===================================================== +TInt CNSmlProfileContentHandler::SkippedEntity(TDesC& /*aName*/) +{ + return 1; +} + +//===================================================== +// CNSmlProfileContentHandler::Error() +// +// +//===================================================== +TInt CNSmlProfileContentHandler::Error(TInt /*aErrorCode*/, TInt /*aSeverity*/) +{ + return 1; +} + + + +// End of File