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