diff -r 8e7494275d3a -r 4f0867e42d62 omads/omadsappui/AspSyncUtil/src/AspUtil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omads/omadsappui/AspSyncUtil/src/AspUtil.cpp Wed Sep 01 12:30:02 2010 +0100 @@ -0,0 +1,2864 @@ +/* +* Copyright (c) 2002-2005 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: +* +*/ + + + + +// INCLUDES + +#include +#include +#include +#include // BaflUtils +#include // for application ids +#include // for TCollationMethod + +#include // FeatureManager +#include // CApUtils +#include +#include // HlpLauncher + +#include // for MsvUiServiceUtilities +#include // KCRUidOperatorDatasyncInternalKeys + + +#include "AspUtil.h" +#include "AspDialogUtil.h" +#include "AspResHandler.h" +#include "AspDebug.h" +#include + +#include // sync error codes +#include + +//#ifdef __SAP_POLICY_MANAGEMENT +#include // VSettingEnforcementInfo +//#endif + + + + + +/****************************************************************************** + * class TAspParam + ******************************************************************************/ + + +// ------------------------------------------------------------------------------- +// TAspParam::TAspParam +// +// ------------------------------------------------------------------------------- +// +TAspParam::TAspParam(TInt aApplicationId) + : iApplicationId(aApplicationId), iProfileId(KErrNotFound), iMode(KErrNotFound), + iId(KErrNotFound), iReturnValue(KErrNotFound), iDataProviderId(KErrNotFound), + iSyncTaskId(KErrNotFound), iProfile(NULL), + iSyncTask(NULL), iSyncFilter(NULL), iSyncSession(NULL), + iProfileList(NULL), iContentList(NULL), iSchedule(NULL) + { + } + + +// ------------------------------------------------------------------------------- +// TAspParam::TAspParam +// +// ------------------------------------------------------------------------------- +// +TAspParam::TAspParam(TInt aApplicationId, RSyncMLSession* aSyncSession) + : iApplicationId(aApplicationId), iProfileId(KErrNotFound), iMode(KErrNotFound), + iId(KErrNotFound), iReturnValue(KErrNotFound), iDataProviderId(KErrNotFound), + iSyncTaskId(KErrNotFound), iProfile(NULL), + iSyncTask(NULL), iSyncFilter(NULL), iSyncSession(aSyncSession), + iProfileList(NULL), iContentList(NULL), iSchedule(NULL) + { + } + + + +/****************************************************************************** + * class TAspUtil + ******************************************************************************/ + + +// ------------------------------------------------------------------------------- +// TUtil::Panic +// +// ------------------------------------------------------------------------------- +// +void TUtil::Panic(TInt aReason) + { + _LIT(KPanicCategory,"AspSyncUtil"); + + User::Panic(KPanicCategory, aReason); + } + + +// ------------------------------------------------------------------------------- +// TUtil::StrCopy +// +// String copy with lenght check. +// ------------------------------------------------------------------------------- +// +void TUtil::StrCopy(TDes8& aTarget, const TDesC& aSource) + { + TInt len = aTarget.MaxLength(); + if(len < aSource.Length()) + { + aTarget.Copy(aSource.Left(len)); + return; + } + aTarget.Copy(aSource); + } + +// ------------------------------------------------------------------------------- +// TUtil::StrCopy +// +// String copy with lenght check. +// ------------------------------------------------------------------------------- +// +void TUtil::StrCopy(TDes& aTarget, const TDesC8& aSource) + { + TInt len = aTarget.MaxLength(); + if(len < aSource.Length()) + { + aTarget.Copy(aSource.Left(len)); + return; + } + aTarget.Copy(aSource); + } + + +// ------------------------------------------------------------------------------- +// TUtil::StrCopy +// +// String copy with lenght check. +// ------------------------------------------------------------------------------- +// +void TUtil::StrCopy(TDes& aTarget, const TDesC& aSource) + { + TInt len = aTarget.MaxLength(); + if(len < aSource.Length()) + { + aTarget.Copy(aSource.Left(len)); + return; + } + aTarget.Copy(aSource); + } + +//-------------------------------------------------------------------------------- +//TUtil::StrConversion +// +//Convert TBuf to HBuf +//-------------------------------------------------------------------------------- +// +HBufC* TUtil::StrConversion(const TDesC& aDefaultText) +{ + return aDefaultText.AllocLC(); + } + + +// ------------------------------------------------------------------------------- +// TUtil::StrAppend +// +// ------------------------------------------------------------------------------- +// +void TUtil::StrAppend(TDes& aTarget, const TDesC& aSource) +{ + if (aSource.Length() == 0) + { + return; + } + + TInt free = aTarget.MaxLength() - aTarget.Length(); + if (aSource.Length() < free) + { + aTarget.Append(aSource); + } +} + + +// ------------------------------------------------------------------------------- +// TUtil::StrInsert +// +// ------------------------------------------------------------------------------- +// +void TUtil::StrInsert(TDes& aTarget, const TDesC& aSource) +{ + TInt free = aTarget.MaxLength() - aTarget.Length(); + if (aSource.Length() < free) + { + aTarget.Insert(0, aSource); + } +} + + +// ------------------------------------------------------------------------------- +// TUtil::StrToInt +// +// ------------------------------------------------------------------------------- +// +TInt TUtil::StrToInt(const TDesC& aText, TInt& aNum) + { + TLex lex(aText); + + TInt err=lex.Val(aNum); + return err; + } + + +// ------------------------------------------------------------------------------- +// TUtil::IsEmpty +// +// Function returns ETrue if string only contains white space or has no characters. +// ------------------------------------------------------------------------------- +// +TBool TUtil::IsEmpty(const TDesC& aText) + { + TInt len=aText.Length(); + for (TInt i=0; i aLength) + { + TBuf buf(aOneCharStr); + aTarget.Fill(buf[0], aLength); + } + } + + +// ----------------------------------------------------------------------------- +// TUtil::AddResFileL +// +// ----------------------------------------------------------------------------- +// +TInt TUtil::AddResFileL(const TDesC& aFile) + { + CEikonEnv* env = CEikonEnv::Static(); + + TFileName fileName(aFile); + + BaflUtils::NearestLanguageFile(env->FsSession(), fileName); + + return env->AddResourceFileL(fileName); + } + + +// ----------------------------------------------------------------------------- +// TUtil::IsValidAppId +// +// ----------------------------------------------------------------------------- +// +TBool TUtil::IsValidAppId(TInt aApplicationId) + { + TInt id = aApplicationId; + + if (id == EApplicationIdSync || id == EApplicationIdContact || + id == EApplicationIdCalendar || id == EApplicationIdEmail || + id == EApplicationIdNote || id == EApplicationIdMms) + { + return ETrue; + } + + return EFalse; + } + + +// ----------------------------------------------------------------------------- +// TUtil::IsValidSID +// +// ----------------------------------------------------------------------------- +// +TBool TUtil::IsValidSID(TInt aSid) + { + TInt id = aSid; + + if (id == KUidAppSync.iUid || id == KUidAppPhonebook.iUid || + id == KUidAppCalendar.iUid || id == KUidAppMessages.iUid || + id == KUidAppNotepad.iUid || id == KUidAppTest.iUid || + id == KUidAppMailEditor.iUid) + { + return ETrue; + } + + return EFalse; + } + + +// ----------------------------------------------------------------------------- +// TUtil::ProviderIdFromAppId +// +// ----------------------------------------------------------------------------- +// +TInt TUtil::ProviderIdFromAppId(TInt aApplicationId) + { + TInt id=KErrNotFound; + + switch (aApplicationId) + { + case EApplicationIdContact: + id = KUidNSmlAdapterContact.iUid; + break; + case EApplicationIdCalendar: + id = KUidNSmlAdapterCalendar.iUid; + break; + case EApplicationIdEmail: + id = KUidNSmlAdapterEMail.iUid; + break; + case EApplicationIdNote: + id = KUidNSmlAdapterNote.iUid; + break; + default: + id = KErrNotFound; + break; + } + + return id; + } + +// ----------------------------------------------------------------------------- +// TUtil::ProviderIdFromAppId +// +// ----------------------------------------------------------------------------- +// +TInt TUtil::ProviderIdFromAppId(TInt aApplicationId, TBool aOperatorProfile) + { + TInt id=KErrNotFound; + + if (aOperatorProfile) + { + id = OperatorProviderIdFromAppId( aApplicationId ); + } + else + { + id = ProviderIdFromAppId( aApplicationId ); + } + return id; + } + +// ----------------------------------------------------------------------------- +// TUtil::OperatorProviderIdFromAppId +// +// ----------------------------------------------------------------------------- +// +TInt TUtil::OperatorProviderIdFromAppId(TInt aApplicationId) + { + TInt id = KErrNotFound; + CRepository* repository = NULL; + + TInt err = KErrNotFound; + TRAP(err, repository = CRepository::NewL(KCRUidOperatorDatasyncInternalKeys)); + if (err == KErrNone) + { + switch (aApplicationId) + { + // Operator specific version of Contacts adapter is supported + case EApplicationIdContact: + { + err = repository->Get(KNsmlOpDsOperatorAdapterUid, id); + break; + } + default: + { + id = ProviderIdFromAppId(aApplicationId); + break; + } + } + delete repository; + } + + if ( (id == KErrNotFound) || (err != KErrNone) || (id == 0) ) + { + // Use default adapter + id = ProviderIdFromAppId(aApplicationId); + } + return id; + } + +// ----------------------------------------------------------------------------- +// TUtil::AppIdFromProviderId +// +// ----------------------------------------------------------------------------- +// +TInt TUtil::AppIdFromProviderId(TInt aAdapterId) + { + TInt id=KErrNotFound; + + if (aAdapterId == KUidNSmlAdapterContact.iUid) + { + id = EApplicationIdContact; + } + if (aAdapterId == KUidNSmlAdapterCalendar.iUid) + { + id = EApplicationIdCalendar; + } + if (aAdapterId == KUidNSmlAdapterEMail.iUid) + { + id = EApplicationIdEmail; + } + if (aAdapterId == KUidNSmlAdapterNote.iUid) + { + id = EApplicationIdNote; + } + if (id == KErrNotFound) // Check if this operator specific adapter + { + id = AppIdFromOperatorSpecificProviderId( aAdapterId ); + } + return id; + } + +// ----------------------------------------------------------------------------- +// TUtil::AppIdFromOperatorSpecificProviderId +// +// ----------------------------------------------------------------------------- +// +TInt TUtil::AppIdFromOperatorSpecificProviderId(TInt aAdapterId) + { + TInt id=KErrNotFound; + CRepository* repository = NULL; + + TRAPD(err, repository = CRepository::NewL(KCRUidOperatorDatasyncInternalKeys)); + if (err == KErrNone) + { + TInt operatorContactsProvider = KErrNotFound; + err = repository->Get(KNsmlOpDsOperatorAdapterUid, operatorContactsProvider); + + if ( err == KErrNone && aAdapterId == operatorContactsProvider ) + { + id = EApplicationIdContact; + } + delete repository; + } + return id; + } + + +// ----------------------------------------------------------------------------- +// TUtil::IsToDay +// +// ----------------------------------------------------------------------------- +// +TBool TUtil::IsToday(TTime aTime) + { + TTime now; + now.HomeTime(); + + TInt day1 = now.DayNoInYear(); + TInt day2 = aTime.DayNoInYear(); + + TDateTime date1 = now.DateTime(); + TDateTime date2 = aTime.DateTime(); + + + TTimeIntervalDays daysBetween = now.DaysFrom(aTime); + + if (day1 != day2 || date1.Year() != date2.Year()) + { + return EFalse; + } + + if (daysBetween.Int() > 0) + { + return EFalse; + } + + return ETrue; + } + + +// ----------------------------------------------------------------------------- +// TUtil::SyncTimeLC +// +// ----------------------------------------------------------------------------- +// +HBufC* TUtil::SyncTimeLC(TTime aLastSync) + { + TTime homeTime = ConvertUniversalToHomeTime(aLastSync); + + HBufC* hBuf = HBufC::NewLC(KBufSize255); + TPtr ptr = hBuf->Des(); + + if (IsToday(homeTime)) + { + TBuf timeFormat; + CAspResHandler::ReadL(timeFormat, R_QTN_TIME_USUAL_WITH_ZERO); + homeTime.FormatL(ptr, timeFormat); + } + else + { + TBuf dateFormat; + CAspResHandler::ReadL(dateFormat, R_QTN_DATE_USUAL_WITH_ZERO); + homeTime.FormatL(ptr, dateFormat); + } + + return hBuf; + } + + +// ----------------------------------------------------------------------------- +// TUtil::ConvertUniversalToHomeTime +// +// ----------------------------------------------------------------------------- +// +TTime TUtil::ConvertUniversalToHomeTime(const TTime& aUniversalTime) + { + TTime time(aUniversalTime); // time stores UTC time. + + TLocale locale; + TTimeIntervalSeconds universalTimeOffset(locale.UniversalTimeOffset()); + + // Add locale's universal time offset to universal time. + time += universalTimeOffset; // time stores Local Time. + + // If home daylight saving in effect, add one hour offset. + if (locale.QueryHomeHasDaylightSavingOn()) + { + TTimeIntervalHours daylightSaving(1); + time += daylightSaving; + } + + return time; + } + + +// ----------------------------------------------------------------------------- +// TUtil::GetDateTextL +// +// ----------------------------------------------------------------------------- +// +void TUtil::GetDateTextL(TDes& aText, TTime aDateTime) + { + TTime homeTime = ConvertUniversalToHomeTime(aDateTime); + + HBufC* hBuf = CAspResHandler::ReadLC(R_QTN_DATE_USUAL_WITH_ZERO); + homeTime.FormatL(aText, *hBuf); + CleanupStack::PopAndDestroy(hBuf); + } + + +// ----------------------------------------------------------------------------- +// TUtil::GetTimeTextL +// +// ----------------------------------------------------------------------------- +// +void TUtil::GetTimeTextL(TDes& aText, TTime aDateTime) + { + TTime homeTime = ConvertUniversalToHomeTime(aDateTime); + + HBufC* hBuf = CAspResHandler::ReadLC(R_QTN_TIME_USUAL_WITH_ZERO); + homeTime.FormatL(aText, *hBuf); + CleanupStack::PopAndDestroy(hBuf); + } + + +// ----------------------------------------------------------------------------- +// TUtil::GetDateTimeTextL +// +// ----------------------------------------------------------------------------- +// +void TUtil::GetDateTimeTextL(TDes& aText, TTime aDateTime) + { + TDateTime dt = aDateTime.DateTime(); + aText.Format(_L("%02d.%02d.%04d %02d:%02d:%02d"), dt.Day()+1, dt.Month()+1, dt.Year(), dt.Hour(), dt.Minute(), dt.Second()); + } + + +// ----------------------------------------------------------------------------- +// TUtil::LaunchHelpAppL +// +// ----------------------------------------------------------------------------- +// +void TUtil::LaunchHelpAppL() + { + if (!FeatureManager::FeatureSupported(KFeatureIdHelp)) + { + return; + } + + CEikonEnv* eikEnv = CEikonEnv::Static(); + HlpLauncher::LaunchHelpApplicationL(eikEnv->WsSession(), eikEnv->EikAppUi()->AppHelpContextL()); + } + + +// ----------------------------------------------------------------------------- +// TUtil::LaunchHelpAppL +// +// ----------------------------------------------------------------------------- +// +void TUtil::LaunchHelpAppL(CEikonEnv* aEikonkEnv) + { + if (!FeatureManager::FeatureSupported(KFeatureIdHelp)) + { + return; + } + + CEikonEnv* eikEnv = CEikonEnv::Static(); + HlpLauncher::LaunchHelpApplicationL(aEikonkEnv->WsSession(), + aEikonkEnv->EikAppUi()->AppHelpContextL()); + } + + +// --------------------------------------------------------- +// TUtil::SettingEnforcementStateL +// +// Checks if setting enforcement is activated. +// --------------------------------------------------------- +TBool TUtil::SettingEnforcementStateL() + { + + FeatureManager::InitializeLibL(); + if(!FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement)) + { + //#ifndef __SAP_POLICY_MANAGEMENT + FeatureManager::UnInitializeLib(); + return EFalse; + //#else +} +else +{ + FeatureManager::UnInitializeLib(); + CSettingEnforcementInfo* info = CSettingEnforcementInfo::NewL(); + CleanupStack::PushL(info); + + TBool active = EFalse; + User::LeaveIfError(info->EnforcementActive(EDataSyncEnforcement, active)); + CleanupStack::PopAndDestroy(info); + + return active; + //#endif +} + + + } + + +// --------------------------------------------------------- +// TUtil::SettingEnforcementState +// +// Checks if setting enforcement is activated. +// --------------------------------------------------------- +TBool TUtil::SettingEnforcementState() + { + TBool ret = EFalse; + + TRAP_IGNORE(ret = SettingEnforcementStateL()); + + return ret; + } + + +// --------------------------------------------------------- +// TUtil::NumberConversionLC +// +// --------------------------------------------------------- +CDesCArray* TUtil::NumberConversionLC(CDesCArray* aList) + { + CDesCArrayFlat* arr = new (ELeave) CDesCArrayFlat(KDefaultArraySize); + CleanupStack::PushL(arr); + + TInt count = aList->Count(); + + for (TInt i=0; i buf((*aList)[i]); + AknTextUtils::DisplayTextLanguageSpecificNumberConversion(buf); + arr->AppendL(buf); + } + + return arr; + } + + + +#ifdef _DEBUG + +// ------------------------------------------------------------------------------- +// TUtil::Print +// +// ------------------------------------------------------------------------------- +// +void TUtil::Print(const TDesC& aText) + { + CEikonEnv::Static()->InfoMsg(aText); + } + + +// ------------------------------------------------------------------------------- +// TUtil::Print +// +// ------------------------------------------------------------------------------- +// +void TUtil::Print(const TDesC& aText, TInt aNum) + { + _LIT(KFormat, "%S (%d)"); + + TBuf buf; + buf.Format(KFormat, &aText, aNum); + CEikonEnv::Static()->InfoMsg(buf); + } + + +// ------------------------------------------------------------------------------- +// TUtil::GetMandatoryFieldText +// +// ------------------------------------------------------------------------------- +// +void TUtil::GetMandatoryFieldText(TDes& aText, TInt aStatus) + { + switch (aStatus) + { + case EMandatoryNoProfileName: + aText = _L("no profile name"); + break; + case EMandatoryNoHostAddress: + aText = _L("no host address"); + break; + case EMandatoryNoContent: + aText = _L("no content"); + break; + case EMandatoryNoLocalDatabase: + aText = _L("no local database"); + break; + case EMandatoryNoRemoteDatabase: + aText = _L("no remote database"); + break; + default: + aText = _L("profile ok"); + break; + } + } + + +// ----------------------------------------------------------------------------- +// TUtil::TimeBefore +// +// Function returns TTime of the current time (needed with function TimeAfter). +// ----------------------------------------------------------------------------- +// +TTime TUtil::TimeBefore() +{ + TTime now; + now.UniversalTime(); + return now; +} + + +// ----------------------------------------------------------------------------- +// TUtil::TimeAfter +// +// Function returns milliseconds passed since aBefore. +// ----------------------------------------------------------------------------- +// +TInt TUtil::TimeAfter(TTime aBefore) +{ + TTime after; + after.UniversalTime(); + TTimeIntervalMicroSeconds microSeconds = after.MicroSecondsFrom(aBefore); + TInt seconds = microSeconds.Int64()/1000; + return seconds; +} + + +// ----------------------------------------------------------------------------- +// TUtil::TimeAfter +// +// ----------------------------------------------------------------------------- +// +void TUtil::TimeAfter(TTime aBefore, const TDesC& aText) + { + TTime after; + after.UniversalTime(); + TTimeIntervalMicroSeconds microSeconds = after.MicroSecondsFrom(aBefore); + + FTRACE( RDebug::Print(_L("%S %d ms"), &aText, microSeconds.Int64()/1000) ); + } + + +// ----------------------------------------------------------------------------- +// TUtil::GetApplicationNameL +// +// ----------------------------------------------------------------------------- +// +void TUtil::GetApplicationName(TDes& aText, TInt aApplicationId) + { + switch (aApplicationId) + { + case EApplicationIdSync: + aText = _L("EApplicationIdSync"); + break; + case EApplicationIdContact: + aText = _L("EApplicationIdContact"); + break; + case EApplicationIdCalendar: + aText = _L("EApplicationIdCalendar"); + break; + case EApplicationIdEmail: + aText = _L("EApplicationIdEmail"); + break; + case EApplicationIdMms: + aText = _L("EApplicationIdMms"); + break; + case EApplicationIdNote: + aText = _L("EApplicationIdNote"); + break; + default: + aText = _L("unknown app"); + break; + } + } + +#endif + + + +/****************************************************************************** + * class TURIParser + ******************************************************************************/ + + +// --------------------------------------------------------- +// TURIParser::TURIParser +// +// --------------------------------------------------------- +TURIParser::TURIParser(const TDesC& aStr) : iOriginalStr(aStr) + { + SkipHttp(); + } + + +// --------------------------------------------------------- +// TURIParser::GetUriWithoutPort +// +// URI format: "http://serveraddress/documentname/" +// --------------------------------------------------------- +void TURIParser::GetUriWithoutPort(TDes& aText) + { + _LIT(KSlash, "/"); + + aText = KNullDesC; + + TPtrC http = ParseHttp(); + TPtrC address = ParseAddress(); + TPtrC document = ParseDocument(); + + TUtil::StrAppend(aText, http); + TUtil::StrAppend(aText, address); + + if (document.Length() > 0) + { + TUtil::StrAppend(aText, KSlash); + TUtil::StrAppend(aText, document); + } + //else if (aText.Length() > 0) + // { + // TUtil::StrAppend(aText, KSlash); + // } + } + + +// --------------------------------------------------------- +// TURIParser::GetUriWithPort +// +// URI format: "http://serveraddress:port/documentname/" +// --------------------------------------------------------- +void TURIParser::GetUriWithPort(TDes& aText, const TInt aPort) + { + _LIT(KColon, ":"); + _LIT(KSlash, "/"); + + aText = KNullDesC; + + TPtrC http = ParseHttp(); + + TPtrC address = ParseAddress(); + + TPtrC document = ParseDocument(); + + TUtil::StrAppend(aText, http); + TUtil::StrAppend(aText, address); + + TBuf buf; + buf.Num(aPort); + TUtil::StrAppend(aText, KColon); + TUtil::StrAppend(aText, buf); + + if (document.Length() > 0) + { + TUtil::StrAppend(aText, KSlash); + TUtil::StrAppend(aText, document); + } + //else if (aText.Length() > 0) + // { + // TUtil::StrAppend(aText, KSlash); + // } + } + + +// --------------------------------------------------------- +// TURIParser::Port +// +// --------------------------------------------------------- +TInt TURIParser::Port() + { + TInt port = KErrNotFound; + + TInt err = ParsePort(port); + if (err != KErrNone) + { + return KErrNotFound; + } + + return port; + } + + +// --------------------------------------------------------- +// TURIParser::DefaultPort +// +// --------------------------------------------------------- +TInt TURIParser::DefaultPort() + { + _LIT(KHttpsHeader, "https://"); + + TInt pos = iOriginalStr.FindF(KHttpsHeader); + if (pos != KErrNotFound) + { + return EDefaultHttpsPort; + } + + return EDefaultHttpPort; + } + + +// --------------------------------------------------------- +// TURIParser::IsValidUri +// +// --------------------------------------------------------- +TBool TURIParser::IsValidUri(const TDesC& aText) + { + _LIT(KHttpHeader, "http://"); + _LIT(KHttpsHeader, "https://"); + + const TInt KHttpLength = 7; + const TInt KHttpsLength = 8; + + // IsValidDomainL this does not accept comma ("http://" fails) + //return MsvUiServiceUtilities::IsValidDomainL(aText); + + if (TUtil::IsEmpty(aText)) + { + return EFalse; + } + + if (aText.Compare(KHttpHeader) == 0) + { + return EFalse; + } + + if (aText.Compare(KHttpsHeader) == 0) + { + return EFalse; + } + + if (aText.Left(KHttpLength).Compare(KHttpHeader) != 0 + && aText.Left(KHttpsLength).Compare(KHttpsHeader) != 0) + { + return EFalse; + } + + return ETrue; + } + +// --------------------------------------------------------- +// TURIParser::IsValidBluetoothHostAddress +// +// --------------------------------------------------------- +TBool TURIParser::IsValidBluetoothHostAddress(const TDesC& aText) + { + _LIT(KHttpHeader, "http://"); + _LIT(KHttpsHeader, "https://"); + + const TInt KHttpLength = 7; + const TInt KHttpsLength = 8; + + // IsValidDomainL this does not accept comma ("http://" fails) + //return MsvUiServiceUtilities::IsValidDomainL(aText); + + if (TUtil::IsEmpty(aText)) + { + return EFalse; + } + + if (aText.Compare(KHttpHeader) == 0) + { + return EFalse; + } + + if (aText.Compare(KHttpsHeader) == 0) + { + return EFalse; + } + + if (aText.Left(KHttpLength).Compare(KHttpHeader) == 0 + || aText.Left(KHttpsLength).Compare(KHttpsHeader) == 0) + { + return EFalse; + } + + return ETrue; + } +// --------------------------------------------------------- +// TURIParser::IsValidPort +// +// --------------------------------------------------------- +TBool TURIParser::IsValidPort(const TInt aPort) + { + if (aPort < TURIParser::EMinURIPortNumber || + aPort > TURIParser::EMaxURIPortNumber) + { + return EFalse; + } + + return ETrue; + } + + +// --------------------------------------------------------- +// TURIParser::SkipHttp +// +// Set pointer to the end of "http://". +// --------------------------------------------------------- +void TURIParser::SkipHttp() + { + TInt start = KErrNotFound; + TInt end = KErrNotFound; + TStr str(iOriginalStr); + + GetHttpPos(start, end); + + if (start != KErrNotFound) + { + iPtr.Set(str.Right(end+1)); + } + else + { + iPtr.Set(str.Right(0)); + } + } + + +// --------------------------------------------------------- +// TURIParser::ParseHttp +// +// --------------------------------------------------------- +TPtrC TURIParser::ParseHttp() + { + TInt start = KErrNotFound; + TInt end = KErrNotFound; + + GetHttpPos(start, end); + + if (start == KErrNotFound) + { + return TPtrC(); + } + + TStr str(iOriginalStr); + return str.SubStr(start, end); + } + + +// --------------------------------------------------------- +// TURIParser::GetHttpPos +// +// --------------------------------------------------------- +void TURIParser::GetHttpPos(TInt& aStartPos, TInt& aEndPos) + { + _LIT(KHttpHeader, "http://"); + _LIT(KHttpsHeader, "https://"); + + aEndPos = KErrNotFound; + + aStartPos = iOriginalStr.FindF(KHttpHeader); + if (aStartPos != KErrNotFound) + { + aEndPos = aStartPos + KHttpHeader().Length() - 1; + return; + } + + aStartPos = iOriginalStr.FindF(KHttpsHeader); + if (aStartPos != KErrNotFound) + { + aEndPos = aStartPos + KHttpsHeader().Length() - 1; + return; + } + } + + +// --------------------------------------------------------- +// TURIParser::ParseAddress +// +// --------------------------------------------------------- +TPtrC TURIParser::ParseAddress() + { + const TChar KSlash('/'); + const TChar KColon(':'); + + TStr str(iPtr); + + TInt firstSlash = str.Find(0, KSlash); + TInt firstcolon = str.Find(0, KColon); + + TBool portFound = EFalse; + if (firstcolon != KErrNotFound) + { + if (firstSlash == KErrNotFound) + { + portFound = ETrue; + } + else if (firstcolon < firstSlash) + { + portFound = ETrue; + } + } + + if (portFound) + { + // address is text before first colon + return str.Left(firstcolon-1); + } + else if (firstSlash != KErrNotFound) + { + // address is text before first slash + return str.Left(firstSlash-1); + } + else + { + // address is all text + return str.Right(0); + } + } + + +// --------------------------------------------------------- +// TURIParser::ParseDocument +// +// --------------------------------------------------------- +TPtrC TURIParser::ParseDocument() + { + const TChar KSlash('/'); + + TStr str(iPtr); + TInt firstSlash = str.Find(0, KSlash); + + if (firstSlash != KErrNotFound) + { + // document is all text after first slash + return str.Right(firstSlash+1); + } + + return TPtrC(); + + } + + +// --------------------------------------------------------- +// TURIParser::ParsePort +// +// --------------------------------------------------------- +TInt TURIParser::ParsePort(TInt& aNumber) + { + TPtrC port = ParsePort(); + if (port.Length() == 0) + { + return KErrNotFound; + } + + return TUtil::StrToInt(port, aNumber); + } + + +// --------------------------------------------------------- +// TURIParser::ParsePort +// +// --------------------------------------------------------- +TPtrC TURIParser::ParsePort() + { + const TChar KSlash('/'); + const TChar KColon(':'); + + TStr str(iPtr); + TInt firstSlash = str.Find(0, KSlash); + TInt firstColon = str.Find(0, KColon); + + if (firstSlash != KErrNotFound) + { + if (firstColon != KErrNotFound && firstColon < firstSlash) + { + // port number is text between colon and slash + return str.SubStrEx(firstColon, firstSlash); + } + } + else + { + if (firstColon != KErrNotFound) + { + // port number is all text after colon + return str.Right(firstColon+1); + } + } + + return TPtrC(); + } + + + + +/****************************************************************************** + * class TStr + ******************************************************************************/ + + +// ----------------------------------------------------------------------------- +// TStr::TStr +// +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +TStr::TStr(const TDesC& aStr) : iStr(aStr) + { + } + + +// ------------------------------------------------------------------------------- +// TStr::Mid +// +// ------------------------------------------------------------------------------- +// +TPtrC TStr::Mid(TInt aPos) + { + TInt len = iStr.Length(); + if ( (aPos < 0) || (aPos >= len) ) + { + return TPtrC(); // return empty descriptor + } + + return iStr.Mid(aPos); + } + + +// ------------------------------------------------------------------------------- +// TStr::Mid +// +// ------------------------------------------------------------------------------- +// +TPtrC TStr::Mid(TInt aPos, TInt aLen) + { + TInt len = iStr.Length(); + if ( (aPos < 0) || (aPos >= len) ) + { + return TPtrC(); + } + if ( (aLen <= 0) || (aPos + aLen > len) ) + { + return TPtrC(); + } + + return iStr.Mid(aPos, aLen); + } + + +// ------------------------------------------------------------------------------- +// TStr::Right +// +// ------------------------------------------------------------------------------- +// +TPtrC TStr::Right(TInt aPos) + { + return Mid(aPos); + } + + +// ------------------------------------------------------------------------------- +// TStr::Left +// +// ------------------------------------------------------------------------------- +// +TPtrC TStr::Left(TInt aPos) + { + TInt len = iStr.Length(); + + if ( (aPos < 0) || (len == 0) ) + { + return TPtrC(); + } + + TInt pos = len; + if ( (aPos + 1) < len ) + { + pos = aPos + 1; + } + + return iStr.Left(pos); + } + + +// ------------------------------------------------------------------------------- +// TStr::SubStr +// +// ------------------------------------------------------------------------------- +// +TPtrC TStr::SubStr(TInt aStartPos, TInt aEndPos) + { + return Mid(aStartPos, aEndPos - aStartPos + 1); + } + + +// ------------------------------------------------------------------------------- +// TStr::SubStrEx +// +// ------------------------------------------------------------------------------- +// +TPtrC TStr::SubStrEx(TInt aStartPos, TInt aEndPos) + { + return Mid(aStartPos + 1, aEndPos - aStartPos - 1); + } + + +// ------------------------------------------------------------------------------- +// TStr::LastPos +// +// ------------------------------------------------------------------------------- +// +TInt TStr::LastPos() + { + return iStr.Length() - 1; + } + + +// ------------------------------------------------------------------------------- +// TStr::Len +// +// ------------------------------------------------------------------------------- +// +TInt TStr::Len() + { + return iStr.Length(); + } + +// ------------------------------------------------------------------------------- +// TStr::Compare +// +// ------------------------------------------------------------------------------- +// +TBool TStr::Compare(TInt aPos, TChar aChar) + { + TInt len = iStr.Length(); + if ( (aPos < 0) || (aPos >= len) ) + { + return EFalse; + } + TChar ch = iStr[aPos]; + if (ch == aChar) + { + return ETrue; + } + return EFalse; + } + + +// ------------------------------------------------------------------------------- +// TStr::Find +// +// ------------------------------------------------------------------------------- +// +TInt TStr::Find(TInt aPos, TChar aChar) + { + TInt len = iStr.Length(); + if ( (aPos < 0) || (aPos >= len) ) + { + return KErrNotFound; + } + + TPtrC ptr(iStr.Mid(aPos)); // move to possition aPos + return ptr.Locate(aChar); + } + + +// ------------------------------------------------------------------------------- +// TStr::Trim +// +// ------------------------------------------------------------------------------- +// +TPtrC TStr::Trim() + { + TInt first = FirstNonSpace(); + TInt last = LastNonSpace(); + + return Mid(first, last - first + 1); + } + + +// ------------------------------------------------------------------------------- +// TStr::FirstNonSpace +// +// ------------------------------------------------------------------------------- +// +TInt TStr::FirstNonSpace() + { + TInt len = Len(); + for (TInt i = 0; i < len; i++) + { + TChar c = iStr[i]; + if (!c.IsSpace()) + { + return i; + } + } + return KErrNotFound; + } + + +// ------------------------------------------------------------------------------- +// TStr::LastNonSpace +// +// ------------------------------------------------------------------------------- +// +TInt TStr::LastNonSpace() + { + TInt last = LastPos(); + for (TInt i = last; i >= 0; i--) + { + TChar c = iStr[i]; + if (!c.IsSpace()) + { + return i; + } + } + return KErrNotFound; + } + + + +/****************************************************************************** + * class TFlag + ******************************************************************************/ + +// ----------------------------------------------------------------------------- +// TFlag::TFlag +// +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +TFlag::TFlag(TUint32& aFlag) : iFlag(aFlag) + { + } + +// ------------------------------------------------------------------------------- +// TFlag::SetOn +// +// ------------------------------------------------------------------------------- +// +void TFlag::SetOn(const TUint32 aValue) + { + iFlag |= aValue; + } + +// ------------------------------------------------------------------------------- +// TFlag::SetOff +// +// ------------------------------------------------------------------------------- +// +void TFlag::SetOff(const TUint32 aValue) + { + iFlag &= ~aValue; + } + +// ------------------------------------------------------------------------------- +// TFlag::IsOn +// +// ------------------------------------------------------------------------------- +// +TBool TFlag::IsOn(const TUint32 aValue) const + { + return iFlag & aValue; + } + + + +/******************************************************************************* + * class CAspIdleWait + *******************************************************************************/ + + +// ----------------------------------------------------------------------------- +// CAspIdleWait::WaitL +// +// ----------------------------------------------------------------------------- +// +void CAspIdleWait::WaitL() + { + CAspIdleWait* waiter = CAspIdleWait::NewL(); + CleanupStack::PushL(waiter); + + CIdle* idle = CIdle::NewL(CActive::EPriorityIdle); + CleanupStack::PushL(idle); + + idle->Start(TCallBack(IdleCallback, waiter)); + if (!waiter->iWait.IsStarted()) + { + waiter->iWait.Start(); + } + + CleanupStack::PopAndDestroy(idle); + CleanupStack::PopAndDestroy(waiter); + } + + +// ----------------------------------------------------------------------------- +// CAspIdleWait::NewLC +// +// ----------------------------------------------------------------------------- +// +CAspIdleWait* CAspIdleWait::NewL() + { + CAspIdleWait* self = new (ELeave) CAspIdleWait(); + return self; + } + + +// ----------------------------------------------------------------------------- +// CAspIdleWait::CAspIdleWait +// +// ----------------------------------------------------------------------------- +// +CAspIdleWait::CAspIdleWait() + { + } + + +// ----------------------------------------------------------------------------- +// Destructor +// +// ----------------------------------------------------------------------------- +// +CAspIdleWait::~CAspIdleWait() + { + } + + +// ----------------------------------------------------------------------------- +// CAspIdleWait::IdleCallback +// +// ----------------------------------------------------------------------------- +// +TInt CAspIdleWait::IdleCallback(TAny* aThisPtr) + { + static_cast(aThisPtr)->iWait.AsyncStop(); + return KErrNone; + } + + + +/****************************************************************************** + * class CAspActiveCaller + ******************************************************************************/ + + +// ----------------------------------------------------------------------------- +// CAspActiveCaller::NewL +// +// ----------------------------------------------------------------------------- +// +CAspActiveCaller* CAspActiveCaller::NewL(MAspActiveCallerObserver* aObserver) + { + FLOG( _L("CAspActiveCaller::NewL START") ); + + CAspActiveCaller* self = new (ELeave) CAspActiveCaller(aObserver); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + FLOG( _L("CAspActiveCaller::NewL END") ); + return self; + } + + +// ----------------------------------------------------------------------------- +// Destructor +// +// ----------------------------------------------------------------------------- +// +CAspActiveCaller::~CAspActiveCaller() + { + FLOG( _L("CAspActiveCaller::~CAspActiveCaller START") ); + + Cancel(); + iTimer.Close(); + + FLOG( _L("CAspActiveCaller::~CAspActiveCaller END") ); + } + + +// ----------------------------------------------------------------------------- +// CAspActiveCaller::CAspActiveCaller +// +// ----------------------------------------------------------------------------- +// +CAspActiveCaller::CAspActiveCaller(MAspActiveCallerObserver* aObserver) : CActive(CActive::EPriorityStandard) + { + iObserver = aObserver; + } + + +// ----------------------------------------------------------------------------- +// CAspActiveCaller::ConstructL +// +// ----------------------------------------------------------------------------- +// +void CAspActiveCaller::ConstructL() + { + User::LeaveIfError(iTimer.CreateLocal()); + CActiveScheduler::Add(this); + } + + +// ----------------------------------------------------------------------------- +// CAspActiveCaller::DoCancel +// +// ----------------------------------------------------------------------------- +// +void CAspActiveCaller::DoCancel() + { + FLOG( _L("CAspActiveCaller::DoCancel START") ); + + iTimer.Cancel(); + + FLOG( _L( "CAspActiveCaller::DoCancel END" ) ); + } + + +// ----------------------------------------------------------------------------- +// CAspActiveCaller::RunL +// +// ----------------------------------------------------------------------------- +// +void CAspActiveCaller::RunL() + { + FLOG( _L("CAspActiveCaller::RunL START") ); + + TRAP_IGNORE(iObserver->HandleActiveCallL(iCallId)); + + FLOG( _L("CAspActiveCaller::RunL END") ); + } + + +// ----------------------------------------------------------------------------- +// CAspActiveCaller::Request +// +// This function calls this class RunL. +// ----------------------------------------------------------------------------- +// +void CAspActiveCaller::Request() + { + FLOG( _L("CAspActiveCaller::Request START") ); + + Cancel(); + SetActive(); + TRequestStatus* status = &iStatus; + User::RequestComplete(status, KErrNone); + + FLOG( _L("CAspActiveCaller::Request END") ); + } + + +// ----------------------------------------------------------------------------- +// CAspActiveCaller::Start +// +// ----------------------------------------------------------------------------- +// +void CAspActiveCaller::Start(TInt aCallId, TInt aMilliseconds) + { + FLOG( _L("CAspActiveCaller::Start START") ); + + if (IsActive()) + { + return; + } + + iCallId = aCallId; + + if (aMilliseconds <= 0) + { + Request(); // no delay - complete right away + } + else + { + iTimer.After(iStatus, aMilliseconds*1000); + SetActive(); + } + + FLOG( _L("CAspActiveCaller::Start END") ); + } + + + + +/****************************************************************************** + * class CAspBearerHandler + ******************************************************************************/ + + +// ----------------------------------------------------------------------------- +// CAspBearerHandler::NewLC +// +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CAspBearerHandler* CAspBearerHandler::NewL(const TAspParam& aParam) + { + CAspBearerHandler* self = new (ELeave) CAspBearerHandler(aParam); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + return self; + } + + +// ----------------------------------------------------------------------------- +// Destructor +// +// ----------------------------------------------------------------------------- +// +CAspBearerHandler::~CAspBearerHandler() + { + iList.Close(); + } + + +// ----------------------------------------------------------------------------- +// CAspBearerHandler::CAspBearerHandler +// ----------------------------------------------------------------------------- +// +CAspBearerHandler::CAspBearerHandler(const TAspParam& aParam) + { + __ASSERT_ALWAYS(aParam.iSyncSession, TUtil::Panic(KErrGeneral)); + + iSyncSession = aParam.iSyncSession; + } + + +// ----------------------------------------------------------------------------- +// CAspBearerHandler::ConstructL +// +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAspBearerHandler::ConstructL(void) + { + CreateSupportedBearerListL(); + } + + +// ----------------------------------------------------------------------------- +// CAspBearerHandler::IsSupported +// +// ----------------------------------------------------------------------------- +// +TBool CAspBearerHandler::IsSupported(TInt aBearer) + { + TInt count = iList.Count(); + + for (TInt i=0; i= count) + { + TUtil::Panic(KErrArgument); + } + + TAspBearerItem& item = iList[aIndex]; + return item.iBearerType; + } + + +// ----------------------------------------------------------------------------- +// CAspBearerHandler::ListIndexForBearer +// +// ----------------------------------------------------------------------------- +// +TInt CAspBearerHandler::ListIndexForBearer(TInt aBearer) + { + TInt count = iList.Count(); + for (TInt i=0; i arr(8); + CleanupClosePushL(arr); + + // + // ListTransportsL returns transports that can be used in current phone. + // RSyncMLSession uses FeatureManager to construct this list. + // + iSyncSession->ListTransportsL(arr); + TInt count = arr.Count(); + + for (TInt i=0; iAppendL(item.iBearerName); + } + + return arr; + } + + +// ----------------------------------------------------------------------------- +// CAspBearerHandler::SupportedBearerCount +// +// ----------------------------------------------------------------------------- +// +TInt CAspBearerHandler::SupportedBearerCount() + { + return iList.Count(); + } + + + + + +/****************************************************************************** + * class CAspAccessPointHandler + ******************************************************************************/ + + + +// ----------------------------------------------------------------------------- +// CAspAccessPointHandler::NewLC +// +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CAspAccessPointHandler* CAspAccessPointHandler::NewL(const TAspParam& aParam) + { + CAspAccessPointHandler* self = new(ELeave) CAspAccessPointHandler(aParam); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + return self; + } + + +// ----------------------------------------------------------------------------- +// Destructor +// +// ----------------------------------------------------------------------------- +// +CAspAccessPointHandler::~CAspAccessPointHandler() + { + delete iCommDb; + delete iApUtil; + } + + +// ----------------------------------------------------------------------------- +// CAspAccessPointHandler::CAspAccessPointHandler +// +// ----------------------------------------------------------------------------- +// +CAspAccessPointHandler::CAspAccessPointHandler(const TAspParam& /*aParam*/) + { + } + + +// ----------------------------------------------------------------------------- +// CAspAccessPointHandler::ConstructL +// +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CAspAccessPointHandler::ConstructL(void) + { + iCommDb = CCommsDatabase::NewL(EDatabaseTypeIAP); + + iApUtil = CApUtils::NewLC(*iCommDb); + CleanupStack::Pop(iApUtil); + } + + +// ----------------------------------------------------------------------------- +// CAspAccessPointHandler::ShowApSelectDialogL +// +// ----------------------------------------------------------------------------- +// +TInt CAspAccessPointHandler::ShowApSelectDialogL(TAspAccessPointItem& aItem) + { + FLOG( _L("CAspAccessPointHandler::ShowApSelectDialogL START") ); + + aItem.iUid = KErrNotFound; + aItem.iName = KNullDesC; + + TInt err(KErrNone); + TInt retVal( KErrNone ); + TCmSettingSelection selection; + TBearerFilterArray filterArray; + + TUint32 currentAp = 0; + if (aItem.iUid2 != KAskAlways && aItem.iUid2 != KDefaultConnection) + { + FLOG( _L("ShowApSelectDialogL aItem.iUid2 = %d"), aItem.iUid2 ); + // convert internet ap to Wap ap (CApSettingsHandler requires this) + TRAP_IGNORE(currentAp = iApUtil->WapIdFromIapIdL(aItem.iUid2)); + } + else + { + FLOG( _L("ShowApSelectDialogL KAskAlways or KDefaultConnection")); + } + + // Mark the current selection + selection.iResult = CMManager::EConnectionMethod; + selection.iId = currentAp; + FLOG( _L("ShowApSelectDialogL selection.iId = %d"), selection.iId ); + + // Start the connection dialog + CCmApplicationSettingsUi* settings = CCmApplicationSettingsUi::NewL(); + CleanupStack::PushL( settings ); + + TRAP ( err, retVal = settings->RunApplicationSettingsL( selection, + CMManager::EShowConnectionMethods, // Show only access points + filterArray ) ); + + CleanupStack::PopAndDestroy(); // settings + + if (err != KErrNone) + { + // Error showing dialogue, return + FLOG( _L("ShowApSelectDialogL err = %d"), err ); + return EAspDialogCancel; + } + + if (retVal) + { + TAspAccessPointItem item; + item.iUid = selection.iId; + FLOG( _L("ShowApSelectDialogL Uid (%d)"), item.iUid ); + + GetApInfo(item); + + // convert Wap ap to internet ap + aItem.iUid = iApUtil->IapIdFromWapIdL(selection.iId); + FLOG( _L("ShowApSelectDialogL Uid Conv (%d)"), item.iUid ); + + aItem.iName = item.iName; + + FLOG( _L("ShowApSelectDialogL RETURNING EAspDialogSelect") ); + return EAspDialogSelect; + } + else + { + FLOG( _L("ShowApSelectDialogL RETURNING EAspDialogCancel") ); + return EAspDialogCancel; + } + FLOG( _L("CAspAccessPointHandler::ShowApSelectDialogL END") ); + } + + +// ----------------------------------------------------------------------------- +// CAspAccessPointHandler::GetApInfoL +// +// ----------------------------------------------------------------------------- +// +TInt CAspAccessPointHandler::GetApInfoL(TAspAccessPointItem& aItem) + { + if (aItem.iUid == KAskAlways || aItem.iUid == KErrNotFound || aItem.iUid == KDefaultConnection) + { + return KErrNotFound; + } + + CApSelect* selector = CApSelect::NewLC(*iCommDb, + KEApIspTypeAll, + BearerFlags(), + KEApSortUidAscending); + + TInt ret = KErrNone; + TBool found = EFalse; + + // find access point with id aId + if (selector->MoveToFirst()) + { + if (aItem.iUid == (TInt)selector->Uid()) + { + found = ETrue; + } + while (!found && selector->MoveNext()) + { + if (aItem.iUid == (TInt)selector->Uid()) + { + found = ETrue; + } + } + } + + if (found) + { + TUtil::StrCopy(aItem.iName, selector->Name()); + } + else + { + aItem.iName = KNullDesC; + ret = KErrNotFound; + } + + CleanupStack::PopAndDestroy(selector); + return ret; + } + + +// ----------------------------------------------------------------------------- +// CAspAccessPointHandler::GetApInfo +// +// ----------------------------------------------------------------------------- +// +TInt CAspAccessPointHandler::GetApInfo(TAspAccessPointItem& aItem) + { + aItem.iName = KNullDesC; + + TInt ret = KErrNone; + TRAPD(err, ret = GetApInfoL(aItem)); + + if (err != KErrNone) + { + return KErrNotFound; + } + return ret; + } + + +// ----------------------------------------------------------------------------- +// CAspAccessPointHandler::GetInternetApInfo +// +// ----------------------------------------------------------------------------- +// +TInt CAspAccessPointHandler::GetInternetApInfo(TAspAccessPointItem& aItem) + { + if (aItem.iUid == KAskAlways || aItem.iUid == KErrNotFound || aItem.iUid == KDefaultConnection) + { + return KErrNotFound; + } + + TAspAccessPointItem item; + + // convert internet ap to Wap ap + TRAPD(err, item.iUid = iApUtil->WapIdFromIapIdL(aItem.iUid)); + if (err != KErrNone) + { + return KErrNotFound; + } + + TInt ret = GetApInfo(item); + + TUtil::StrCopy(aItem.iName, item.iName); + return ret; + } + + +// ----------------------------------------------------------------------------- +// CAspAccessPointHandler::BearerFlags +// +// ----------------------------------------------------------------------------- +// +TInt CAspAccessPointHandler::BearerFlags() + { + TInt flags; + if (FeatureManager::FeatureSupported(KFeatureIdAppCsdSupport)) + { + //flags = EApBearerTypeGPRS | EApBearerTypeCDMA | EApBearerTypeWLAN | EApBearerTypeHSCSD | EApBearerTypeCSD; + flags = EApBearerTypeAllBearers; + } + else + { + flags = EApBearerTypeGPRS | EApBearerTypeCDMA | EApBearerTypeWLAN; + } + + return flags; + } + + + + +/****************************************************************************** + * class TAspSyncError + ******************************************************************************/ + + + + +// ----------------------------------------------------------------------------- +// TAspSyncError::GetSmlErrorText +// +// ----------------------------------------------------------------------------- +// +HBufC* TAspSyncError::GetSmlErrorText(TInt aErrorCode, TInt aTransport) + { + HBufC* hBuf = NULL; + + TRAPD(err, hBuf = GetSmlErrorTextL(aErrorCode, aTransport)); + + if (err == KErrNone) + { + return hBuf; + } + else + { + return NULL; + } + } + + +// ----------------------------------------------------------------------------- +// TAspSyncError::GetSmlErrorTextL +// +// ----------------------------------------------------------------------------- +// +HBufC* TAspSyncError::GetSmlErrorTextL(TInt aErrorCode, TInt /*aTransport*/) + { + TInt id = R_ASP_LOG_ERR_SYSTEMERROR; // "System Error" + + switch (aErrorCode) + { + case SyncMLError::KErrTransportAuthenticationFailure: + { + id = R_ASP_LOG_ERR_HTTPAUTH; // "Http authentication failed" + break; + } + + case SyncMLError::KErrAuthenticationFailure: + { + id = R_ASP_LOG_ERR_CLIENTAUTH; // "Invalid user name or password" + break; + } + + case KErrServerBusy: + id = R_ASP_LOG_ERR_SERVERBUSY; // "Synchronisation server was busy" + break; + + case SyncMLError::KErrServerDatabaseNotFound: + id = R_ASP_LOG_ERR_REMOTEDATABASE; // "Invalid remote database" + break; + + case SyncMLError::KErrClientDatabaseNotFound: + id = R_ASP_LOG_ERR_LOCALDATABASE; // "Unable to open database" + break; + + case SyncMLError::KErrConnectionError: + id = R_ASP_LOG_ERR_SERVERNOTRESPONDING; // "Server is not responding" + break; + + case SyncMLError::KErrTransportSvrNoUri: + id = R_ASP_LOG_ERR_URIINVALID; // "Invalid host address" + break; + + case SyncMLError::KErrPhoneOnOfflineMode: + id = R_ASP_LOG_ERR_OFFLINE; // "Operation not possible in Off-line mode" + break; + + case SyncMLError::KErrTransportRequest: + case SyncMLError::KErrTransportHeader: + case SyncMLError::KErrTransportSvrError: + case SyncMLError::KErrTransportDisconnected: + case SyncMLError::KErrCannotCommunicateWithServer: + id = R_ASP_LOG_ERR_COMM; // "Error in communication" + break; + + case SyncMLError::KErrVerDTDMissing: + case SyncMLError::KErrProtoMissing: + case SyncMLError::KErrVersionDTDNotSupported: + case SyncMLError::KErrProtoNotSupported: + id = R_ASP_LOG_ERR_VERSIONNOTSUPPORTED; // "Unsupported SyncML software version in server" + break; + + case SyncMLError::KErrSessionIdNotValid: + case SyncMLError::KErrMappingInfoMissing: + case SyncMLError::KErrMappingInfoNotAcked: + case SyncMLError::KErrStatusCommandForCommandNotSent: + case SyncMLError::KErrStatusCommandNotTheSame: + case SyncMLError::KErrMissingStatusCommands: + case SyncMLError::KErrFailedToAddRecord: + case SyncMLError::KErrFailedToReplaceRecord: + case SyncMLError::KErrFailedToDeleteRecord: + case SyncMLError::KErrXmlParsingError: + case SyncMLError::KErrReferenceToolkitError: + case SyncMLError::KErrObjectTooLargeToSendToServer: + case SyncMLError::KErrFailedToGetRecord: + case SyncMLError::KErrUserInteractionFailed: + case SyncMLError::KErrStatusSizeMismatch: + case SyncMLError::KErrFailedToCloseDatabase: + case SyncMLError::KErrDatabaseAdapterIndexError: + id = R_ASP_LOG_ERR_SERVERERROR; // "Error in sync server" + break; + + /* Implementation of CMCC PIM v3 begins*/ + case SyncMLError::KErrServerFull: + if ( FeatureManager::FeatureSupported(KFeatureIdFfTdCmccpimpromptserverfullwhenreceive420statuscodefromserver) ) + { + id = R_QTN_NSML_LOG_ERR_SERVERFULL; + } + break; + /* Implementation of CMCC PIM v3 ends*/ + + default: + id = R_ASP_LOG_ERR_SYSTEMERROR; // "System Error" + break; + } + + HBufC* hBuf = CAspResHandler::ReadLC(id); + +#ifdef _DEBUG + TBuf buf2(hBuf->Des()); + TBuf buf1; + CleanupStack::PopAndDestroy(hBuf); + + hBuf = HBufC::NewLC(256); + TPtr ptr = hBuf->Des(); + + GetSyncMLErrorText(buf1, aErrorCode); + ptr.Format(_L("%S (%S)"), &buf2, &buf1); +#endif + + CleanupStack::Pop(hBuf); + return hBuf; + } + + +// ----------------------------------------------------------------------------- +// TAspSyncError::GetSmlErrorValue +// +// ----------------------------------------------------------------------------- +TInt TAspSyncError::GetSmlErrorValue(TInt aErrorCode) + { + TInt id = R_ASP_LOG_ERR_SYSTEMERROR; // "System Error" + + switch (aErrorCode) + { + case SyncMLError::KErrTransportAuthenticationFailure: + { + id = R_ASP_LOG_ERR_HTTPAUTH; // "Http authentication failed" + break; + } + + case SyncMLError::KErrAuthenticationFailure: + { + id = R_ASP_LOG_ERR_CLIENTAUTH; // "Invalid user name or password" + break; + } + + case KErrServerBusy: + id = R_ASP_LOG_ERR_SERVERBUSY; // "Synchronisation server was busy" + break; + + case SyncMLError::KErrServerDatabaseNotFound: + id = R_ASP_LOG_ERR_REMOTEDATABASE; // "Invalid remote database" + break; + + case SyncMLError::KErrClientDatabaseNotFound: + id = R_ASP_LOG_ERR_LOCALDATABASE; // "Unable to open database" + break; + + case SyncMLError::KErrConnectionError: + id = R_ASP_LOG_ERR_SERVERNOTRESPONDING; // "Server is not responding" + break; + + case SyncMLError::KErrTransportSvrNoUri: + id = R_ASP_LOG_ERR_URIINVALID; // "Invalid host address" + break; + + case SyncMLError::KErrPhoneOnOfflineMode: + id = R_ASP_LOG_ERR_OFFLINE; // "Operation not possible in Off-line mode" + break; + + case SyncMLError::KErrTransportRequest: + case SyncMLError::KErrTransportHeader: + case SyncMLError::KErrTransportSvrError: + case SyncMLError::KErrTransportDisconnected: + case SyncMLError::KErrCannotCommunicateWithServer: + id = R_ASP_LOG_ERR_COMM; // "Error in communication" + break; + + case SyncMLError::KErrVerDTDMissing: + case SyncMLError::KErrProtoMissing: + case SyncMLError::KErrVersionDTDNotSupported: + case SyncMLError::KErrProtoNotSupported: + id = R_ASP_LOG_ERR_VERSIONNOTSUPPORTED; // "Unsupported SyncML software version in server" + break; + + case SyncMLError::KErrSessionIdNotValid: + case SyncMLError::KErrMappingInfoMissing: + case SyncMLError::KErrMappingInfoNotAcked: + case SyncMLError::KErrStatusCommandForCommandNotSent: + case SyncMLError::KErrStatusCommandNotTheSame: + case SyncMLError::KErrMissingStatusCommands: + case SyncMLError::KErrFailedToAddRecord: + case SyncMLError::KErrFailedToReplaceRecord: + case SyncMLError::KErrFailedToDeleteRecord: + case SyncMLError::KErrXmlParsingError: + case SyncMLError::KErrReferenceToolkitError: + case SyncMLError::KErrObjectTooLargeToSendToServer: + case SyncMLError::KErrFailedToGetRecord: + case SyncMLError::KErrUserInteractionFailed: + case SyncMLError::KErrStatusSizeMismatch: + case SyncMLError::KErrFailedToCloseDatabase: + case SyncMLError::KErrDatabaseAdapterIndexError: + id = R_ASP_LOG_ERR_SERVERERROR; // "Error in sync server" + break; + + default: + id = R_ASP_LOG_ERR_SYSTEMERROR; // "System Error" + break; + } + + return id ; + } + + +#ifdef _DEBUG + +// ----------------------------------------------------------------------------- +// TAspSyncError::GetSyncMLErrorText +// +// ----------------------------------------------------------------------------- +// +void TAspSyncError::GetSyncMLErrorText(TDes& aText, TInt aError) + { + aText = KNullDesC(); + + + switch (aError) + { + case SyncMLError::KErrTransportRequest: + aText = _L("KErrTransportRequest"); + break; + case SyncMLError::KErrTransportHeader: + aText = _L("KErrTransportHeader"); + break; + case SyncMLError::KErrTransportSvrNoUri: + aText = _L("KErrTransportSvrNoUri"); + break; + case SyncMLError::KErrTransportSvrError: + aText = _L("KErrTransportSvrError"); + break; + case SyncMLError::KErrTransportAuthenticationFailure: + aText = _L("KErrTransportAuthenticationFailure"); + break; + case SyncMLError::KErrTransportDisconnected: + aText = _L("KErrTransportDisconnected"); + break; + case SyncMLError::KErrConnectionError: + aText = _L("KErrConnectionError"); + break; + case SyncMLError::KErrCannotCommunicateWithServer: + aText = _L("KErrCannotCommunicateWithServer"); + break; + case SyncMLError::KErrDatabaseAdapterIndexError: + aText = _L("KErrDatabaseAdapterIndexError"); + break; + case SyncMLError::KErrParseCallbackError: + aText = _L("KErrParseCallbackError"); + break; + case SyncMLError::KErrCommandInvalid: + aText = _L("KErrCommandInvalid"); + break; + case SyncMLError::KErrSessionIdNotValid: + aText = _L("KErrSessionIdNotValid"); + break; + case SyncMLError::KErrVerDTDMissing: + aText = _L("KErrVerDTDMissing"); + break; + case SyncMLError::KErrProtoMissing: + aText = _L("KErrProtoMissing"); + break; + case SyncMLError::KErrSyncHdrMissing: + aText = _L("KErrSyncHdrMissing"); + break; + case SyncMLError::KErrTargetLocMissing: + aText = _L("KErrTargetLocMissing"); + break; + case SyncMLError::KErrSourceLocMissing: + aText = _L("KErrSourceLocMissing"); + break; + case SyncMLError::KErrTargetLocNameMissing: + aText = _L("KErrTargetLocNameMissing"); + break; + case SyncMLError::KErrSourceLocNameMissing: + aText = _L("KErrSourceLocNameMissing"); + break; + case SyncMLError::KErrMappingInfoMissing: + aText = _L("KErrMappingInfoMissing"); + break; + case SyncMLError::KErrMappingInfoNotAcked: + aText = _L("KErrMappingInfoNotAcked"); + break; + case SyncMLError::KErrVersionDTDNotSupported: + aText = _L("KErrVersionDTDNotSupported"); + break; + case SyncMLError::KErrProtoNotSupported: + aText = _L("KErrProtoNotSupported"); + break; + case SyncMLError::KErrStatusCommandForCommandNotSent: + aText = _L("KErrStatusCommandForCommandNotSent"); + break; + case SyncMLError::KErrStatusCommandNotTheSame: + aText = _L("KErrStatusCommandNotTheSame"); + break; + case SyncMLError::KErrMissingStatusCommands: + aText = _L("KErrMissingStatusCommands"); + break; + case SyncMLError::KErrFailedToAddRecord: + aText = _L("KErrFailedToAddRecord"); + break; + case SyncMLError::KErrFailedToReplaceRecord: + aText = _L("KErrFailedToReplaceRecord"); + break; + case SyncMLError::KErrFailedToDeleteRecord: + aText = _L("KErrFailedToDeleteRecord"); + break; + case SyncMLError::KErrXmlParsingError: + aText = _L("KErrXmlParsingError"); + break; + case SyncMLError::KErrReferenceToolkitError: + aText = _L("KErrReferenceToolkitError"); + break; + case SyncMLError::KErrClientDatabaseNotFound: + aText = _L("KErrClientDatabaseNotFound"); + break; + case SyncMLError::KErrServerDatabaseNotFound: + aText = _L("KErrServerDatabaseNotFound"); + break; + case SyncMLError::KErrDevInfFileNotFound: + aText = _L("KErrDevInfFileNotFound"); + break; + case SyncMLError::KErrObjectTooLargeToSendToServer: + aText = _L("KErrObjectTooLargeToSendToServer"); + break; + case SyncMLError::KErrSlowSync: + aText = _L("KErrSlowSync"); + break; + case SyncMLError::KErrFailedToGetRecord: + aText = _L("KErrFailedToGetRecord"); + break; + case SyncMLError::KErrUserInteractionFailed: + aText = _L("KErrUserInteractionFailed"); + break; + case SyncMLError::KErrStatusSizeMismatch: + aText = _L("KErrStatusSizeMismatch"); + break; + case SyncMLError::KErrFailedToCloseDatabase: + aText = _L("KErrFailedToCloseDatabase"); + break; + + case SyncMLError::KErrPhoneOnOfflineMode: + aText = _L("KErrPhoneOnOfflineMode"); + break; + + case SyncMLError::KErrAuthenticationFailure: + aText = _L("KErrAuthenticationFailure"); + break; + + case SyncMLError::KErrGeneral: + aText = _L("KErrGeneral"); + break; + + case SyncMLError::KErrMessageTooShort: + aText = _L("KErrMessageTooShort"); + break; + case SyncMLError::KErrMessageIsCorrupt: + aText = _L("KErrMessageIsCorrupt"); + break; + case SyncMLError::KErrBadTransportId: + aText = _L("KErrBadTransportId"); + break; + case SyncMLError::KErrNoNotificationBody: + aText = _L("KErrNoNotificationBody"); + break; + case SyncMLError::KErrWrongVersion: + aText = _L("KErrWrongVersion"); + break; + case SyncMLError::KErrUnsupportedMimeType: + aText = _L("KErrUnsupportedMimeType"); + break; + case SyncMLError::KErrNoSuchTask: + aText = _L("KErrNoSuchTask"); + break; + case SyncMLError::KErrUnknownSyncType: + aText = _L("KErrUnknownSyncType"); + break; + case SyncMLError::KErrUnknownProfile: + aText = _L("KErrUnknownProfile"); + break; + case SyncMLError::KErrInvalidProfile: + aText = _L("KErrInvalidProfile"); + break; + case SyncMLError::KErrInvalidCredentials: + aText = _L("KErrInvalidCredentials"); + break; + case SyncMLError::KErrNoCredentials: + aText = _L("KErrNoCredentials"); + break; + case SyncMLError::KErrIntegrityFailureHMAC: + aText = _L("KErrIntegrityFailureHMAC"); + break; + case SyncMLError::KErrMustUsageUriNotComplete: + aText = _L("KErrMustUsageUriNotComplete"); + break; + case SyncMLError::KErrDMAccUriIsCorrupt: + aText = _L("KErrDMAccUriIsCorrupt"); + break; + case SyncMLError::KErrDMConUriIsCorrupt: + aText = _L("KErrDMConUriIsCorrupt"); + break; + case SyncMLError::KErrParmNameNotInProvDoc: + aText = _L("KErrParmNameNotInProvDoc"); + break; + case SyncMLError::KErrInvalidAppIdValue: + aText = _L("KErrInvalidAppIdValue"); + break; + case SyncMLError::KErrInvalidToNapIdValue: + aText = _L("KErrInvalidToNapIdValue"); + break; + case SyncMLError::KErrInvalidProviderIdValue: + aText = _L("KErrInvalidProviderIdValue"); + break; + case SyncMLError::KErrEmptyAauthLevelValue: + aText = _L("KErrEmptyAauthLevelValue"); + break; + case SyncMLError::KErrAppSrvAAuthLevelNotFound: + aText = _L("KErrAppSrvAAuthLevelNotFound"); + break; + case SyncMLError::KErrClientAAuthLevelNotFound: + aText = _L("KErrClientAAuthLevelNotFound"); + break; + case SyncMLError::KErrInvalidAppAuth: + aText = _L("KErrInvalidAppAuth"); + break; + case SyncMLError::KErrNoApplicationCharac: + aText = _L("KErrNoApplicationCharac"); + break; + case SyncMLError::KErrNoAppAuthCharac: + aText = _L("KErrNoAppAuthCharac"); + break; + case SyncMLError::KErrMissingRequiredParmInSvr: + aText = _L("KErrMissingRequiredParmInSvr"); + break; + case SyncMLError::KErrMissingRequiredParmInClient: + aText = _L("KErrMissingRequiredParmInClient"); + break; + case SyncMLError::KErrAppAddrCharacNotFound: + aText = _L("KErrAppAddrCharacNotFound"); + break; + case SyncMLError::KErrUnsupportedVersion: + aText = _L("KErrUnsupportedVersion"); + break; + case SyncMLError::KErrWrongProvPublicDocId: + aText = _L("KErrWrongProvPublicDocId"); + break; + case SyncMLError::KErrProfileNotFound: + aText = _L("KErrProfileNotFound"); + break; + case SyncMLError::KErrConnectionNotFound: + aText = _L("KErrConnectionNotFound"); + break; + case SyncMLError::KErrTaskNotFound: + aText = _L("KErrTaskNotFound"); + break; + case SyncMLError::KErrTransportNotFound: + aText = _L("KErrTransportNotFound"); + break; + case SyncMLError::KErrDataProviderNotFound: + aText = _L("KErrDataProviderNotFound"); + break; + case SyncMLError::KErrJobNotFound: + aText = _L("KErrJobNotFound"); + break; + case SyncMLError::KErrObjectPendingDelete: + aText = _L("KErrObjectPendingDelete"); + break; + case SyncMLError::KErrObjectInUse: + aText = _L("KErrObjectInUse"); + break; + case SyncMLError::KErrProfileAccessDenied: + aText = _L("KErrProfileAccessDenied"); + break; + case SyncMLError::KErrSuspended: + aText = _L("KErrSuspended"); + break; + case SyncMLError::KErrDataDepotStreamNotFound: + aText = _L("KErrDataDepotStreamNotFound"); + break; + + case SyncMLError::KErrServerIdNotMatching: + aText = _L("KErrServerIdNotMatching"); + break; + + default: + aText.Format(_L("%d"), aError); + break; + } + } + +#endif + + + + + + + +// End of file