omads/omadsappui/AspSyncUtil/src/AspUtil.cpp
changeset 0 dab8a81a92de
child 8 ad0f53516d84
equal deleted inserted replaced
-1:000000000000 0:dab8a81a92de
       
     1 /*
       
     2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 
       
    21 // INCLUDES
       
    22 
       
    23 #include <SyncMLTransportProperties.h>
       
    24 #include <flogger.h>
       
    25 #include <eikenv.h>
       
    26 #include <bautils.h>  // BaflUtils
       
    27 #include <AiwGenericParam.hrh>  // for application ids
       
    28 #include <collate.h>   // for TCollationMethod
       
    29 
       
    30 #include <featmgr.h>   // FeatureManager
       
    31 #include <ApUtils.h>   // CApUtils
       
    32 #include <avkon.rsg>
       
    33 #include <hlplch.h>    // HlpLauncher
       
    34 
       
    35 #include <MuiuMsvUiServiceUtilities.h> // for MsvUiServiceUtilities
       
    36 
       
    37 
       
    38 #include "AspUtil.h"
       
    39 #include "AspDialogUtil.h"
       
    40 #include "AspResHandler.h"
       
    41 #include "AspDebug.h"
       
    42 #include <AspSyncUtil.rsg>
       
    43 
       
    44 #include <SyncMLErr.h>  // sync error codes
       
    45 
       
    46 //#ifdef __SAP_POLICY_MANAGEMENT
       
    47 #include <SettingEnforcementInfo.h> // VSettingEnforcementInfo
       
    48 //#endif
       
    49 
       
    50 
       
    51 
       
    52 
       
    53 
       
    54 /******************************************************************************
       
    55  * class TAspParam
       
    56  ******************************************************************************/
       
    57 
       
    58 
       
    59 // -------------------------------------------------------------------------------
       
    60 // TAspParam::TAspParam
       
    61 //
       
    62 // -------------------------------------------------------------------------------
       
    63 //
       
    64 TAspParam::TAspParam(TInt aApplicationId)
       
    65  : iApplicationId(aApplicationId), iProfileId(KErrNotFound), iMode(KErrNotFound),
       
    66    iId(KErrNotFound), iReturnValue(KErrNotFound), iDataProviderId(KErrNotFound),
       
    67    iSyncTaskId(KErrNotFound), iProfile(NULL), 
       
    68    iSyncTask(NULL), iSyncFilter(NULL), iSyncSession(NULL),
       
    69    iProfileList(NULL), iContentList(NULL), iSchedule(NULL)
       
    70 	 {
       
    71 	 }
       
    72 
       
    73 
       
    74 // -------------------------------------------------------------------------------
       
    75 // TAspParam::TAspParam
       
    76 //
       
    77 // -------------------------------------------------------------------------------
       
    78 //
       
    79 TAspParam::TAspParam(TInt aApplicationId, RSyncMLSession* aSyncSession)
       
    80  : iApplicationId(aApplicationId), iProfileId(KErrNotFound), iMode(KErrNotFound),
       
    81    iId(KErrNotFound), iReturnValue(KErrNotFound), iDataProviderId(KErrNotFound),
       
    82    iSyncTaskId(KErrNotFound), iProfile(NULL),
       
    83    iSyncTask(NULL), iSyncFilter(NULL), iSyncSession(aSyncSession),
       
    84    iProfileList(NULL), iContentList(NULL), iSchedule(NULL)
       
    85   	 {
       
    86 	 }
       
    87 
       
    88 
       
    89 
       
    90 /******************************************************************************
       
    91  * class TAspUtil
       
    92  ******************************************************************************/
       
    93 
       
    94 
       
    95 // -------------------------------------------------------------------------------
       
    96 // TUtil::Panic
       
    97 //
       
    98 // -------------------------------------------------------------------------------
       
    99 //
       
   100 void TUtil::Panic(TInt aReason)
       
   101     {
       
   102 	_LIT(KPanicCategory,"AspSyncUtil");
       
   103 
       
   104 	User::Panic(KPanicCategory, aReason); 
       
   105     }
       
   106 
       
   107 
       
   108 // -------------------------------------------------------------------------------
       
   109 // TUtil::StrCopy
       
   110 //
       
   111 // String copy with lenght check.
       
   112 // -------------------------------------------------------------------------------
       
   113 //
       
   114 void TUtil::StrCopy(TDes8& aTarget, const TDesC& aSource)
       
   115     {
       
   116 	TInt len = aTarget.MaxLength();
       
   117     if(len < aSource.Length()) 
       
   118 	    {
       
   119 		aTarget.Copy(aSource.Left(len));
       
   120 		return;
       
   121 	    }
       
   122 	aTarget.Copy(aSource);
       
   123     }
       
   124 
       
   125 // -------------------------------------------------------------------------------
       
   126 // TUtil::StrCopy
       
   127 //
       
   128 // String copy with lenght check.
       
   129 // -------------------------------------------------------------------------------
       
   130 //
       
   131 void TUtil::StrCopy(TDes& aTarget, const TDesC8& aSource)
       
   132     {
       
   133 	TInt len = aTarget.MaxLength();
       
   134     if(len < aSource.Length()) 
       
   135 	    {
       
   136 		aTarget.Copy(aSource.Left(len));
       
   137 		return;
       
   138 	    }
       
   139 	aTarget.Copy(aSource);
       
   140     }
       
   141 
       
   142 
       
   143 // -------------------------------------------------------------------------------
       
   144 // TUtil::StrCopy
       
   145 //
       
   146 // String copy with lenght check.
       
   147 // -------------------------------------------------------------------------------
       
   148 //
       
   149 void TUtil::StrCopy(TDes& aTarget, const TDesC& aSource)
       
   150     {
       
   151 	TInt len = aTarget.MaxLength();
       
   152     if(len < aSource.Length()) 
       
   153 	    {
       
   154 		aTarget.Copy(aSource.Left(len));
       
   155 		return;
       
   156 	    }
       
   157 	aTarget.Copy(aSource);
       
   158     }
       
   159 
       
   160 //--------------------------------------------------------------------------------
       
   161 //TUtil::StrConversion
       
   162 //
       
   163 //Convert TBuf to HBuf
       
   164 //--------------------------------------------------------------------------------
       
   165 //
       
   166 HBufC* TUtil::StrConversion(const TDesC& aDefaultText)
       
   167 {
       
   168 	return aDefaultText.AllocLC();
       
   169     }
       
   170 
       
   171 
       
   172 // -------------------------------------------------------------------------------
       
   173 // TUtil::StrAppend
       
   174 //
       
   175 // -------------------------------------------------------------------------------
       
   176 //
       
   177 void TUtil::StrAppend(TDes& aTarget, const TDesC& aSource)
       
   178 {
       
   179     if (aSource.Length() == 0)
       
   180     	{
       
   181     	return;
       
   182     	}
       
   183     	
       
   184 	TInt free = aTarget.MaxLength() - aTarget.Length();
       
   185 	if (aSource.Length() < free)
       
   186 		{
       
   187 		aTarget.Append(aSource);
       
   188 		}
       
   189 }
       
   190 
       
   191 
       
   192 // -------------------------------------------------------------------------------
       
   193 // TUtil::StrInsert
       
   194 //
       
   195 // -------------------------------------------------------------------------------
       
   196 //
       
   197 void TUtil::StrInsert(TDes& aTarget, const TDesC& aSource)
       
   198 {
       
   199 	TInt free = aTarget.MaxLength() - aTarget.Length();
       
   200 	if (aSource.Length() < free)
       
   201 		{
       
   202 		aTarget.Insert(0, aSource);
       
   203 		}
       
   204 }
       
   205 
       
   206 
       
   207 // -------------------------------------------------------------------------------
       
   208 // TUtil::StrToInt
       
   209 //
       
   210 // -------------------------------------------------------------------------------
       
   211 //
       
   212 TInt TUtil::StrToInt(const TDesC& aText, TInt& aNum)
       
   213 	{
       
   214     TLex lex(aText);
       
   215 
       
   216     TInt err=lex.Val(aNum); 
       
   217 	return err;
       
   218 	}
       
   219 
       
   220 
       
   221 // -------------------------------------------------------------------------------
       
   222 // TUtil::IsEmpty
       
   223 //
       
   224 // Function returns ETrue if string only contains white space or has no characters.
       
   225 // -------------------------------------------------------------------------------
       
   226 //
       
   227 TBool TUtil::IsEmpty(const TDesC& aText)
       
   228 	{
       
   229 	TInt len=aText.Length();
       
   230 	for (TInt i=0; i<len; i++)
       
   231 		{
       
   232 		TChar c=aText[i];
       
   233 		if (!c.IsSpace())
       
   234 			{
       
   235 			return EFalse;
       
   236 			}
       
   237 		}
       
   238 	return ETrue;
       
   239 	}
       
   240 
       
   241 
       
   242 // -------------------------------------------------------------------------------
       
   243 // TUtil::Fill
       
   244 //
       
   245 // -------------------------------------------------------------------------------
       
   246 //
       
   247 void TUtil::Fill(TDes& aTarget, const TDesC& aOneCharStr, TInt aLength)
       
   248 	{
       
   249 	TInt len = aTarget.MaxLength();
       
   250     if(len > aLength)
       
   251     	{
       
   252     	TBuf<KBufSize16> buf(aOneCharStr);
       
   253 	    aTarget.Fill(buf[0], aLength);
       
   254     	}
       
   255 	}
       
   256 
       
   257 
       
   258 // -----------------------------------------------------------------------------
       
   259 // TUtil::AddResFileL
       
   260 //
       
   261 // -----------------------------------------------------------------------------
       
   262 //
       
   263 TInt TUtil::AddResFileL(const TDesC& aFile)
       
   264 	{
       
   265 	CEikonEnv* env = CEikonEnv::Static();
       
   266 
       
   267 	TFileName fileName(aFile);
       
   268 
       
   269 	BaflUtils::NearestLanguageFile(env->FsSession(), fileName);
       
   270 
       
   271     return env->AddResourceFileL(fileName);
       
   272 	}
       
   273 
       
   274 
       
   275 // -----------------------------------------------------------------------------
       
   276 // TUtil::IsValidAppId
       
   277 //
       
   278 // -----------------------------------------------------------------------------
       
   279 //
       
   280 TBool TUtil::IsValidAppId(TInt aApplicationId)
       
   281 	{
       
   282 	TInt id = aApplicationId;
       
   283 	
       
   284 	if (id == EApplicationIdSync || id == EApplicationIdContact || 
       
   285 	    id == EApplicationIdCalendar || id == EApplicationIdEmail ||
       
   286 	    id == EApplicationIdNote || id == EApplicationIdMms)
       
   287 		{
       
   288 		return ETrue;
       
   289 		}
       
   290 		
       
   291 	return EFalse;
       
   292 	}
       
   293 
       
   294 
       
   295 // -----------------------------------------------------------------------------
       
   296 // TUtil::IsValidSID
       
   297 //
       
   298 // -----------------------------------------------------------------------------
       
   299 //
       
   300 TBool TUtil::IsValidSID(TInt aSid)
       
   301 	{
       
   302 	TInt id = aSid;
       
   303 	
       
   304 	if (id == KUidAppSync.iUid || id == KUidAppPhonebook.iUid || 
       
   305 	    id == KUidAppCalendar.iUid || id == KUidAppMessages.iUid ||
       
   306 	    id == KUidAppNotepad.iUid || id == KUidAppTest.iUid || 
       
   307 	    id == KUidAppMailEditor.iUid)
       
   308 		{
       
   309 		return ETrue;
       
   310 		}
       
   311 		
       
   312 	return EFalse;
       
   313 	}
       
   314 
       
   315 
       
   316 // -----------------------------------------------------------------------------
       
   317 // TUtil::ProviderIdFromAppId
       
   318 //
       
   319 // -----------------------------------------------------------------------------
       
   320 //
       
   321 TInt TUtil::ProviderIdFromAppId(TInt aApplicationId)
       
   322 	{
       
   323 	TInt id=KErrNotFound;
       
   324 
       
   325 	switch (aApplicationId)
       
   326 		{
       
   327 		case EApplicationIdContact:
       
   328 			id = KUidNSmlAdapterContact.iUid;
       
   329 			break;
       
   330 		case EApplicationIdCalendar:
       
   331 			id = KUidNSmlAdapterCalendar.iUid;
       
   332 			break;
       
   333 		case EApplicationIdEmail:
       
   334      		id = KUidNSmlAdapterEMail.iUid;
       
   335 			break;
       
   336 		case EApplicationIdNote:
       
   337 			id = KUidNSmlAdapterNote.iUid;
       
   338 			break;
       
   339 		default:
       
   340             id = KErrNotFound;
       
   341 			break;
       
   342 		}
       
   343 
       
   344 	return id;
       
   345 	}
       
   346 
       
   347 
       
   348 // -----------------------------------------------------------------------------
       
   349 // TUtil::AppIdFromProviderId
       
   350 //
       
   351 // -----------------------------------------------------------------------------
       
   352 //
       
   353 TInt TUtil::AppIdFromProviderId(TInt aAdapterId)
       
   354 	{
       
   355 	TInt id=KErrNotFound;
       
   356 
       
   357 	if (aAdapterId == KUidNSmlAdapterContact.iUid)
       
   358 		{
       
   359 		id = EApplicationIdContact;
       
   360 		}
       
   361 	if (aAdapterId == KUidNSmlAdapterCalendar.iUid)
       
   362 		{
       
   363 		id = EApplicationIdCalendar;
       
   364 		}
       
   365 	if (aAdapterId == KUidNSmlAdapterEMail.iUid)
       
   366 		{
       
   367 		id = EApplicationIdEmail;
       
   368 		}
       
   369 	if (aAdapterId == KUidNSmlAdapterNote.iUid)
       
   370 		{
       
   371 		id = EApplicationIdNote;
       
   372 		}
       
   373 
       
   374 	return id;
       
   375 	}
       
   376 
       
   377 
       
   378 // -----------------------------------------------------------------------------
       
   379 // TUtil::IsToDay
       
   380 //
       
   381 // -----------------------------------------------------------------------------
       
   382 //
       
   383 TBool TUtil::IsToday(TTime aTime)
       
   384 	{
       
   385 	TTime now;
       
   386 	now.HomeTime();
       
   387 	
       
   388 	TInt day1 = now.DayNoInYear();
       
   389 	TInt day2 = aTime.DayNoInYear();
       
   390 	
       
   391 	TDateTime date1 = now.DateTime();
       
   392 	TDateTime date2 = aTime.DateTime();
       
   393 	
       
   394 	
       
   395 	TTimeIntervalDays daysBetween = now.DaysFrom(aTime);
       
   396 	
       
   397 	if (day1 != day2 || date1.Year() != date2.Year())
       
   398 		{
       
   399 		return EFalse;
       
   400 		}
       
   401 		
       
   402 	if (daysBetween.Int() > 0)
       
   403 		{
       
   404 		return EFalse;
       
   405 		}
       
   406 		
       
   407 	return ETrue; 
       
   408 	}
       
   409 
       
   410 
       
   411 // -----------------------------------------------------------------------------
       
   412 // TUtil::SyncTimeLC
       
   413 //
       
   414 // -----------------------------------------------------------------------------
       
   415 //
       
   416 HBufC* TUtil::SyncTimeLC(TTime aLastSync)
       
   417 	{
       
   418 	TTime homeTime = ConvertUniversalToHomeTime(aLastSync);
       
   419 	
       
   420 	HBufC* hBuf = HBufC::NewLC(KBufSize255);
       
   421 	TPtr ptr = hBuf->Des();
       
   422 
       
   423 	if (IsToday(homeTime))
       
   424 		{
       
   425 		TBuf<KBufSize> timeFormat;
       
   426 		CAspResHandler::ReadL(timeFormat, R_QTN_TIME_USUAL_WITH_ZERO);
       
   427 		homeTime.FormatL(ptr, timeFormat);
       
   428 		}
       
   429 	else
       
   430 		{
       
   431 		TBuf<KBufSize> dateFormat;
       
   432 		CAspResHandler::ReadL(dateFormat, R_QTN_DATE_USUAL_WITH_ZERO);
       
   433 		homeTime.FormatL(ptr, dateFormat);
       
   434 		}
       
   435    
       
   436 	return hBuf;
       
   437 	}
       
   438 	
       
   439 	
       
   440 // -----------------------------------------------------------------------------
       
   441 // TUtil::ConvertUniversalToHomeTime
       
   442 //
       
   443 // -----------------------------------------------------------------------------
       
   444 //
       
   445 TTime TUtil::ConvertUniversalToHomeTime(const TTime& aUniversalTime)
       
   446     {
       
   447     TTime time(aUniversalTime);   // time stores UTC time.
       
   448 
       
   449     TLocale locale;
       
   450     TTimeIntervalSeconds universalTimeOffset(locale.UniversalTimeOffset());
       
   451     
       
   452     // Add locale's universal time offset to universal time.
       
   453     time += universalTimeOffset;    // time stores Local Time.
       
   454 
       
   455     // If home daylight saving in effect, add one hour offset.
       
   456     if (locale.QueryHomeHasDaylightSavingOn())
       
   457         {
       
   458         TTimeIntervalHours daylightSaving(1);
       
   459         time += daylightSaving;
       
   460         }
       
   461 
       
   462     return time;
       
   463     }
       
   464 	
       
   465 
       
   466 // -----------------------------------------------------------------------------
       
   467 // TUtil::GetDateTextL
       
   468 //
       
   469 // -----------------------------------------------------------------------------
       
   470 //
       
   471 void TUtil::GetDateTextL(TDes& aText, TTime aDateTime)
       
   472 	{
       
   473 	TTime homeTime = ConvertUniversalToHomeTime(aDateTime);
       
   474 	
       
   475 	HBufC* hBuf = CAspResHandler::ReadLC(R_QTN_DATE_USUAL_WITH_ZERO);
       
   476     homeTime.FormatL(aText, *hBuf);
       
   477     CleanupStack::PopAndDestroy(hBuf);
       
   478 	}
       
   479 
       
   480 
       
   481 // -----------------------------------------------------------------------------
       
   482 // TUtil::GetTimeTextL
       
   483 //
       
   484 // -----------------------------------------------------------------------------
       
   485 //
       
   486 void TUtil::GetTimeTextL(TDes& aText, TTime aDateTime)
       
   487 	{
       
   488 	TTime homeTime = ConvertUniversalToHomeTime(aDateTime);
       
   489 	
       
   490 	HBufC* hBuf = CAspResHandler::ReadLC(R_QTN_TIME_USUAL_WITH_ZERO);
       
   491     homeTime.FormatL(aText, *hBuf);
       
   492     CleanupStack::PopAndDestroy(hBuf);
       
   493 	}
       
   494 
       
   495 
       
   496 // -----------------------------------------------------------------------------
       
   497 // TUtil::GetDateTimeTextL
       
   498 //
       
   499 // -----------------------------------------------------------------------------
       
   500 //
       
   501 void TUtil::GetDateTimeTextL(TDes& aText, TTime aDateTime)
       
   502 	{
       
   503 	TDateTime dt = aDateTime.DateTime();
       
   504 	aText.Format(_L("%02d.%02d.%04d %02d:%02d:%02d"), dt.Day()+1, dt.Month()+1, dt.Year(),  dt.Hour(), dt.Minute(), dt.Second());
       
   505 	}
       
   506 
       
   507 
       
   508 // -----------------------------------------------------------------------------
       
   509 // TUtil::LaunchHelpAppL
       
   510 //
       
   511 // -----------------------------------------------------------------------------
       
   512 //
       
   513 void TUtil::LaunchHelpAppL()
       
   514 	{
       
   515 	if (!FeatureManager::FeatureSupported(KFeatureIdHelp))
       
   516 		{
       
   517 		return;
       
   518 		}
       
   519 		
       
   520 	CEikonEnv* eikEnv = CEikonEnv::Static();
       
   521 	HlpLauncher::LaunchHelpApplicationL(eikEnv->WsSession(), eikEnv->EikAppUi()->AppHelpContextL());
       
   522 	}
       
   523 
       
   524 
       
   525 // -----------------------------------------------------------------------------
       
   526 // TUtil::LaunchHelpAppL
       
   527 //
       
   528 // -----------------------------------------------------------------------------
       
   529 //
       
   530 void TUtil::LaunchHelpAppL(CEikonEnv* aEikonkEnv)
       
   531 	{
       
   532 	if (!FeatureManager::FeatureSupported(KFeatureIdHelp))
       
   533 		{
       
   534 		return;
       
   535 		}
       
   536 		
       
   537 	CEikonEnv* eikEnv = CEikonEnv::Static();
       
   538 	HlpLauncher::LaunchHelpApplicationL(aEikonkEnv->WsSession(), 
       
   539 	                                    aEikonkEnv->EikAppUi()->AppHelpContextL());
       
   540 	}
       
   541 
       
   542 
       
   543 // ---------------------------------------------------------
       
   544 // TUtil::SettingEnforcementStateL
       
   545 // 
       
   546 // Checks if setting enforcement is activated.
       
   547 // ---------------------------------------------------------
       
   548 TBool TUtil::SettingEnforcementStateL()
       
   549     {
       
   550     
       
   551  FeatureManager::InitializeLibL();
       
   552  if(!FeatureManager::FeatureSupported(KFeatureIdSapPolicyManagement))
       
   553  {
       
   554 		//#ifndef __SAP_POLICY_MANAGEMENT
       
   555 		FeatureManager::UnInitializeLib();
       
   556 		    return EFalse;
       
   557 		//#else
       
   558 }
       
   559 else
       
   560 {
       
   561 	FeatureManager::UnInitializeLib();
       
   562 	CSettingEnforcementInfo* info = CSettingEnforcementInfo::NewL();
       
   563 	CleanupStack::PushL(info);
       
   564 
       
   565 	TBool active = EFalse;
       
   566 	User::LeaveIfError(info->EnforcementActive(EDataSyncEnforcement, active));
       
   567 	CleanupStack::PopAndDestroy(info);
       
   568 
       
   569 	return active;
       
   570  //#endif
       
   571 }
       
   572 
       
   573 
       
   574     }
       
   575 
       
   576 
       
   577 // ---------------------------------------------------------
       
   578 // TUtil::SettingEnforcementState
       
   579 // 
       
   580 // Checks if setting enforcement is activated.
       
   581 // ---------------------------------------------------------
       
   582 TBool TUtil::SettingEnforcementState()
       
   583     {
       
   584     TBool ret = EFalse;
       
   585     
       
   586     TRAP_IGNORE(ret = SettingEnforcementStateL());
       
   587     
       
   588     return ret;
       
   589     }
       
   590 
       
   591 
       
   592 // ---------------------------------------------------------
       
   593 // TUtil::NumberConversionLC
       
   594 // 
       
   595 // ---------------------------------------------------------
       
   596 CDesCArray* TUtil::NumberConversionLC(CDesCArray* aList)
       
   597     {
       
   598     CDesCArrayFlat* arr = new (ELeave) CDesCArrayFlat(KDefaultArraySize);
       
   599     CleanupStack::PushL(arr);
       
   600     
       
   601     TInt count = aList->Count();
       
   602     
       
   603     for (TInt i=0; i<count; i++)
       
   604     	{
       
   605     	TBuf<KBufSize> buf((*aList)[i]);
       
   606      	AknTextUtils::DisplayTextLanguageSpecificNumberConversion(buf);
       
   607      	arr->AppendL(buf);
       
   608     	}
       
   609     	
       
   610     return arr;
       
   611     }
       
   612 
       
   613 
       
   614 
       
   615 #ifdef _DEBUG
       
   616 
       
   617 // -------------------------------------------------------------------------------
       
   618 // TUtil::Print
       
   619 //
       
   620 // -------------------------------------------------------------------------------
       
   621 //
       
   622 void TUtil::Print(const TDesC& aText)
       
   623     {
       
   624 	CEikonEnv::Static()->InfoMsg(aText);
       
   625 	}
       
   626 
       
   627 
       
   628 // -------------------------------------------------------------------------------
       
   629 // TUtil::Print
       
   630 //
       
   631 // -------------------------------------------------------------------------------
       
   632 //
       
   633 void TUtil::Print(const TDesC& aText, TInt aNum)
       
   634     {
       
   635 	_LIT(KFormat, "%S (%d)");
       
   636 
       
   637 	TBuf<KBufSize> buf;
       
   638 	buf.Format(KFormat, &aText, aNum);
       
   639 	CEikonEnv::Static()->InfoMsg(buf);
       
   640 	}
       
   641 
       
   642 
       
   643 // -------------------------------------------------------------------------------
       
   644 // TUtil::GetMandatoryFieldText
       
   645 //
       
   646 // -------------------------------------------------------------------------------
       
   647 //
       
   648 void TUtil::GetMandatoryFieldText(TDes& aText, TInt aStatus)
       
   649     {
       
   650 	switch (aStatus)
       
   651 		{
       
   652 		case EMandatoryNoProfileName:
       
   653             aText = _L("no profile name");
       
   654 			break;
       
   655 		case EMandatoryNoHostAddress:
       
   656 			aText = _L("no host address");
       
   657 			break;
       
   658 		case EMandatoryNoContent:
       
   659 			aText = _L("no content");
       
   660 			break;
       
   661 		case EMandatoryNoLocalDatabase:
       
   662 			aText = _L("no local database");
       
   663 			break;
       
   664 		case EMandatoryNoRemoteDatabase:
       
   665 			aText = _L("no remote database");
       
   666 			break;
       
   667 		default:
       
   668 			aText = _L("profile ok");
       
   669 			break;
       
   670 		}
       
   671     }
       
   672 
       
   673 
       
   674 // -----------------------------------------------------------------------------
       
   675 // TUtil::TimeBefore
       
   676 //
       
   677 // Function returns TTime of the current time (needed with function TimeAfter).
       
   678 // -----------------------------------------------------------------------------
       
   679 //
       
   680 TTime TUtil::TimeBefore()
       
   681 {
       
   682     TTime now;
       
   683 	now.UniversalTime();
       
   684 	return now;
       
   685 }
       
   686 
       
   687 
       
   688 // -----------------------------------------------------------------------------
       
   689 // TUtil::TimeAfter
       
   690 //
       
   691 // Function returns milliseconds passed since aBefore.
       
   692 // -----------------------------------------------------------------------------
       
   693 //
       
   694 TInt TUtil::TimeAfter(TTime aBefore)
       
   695 {
       
   696 	TTime after;
       
   697 	after.UniversalTime();
       
   698 	TTimeIntervalMicroSeconds microSeconds = after.MicroSecondsFrom(aBefore); 
       
   699 	TInt seconds = microSeconds.Int64()/1000;
       
   700 	return seconds;
       
   701 }
       
   702 
       
   703 
       
   704 // -----------------------------------------------------------------------------
       
   705 // TUtil::TimeAfter
       
   706 //
       
   707 // -----------------------------------------------------------------------------
       
   708 //
       
   709 void TUtil::TimeAfter(TTime aBefore, const TDesC& aText)
       
   710     {
       
   711 	TTime after;
       
   712 	after.UniversalTime();
       
   713 	TTimeIntervalMicroSeconds microSeconds = after.MicroSecondsFrom(aBefore); 
       
   714 	
       
   715 	FTRACE( RDebug::Print(_L("%S %d ms"), &aText, microSeconds.Int64()/1000) );
       
   716     }
       
   717 
       
   718 
       
   719 // -----------------------------------------------------------------------------
       
   720 // TUtil::GetApplicationNameL
       
   721 //
       
   722 // -----------------------------------------------------------------------------
       
   723 //
       
   724 void TUtil::GetApplicationName(TDes& aText, TInt aApplicationId)
       
   725     {
       
   726 	switch (aApplicationId)
       
   727 		{
       
   728 		case EApplicationIdSync:
       
   729 			aText = _L("EApplicationIdSync");
       
   730 			break;
       
   731 		case EApplicationIdContact:
       
   732 			aText = _L("EApplicationIdContact");
       
   733 			break;
       
   734 		case EApplicationIdCalendar:
       
   735 			aText = _L("EApplicationIdCalendar");
       
   736 			break;
       
   737 		case EApplicationIdEmail:
       
   738 			aText = _L("EApplicationIdEmail");
       
   739 			break;
       
   740 		case EApplicationIdMms:
       
   741 			aText = _L("EApplicationIdMms");
       
   742 			break;
       
   743 		case EApplicationIdNote:
       
   744 			aText = _L("EApplicationIdNote");
       
   745 			break;
       
   746 		default:
       
   747 			aText = _L("unknown app");
       
   748 			break;
       
   749 		}
       
   750     }
       
   751 
       
   752 #endif
       
   753 
       
   754 
       
   755 
       
   756 /******************************************************************************
       
   757  * class TURIParser
       
   758  ******************************************************************************/
       
   759 
       
   760 
       
   761 // ---------------------------------------------------------
       
   762 // TURIParser::TURIParser
       
   763 // 
       
   764 // ---------------------------------------------------------
       
   765 TURIParser::TURIParser(const TDesC& aStr) : iOriginalStr(aStr)
       
   766     {
       
   767     SkipHttp();
       
   768     }
       
   769 
       
   770 
       
   771 // ---------------------------------------------------------
       
   772 // TURIParser::GetUriWithoutPort
       
   773 // 
       
   774 // URI format: "http://serveraddress/documentname/"
       
   775 // ---------------------------------------------------------
       
   776 void TURIParser::GetUriWithoutPort(TDes& aText)
       
   777 	{
       
   778 	_LIT(KSlash, "/");
       
   779 	
       
   780 	aText = KNullDesC;
       
   781 	
       
   782 	TPtrC http = ParseHttp();
       
   783 	TPtrC address = ParseAddress();
       
   784 	TPtrC document = ParseDocument();
       
   785 	
       
   786 	TUtil::StrAppend(aText, http);
       
   787 	TUtil::StrAppend(aText, address);
       
   788 	
       
   789 	if (document.Length() > 0)
       
   790 		{
       
   791 		TUtil::StrAppend(aText, KSlash);
       
   792 		TUtil::StrAppend(aText, document);
       
   793 		}
       
   794 	//else if (aText.Length() > 0)
       
   795 	//	{
       
   796 	//	TUtil::StrAppend(aText, KSlash);
       
   797 	//	}
       
   798 	}
       
   799 	
       
   800 
       
   801 // ---------------------------------------------------------
       
   802 // TURIParser::GetUriWithPort
       
   803 // 
       
   804 // URI format: "http://serveraddress:port/documentname/"
       
   805 // ---------------------------------------------------------
       
   806 void TURIParser::GetUriWithPort(TDes& aText, const TInt aPort)
       
   807 	{
       
   808 	_LIT(KColon, ":");
       
   809 	_LIT(KSlash, "/");
       
   810 	
       
   811 	aText = KNullDesC;
       
   812 	
       
   813 	TPtrC http = ParseHttp();
       
   814 	
       
   815 	TPtrC address = ParseAddress();
       
   816 	
       
   817 	TPtrC document = ParseDocument();
       
   818 	
       
   819 	TUtil::StrAppend(aText, http);
       
   820 	TUtil::StrAppend(aText, address);
       
   821 	
       
   822 	TBuf<KBufSize32> buf;
       
   823 	buf.Num(aPort);
       
   824 	TUtil::StrAppend(aText, KColon);
       
   825 	TUtil::StrAppend(aText, buf);
       
   826 	
       
   827 	if (document.Length() > 0)
       
   828 		{
       
   829 		TUtil::StrAppend(aText, KSlash);
       
   830 		TUtil::StrAppend(aText, document);
       
   831 		}
       
   832 	//else if (aText.Length() > 0)
       
   833 	//	{
       
   834 	//	TUtil::StrAppend(aText, KSlash);
       
   835 	//	}
       
   836 	}
       
   837 
       
   838 
       
   839 // ---------------------------------------------------------
       
   840 // TURIParser::Port
       
   841 // 
       
   842 // ---------------------------------------------------------
       
   843 TInt TURIParser::Port()
       
   844 	{
       
   845 	TInt port = KErrNotFound;
       
   846 	
       
   847 	TInt err = ParsePort(port);
       
   848 	if (err != KErrNone)
       
   849 		{
       
   850 		return KErrNotFound;
       
   851 		}
       
   852 		
       
   853 	return port;
       
   854 	}
       
   855 
       
   856 
       
   857 // ---------------------------------------------------------
       
   858 // TURIParser::DefaultPort
       
   859 // 
       
   860 // ---------------------------------------------------------
       
   861 TInt TURIParser::DefaultPort()
       
   862 	{
       
   863 	_LIT(KHttpsHeader, "https://");
       
   864 	
       
   865 	TInt pos = iOriginalStr.FindF(KHttpsHeader);
       
   866 	if (pos != KErrNotFound)
       
   867 		{
       
   868 		return EDefaultHttpsPort;
       
   869 		}
       
   870 
       
   871 	return EDefaultHttpPort;
       
   872 	}
       
   873 
       
   874 
       
   875 // ---------------------------------------------------------
       
   876 // TURIParser::IsValidUri
       
   877 // 
       
   878 // ---------------------------------------------------------
       
   879 TBool TURIParser::IsValidUri(const TDesC& aText)
       
   880 	{
       
   881 	_LIT(KHttpHeader, "http://");
       
   882 	_LIT(KHttpsHeader, "https://");
       
   883 
       
   884 	const TInt KHttpLength = 7;
       
   885 	const TInt KHttpsLength = 8;
       
   886 	
       
   887 	// IsValidDomainL this does not accept comma ("http://" fails)
       
   888 	//return MsvUiServiceUtilities::IsValidDomainL(aText);
       
   889 	
       
   890 	if (TUtil::IsEmpty(aText))
       
   891 		{
       
   892 		return EFalse;
       
   893 		}
       
   894 		
       
   895     if (aText.Compare(KHttpHeader) == 0)
       
   896     	{
       
   897     	return EFalse;
       
   898     	}
       
   899 	
       
   900     if (aText.Compare(KHttpsHeader) == 0)
       
   901     	{
       
   902     	return EFalse;
       
   903     	}
       
   904     
       
   905     if (aText.Left(KHttpLength).Compare(KHttpHeader) != 0
       
   906     				&& aText.Left(KHttpsLength).Compare(KHttpsHeader) != 0)
       
   907     	{
       
   908     	return EFalse;
       
   909     	}
       
   910 	
       
   911 	return ETrue;
       
   912 	}
       
   913 
       
   914 // ---------------------------------------------------------
       
   915 // TURIParser::IsValidBluetoothHostAddress
       
   916 // 
       
   917 // ---------------------------------------------------------
       
   918 TBool TURIParser::IsValidBluetoothHostAddress(const TDesC& aText)
       
   919 	{
       
   920 	_LIT(KHttpHeader, "http://");
       
   921 	_LIT(KHttpsHeader, "https://");
       
   922 
       
   923 	const TInt KHttpLength = 7;
       
   924 	const TInt KHttpsLength = 8;
       
   925 	
       
   926 	// IsValidDomainL this does not accept comma ("http://" fails)
       
   927 	//return MsvUiServiceUtilities::IsValidDomainL(aText);
       
   928 	
       
   929 	if (TUtil::IsEmpty(aText))
       
   930 		{
       
   931 		return EFalse;
       
   932 		}
       
   933 		
       
   934     if (aText.Compare(KHttpHeader) == 0)
       
   935     	{
       
   936     	return EFalse;
       
   937     	}
       
   938 	
       
   939     if (aText.Compare(KHttpsHeader) == 0)
       
   940     	{
       
   941     	return EFalse;
       
   942     	}
       
   943     
       
   944     if (aText.Left(KHttpLength).Compare(KHttpHeader) == 0
       
   945     				|| aText.Left(KHttpsLength).Compare(KHttpsHeader) == 0)
       
   946     	{
       
   947     	return EFalse;
       
   948     	}
       
   949 	
       
   950 	return ETrue;
       
   951 	}
       
   952 // ---------------------------------------------------------
       
   953 // TURIParser::IsValidPort
       
   954 // 
       
   955 // ---------------------------------------------------------
       
   956 TBool TURIParser::IsValidPort(const TInt aPort)
       
   957 	{
       
   958 	if (aPort < TURIParser::EMinURIPortNumber || 
       
   959 	    aPort > TURIParser::EMaxURIPortNumber)
       
   960 		{
       
   961 		return EFalse;
       
   962 		}
       
   963 		
       
   964 	return ETrue;
       
   965 	}
       
   966 
       
   967 
       
   968 // ---------------------------------------------------------
       
   969 // TURIParser::SkipHttp
       
   970 // 
       
   971 // Set pointer to the end of "http://".
       
   972 // ---------------------------------------------------------
       
   973 void TURIParser::SkipHttp()
       
   974 	{
       
   975     TInt start = KErrNotFound;
       
   976     TInt end   = KErrNotFound;
       
   977     TStr str(iOriginalStr);
       
   978     
       
   979     GetHttpPos(start, end);
       
   980     
       
   981     if (start != KErrNotFound)
       
   982     	{
       
   983     	iPtr.Set(str.Right(end+1));
       
   984     	}
       
   985     else
       
   986     	{
       
   987     	iPtr.Set(str.Right(0));
       
   988     	}
       
   989 	}
       
   990 
       
   991 
       
   992 // ---------------------------------------------------------
       
   993 // TURIParser::ParseHttp
       
   994 // 
       
   995 // ---------------------------------------------------------
       
   996 TPtrC TURIParser::ParseHttp()
       
   997 	{
       
   998     TInt start = KErrNotFound;
       
   999     TInt end   = KErrNotFound;
       
  1000     
       
  1001     GetHttpPos(start, end);
       
  1002     
       
  1003     if (start == KErrNotFound)
       
  1004     	{
       
  1005     	return TPtrC();
       
  1006     	}
       
  1007     
       
  1008    	TStr str(iOriginalStr);
       
  1009     return str.SubStr(start, end);
       
  1010 	}
       
  1011 
       
  1012 
       
  1013 // ---------------------------------------------------------
       
  1014 // TURIParser::GetHttpPos
       
  1015 // 
       
  1016 // ---------------------------------------------------------
       
  1017 void TURIParser::GetHttpPos(TInt& aStartPos, TInt& aEndPos)
       
  1018 	{
       
  1019 	_LIT(KHttpHeader, "http://");
       
  1020     _LIT(KHttpsHeader, "https://");
       
  1021 
       
  1022 	aEndPos = KErrNotFound;
       
  1023 	
       
  1024 	aStartPos = iOriginalStr.FindF(KHttpHeader);
       
  1025 	if (aStartPos != KErrNotFound)
       
  1026 		{
       
  1027 		aEndPos = aStartPos + KHttpHeader().Length() - 1;
       
  1028 		return;
       
  1029 		}
       
  1030 	
       
  1031 	aStartPos = iOriginalStr.FindF(KHttpsHeader);
       
  1032 	if (aStartPos != KErrNotFound)
       
  1033 		{
       
  1034 		aEndPos = aStartPos + KHttpsHeader().Length() - 1;
       
  1035 		return;
       
  1036 		}
       
  1037 	}
       
  1038 
       
  1039 
       
  1040 // ---------------------------------------------------------
       
  1041 // TURIParser::ParseAddress
       
  1042 // 
       
  1043 // ---------------------------------------------------------
       
  1044 TPtrC TURIParser::ParseAddress()
       
  1045 	{
       
  1046 	const TChar KSlash('/');
       
  1047 	const TChar KColon(':');
       
  1048 	
       
  1049 	TStr str(iPtr);
       
  1050 	
       
  1051     TInt firstSlash = str.Find(0, KSlash);
       
  1052 	TInt firstcolon = str.Find(0, KColon);
       
  1053 	
       
  1054 	TBool portFound = EFalse;
       
  1055 	if (firstcolon != KErrNotFound)
       
  1056 		{
       
  1057 		if (firstSlash == KErrNotFound)
       
  1058 			{
       
  1059 			portFound = ETrue;
       
  1060 			}
       
  1061 		else if (firstcolon < firstSlash)
       
  1062 			{
       
  1063 			portFound = ETrue;
       
  1064 			}
       
  1065 		}
       
  1066     
       
  1067 	if (portFound)
       
  1068 		{
       
  1069 		// address is text before first colon
       
  1070 		return str.Left(firstcolon-1);
       
  1071 		}
       
  1072 	else if (firstSlash != KErrNotFound)
       
  1073 		{
       
  1074 		// address is text before first slash
       
  1075 		return str.Left(firstSlash-1);
       
  1076 		}
       
  1077 	else
       
  1078 		{
       
  1079 		// address is all text
       
  1080 		return str.Right(0);
       
  1081 		}
       
  1082 	}
       
  1083 
       
  1084 
       
  1085 // ---------------------------------------------------------
       
  1086 // TURIParser::ParseDocument
       
  1087 // 
       
  1088 // ---------------------------------------------------------
       
  1089 TPtrC TURIParser::ParseDocument()
       
  1090 	{
       
  1091 	const TChar KSlash('/');
       
  1092 	
       
  1093 	TStr str(iPtr);
       
  1094     TInt firstSlash = str.Find(0, KSlash);
       
  1095     
       
  1096 	if (firstSlash != KErrNotFound)
       
  1097 		{
       
  1098 		// document is all text after first slash
       
  1099 		return str.Right(firstSlash+1);
       
  1100 		}
       
  1101 		
       
  1102 	return TPtrC();
       
  1103 	
       
  1104 	}
       
  1105 
       
  1106 
       
  1107 // ---------------------------------------------------------
       
  1108 // TURIParser::ParsePort
       
  1109 // 
       
  1110 // ---------------------------------------------------------
       
  1111 TInt TURIParser::ParsePort(TInt& aNumber)
       
  1112 	{
       
  1113 	TPtrC port = ParsePort();
       
  1114 	if (port.Length() == 0)
       
  1115 		{
       
  1116 		return KErrNotFound;
       
  1117 		}
       
  1118 		
       
  1119 	return TUtil::StrToInt(port, aNumber);
       
  1120 	}
       
  1121 
       
  1122 
       
  1123 // ---------------------------------------------------------
       
  1124 // TURIParser::ParsePort
       
  1125 // 
       
  1126 // ---------------------------------------------------------
       
  1127 TPtrC TURIParser::ParsePort()
       
  1128 	{
       
  1129 	const TChar KSlash('/');
       
  1130 	const TChar KColon(':');
       
  1131 	
       
  1132 	TStr str(iPtr);
       
  1133     TInt firstSlash = str.Find(0, KSlash);
       
  1134 	TInt firstColon = str.Find(0, KColon);
       
  1135     
       
  1136 	if (firstSlash != KErrNotFound)
       
  1137 		{
       
  1138 		if (firstColon != KErrNotFound && firstColon < firstSlash)
       
  1139 			{
       
  1140 		    // port number is text between colon and slash 
       
  1141 		    return str.SubStrEx(firstColon, firstSlash);
       
  1142 			}
       
  1143 		}
       
  1144 	else 
       
  1145 		{
       
  1146 		if (firstColon != KErrNotFound)
       
  1147 			{
       
  1148 		    // port number is all text after colon 
       
  1149 		    return str.Right(firstColon+1);
       
  1150 			}
       
  1151 		}
       
  1152 		
       
  1153 	return TPtrC();
       
  1154 	}
       
  1155 
       
  1156 
       
  1157 
       
  1158 
       
  1159 /******************************************************************************
       
  1160  * class TStr
       
  1161  ******************************************************************************/
       
  1162 
       
  1163 
       
  1164 // -----------------------------------------------------------------------------
       
  1165 // TStr::TStr
       
  1166 //
       
  1167 // C++ default constructor can NOT contain any code, that
       
  1168 // might leave.
       
  1169 // -----------------------------------------------------------------------------
       
  1170 //
       
  1171 TStr::TStr(const TDesC& aStr) : iStr(aStr)
       
  1172     {
       
  1173     }
       
  1174 
       
  1175 
       
  1176 // -------------------------------------------------------------------------------
       
  1177 // TStr::Mid
       
  1178 //
       
  1179 // -------------------------------------------------------------------------------
       
  1180 //
       
  1181 TPtrC TStr::Mid(TInt aPos)
       
  1182     {
       
  1183 	TInt len = iStr.Length();
       
  1184 	if ( (aPos < 0) || (aPos >= len) )
       
  1185 	    {
       
  1186 		return TPtrC();  // return empty descriptor
       
  1187 	    }
       
  1188 
       
  1189 	return iStr.Mid(aPos);
       
  1190     }
       
  1191 
       
  1192 
       
  1193 // -------------------------------------------------------------------------------
       
  1194 // TStr::Mid
       
  1195 //
       
  1196 // -------------------------------------------------------------------------------
       
  1197 //
       
  1198 TPtrC TStr::Mid(TInt aPos, TInt aLen)
       
  1199     {
       
  1200 	TInt len = iStr.Length();
       
  1201 	if ( (aPos < 0) || (aPos >= len) )
       
  1202 	    {
       
  1203 		return TPtrC();
       
  1204 	    }
       
  1205 	if ( (aLen <= 0) || (aPos + aLen > len) )
       
  1206 	    {
       
  1207 		return TPtrC();
       
  1208 	    }
       
  1209 
       
  1210 	return iStr.Mid(aPos, aLen);
       
  1211     }
       
  1212 
       
  1213 
       
  1214 // -------------------------------------------------------------------------------
       
  1215 // TStr::Right
       
  1216 //
       
  1217 // -------------------------------------------------------------------------------
       
  1218 //
       
  1219 TPtrC TStr::Right(TInt aPos)
       
  1220     {
       
  1221 	return Mid(aPos);
       
  1222     }
       
  1223 
       
  1224 
       
  1225 // -------------------------------------------------------------------------------
       
  1226 // TStr::Left
       
  1227 //
       
  1228 // -------------------------------------------------------------------------------
       
  1229 //
       
  1230 TPtrC TStr::Left(TInt aPos)
       
  1231     {
       
  1232 	TInt len = iStr.Length();
       
  1233 
       
  1234 	if ( (aPos < 0) || (len == 0) )
       
  1235 	    {
       
  1236 		return TPtrC();
       
  1237 	    }
       
  1238 
       
  1239 	TInt pos = len;
       
  1240 	if ( (aPos + 1) < len )
       
  1241 	    {
       
  1242 		pos = aPos + 1;
       
  1243 	    }
       
  1244 
       
  1245 	return iStr.Left(pos);
       
  1246     }
       
  1247 
       
  1248 
       
  1249 // -------------------------------------------------------------------------------
       
  1250 // TStr::SubStr
       
  1251 //
       
  1252 // -------------------------------------------------------------------------------
       
  1253 //
       
  1254 TPtrC TStr::SubStr(TInt aStartPos, TInt aEndPos)
       
  1255     {
       
  1256 	return Mid(aStartPos, aEndPos - aStartPos + 1);
       
  1257     }
       
  1258 
       
  1259 
       
  1260 // -------------------------------------------------------------------------------
       
  1261 // TStr::SubStrEx
       
  1262 //
       
  1263 // -------------------------------------------------------------------------------
       
  1264 //
       
  1265 TPtrC TStr::SubStrEx(TInt aStartPos, TInt aEndPos)
       
  1266     {
       
  1267 	return Mid(aStartPos + 1, aEndPos - aStartPos - 1);
       
  1268     }
       
  1269 
       
  1270 
       
  1271 // -------------------------------------------------------------------------------
       
  1272 // TStr::LastPos
       
  1273 //
       
  1274 // -------------------------------------------------------------------------------
       
  1275 //
       
  1276 TInt TStr::LastPos()
       
  1277     {
       
  1278 	return iStr.Length() - 1;
       
  1279     }
       
  1280 
       
  1281 
       
  1282 // -------------------------------------------------------------------------------
       
  1283 // TStr::Len
       
  1284 //
       
  1285 // -------------------------------------------------------------------------------
       
  1286 //
       
  1287 TInt TStr::Len()
       
  1288     {
       
  1289     return iStr.Length();
       
  1290     }
       
  1291 
       
  1292 // -------------------------------------------------------------------------------
       
  1293 // TStr::Compare
       
  1294 //
       
  1295 // -------------------------------------------------------------------------------
       
  1296 //
       
  1297 TBool TStr::Compare(TInt aPos, TChar aChar)
       
  1298     {
       
  1299 	TInt len = iStr.Length();
       
  1300 	if ( (aPos < 0) || (aPos >= len) )
       
  1301 	    {
       
  1302 		return EFalse;
       
  1303 	    }
       
  1304 	TChar ch = iStr[aPos];
       
  1305 	if (ch == aChar)
       
  1306 	    {
       
  1307 		return ETrue;
       
  1308 	    }
       
  1309 	return EFalse;
       
  1310     }
       
  1311 
       
  1312 
       
  1313 // -------------------------------------------------------------------------------
       
  1314 // TStr::Find
       
  1315 //
       
  1316 // -------------------------------------------------------------------------------
       
  1317 //
       
  1318 TInt TStr::Find(TInt aPos, TChar aChar)
       
  1319     {
       
  1320 	TInt len = iStr.Length();
       
  1321 	if ( (aPos < 0) || (aPos >= len) )
       
  1322 	    {
       
  1323 		return KErrNotFound;
       
  1324 	    }
       
  1325 	    
       
  1326 	TPtrC ptr(iStr.Mid(aPos)); // move to possition aPos
       
  1327 	return ptr.Locate(aChar);
       
  1328     }
       
  1329 
       
  1330 
       
  1331 // -------------------------------------------------------------------------------
       
  1332 // TStr::Trim
       
  1333 //
       
  1334 // -------------------------------------------------------------------------------
       
  1335 //
       
  1336 TPtrC TStr::Trim()
       
  1337     {
       
  1338 	TInt first = FirstNonSpace();
       
  1339 	TInt last = LastNonSpace();
       
  1340 
       
  1341 	return Mid(first, last - first + 1);
       
  1342     }
       
  1343 
       
  1344 
       
  1345 // -------------------------------------------------------------------------------
       
  1346 // TStr::FirstNonSpace
       
  1347 //
       
  1348 // -------------------------------------------------------------------------------
       
  1349 //
       
  1350 TInt TStr::FirstNonSpace()
       
  1351     {
       
  1352 	TInt len = Len();
       
  1353 	for (TInt i = 0; i < len; i++)
       
  1354 	    {
       
  1355 		TChar c = iStr[i];
       
  1356         if (!c.IsSpace())
       
  1357 		    {
       
  1358 		    return i;
       
  1359 		    }
       
  1360 	    }
       
  1361 	return KErrNotFound;
       
  1362     }
       
  1363 
       
  1364 
       
  1365 // -------------------------------------------------------------------------------
       
  1366 // TStr::LastNonSpace
       
  1367 //
       
  1368 // -------------------------------------------------------------------------------
       
  1369 //
       
  1370 TInt TStr::LastNonSpace()
       
  1371     {
       
  1372 	TInt last = LastPos();
       
  1373 	for (TInt i = last; i >= 0; i--)
       
  1374 	    {
       
  1375 		TChar c = iStr[i];
       
  1376         if (!c.IsSpace())
       
  1377 		    {
       
  1378 		    return i;
       
  1379 		    }
       
  1380 	    }
       
  1381 	return KErrNotFound;
       
  1382     }
       
  1383 
       
  1384 
       
  1385 
       
  1386 /******************************************************************************
       
  1387  * class TFlag
       
  1388  ******************************************************************************/
       
  1389 
       
  1390 // -----------------------------------------------------------------------------
       
  1391 // TFlag::TFlag
       
  1392 //
       
  1393 // C++ default constructor can NOT contain any code, that
       
  1394 // might leave.
       
  1395 // -----------------------------------------------------------------------------
       
  1396 //
       
  1397 TFlag::TFlag(TUint32& aFlag) : iFlag(aFlag)
       
  1398     {
       
  1399     }
       
  1400 
       
  1401 // -------------------------------------------------------------------------------
       
  1402 // TFlag::SetOn
       
  1403 //
       
  1404 // -------------------------------------------------------------------------------
       
  1405 //
       
  1406 void TFlag::SetOn(const TUint32 aValue)
       
  1407     {
       
  1408     iFlag |= aValue;
       
  1409     }
       
  1410 
       
  1411 // -------------------------------------------------------------------------------
       
  1412 // TFlag::SetOff
       
  1413 //
       
  1414 // -------------------------------------------------------------------------------
       
  1415 //
       
  1416 void TFlag::SetOff(const TUint32 aValue)
       
  1417     {
       
  1418     iFlag &= ~aValue;
       
  1419     }
       
  1420 
       
  1421 // -------------------------------------------------------------------------------
       
  1422 // TFlag::IsOn
       
  1423 //
       
  1424 // -------------------------------------------------------------------------------
       
  1425 //
       
  1426 TBool TFlag::IsOn(const TUint32 aValue) const
       
  1427     {
       
  1428     return iFlag & aValue;
       
  1429     }
       
  1430 
       
  1431 
       
  1432 
       
  1433 /*******************************************************************************
       
  1434  * class CAspIdleWait
       
  1435  *******************************************************************************/
       
  1436 
       
  1437 
       
  1438 // -----------------------------------------------------------------------------
       
  1439 // CAspIdleWait::WaitL
       
  1440 // 
       
  1441 // -----------------------------------------------------------------------------
       
  1442 //
       
  1443 void CAspIdleWait::WaitL()
       
  1444 	{
       
  1445     CAspIdleWait* waiter = CAspIdleWait::NewL();
       
  1446     CleanupStack::PushL(waiter);
       
  1447     
       
  1448     CIdle* idle = CIdle::NewL(CActive::EPriorityIdle);
       
  1449 	CleanupStack::PushL(idle);
       
  1450 	
       
  1451 	idle->Start(TCallBack(IdleCallback, waiter));
       
  1452 	if (!waiter->iWait.IsStarted())
       
  1453 		{
       
  1454 		waiter->iWait.Start();
       
  1455 		}
       
  1456 
       
  1457     CleanupStack::PopAndDestroy(idle);
       
  1458     CleanupStack::PopAndDestroy(waiter);
       
  1459     }
       
  1460 
       
  1461 
       
  1462 // -----------------------------------------------------------------------------
       
  1463 // CAspIdleWait::NewLC
       
  1464 //
       
  1465 // -----------------------------------------------------------------------------
       
  1466 //
       
  1467 CAspIdleWait* CAspIdleWait::NewL()
       
  1468     {
       
  1469     CAspIdleWait* self = new (ELeave) CAspIdleWait();
       
  1470     return self;
       
  1471     }
       
  1472 
       
  1473 
       
  1474 // -----------------------------------------------------------------------------
       
  1475 // CAspIdleWait::CAspIdleWait
       
  1476 // 
       
  1477 // -----------------------------------------------------------------------------
       
  1478 //
       
  1479 CAspIdleWait::CAspIdleWait() 
       
  1480     {
       
  1481     }
       
  1482 
       
  1483 
       
  1484 // -----------------------------------------------------------------------------
       
  1485 // Destructor
       
  1486 //
       
  1487 // -----------------------------------------------------------------------------
       
  1488 //
       
  1489 CAspIdleWait::~CAspIdleWait()
       
  1490     {
       
  1491     }
       
  1492 
       
  1493 
       
  1494 // -----------------------------------------------------------------------------
       
  1495 // CAspIdleWait::IdleCallback
       
  1496 // 
       
  1497 // -----------------------------------------------------------------------------
       
  1498 //
       
  1499 TInt CAspIdleWait::IdleCallback(TAny* aThisPtr)
       
  1500     {
       
  1501     static_cast<CAspIdleWait*>(aThisPtr)->iWait.AsyncStop();
       
  1502     return KErrNone;
       
  1503     }
       
  1504 
       
  1505 
       
  1506 
       
  1507 /******************************************************************************
       
  1508  * class CAspActiveCaller
       
  1509  ******************************************************************************/
       
  1510 
       
  1511 
       
  1512 // -----------------------------------------------------------------------------
       
  1513 // CAspActiveCaller::NewL
       
  1514 // 
       
  1515 // -----------------------------------------------------------------------------
       
  1516 //
       
  1517 CAspActiveCaller* CAspActiveCaller::NewL(MAspActiveCallerObserver* aObserver)
       
  1518     {
       
  1519     FLOG( _L("CAspActiveCaller::NewL START") );
       
  1520     
       
  1521     CAspActiveCaller* self = new (ELeave) CAspActiveCaller(aObserver);
       
  1522 	CleanupStack::PushL(self);
       
  1523 	self->ConstructL();
       
  1524 	CleanupStack::Pop(self);
       
  1525 
       
  1526     FLOG( _L("CAspActiveCaller::NewL END") );
       
  1527 	return self;
       
  1528     }
       
  1529 
       
  1530 
       
  1531 // -----------------------------------------------------------------------------
       
  1532 // Destructor
       
  1533 // 
       
  1534 // -----------------------------------------------------------------------------
       
  1535 //
       
  1536 CAspActiveCaller::~CAspActiveCaller()
       
  1537     {
       
  1538     FLOG( _L("CAspActiveCaller::~CAspActiveCaller START") );
       
  1539     
       
  1540 	Cancel();
       
  1541 	iTimer.Close();
       
  1542 	
       
  1543     FLOG( _L("CAspActiveCaller::~CAspActiveCaller END") );
       
  1544     }
       
  1545 
       
  1546 
       
  1547 // -----------------------------------------------------------------------------
       
  1548 // CAspActiveCaller::CAspActiveCaller
       
  1549 // 
       
  1550 // -----------------------------------------------------------------------------
       
  1551 //
       
  1552 CAspActiveCaller::CAspActiveCaller(MAspActiveCallerObserver* aObserver) : CActive(CActive::EPriorityStandard)
       
  1553     {
       
  1554 	iObserver = aObserver;
       
  1555     }
       
  1556 
       
  1557 
       
  1558 // -----------------------------------------------------------------------------
       
  1559 // CAspActiveCaller::ConstructL
       
  1560 // 
       
  1561 // -----------------------------------------------------------------------------
       
  1562 //
       
  1563 void CAspActiveCaller::ConstructL()
       
  1564     {
       
  1565 	User::LeaveIfError(iTimer.CreateLocal());
       
  1566 	CActiveScheduler::Add(this);
       
  1567     }
       
  1568 
       
  1569 
       
  1570 // -----------------------------------------------------------------------------
       
  1571 // CAspActiveCaller::DoCancel
       
  1572 //
       
  1573 // -----------------------------------------------------------------------------
       
  1574 //
       
  1575 void CAspActiveCaller::DoCancel()
       
  1576     {
       
  1577     FLOG( _L("CAspActiveCaller::DoCancel START") );
       
  1578     
       
  1579 	iTimer.Cancel();
       
  1580 	
       
  1581     FLOG( _L( "CAspActiveCaller::DoCancel END" ) );
       
  1582     }
       
  1583 
       
  1584 
       
  1585 // -----------------------------------------------------------------------------
       
  1586 // CAspActiveCaller::RunL
       
  1587 //
       
  1588 // -----------------------------------------------------------------------------
       
  1589 //
       
  1590 void CAspActiveCaller::RunL()
       
  1591     {
       
  1592     FLOG( _L("CAspActiveCaller::RunL START") );
       
  1593 
       
  1594 	TRAP_IGNORE(iObserver->HandleActiveCallL(iCallId));
       
  1595 
       
  1596     FLOG( _L("CAspActiveCaller::RunL END") );
       
  1597     }
       
  1598 
       
  1599 
       
  1600 // -----------------------------------------------------------------------------
       
  1601 // CAspActiveCaller::Request
       
  1602 //
       
  1603 // This function calls this class RunL.
       
  1604 // -----------------------------------------------------------------------------
       
  1605 //
       
  1606 void CAspActiveCaller::Request()
       
  1607     {
       
  1608     FLOG( _L("CAspActiveCaller::Request START") );
       
  1609     
       
  1610 	Cancel();
       
  1611 	SetActive();
       
  1612 	TRequestStatus* status = &iStatus;
       
  1613 	User::RequestComplete(status, KErrNone);
       
  1614     
       
  1615     FLOG( _L("CAspActiveCaller::Request END") );
       
  1616     }
       
  1617 
       
  1618 
       
  1619 // -----------------------------------------------------------------------------
       
  1620 // CAspActiveCaller::Start
       
  1621 //
       
  1622 // -----------------------------------------------------------------------------
       
  1623 //
       
  1624 void CAspActiveCaller::Start(TInt aCallId, TInt aMilliseconds)
       
  1625     {
       
  1626     FLOG( _L("CAspActiveCaller::Start START") );
       
  1627     
       
  1628 	if (IsActive())
       
  1629 		{
       
  1630 		return;
       
  1631 		}
       
  1632 	
       
  1633 	iCallId = aCallId;
       
  1634 
       
  1635 	if (aMilliseconds <= 0)
       
  1636 		{
       
  1637 		Request();  // no delay - complete right away
       
  1638 		}
       
  1639 	else
       
  1640 		{
       
  1641 	    iTimer.After(iStatus, aMilliseconds*1000);
       
  1642 	    SetActive();
       
  1643 		}
       
  1644     
       
  1645     FLOG( _L("CAspActiveCaller::Start END") );
       
  1646     }
       
  1647 
       
  1648 
       
  1649 
       
  1650 
       
  1651 /******************************************************************************
       
  1652  * class CAspBearerHandler
       
  1653  ******************************************************************************/
       
  1654 
       
  1655 
       
  1656 // -----------------------------------------------------------------------------
       
  1657 // CAspBearerHandler::NewLC
       
  1658 //
       
  1659 // Two-phased constructor.
       
  1660 // -----------------------------------------------------------------------------
       
  1661 //
       
  1662 CAspBearerHandler* CAspBearerHandler::NewL(const TAspParam& aParam)
       
  1663     {
       
  1664     CAspBearerHandler* self = new (ELeave) CAspBearerHandler(aParam);
       
  1665 	CleanupStack::PushL(self);
       
  1666 	self->ConstructL();
       
  1667 	CleanupStack::Pop(self);
       
  1668 
       
  1669 	return self;
       
  1670     }
       
  1671 
       
  1672 
       
  1673 // -----------------------------------------------------------------------------
       
  1674 // Destructor
       
  1675 //
       
  1676 // -----------------------------------------------------------------------------
       
  1677 //
       
  1678 CAspBearerHandler::~CAspBearerHandler()
       
  1679 	{
       
  1680 	iList.Close();
       
  1681 	}
       
  1682 
       
  1683 
       
  1684 // -----------------------------------------------------------------------------
       
  1685 // CAspBearerHandler::CAspBearerHandler
       
  1686 // -----------------------------------------------------------------------------
       
  1687 //
       
  1688 CAspBearerHandler::CAspBearerHandler(const TAspParam& aParam)
       
  1689 	{
       
  1690 	__ASSERT_ALWAYS(aParam.iSyncSession, TUtil::Panic(KErrGeneral));
       
  1691 
       
  1692 	iSyncSession = aParam.iSyncSession;	
       
  1693 	}
       
  1694 
       
  1695 
       
  1696 // -----------------------------------------------------------------------------
       
  1697 // CAspBearerHandler::ConstructL
       
  1698 //
       
  1699 // Symbian 2nd phase constructor can leave.
       
  1700 // -----------------------------------------------------------------------------
       
  1701 //
       
  1702 void CAspBearerHandler::ConstructL(void)
       
  1703     {
       
  1704 	CreateSupportedBearerListL();
       
  1705     }
       
  1706 
       
  1707 
       
  1708 // -----------------------------------------------------------------------------
       
  1709 // CAspBearerHandler::IsSupported
       
  1710 //
       
  1711 // -----------------------------------------------------------------------------
       
  1712 //
       
  1713 TBool CAspBearerHandler::IsSupported(TInt aBearer)
       
  1714 	{
       
  1715 	TInt count = iList.Count();
       
  1716 
       
  1717     for (TInt i=0; i<count; i++)
       
  1718 		{
       
  1719 		TAspBearerItem& item = iList[i];
       
  1720 		if (item.iBearerType == aBearer)
       
  1721 			{
       
  1722 			return ETrue;
       
  1723 			}
       
  1724 		}
       
  1725 	
       
  1726 	return EFalse; // unknown bearer
       
  1727 }
       
  1728 
       
  1729 
       
  1730 // -----------------------------------------------------------------------------
       
  1731 // CAspBearerHandler::BearerForListIndex
       
  1732 //
       
  1733 // -----------------------------------------------------------------------------
       
  1734 //
       
  1735 TInt CAspBearerHandler::BearerForListIndex(TInt aIndex)
       
  1736 	{
       
  1737 	TInt count = iList.Count();
       
  1738 	if (aIndex < 0 || aIndex >= count)
       
  1739 	    {
       
  1740 		TUtil::Panic(KErrArgument);
       
  1741 	    }
       
  1742 
       
  1743 	TAspBearerItem& item = iList[aIndex];
       
  1744 	return item.iBearerType;
       
  1745 	}
       
  1746 
       
  1747 
       
  1748 // -----------------------------------------------------------------------------
       
  1749 // CAspBearerHandler::ListIndexForBearer
       
  1750 //
       
  1751 // -----------------------------------------------------------------------------
       
  1752 //
       
  1753 TInt CAspBearerHandler::ListIndexForBearer(TInt aBearer)
       
  1754 	{
       
  1755 	TInt count = iList.Count();
       
  1756 	for (TInt i=0; i<count; i++)
       
  1757 		{
       
  1758 		TAspBearerItem& item = iList[i];
       
  1759 		if (item.iBearerType == aBearer)
       
  1760 			{
       
  1761 			return i;
       
  1762 			}
       
  1763 		}
       
  1764 
       
  1765 	return KErrNotFound;
       
  1766 	}
       
  1767 
       
  1768 
       
  1769 // -----------------------------------------------------------------------------
       
  1770 // CAspBearerHandler::CreateSupportedBearerListL
       
  1771 //
       
  1772 // -----------------------------------------------------------------------------
       
  1773 //
       
  1774 void CAspBearerHandler::CreateSupportedBearerListL()
       
  1775 	{
       
  1776 	RSyncMLTransport transport;
       
  1777 	
       
  1778 	RArray<TSmlTransportId> arr(8);
       
  1779 	CleanupClosePushL(arr);
       
  1780 	
       
  1781 	//
       
  1782 	// ListTransportsL returns transports that can be used in current phone.
       
  1783 	// RSyncMLSession uses FeatureManager to construct this list.
       
  1784 	//
       
  1785 	iSyncSession->ListTransportsL(arr);
       
  1786 	TInt count = arr.Count();
       
  1787 	
       
  1788 	for (TInt i=0; i<count; i++)
       
  1789 		{
       
  1790 		TInt id = arr[i];
       
  1791 		transport.OpenL(*iSyncSession, id);
       
  1792 		CleanupClosePushL(transport);
       
  1793 		
       
  1794 		TAspBearerItem item;
       
  1795 		TInt smlBearerId = transport.Identifier();
       
  1796 		item.iBearerType = AspBearerId(smlBearerId);  // convert bearer type
       
  1797 		TUtil::StrCopy(item.iBearerName, transport.DisplayName());
       
  1798 		
       
  1799 
       
  1800 #ifndef __SYNCML_DS_OVER_HTTP   // KFeatureIdDsOverHttp
       
  1801         
       
  1802    		if (item.iBearerType == EAspBearerInternet)
       
  1803 			{
       
  1804 			CleanupStack::PopAndDestroy(&transport);
       
  1805 			continue;
       
  1806 			}
       
  1807 #endif
       
  1808 
       
  1809    		if (item.iBearerType != EAspBearerInternet && 
       
  1810    		    item.iBearerType != EAspBearerBlueTooth)
       
  1811 			{
       
  1812 			CleanupStack::PopAndDestroy(&transport);
       
  1813 			continue; // only internet and bluetooth are supported
       
  1814 			}
       
  1815 
       
  1816 		if (item.iBearerType != KErrNotFound)
       
  1817 			{
       
  1818 			User::LeaveIfError(iList.Append(item));
       
  1819 			}
       
  1820 		
       
  1821 		CleanupStack::PopAndDestroy(&transport);
       
  1822 		}
       
  1823 		
       
  1824 	CleanupStack::PopAndDestroy(&arr);
       
  1825 	}
       
  1826 
       
  1827 
       
  1828 // -----------------------------------------------------------------------------
       
  1829 // CAspBearerHandler::AspBearerId
       
  1830 //
       
  1831 // -----------------------------------------------------------------------------
       
  1832 //
       
  1833 TInt CAspBearerHandler::AspBearerId(const TInt aId)
       
  1834 	{
       
  1835 	if (aId == KUidNSmlMediumTypeInternet.iUid)
       
  1836 		{
       
  1837 		return EAspBearerInternet;
       
  1838 		}
       
  1839 	else if (aId == KUidNSmlMediumTypeBluetooth.iUid)
       
  1840 		{
       
  1841 		return EAspBearerBlueTooth;
       
  1842 		}
       
  1843 	else if (aId == KUidNSmlMediumTypeUSB.iUid)
       
  1844 		{
       
  1845 		return EAspBearerUsb;
       
  1846 		}
       
  1847 	else if (aId == KUidNSmlMediumTypeIrDA.iUid)
       
  1848 		{
       
  1849 		return EAspBearerIrda;
       
  1850 		}
       
  1851 	//else if (aId == KUidNSmlMediumTypeWSP.iUid)
       
  1852 	//	{
       
  1853 	//	return EAspBearerWsp;
       
  1854 	//	}
       
  1855 	//else if (aId == KUidNSmlMediumTypeNSmlUSB.iUid)
       
  1856 	//	{
       
  1857 	//	return EAspBearerSmlUsb;
       
  1858 	//	}
       
  1859 
       
  1860 	else
       
  1861 		{
       
  1862 		return KErrNotFound;
       
  1863 		}
       
  1864     }
       
  1865 
       
  1866 
       
  1867 // -----------------------------------------------------------------------------
       
  1868 // CAspBearerHandler::SmlBearerId
       
  1869 //
       
  1870 // -----------------------------------------------------------------------------
       
  1871 //
       
  1872 TInt CAspBearerHandler::SmlBearerId(const TInt aId)
       
  1873 	{
       
  1874 	if (aId == EAspBearerInternet)
       
  1875 		{
       
  1876 		return KUidNSmlMediumTypeInternet.iUid;
       
  1877 		}
       
  1878 	else if (aId == EAspBearerBlueTooth)
       
  1879 		{
       
  1880 		return KUidNSmlMediumTypeBluetooth.iUid;
       
  1881     	}
       
  1882 	else if (aId == EAspBearerUsb)
       
  1883 		{
       
  1884 		return KUidNSmlMediumTypeUSB.iUid;		
       
  1885 		}
       
  1886 	else if (aId == EAspBearerIrda)
       
  1887 		{
       
  1888 		return KUidNSmlMediumTypeIrDA.iUid;		
       
  1889 		}
       
  1890 	//else if (aId == EAspBearerWsp)
       
  1891 	//	{
       
  1892 	//	return KUidNSmlMediumTypeWSP.iUid;		
       
  1893 	//	}
       
  1894 	//else if (aId == EAspBearerSmlUsb)
       
  1895 	//	{
       
  1896 	//	return KUidNSmlMediumTypeNSmlUSB.iUid;		
       
  1897 	//	}
       
  1898 	else
       
  1899 		{
       
  1900 		return KErrNotFound;
       
  1901 		}
       
  1902 	}
       
  1903 
       
  1904 
       
  1905 // -----------------------------------------------------------------------------
       
  1906 // CAspBearerHandler::DefaultBearer
       
  1907 //
       
  1908 // -----------------------------------------------------------------------------
       
  1909 //
       
  1910 TInt CAspBearerHandler::DefaultBearer()
       
  1911 	{
       
  1912 	if (IsSupported(EAspBearerInternet))
       
  1913 		{
       
  1914 		return EAspBearerInternet;
       
  1915 		}
       
  1916 	if (IsSupported(EAspBearerBlueTooth))
       
  1917 		{
       
  1918 		return EAspBearerBlueTooth;
       
  1919 		}
       
  1920     if (IsSupported(EAspBearerUsb))
       
  1921 		{
       
  1922 		return EAspBearerUsb;
       
  1923 		}
       
  1924 	if (IsSupported(EAspBearerIrda))
       
  1925 		{
       
  1926 		return EAspBearerIrda;
       
  1927 		}
       
  1928 
       
  1929 	return KErrNotFound; // something is wrong
       
  1930 	}
       
  1931 
       
  1932 
       
  1933 // -----------------------------------------------------------------------------
       
  1934 // CAspBearerHandler::GetBearerName
       
  1935 //
       
  1936 // -----------------------------------------------------------------------------
       
  1937 //
       
  1938 void CAspBearerHandler::GetBearerName(TDes& aText, TInt aBearerType)
       
  1939 	{
       
  1940     aText = KNullDesC;
       
  1941 	TInt count = iList.Count();
       
  1942 
       
  1943 	for (TInt i=0; i<count; i++)
       
  1944 		{
       
  1945 		TAspBearerItem& item = iList[i];
       
  1946 		if (item.iBearerType == aBearerType)
       
  1947 			{
       
  1948 			TUtil::StrCopy(aText, item.iBearerName);
       
  1949 			break;
       
  1950 			}
       
  1951 		}
       
  1952 	}
       
  1953 
       
  1954 
       
  1955 // -----------------------------------------------------------------------------
       
  1956 // CAspBearerHandler::BuildBearerListLC
       
  1957 //
       
  1958 // -----------------------------------------------------------------------------
       
  1959 //
       
  1960 CDesCArray* CAspBearerHandler::BuildBearerListLC()
       
  1961 	{	
       
  1962 	CDesCArray* arr = new (ELeave) CDesCArrayFlat(1);
       
  1963 	CleanupStack::PushL(arr);
       
  1964 
       
  1965 	TInt count = iList.Count();
       
  1966 	for (TInt i=0; i<count; i++)
       
  1967 		{
       
  1968 		TAspBearerItem& item = iList[i];
       
  1969 		arr->AppendL(item.iBearerName);
       
  1970 		}
       
  1971 
       
  1972 	return arr;
       
  1973 	}
       
  1974 
       
  1975 
       
  1976 // -----------------------------------------------------------------------------
       
  1977 // CAspBearerHandler::SupportedBearerCount
       
  1978 //
       
  1979 // -----------------------------------------------------------------------------
       
  1980 //
       
  1981 TInt CAspBearerHandler::SupportedBearerCount()
       
  1982 	{
       
  1983 	return iList.Count();
       
  1984 	}
       
  1985 
       
  1986 
       
  1987 
       
  1988 
       
  1989 
       
  1990 /******************************************************************************
       
  1991  * class CAspAccessPointHandler
       
  1992  ******************************************************************************/
       
  1993 
       
  1994 
       
  1995 
       
  1996 // -----------------------------------------------------------------------------
       
  1997 // CAspAccessPointHandler::NewLC
       
  1998 //
       
  1999 // Two-phased constructor.
       
  2000 // -----------------------------------------------------------------------------
       
  2001 //
       
  2002 CAspAccessPointHandler* CAspAccessPointHandler::NewL(const TAspParam& aParam)
       
  2003     {
       
  2004     CAspAccessPointHandler* self = new(ELeave) CAspAccessPointHandler(aParam);
       
  2005 	CleanupStack::PushL(self);
       
  2006 	self->ConstructL();
       
  2007 	CleanupStack::Pop(self);
       
  2008 
       
  2009 	return self;
       
  2010     }
       
  2011 
       
  2012 
       
  2013 // -----------------------------------------------------------------------------
       
  2014 // Destructor
       
  2015 //
       
  2016 // -----------------------------------------------------------------------------
       
  2017 //
       
  2018 CAspAccessPointHandler::~CAspAccessPointHandler()
       
  2019 	{
       
  2020 	delete iCommDb;
       
  2021 	delete iApUtil;
       
  2022 	}
       
  2023 
       
  2024 
       
  2025 // -----------------------------------------------------------------------------
       
  2026 // CAspAccessPointHandler::CAspAccessPointHandler
       
  2027 //
       
  2028 // -----------------------------------------------------------------------------
       
  2029 //
       
  2030 CAspAccessPointHandler::CAspAccessPointHandler(const TAspParam& /*aParam*/)
       
  2031 	{
       
  2032 	}
       
  2033 
       
  2034 
       
  2035 // -----------------------------------------------------------------------------
       
  2036 // CAspAccessPointHandler::ConstructL
       
  2037 //
       
  2038 // Symbian 2nd phase constructor can leave.
       
  2039 // -----------------------------------------------------------------------------
       
  2040 //
       
  2041 void CAspAccessPointHandler::ConstructL(void)
       
  2042     {
       
  2043 	iCommDb = CCommsDatabase::NewL(EDatabaseTypeIAP);
       
  2044 	
       
  2045 	iApUtil = CApUtils::NewLC(*iCommDb);
       
  2046 	CleanupStack::Pop(iApUtil);
       
  2047     }
       
  2048 
       
  2049 
       
  2050 // -----------------------------------------------------------------------------
       
  2051 // CAspAccessPointHandler::ShowApSelectDialogL
       
  2052 //
       
  2053 // -----------------------------------------------------------------------------
       
  2054 //
       
  2055 TInt CAspAccessPointHandler::ShowApSelectDialogL(TAspAccessPointItem& aItem)
       
  2056 	{
       
  2057 	aItem.iUid = KErrNotFound;
       
  2058 	aItem.iName = KNullDesC;
       
  2059 
       
  2060 	TUint32 selectedAp = 0;
       
  2061 	TUint32 currentAp = 0;
       
  2062 	if (aItem.iUid2 != KAskAlways && aItem.iUid2 != KDefaultConnection)
       
  2063 		{
       
  2064 		//currentAp = aItem.iUid2;
       
  2065 		
       
  2066 		// convert internet ap to Wap ap (CApSettingsHandler requires this)
       
  2067     	TRAP_IGNORE(currentAp = iApUtil->WapIdFromIapIdL(aItem.iUid2));
       
  2068 		}
       
  2069 	
       
  2070 	
       
  2071 	CApSettingsHandler* handler = NULL;
       
  2072 	handler = CApSettingsHandler::NewLC( ETrue,
       
  2073 	                                     EApSettingsSelListIsPopUp,
       
  2074 	                                     EApSettingsSelMenuSelectNormal,
       
  2075 	                                     KEApIspTypeAll,
       
  2076 	                                     BearerFlags(),
       
  2077 	    	                             KEApSortNameAscending);
       
  2078 
       
  2079 	TInt ret = handler->RunSettingsL(currentAp, selectedAp);
       
  2080 	CleanupStack::PopAndDestroy(handler);
       
  2081 	
       
  2082 	if (ret & KApUiEventSelected)
       
  2083 		{
       
  2084 		TAspAccessPointItem item;
       
  2085 		item.iUid = selectedAp;
       
  2086 
       
  2087 	    GetApInfo(item);
       
  2088 	    
       
  2089 	    // convert Wap ap to internet ap
       
  2090 	    aItem.iUid = iApUtil->IapIdFromWapIdL(selectedAp);
       
  2091 	    
       
  2092 	    //aItem.iUid = selectedAp;
       
  2093 	    
       
  2094 	    aItem.iName = item.iName;
       
  2095 	    
       
  2096 		return EAspDialogSelect;
       
  2097 		}
       
  2098     else if (ret & KApUiEventExitRequested)
       
  2099     	{
       
  2100     	return EAspDialogExit;
       
  2101     	}
       
  2102     else
       
  2103     	{
       
  2104     	return EAspDialogCancel;
       
  2105     	}
       
  2106 	}
       
  2107 
       
  2108 
       
  2109 // -----------------------------------------------------------------------------
       
  2110 // CAspAccessPointHandler::GetApInfoL
       
  2111 //
       
  2112 // -----------------------------------------------------------------------------
       
  2113 //
       
  2114 TInt CAspAccessPointHandler::GetApInfoL(TAspAccessPointItem& aItem)
       
  2115 	{
       
  2116 	if (aItem.iUid == KAskAlways || aItem.iUid == KErrNotFound || aItem.iUid == KDefaultConnection)
       
  2117 		{
       
  2118 		return KErrNotFound;
       
  2119 		}
       
  2120 
       
  2121 	CApSelect* selector = CApSelect::NewLC(*iCommDb,
       
  2122 	                             KEApIspTypeAll,
       
  2123 		                         BearerFlags(),
       
  2124 		                         KEApSortUidAscending);
       
  2125 	
       
  2126 	TInt ret = KErrNone;
       
  2127 	TBool found = EFalse;
       
  2128 	
       
  2129 	// find access point with id aId
       
  2130 	if (selector->MoveToFirst())
       
  2131 		{
       
  2132 		if (aItem.iUid == (TInt)selector->Uid())
       
  2133 			{
       
  2134 			found = ETrue;		
       
  2135 			}
       
  2136 		while (!found && selector->MoveNext())
       
  2137 			{
       
  2138 			if (aItem.iUid == (TInt)selector->Uid())
       
  2139 				{
       
  2140 				found = ETrue;
       
  2141 				}
       
  2142 			}
       
  2143 		}
       
  2144 
       
  2145 	if (found) 
       
  2146 		{
       
  2147 		TUtil::StrCopy(aItem.iName, selector->Name());
       
  2148 		}
       
  2149 	else
       
  2150 		{
       
  2151 		aItem.iName = KNullDesC;
       
  2152 		ret = KErrNotFound;
       
  2153 		}
       
  2154 		
       
  2155     CleanupStack::PopAndDestroy(selector);
       
  2156 	return ret;
       
  2157 	}
       
  2158 	
       
  2159 
       
  2160 // -----------------------------------------------------------------------------
       
  2161 // CAspAccessPointHandler::GetApInfo
       
  2162 //
       
  2163 // -----------------------------------------------------------------------------
       
  2164 //
       
  2165 TInt CAspAccessPointHandler::GetApInfo(TAspAccessPointItem& aItem)
       
  2166 	{
       
  2167 	aItem.iName = KNullDesC;
       
  2168 	
       
  2169 	TInt ret = KErrNone;
       
  2170 	TRAPD(err, ret = GetApInfoL(aItem));
       
  2171 	
       
  2172 	if (err != KErrNone)
       
  2173 		{
       
  2174 		return KErrNotFound;
       
  2175 		}
       
  2176 	return ret;
       
  2177 	}
       
  2178 
       
  2179 
       
  2180 // -----------------------------------------------------------------------------
       
  2181 // CAspAccessPointHandler::GetInternetApInfo
       
  2182 //
       
  2183 // -----------------------------------------------------------------------------
       
  2184 //
       
  2185 TInt CAspAccessPointHandler::GetInternetApInfo(TAspAccessPointItem& aItem)
       
  2186 	{
       
  2187 	if (aItem.iUid == KAskAlways || aItem.iUid == KErrNotFound || aItem.iUid == KDefaultConnection)
       
  2188 		{
       
  2189 		return KErrNotFound;
       
  2190 		}
       
  2191 
       
  2192 	TAspAccessPointItem item;
       
  2193 	
       
  2194 	// convert internet ap to Wap ap
       
  2195 	TRAPD(err, item.iUid = iApUtil->WapIdFromIapIdL(aItem.iUid));
       
  2196 	if (err != KErrNone)
       
  2197 		{
       
  2198 		return KErrNotFound;
       
  2199 		}
       
  2200 	
       
  2201 	TInt ret = GetApInfo(item);
       
  2202 	
       
  2203 	TUtil::StrCopy(aItem.iName, item.iName);
       
  2204 	return ret;
       
  2205 	}
       
  2206 
       
  2207 
       
  2208 // -----------------------------------------------------------------------------
       
  2209 // CAspAccessPointHandler::BearerFlags
       
  2210 //
       
  2211 // -----------------------------------------------------------------------------
       
  2212 //
       
  2213 TInt CAspAccessPointHandler::BearerFlags()
       
  2214 	{
       
  2215 	TInt flags;
       
  2216 	if (FeatureManager::FeatureSupported(KFeatureIdAppCsdSupport))
       
  2217 		{
       
  2218 		//flags = EApBearerTypeGPRS | EApBearerTypeCDMA | EApBearerTypeWLAN | EApBearerTypeHSCSD | EApBearerTypeCSD;
       
  2219 		flags = EApBearerTypeAllBearers;
       
  2220 		}
       
  2221 	else
       
  2222 		{
       
  2223 		flags = EApBearerTypeGPRS | EApBearerTypeCDMA | EApBearerTypeWLAN;
       
  2224 		}
       
  2225 		
       
  2226 	return flags;
       
  2227 	}
       
  2228 
       
  2229 
       
  2230 
       
  2231 
       
  2232 /******************************************************************************
       
  2233  * class TAspSyncError
       
  2234  ******************************************************************************/
       
  2235 
       
  2236 
       
  2237 
       
  2238 
       
  2239 // -----------------------------------------------------------------------------
       
  2240 // TAspSyncError::GetSmlErrorText
       
  2241 //
       
  2242 // -----------------------------------------------------------------------------
       
  2243 //
       
  2244 HBufC* TAspSyncError::GetSmlErrorText(TInt aErrorCode, TInt aTransport)
       
  2245 	{
       
  2246 	HBufC* hBuf = NULL;
       
  2247 	
       
  2248 	TRAPD(err, hBuf = GetSmlErrorTextL(aErrorCode, aTransport));
       
  2249 	
       
  2250 	if (err == KErrNone)
       
  2251 		{
       
  2252 		return hBuf;
       
  2253 		}
       
  2254 	else
       
  2255 		{
       
  2256 		return NULL;
       
  2257 		}
       
  2258 	}
       
  2259 
       
  2260 
       
  2261 // -----------------------------------------------------------------------------
       
  2262 // TAspSyncError::GetSmlErrorTextL
       
  2263 //
       
  2264 // -----------------------------------------------------------------------------
       
  2265 //
       
  2266 HBufC* TAspSyncError::GetSmlErrorTextL(TInt aErrorCode, TInt /*aTransport*/)
       
  2267 	{
       
  2268     TInt id = R_ASP_LOG_ERR_SYSTEMERROR;  // "System Error"
       
  2269    
       
  2270 	switch (aErrorCode)
       
  2271 		{
       
  2272 		case SyncMLError::KErrTransportAuthenticationFailure:
       
  2273 			{
       
  2274 			id = R_ASP_LOG_ERR_HTTPAUTH;  // "Http authentication failed"
       
  2275 		    break;
       
  2276 			}
       
  2277 	
       
  2278 		case SyncMLError::KErrAuthenticationFailure:
       
  2279 			{
       
  2280 			id = R_ASP_LOG_ERR_CLIENTAUTH;  // "Invalid user name or password"
       
  2281 		    break;
       
  2282 			}
       
  2283 
       
  2284 		case KErrServerBusy:
       
  2285 		    id = R_ASP_LOG_ERR_SERVERBUSY;  // "Synchronisation server was busy"
       
  2286 		    break;
       
  2287 		    
       
  2288 		case SyncMLError::KErrServerDatabaseNotFound:
       
  2289 		    id = R_ASP_LOG_ERR_REMOTEDATABASE;  // "Invalid remote database"
       
  2290 		    break;
       
  2291 
       
  2292 		case SyncMLError::KErrClientDatabaseNotFound:
       
  2293 		    id = R_ASP_LOG_ERR_LOCALDATABASE;  // "Unable to open database"
       
  2294 		    break;
       
  2295 
       
  2296 		case SyncMLError::KErrConnectionError:
       
  2297 		    id = R_ASP_LOG_ERR_SERVERNOTRESPONDING; // "Server is not responding"
       
  2298 		    break;
       
  2299 		    
       
  2300 		case SyncMLError::KErrTransportSvrNoUri:
       
  2301 		    id = R_ASP_LOG_ERR_URIINVALID; // "Invalid host address"
       
  2302 		    break;
       
  2303 		
       
  2304 		case SyncMLError::KErrPhoneOnOfflineMode:
       
  2305 		    id = R_ASP_LOG_ERR_OFFLINE; // "Operation not possible in Off-line mode"
       
  2306 		    break;
       
  2307 		    
       
  2308 		case SyncMLError::KErrTransportRequest:
       
  2309 		case SyncMLError::KErrTransportHeader:
       
  2310 		case SyncMLError::KErrTransportSvrError:
       
  2311 		case SyncMLError::KErrTransportDisconnected:
       
  2312 		case SyncMLError::KErrCannotCommunicateWithServer:
       
  2313 		    id = R_ASP_LOG_ERR_COMM;  // "Error in communication"
       
  2314 		    break;
       
  2315 		    
       
  2316 		case SyncMLError::KErrVerDTDMissing:
       
  2317 		case SyncMLError::KErrProtoMissing:
       
  2318 		case SyncMLError::KErrVersionDTDNotSupported:
       
  2319 		case SyncMLError::KErrProtoNotSupported:
       
  2320 		    id = R_ASP_LOG_ERR_VERSIONNOTSUPPORTED;  // "Unsupported SyncML software version in server"
       
  2321 		    break;
       
  2322        
       
  2323 		case SyncMLError::KErrSessionIdNotValid:
       
  2324 		case SyncMLError::KErrMappingInfoMissing:
       
  2325 		case SyncMLError::KErrMappingInfoNotAcked:
       
  2326 		case SyncMLError::KErrStatusCommandForCommandNotSent:
       
  2327 		case SyncMLError::KErrStatusCommandNotTheSame:
       
  2328 		case SyncMLError::KErrMissingStatusCommands:
       
  2329 		case SyncMLError::KErrFailedToAddRecord:
       
  2330 		case SyncMLError::KErrFailedToReplaceRecord:
       
  2331 		case SyncMLError::KErrFailedToDeleteRecord:
       
  2332 		case SyncMLError::KErrXmlParsingError:
       
  2333 		case SyncMLError::KErrReferenceToolkitError:
       
  2334 		case SyncMLError::KErrObjectTooLargeToSendToServer:
       
  2335 		case SyncMLError::KErrFailedToGetRecord:
       
  2336 		case SyncMLError::KErrUserInteractionFailed:
       
  2337 		case SyncMLError::KErrStatusSizeMismatch:
       
  2338 		case SyncMLError::KErrFailedToCloseDatabase:
       
  2339 		case SyncMLError::KErrDatabaseAdapterIndexError:
       
  2340 	   	    id = R_ASP_LOG_ERR_SERVERERROR;  // "Error in sync server"
       
  2341 		    break;
       
  2342 	        
       
  2343         default:
       
  2344             id = R_ASP_LOG_ERR_SYSTEMERROR;  // "System Error"
       
  2345 		    break;
       
  2346 		}
       
  2347 		
       
  2348 	HBufC* hBuf = CAspResHandler::ReadLC(id);
       
  2349 	
       
  2350 #ifdef _DEBUG
       
  2351 	TBuf<KBufSize> buf2(hBuf->Des());
       
  2352 	TBuf<KBufSize> buf1;
       
  2353 	CleanupStack::PopAndDestroy(hBuf);
       
  2354 		
       
  2355 	hBuf = HBufC::NewLC(256);
       
  2356 	TPtr ptr = hBuf->Des();
       
  2357 		
       
  2358 	GetSyncMLErrorText(buf1, aErrorCode);
       
  2359 	ptr.Format(_L("%S (%S)"), &buf2, &buf1);
       
  2360 #endif		
       
  2361 		
       
  2362 	CleanupStack::Pop(hBuf);
       
  2363 	return hBuf;
       
  2364 	}
       
  2365 	
       
  2366 
       
  2367 // -----------------------------------------------------------------------------
       
  2368 // TAspSyncError::GetSmlErrorValue
       
  2369 // 
       
  2370 // -----------------------------------------------------------------------------
       
  2371 TInt TAspSyncError::GetSmlErrorValue(TInt aErrorCode)
       
  2372 	{
       
  2373     TInt id = R_ASP_LOG_ERR_SYSTEMERROR;  // "System Error"
       
  2374    
       
  2375 	switch (aErrorCode)
       
  2376 		{
       
  2377 		case SyncMLError::KErrTransportAuthenticationFailure:
       
  2378 			{
       
  2379 			id = R_ASP_LOG_ERR_HTTPAUTH;  // "Http authentication failed"
       
  2380 		    break;
       
  2381 			}
       
  2382 	
       
  2383 		case SyncMLError::KErrAuthenticationFailure:
       
  2384 			{
       
  2385 			id = R_ASP_LOG_ERR_CLIENTAUTH;  // "Invalid user name or password"
       
  2386 		    break;
       
  2387 			}
       
  2388 
       
  2389 		case KErrServerBusy:
       
  2390 		    id = R_ASP_LOG_ERR_SERVERBUSY;  // "Synchronisation server was busy"
       
  2391 		    break;
       
  2392 		    
       
  2393 		case SyncMLError::KErrServerDatabaseNotFound:
       
  2394 		    id = R_ASP_LOG_ERR_REMOTEDATABASE;  // "Invalid remote database"
       
  2395 		    break;
       
  2396 
       
  2397 		case SyncMLError::KErrClientDatabaseNotFound:
       
  2398 		    id = R_ASP_LOG_ERR_LOCALDATABASE;  // "Unable to open database"
       
  2399 		    break;
       
  2400 
       
  2401 		case SyncMLError::KErrConnectionError:
       
  2402 		    id = R_ASP_LOG_ERR_SERVERNOTRESPONDING; // "Server is not responding"
       
  2403 		    break;
       
  2404 		    
       
  2405 		case SyncMLError::KErrTransportSvrNoUri:
       
  2406 		    id = R_ASP_LOG_ERR_URIINVALID; // "Invalid host address"
       
  2407 		    break;
       
  2408 		
       
  2409 		case SyncMLError::KErrPhoneOnOfflineMode:
       
  2410 		    id = R_ASP_LOG_ERR_OFFLINE; // "Operation not possible in Off-line mode"
       
  2411 		    break;
       
  2412 		    
       
  2413 		case SyncMLError::KErrTransportRequest:
       
  2414 		case SyncMLError::KErrTransportHeader:
       
  2415 		case SyncMLError::KErrTransportSvrError:
       
  2416 		case SyncMLError::KErrTransportDisconnected:
       
  2417 		case SyncMLError::KErrCannotCommunicateWithServer:
       
  2418 		    id = R_ASP_LOG_ERR_COMM;  // "Error in communication"
       
  2419 		    break;
       
  2420 		    
       
  2421 		case SyncMLError::KErrVerDTDMissing:
       
  2422 		case SyncMLError::KErrProtoMissing:
       
  2423 		case SyncMLError::KErrVersionDTDNotSupported:
       
  2424 		case SyncMLError::KErrProtoNotSupported:
       
  2425 		    id = R_ASP_LOG_ERR_VERSIONNOTSUPPORTED;  // "Unsupported SyncML software version in server"
       
  2426 		    break;
       
  2427        
       
  2428 		case SyncMLError::KErrSessionIdNotValid:
       
  2429 		case SyncMLError::KErrMappingInfoMissing:
       
  2430 		case SyncMLError::KErrMappingInfoNotAcked:
       
  2431 		case SyncMLError::KErrStatusCommandForCommandNotSent:
       
  2432 		case SyncMLError::KErrStatusCommandNotTheSame:
       
  2433 		case SyncMLError::KErrMissingStatusCommands:
       
  2434 		case SyncMLError::KErrFailedToAddRecord:
       
  2435 		case SyncMLError::KErrFailedToReplaceRecord:
       
  2436 		case SyncMLError::KErrFailedToDeleteRecord:
       
  2437 		case SyncMLError::KErrXmlParsingError:
       
  2438 		case SyncMLError::KErrReferenceToolkitError:
       
  2439 		case SyncMLError::KErrObjectTooLargeToSendToServer:
       
  2440 		case SyncMLError::KErrFailedToGetRecord:
       
  2441 		case SyncMLError::KErrUserInteractionFailed:
       
  2442 		case SyncMLError::KErrStatusSizeMismatch:
       
  2443 		case SyncMLError::KErrFailedToCloseDatabase:
       
  2444 		case SyncMLError::KErrDatabaseAdapterIndexError:
       
  2445 	   	    id = R_ASP_LOG_ERR_SERVERERROR;  // "Error in sync server"
       
  2446 		    break;
       
  2447 	        
       
  2448         default:
       
  2449             id = R_ASP_LOG_ERR_SYSTEMERROR;  // "System Error"
       
  2450 		    break;
       
  2451 		}
       
  2452 		
       
  2453 		return id ;
       
  2454 	}
       
  2455 	
       
  2456 
       
  2457 #ifdef _DEBUG
       
  2458 
       
  2459 // -----------------------------------------------------------------------------
       
  2460 // TAspSyncError::GetSyncMLErrorText
       
  2461 //
       
  2462 // -----------------------------------------------------------------------------
       
  2463 //
       
  2464 void TAspSyncError::GetSyncMLErrorText(TDes& aText, TInt aError)
       
  2465 	{
       
  2466     aText = KNullDesC();
       
  2467   
       
  2468    
       
  2469 	switch (aError)
       
  2470 		{
       
  2471 		case SyncMLError::KErrTransportRequest:
       
  2472 		    aText = _L("KErrTransportRequest");
       
  2473 		    break;
       
  2474 		case SyncMLError::KErrTransportHeader:
       
  2475 		    aText = _L("KErrTransportHeader");
       
  2476 		    break;
       
  2477 		case SyncMLError::KErrTransportSvrNoUri:
       
  2478 		    aText = _L("KErrTransportSvrNoUri");
       
  2479 		    break;
       
  2480 		case SyncMLError::KErrTransportSvrError:
       
  2481 		    aText = _L("KErrTransportSvrError");
       
  2482 		    break;
       
  2483 		case SyncMLError::KErrTransportAuthenticationFailure:
       
  2484 		    aText = _L("KErrTransportAuthenticationFailure");
       
  2485 		    break;
       
  2486 		case SyncMLError::KErrTransportDisconnected:
       
  2487 		    aText = _L("KErrTransportDisconnected");
       
  2488 		    break;
       
  2489 		case SyncMLError::KErrConnectionError:
       
  2490 		    aText = _L("KErrConnectionError");
       
  2491 		    break;
       
  2492 		case SyncMLError::KErrCannotCommunicateWithServer:
       
  2493 		    aText = _L("KErrCannotCommunicateWithServer");
       
  2494 		    break;
       
  2495 		case SyncMLError::KErrDatabaseAdapterIndexError:
       
  2496 		    aText = _L("KErrDatabaseAdapterIndexError");
       
  2497 		    break;
       
  2498 		case SyncMLError::KErrParseCallbackError:
       
  2499 		    aText = _L("KErrParseCallbackError");
       
  2500 		    break;
       
  2501 		case SyncMLError::KErrCommandInvalid:
       
  2502 		    aText = _L("KErrCommandInvalid");
       
  2503 		    break;
       
  2504 		case SyncMLError::KErrSessionIdNotValid:
       
  2505 		    aText = _L("KErrSessionIdNotValid");
       
  2506 		    break;
       
  2507 		case SyncMLError::KErrVerDTDMissing:
       
  2508 		    aText = _L("KErrVerDTDMissing");
       
  2509 		    break;
       
  2510 		case SyncMLError::KErrProtoMissing:
       
  2511 		    aText = _L("KErrProtoMissing");
       
  2512 		    break;
       
  2513 		case SyncMLError::KErrSyncHdrMissing:
       
  2514 		    aText = _L("KErrSyncHdrMissing");
       
  2515 		    break;
       
  2516 		case SyncMLError::KErrTargetLocMissing:
       
  2517 		    aText = _L("KErrTargetLocMissing");
       
  2518 		    break;
       
  2519 		case SyncMLError::KErrSourceLocMissing:
       
  2520 		    aText = _L("KErrSourceLocMissing");
       
  2521 		    break;
       
  2522 		case SyncMLError::KErrTargetLocNameMissing:
       
  2523 		    aText = _L("KErrTargetLocNameMissing");
       
  2524 		    break;
       
  2525 		case SyncMLError::KErrSourceLocNameMissing:
       
  2526 		    aText = _L("KErrSourceLocNameMissing");
       
  2527 		    break;
       
  2528 		case SyncMLError::KErrMappingInfoMissing:
       
  2529 		    aText = _L("KErrMappingInfoMissing");
       
  2530 		    break;
       
  2531 		case SyncMLError::KErrMappingInfoNotAcked:
       
  2532 		    aText = _L("KErrMappingInfoNotAcked");
       
  2533 		    break;
       
  2534 		case SyncMLError::KErrVersionDTDNotSupported:
       
  2535 		    aText = _L("KErrVersionDTDNotSupported");
       
  2536 		    break;
       
  2537 		case SyncMLError::KErrProtoNotSupported:
       
  2538 		    aText = _L("KErrProtoNotSupported");
       
  2539 		    break;
       
  2540 		case SyncMLError::KErrStatusCommandForCommandNotSent:
       
  2541 		    aText = _L("KErrStatusCommandForCommandNotSent");
       
  2542 		    break;
       
  2543 		case SyncMLError::KErrStatusCommandNotTheSame:
       
  2544 		    aText = _L("KErrStatusCommandNotTheSame");
       
  2545 		    break;
       
  2546 		case SyncMLError::KErrMissingStatusCommands:
       
  2547 		    aText = _L("KErrMissingStatusCommands");
       
  2548 		    break;
       
  2549 		case SyncMLError::KErrFailedToAddRecord:
       
  2550 		    aText = _L("KErrFailedToAddRecord");
       
  2551 		    break;
       
  2552 		case SyncMLError::KErrFailedToReplaceRecord:
       
  2553 		    aText = _L("KErrFailedToReplaceRecord");
       
  2554 		    break;
       
  2555 		case SyncMLError::KErrFailedToDeleteRecord:
       
  2556 		    aText = _L("KErrFailedToDeleteRecord");
       
  2557 		    break;
       
  2558 		case SyncMLError::KErrXmlParsingError:
       
  2559 		    aText = _L("KErrXmlParsingError");
       
  2560 		    break;
       
  2561 		case SyncMLError::KErrReferenceToolkitError:
       
  2562 		    aText = _L("KErrReferenceToolkitError");
       
  2563 		    break;
       
  2564 		case SyncMLError::KErrClientDatabaseNotFound:
       
  2565 		    aText = _L("KErrClientDatabaseNotFound");
       
  2566 		    break;
       
  2567 		case SyncMLError::KErrServerDatabaseNotFound:
       
  2568 		    aText = _L("KErrServerDatabaseNotFound");
       
  2569 		    break;
       
  2570 		case SyncMLError::KErrDevInfFileNotFound:
       
  2571 		    aText = _L("KErrDevInfFileNotFound");
       
  2572 		    break;
       
  2573 		case SyncMLError::KErrObjectTooLargeToSendToServer:
       
  2574 		    aText = _L("KErrObjectTooLargeToSendToServer");
       
  2575 		    break;
       
  2576 		case SyncMLError::KErrSlowSync:
       
  2577 		    aText = _L("KErrSlowSync");
       
  2578 		    break;
       
  2579 		case SyncMLError::KErrFailedToGetRecord:
       
  2580 		    aText = _L("KErrFailedToGetRecord");
       
  2581 		    break;
       
  2582 		case SyncMLError::KErrUserInteractionFailed:
       
  2583 		    aText = _L("KErrUserInteractionFailed");
       
  2584 		    break;
       
  2585 		case SyncMLError::KErrStatusSizeMismatch:
       
  2586 		    aText = _L("KErrStatusSizeMismatch");
       
  2587 		    break;
       
  2588 		case SyncMLError::KErrFailedToCloseDatabase:
       
  2589 		    aText = _L("KErrFailedToCloseDatabase");
       
  2590 		    break;
       
  2591 	
       
  2592     	case SyncMLError::KErrPhoneOnOfflineMode:
       
  2593 		    aText = _L("KErrPhoneOnOfflineMode");
       
  2594 		    break;
       
  2595 		
       
  2596 	    case SyncMLError::KErrAuthenticationFailure:
       
  2597 		    aText = _L("KErrAuthenticationFailure");
       
  2598 		    break;
       
  2599 		
       
  2600 		case SyncMLError::KErrGeneral:
       
  2601 		    aText = _L("KErrGeneral");
       
  2602 		    break;
       
  2603 		
       
  2604 		case SyncMLError::KErrMessageTooShort:
       
  2605 		    aText = _L("KErrMessageTooShort");
       
  2606 		    break;
       
  2607 		case SyncMLError::KErrMessageIsCorrupt:
       
  2608 		    aText = _L("KErrMessageIsCorrupt");
       
  2609 		    break;
       
  2610 		case SyncMLError::KErrBadTransportId:
       
  2611 		    aText = _L("KErrBadTransportId");
       
  2612 		    break;
       
  2613 		case SyncMLError::KErrNoNotificationBody:
       
  2614 		    aText = _L("KErrNoNotificationBody");
       
  2615 		    break;
       
  2616 		case SyncMLError::KErrWrongVersion:
       
  2617 		    aText = _L("KErrWrongVersion");
       
  2618 		    break;
       
  2619 		case SyncMLError::KErrUnsupportedMimeType:
       
  2620 		    aText = _L("KErrUnsupportedMimeType");
       
  2621 		    break;
       
  2622 		case SyncMLError::KErrNoSuchTask:
       
  2623 		    aText = _L("KErrNoSuchTask");
       
  2624 		    break;
       
  2625 		case SyncMLError::KErrUnknownSyncType:
       
  2626 		    aText = _L("KErrUnknownSyncType");
       
  2627 		    break;
       
  2628 		case SyncMLError::KErrUnknownProfile:
       
  2629 		    aText = _L("KErrUnknownProfile");
       
  2630 		    break;
       
  2631 		case SyncMLError::KErrInvalidProfile:
       
  2632 		    aText = _L("KErrInvalidProfile");
       
  2633 		    break;
       
  2634 		case SyncMLError::KErrInvalidCredentials:
       
  2635 		    aText = _L("KErrInvalidCredentials");
       
  2636 		    break;
       
  2637 		case SyncMLError::KErrNoCredentials:
       
  2638 		    aText = _L("KErrNoCredentials");
       
  2639 		    break;
       
  2640 		case SyncMLError::KErrIntegrityFailureHMAC:
       
  2641 		    aText = _L("KErrIntegrityFailureHMAC");
       
  2642 		    break;
       
  2643 		case SyncMLError::KErrMustUsageUriNotComplete:
       
  2644 		    aText = _L("KErrMustUsageUriNotComplete");
       
  2645 		    break;
       
  2646 		case SyncMLError::KErrDMAccUriIsCorrupt:
       
  2647 		    aText = _L("KErrDMAccUriIsCorrupt");
       
  2648 		    break;
       
  2649 		case SyncMLError::KErrDMConUriIsCorrupt:
       
  2650 		    aText = _L("KErrDMConUriIsCorrupt");
       
  2651 		    break;
       
  2652 		case SyncMLError::KErrParmNameNotInProvDoc:
       
  2653 		    aText = _L("KErrParmNameNotInProvDoc");
       
  2654 		    break;
       
  2655 		case SyncMLError::KErrInvalidAppIdValue:
       
  2656 		    aText = _L("KErrInvalidAppIdValue");
       
  2657 		    break;
       
  2658 		case SyncMLError::KErrInvalidToNapIdValue:
       
  2659 		    aText = _L("KErrInvalidToNapIdValue");
       
  2660 		    break;
       
  2661 		case SyncMLError::KErrInvalidProviderIdValue:
       
  2662 		    aText = _L("KErrInvalidProviderIdValue");
       
  2663 		    break;
       
  2664 		case SyncMLError::KErrEmptyAauthLevelValue:
       
  2665 		    aText = _L("KErrEmptyAauthLevelValue");
       
  2666 		    break;
       
  2667 		case SyncMLError::KErrAppSrvAAuthLevelNotFound:
       
  2668 		    aText = _L("KErrAppSrvAAuthLevelNotFound");
       
  2669 		    break;
       
  2670 		case SyncMLError::KErrClientAAuthLevelNotFound:
       
  2671 		    aText = _L("KErrClientAAuthLevelNotFound");
       
  2672 		    break;
       
  2673 		case SyncMLError::KErrInvalidAppAuth:
       
  2674 		    aText = _L("KErrInvalidAppAuth");
       
  2675 		    break;
       
  2676 		case SyncMLError::KErrNoApplicationCharac:
       
  2677 		    aText = _L("KErrNoApplicationCharac");
       
  2678 		    break;
       
  2679 		case SyncMLError::KErrNoAppAuthCharac:
       
  2680 		    aText = _L("KErrNoAppAuthCharac");
       
  2681 		    break;
       
  2682 		case SyncMLError::KErrMissingRequiredParmInSvr:
       
  2683 		    aText = _L("KErrMissingRequiredParmInSvr");
       
  2684 		    break;
       
  2685 		case SyncMLError::KErrMissingRequiredParmInClient:
       
  2686 		    aText = _L("KErrMissingRequiredParmInClient");
       
  2687 		    break;
       
  2688 		case SyncMLError::KErrAppAddrCharacNotFound:
       
  2689 		    aText = _L("KErrAppAddrCharacNotFound");
       
  2690 		    break;
       
  2691 		case SyncMLError::KErrUnsupportedVersion:
       
  2692 		    aText = _L("KErrUnsupportedVersion");
       
  2693 		    break;
       
  2694 		case SyncMLError::KErrWrongProvPublicDocId:
       
  2695 		    aText = _L("KErrWrongProvPublicDocId");
       
  2696 		    break;
       
  2697 		case SyncMLError::KErrProfileNotFound:
       
  2698 		    aText = _L("KErrProfileNotFound");
       
  2699 		    break;
       
  2700 		case SyncMLError::KErrConnectionNotFound:
       
  2701 		    aText = _L("KErrConnectionNotFound");
       
  2702 		    break;
       
  2703 		case SyncMLError::KErrTaskNotFound:
       
  2704 		    aText = _L("KErrTaskNotFound");
       
  2705 		    break;
       
  2706 		case SyncMLError::KErrTransportNotFound:
       
  2707 		    aText = _L("KErrTransportNotFound");
       
  2708 		    break;
       
  2709 		case SyncMLError::KErrDataProviderNotFound:
       
  2710 		    aText = _L("KErrDataProviderNotFound");
       
  2711 		    break;
       
  2712 		case SyncMLError::KErrJobNotFound:
       
  2713 		    aText = _L("KErrJobNotFound");
       
  2714 		    break;
       
  2715 		case SyncMLError::KErrObjectPendingDelete:
       
  2716 		    aText = _L("KErrObjectPendingDelete");
       
  2717 		    break;
       
  2718 		case SyncMLError::KErrObjectInUse:
       
  2719 		    aText = _L("KErrObjectInUse");
       
  2720 		    break;
       
  2721 		case SyncMLError::KErrProfileAccessDenied:
       
  2722 		    aText = _L("KErrProfileAccessDenied");
       
  2723 		    break;
       
  2724 		case SyncMLError::KErrSuspended:
       
  2725 		    aText = _L("KErrSuspended");
       
  2726 		    break;
       
  2727 		case SyncMLError::KErrDataDepotStreamNotFound:
       
  2728 		    aText = _L("KErrDataDepotStreamNotFound");
       
  2729 		    break;
       
  2730 		
       
  2731 		case SyncMLError::KErrServerIdNotMatching:
       
  2732 		    aText = _L("KErrServerIdNotMatching");
       
  2733 		    break;
       
  2734 	        
       
  2735         default:
       
  2736             aText.Format(_L("%d"), aError);
       
  2737 		    break;
       
  2738 		}
       
  2739 	}
       
  2740 
       
  2741 #endif
       
  2742 
       
  2743 
       
  2744 
       
  2745 
       
  2746 
       
  2747 
       
  2748 
       
  2749 // End of file