uiservicetab/vimpstengine/src/cvimpstengineservicetablefetcher.cpp
changeset 15 81eeb8c83ce5
parent 0 5e5d6b214f4f
equal deleted inserted replaced
0:5e5d6b214f4f 15:81eeb8c83ce5
     1 /*
       
     2 * Copyright (c) 2008 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:  Handles the use of Service Provider Settings API
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include <spsettings.h>
       
    21 #include <spentry.h>
       
    22 #include <spproperty.h>
       
    23 
       
    24 
       
    25 // Phonebook shutter
       
    26 #include <apgtask.h>
       
    27 #include <w32std.h>
       
    28 #include <Pbk2UID.h>
       
    29 #include <apgcli.h>
       
    30 #include <apaid.h>
       
    31 
       
    32 #include "cvimpstengineservicetablefetcher.h"
       
    33 #include "cvimpstenginecchhandler.h"
       
    34 
       
    35 #include "vimpstextentionuiuid.h"
       
    36 #include "tvimpstconsts.h"
       
    37 #include "mvimpstenginefactory.h"
       
    38 #include "cvimpstenginefactory.h"
       
    39 #include "mvimpststorageserviceview.h"
       
    40 #include "cvimpststoragemanagerfactory.h"
       
    41 #include "vimpstdebugtrace.h"
       
    42 
       
    43 
       
    44 
       
    45 // ================= MEMBER FUNCTIONS =======================
       
    46 
       
    47 // ---------------------------------------------------------------------------
       
    48 // CVIMPSTEngineServiceTableFetcher::CVIMPSTEngineServiceTableFetcher()
       
    49 // ---------------------------------------------------------------------------
       
    50 //
       
    51 CVIMPSTEngineServiceTableFetcher::CVIMPSTEngineServiceTableFetcher()
       
    52     {
       
    53     }
       
    54 
       
    55 // ---------------------------------------------------------------------------
       
    56 // CVIMPSTEngineServiceTableFetcher::ConstructL()
       
    57 // ---------------------------------------------------------------------------
       
    58 //
       
    59 void CVIMPSTEngineServiceTableFetcher::ConstructL()
       
    60     {
       
    61     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::ConstructL start"));
       
    62     iSettings = CSPSettings::NewL();
       
    63     CompressViewIdsL();
       
    64     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::ConstructL end"));
       
    65     }
       
    66 
       
    67 // ---------------------------------------------------------------------------
       
    68 // CVIMPSTEngineServiceTableFetcher::NewL()
       
    69 // ---------------------------------------------------------------------------
       
    70 //
       
    71 CVIMPSTEngineServiceTableFetcher* 
       
    72     CVIMPSTEngineServiceTableFetcher::NewL( )
       
    73     {
       
    74     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::NewL start"));
       
    75     
       
    76     CVIMPSTEngineServiceTableFetcher* self = NewLC();
       
    77     CleanupStack::Pop(self);
       
    78     
       
    79     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::NewL end"));
       
    80     return self;
       
    81     }
       
    82 
       
    83 // ---------------------------------------------------------------------------
       
    84 // CVIMPSTEngineServiceTableFetcher::NewLC()
       
    85 // ---------------------------------------------------------------------------
       
    86 //
       
    87 CVIMPSTEngineServiceTableFetcher* 
       
    88     CVIMPSTEngineServiceTableFetcher::NewLC()
       
    89     {
       
    90     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::NewLC start"));
       
    91     
       
    92     CVIMPSTEngineServiceTableFetcher* self =
       
    93         new (ELeave) CVIMPSTEngineServiceTableFetcher( );
       
    94     CleanupStack::PushL(self);
       
    95     self->ConstructL();
       
    96     
       
    97     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::NewLC end"));
       
    98     return self;
       
    99     }
       
   100 
       
   101 // ---------------------------------------------------------------------------
       
   102 // CVIMPSTEngineServiceTableFetcher::
       
   103 //      ~CVIMPSTEngineServiceTableFetcher()
       
   104 // ---------------------------------------------------------------------------
       
   105 //
       
   106 CVIMPSTEngineServiceTableFetcher::~CVIMPSTEngineServiceTableFetcher()
       
   107     {
       
   108     
       
   109     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::~CVIMPSTEngineServiceTableFetcher start"));   
       
   110     
       
   111     delete iSettings;	
       
   112     iSettings = NULL;
       
   113     
       
   114     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::~CVIMPSTEngineServiceTableFetcher end"));    
       
   115     }
       
   116 
       
   117 // ---------------------------------------------------------------------------
       
   118 // CVIMPSTEngineServiceTableFetcher::GetMasterServiceIdsL()
       
   119 // ---------------------------------------------------------------------------
       
   120 //
       
   121 void CVIMPSTEngineServiceTableFetcher::GetMasterServiceIdsL( 
       
   122     RArray<TUint32>& aServiceIds )
       
   123     {
       
   124     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::GetMasterServiceIdsL start"));
       
   125     
       
   126     RArray<TServiceId> services;
       
   127     CleanupClosePushL( services );
       
   128     iSettings->FindServiceIdsL( services );
       
   129 	
       
   130 	const TInt serviceCount = services.Count();
       
   131     for ( TInt i( 0 ); i < serviceCount; i++ )
       
   132         {
       
   133         TUint32 refContactUid = ContactViewUidL( services[i] );
       
   134         
       
   135         if ( TUid::Uid( refContactUid ) == 
       
   136              TUid::Uid( KIMCONTACTSEXTNIMPLEMENTATIONUID ) 
       
   137              || TUid::Uid( refContactUid ) == 
       
   138              TUid::Uid( 0x20007B6D ) )
       
   139             {
       
   140             TRACE( T_LIT("GetMasterServiceIdsL() found serviceid: (%d)"), services[ i ] );
       
   141 
       
   142             aServiceIds.Append( services[ i ] );                
       
   143 
       
   144             TRACE( T_LIT("GetMasterServiceIdsL() - service append ok") );                
       
   145 
       
   146             }
       
   147         }
       
   148     CleanupStack::PopAndDestroy( &services );
       
   149     
       
   150     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::GetMasterServiceIdsL end"));  
       
   151     }
       
   152 
       
   153 // ---------------------------------------------------------------------------
       
   154 // CVIMPSTEngineServiceTableFetcher::GetContactStoreIdL()
       
   155 // ---------------------------------------------------------------------------
       
   156 //
       
   157 void CVIMPSTEngineServiceTableFetcher::GetContactStoreIdL( 
       
   158     TUint32 aServiceId, TDes& aContactStoreId )
       
   159     {
       
   160     TRACE( T_LIT( 
       
   161        "CVIMPSTEngineServiceTableFetcher::GetContactStoreIdL start")); 
       
   162     
       
   163     TRACE( T_LIT("GetContactStoreIdL() ServiceId: %d"), aServiceId );
       
   164         
       
   165     CSPProperty* property = CSPProperty::NewLC();
       
   166     TInt err = iSettings->FindPropertyL( aServiceId,
       
   167                                 EPropertyContactStoreId,      
       
   168                                 *property );    
       
   169 	if (KErrNone == err)
       
   170 		{	
       
   171 	    err = property->GetValue( aContactStoreId );
       
   172 	    
       
   173 		}
       
   174 
       
   175     CleanupStack::PopAndDestroy( property );
       
   176     
       
   177     TRACE( T_LIT("GetContactStoreIdL() - StoreId: %S"), &aContactStoreId );                
       
   178     
       
   179     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::GetContactStoreIdL end"));  
       
   180  	
       
   181     }   
       
   182 
       
   183     
       
   184 
       
   185 // ---------------------------------------------------------------------------
       
   186 // CVIMPSTEngineServiceTableFetcher::GetBrandIdL()
       
   187 // ---------------------------------------------------------------------------
       
   188 //
       
   189 void CVIMPSTEngineServiceTableFetcher::GetBrandIdL( 
       
   190     TUint32 aServiceId, TDes8& aBrandId )
       
   191     {
       
   192     TRACE( T_LIT( "CVIMPSTEngineServiceTableFetcher::GetBrandIdL start"));
       
   193     
       
   194     TRACE( T_LIT("GetBrandIdL() ServiceId: %d"), aServiceId );
       
   195        
       
   196     HBufC* ret = HBufC::NewLC( KVIMPSTUISPSMaxPropertyLength );    
       
   197     TPtr retPtr( ret->Des() );
       
   198     
       
   199     CSPProperty* property = CSPProperty::NewLC();
       
   200     TInt err = iSettings->FindPropertyL( aServiceId,
       
   201                                 EPropertyBrandId,
       
   202                                 *property );    
       
   203     if ( KErrNone == err )
       
   204         {
       
   205         err = property->GetValue( retPtr );
       
   206         if ( KErrNone == err )
       
   207 	        {
       
   208 	        aBrandId.Copy( retPtr );
       
   209 	        }
       
   210         }
       
   211     CleanupStack::PopAndDestroy( property );        
       
   212     CleanupStack::PopAndDestroy( ret );        
       
   213     
       
   214     TRACE( T_LIT("GetBrandIdL() - BrandId: %S"), &aBrandId ); 
       
   215     
       
   216     TRACE( T_LIT( "CVIMPSTEngineServiceTableFetcher::GetBrandIdL end"));
       
   217     }    
       
   218 
       
   219 
       
   220 // ---------------------------------------------------------------------------
       
   221 // CVIMPSTEngineServiceTableFetcher::FindPropertyL()
       
   222 // ---------------------------------------------------------------------------
       
   223 //
       
   224 TInt CVIMPSTEngineServiceTableFetcher::FindPropertyL( TUint32 aServiceId,
       
   225 	                                TServicePropertyName aPropertyName )
       
   226 	{
       
   227 	TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::FindPropertyL start"));
       
   228     
       
   229     TRACE( T_LIT("FindPropertyL- ServiceId: %d Property: %d"), 
       
   230     								aServiceId, aPropertyName ); 
       
   231        
       
   232 	CSPProperty* property = CSPProperty::NewLC();
       
   233     TInt result = iSettings->FindPropertyL( aServiceId,
       
   234                                 aPropertyName,
       
   235                                 *property );		
       
   236 	CleanupStack::PopAndDestroy( property );
       
   237 	
       
   238 	TRACE( T_LIT("FindPropertyL- Result: %d"), result );
       
   239     								
       
   240 	TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::FindPropertyL end"));
       
   241        
       
   242 	return result;
       
   243 	}
       
   244 
       
   245 
       
   246 
       
   247 
       
   248 // ---------------------------------------------------------------------------
       
   249 // CVIMPSTEngineServiceTableFetcher::PropertyBrandVersionL()
       
   250 // ---------------------------------------------------------------------------
       
   251 //
       
   252 TInt CVIMPSTEngineServiceTableFetcher::PropertyBrandVersionL( 
       
   253     TUint32 aServiceId ) 
       
   254     {
       
   255     TRACE( T_LIT( "CVIMPSTEngineServiceTableFetcher::PropertyBrandVersionL start"));
       
   256     
       
   257     TRACE( T_LIT("PropertyBrandVersionL() ServiceId: %d"), aServiceId );
       
   258        
       
   259     TInt brandVersion = KErrNotFound; // default value
       
   260     CSPProperty* property = CSPProperty::NewLC();
       
   261     TInt err = iSettings->FindPropertyL( aServiceId,
       
   262                                 EPropertyBrandVersion,
       
   263                                 *property );    
       
   264     if ( KErrNone == err )
       
   265         {
       
   266         err = property->GetValue( brandVersion );
       
   267         }
       
   268         
       
   269     CleanupStack::PopAndDestroy( property );
       
   270     
       
   271     TRACE( T_LIT("PropertyBrandVersionL - version: %d"), brandVersion );  
       
   272     
       
   273     TRACE( T_LIT( "CVIMPSTEngineServiceTableFetcher::PropertyBrandVersionL end"));
       
   274     return brandVersion;
       
   275     }
       
   276 
       
   277 // ---------------------------------------------------------------------------
       
   278 // CVIMPSTEngineServiceTableFetcher::PropertyBrandLanguageL()
       
   279 // ---------------------------------------------------------------------------
       
   280 //
       
   281 TLanguage CVIMPSTEngineServiceTableFetcher::PropertyBrandLanguageL( 
       
   282     TUint32 aServiceId ) 
       
   283     {
       
   284     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::PropertyBrandLanguageL start"));
       
   285     
       
   286     TRACE( T_LIT("PropertyBrandLanguageL() ServiceId: %d"), aServiceId );
       
   287     
       
   288     // ELangInternationalEnglish is selected as Default Brand Language Id.
       
   289     TInt brandLanguage = ELangInternationalEnglish;    
       
   290     CSPProperty* property = CSPProperty::NewLC();
       
   291     TInt err = iSettings->FindPropertyL( aServiceId,
       
   292                                 EPropertyBrandLanguage,
       
   293                                 *property );    
       
   294     if ( KErrNone == err )
       
   295         {
       
   296         err = property->GetValue( brandLanguage );
       
   297         }
       
   298     CleanupStack::PopAndDestroy( property );
       
   299 
       
   300     TRACE( T_LIT("PropertyBrandVersionL - brandLanguage: (%d) "), brandLanguage );  
       
   301 	
       
   302 	TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::PropertyBrandLanguageL end"));
       
   303        
       
   304     return ((TLanguage) (brandLanguage) );
       
   305     }
       
   306 
       
   307 
       
   308 // ---------------------------------------------------------------------------
       
   309 // CVIMPSTEngineServiceTableFetcher::ContactViewUidL()
       
   310 // ---------------------------------------------------------------------------
       
   311 //
       
   312 TUint32 CVIMPSTEngineServiceTableFetcher::ContactViewUidL( 
       
   313     TUint32 aServiceId )
       
   314     {
       
   315     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::ContactViewUidL start"));
       
   316     
       
   317     TRACE( T_LIT("ContactViewUidL() ServiceId: %d"), aServiceId );
       
   318         
       
   319     TInt contactViewUid = KErrNotFound;
       
   320     CSPProperty* property = CSPProperty::NewLC();
       
   321     TInt err = iSettings->FindPropertyL( aServiceId,
       
   322                                 EPropertyContactViewPluginId,
       
   323                                 *property );    
       
   324     if ( KErrNone == err )
       
   325         {
       
   326         property->GetValue( contactViewUid );
       
   327         }
       
   328     CleanupStack::PopAndDestroy( property );      
       
   329           
       
   330     TRACE( T_LIT("ContactViewUid: %d"), contactViewUid );    
       
   331     
       
   332     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::GetContactStoreIdL end"));
       
   333        
       
   334     return contactViewUid;
       
   335     }    
       
   336 
       
   337 // ---------------------------------------------------------------------------
       
   338 // CVIMPSTEngineServiceTableFetcher::GetServiceNameL()
       
   339 // ---------------------------------------------------------------------------
       
   340 //
       
   341 void CVIMPSTEngineServiceTableFetcher::GetServiceNameL( 
       
   342     TUint32 aServiceId, TDes& aServiceName )
       
   343     {
       
   344     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::GetServiceNameL start"));    
       
   345     
       
   346     TRACE( T_LIT("GetServiceNameL() ServiceId: %d"), aServiceId );
       
   347     
       
   348     CSPEntry* entry = CSPEntry::NewLC();
       
   349     TInt err = iSettings->FindEntryL( aServiceId, *entry ) ;
       
   350     if ( !err )
       
   351         {
       
   352         aServiceName = entry->GetServiceName();
       
   353         }
       
   354     
       
   355     CleanupStack::PopAndDestroy( entry );    
       
   356     
       
   357     TRACE( T_LIT("GetServiceNameL() ServiceName: %S"), &aServiceName );
       
   358     
       
   359     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::GetServiceNameL end"));
       
   360     }
       
   361 
       
   362 // ---------------------------------------------------------------------------
       
   363 // CVIMPSTEngineServiceTableFetcher::DoHandleNotifyChangeL()
       
   364 // ---------------------------------------------------------------------------
       
   365 //
       
   366 void CVIMPSTEngineServiceTableFetcher::DoHandleNotifyChangeL(
       
   367     		TServiceId aServiceId, TBool aNewService, MVIMPSTEngine* aEngine )
       
   368     {
       
   369     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::DoHandleNotifyChangeL start"));  
       
   370     TRACE( T_LIT("DoHandleNotifyChange() ServiceId:%d"), aServiceId );
       
   371     TBool serviceFound( EFalse ); 
       
   372     if(!aNewService)
       
   373         {
       
   374         RArray<TUint32> serviceIdArray;
       
   375         CleanupClosePushL( serviceIdArray ); 
       
   376         RArray<TServiceId> services;
       
   377         CleanupClosePushL( services );    
       
   378         GetMasterServiceIdsL(serviceIdArray);
       
   379         iSettings->FindServiceIdsL(services );
       
   380         const TInt serviceCount = services.Count();
       
   381         for ( TInt index = 0 ; index < serviceCount ; index++ )
       
   382             {
       
   383             if ( services[index] == aServiceId )
       
   384                 {
       
   385                 TRACE( T_LIT("DoHandleNotifyChange() - Service (%d) found"), aServiceId );
       
   386                 serviceFound = ETrue;
       
   387                 }
       
   388             }
       
   389         CleanupStack::PopAndDestroy( &services );
       
   390         CleanupStack::PopAndDestroy( &serviceIdArray ); 
       
   391         }
       
   392     if ( aNewService || !serviceFound )  // new service or MECO service not found
       
   393         {
       
   394         // check if any other services other then MECO exists before
       
   395         // shutting down the phonebook. there can be services which does't use
       
   396         // MECO UI ( example OVI - does't use MECO UI it uses own UI )
       
   397         // check with the property EPropertyContactViewPluginId in the service 
       
   398         // this will the meco UID in case of MECO Service.
       
   399         //this is a temperory hack as phonebook doesnot refresh once we delete or add any service
       
   400         //once phonebook gives a permanant fix ,remove the below code
       
   401         if(( TUid::Uid(ContactViewUidL( aServiceId )) == TUid::Uid( KIMCONTACTSEXTNIMPLEMENTATIONUID )) || aEngine ) 
       
   402             {                                                               // only MecoServicetabs shutdown phonebook.
       
   403             TRACE( T_LIT("DoHandleNotifyChange() - removing service") );    //or while deleting service from settings
       
   404             CompressViewIdsL();                                             //check whether engine exists,which is true for only MecoServicetabs.
       
   405             if(aEngine)
       
   406                 {
       
   407                 aEngine->DeleteDataBaseL();
       
   408                 }
       
   409             ShutDownPhonebookL();
       
   410             }
       
   411         TRACE( T_LIT("DoHandleNotifyChange() - service removed") );
       
   412         }
       
   413     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::DoHandleNotifyChangeL end"));    
       
   414 
       
   415     }
       
   416 // ---------------------------------------------------------------------------
       
   417 // CVIMPSTEngineServiceTableFetcher::CompressViewIdsL()
       
   418 // ---------------------------------------------------------------------------
       
   419 //
       
   420 TBool CVIMPSTEngineServiceTableFetcher::CompressViewIdsL( 
       
   421     TServiceId aServiceId )
       
   422     {
       
   423     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::CompressViewIdsL start"));       
       
   424     TRACE( T_LIT("CompressViewIdsL() ServiceId: %d"), aServiceId );
       
   425     
       
   426     TBool ret = EFalse;
       
   427     // Compress view id's in service table
       
   428     RArray<TServiceId> services;
       
   429     CleanupClosePushL( services );
       
   430     iSettings->FindServiceIdsL( services );
       
   431     TUint32 serviceId = 0;
       
   432     const TInt serviceCount = services.Count();
       
   433     for ( TInt i( 0 ); i < serviceCount; i++ )
       
   434         {
       
   435         serviceId = services[i];
       
   436         TUint32 refContactUid = ContactViewUidL( serviceId );
       
   437         if ( TUid::Uid( refContactUid ) == 
       
   438         TUid::Uid( KIMCONTACTSEXTNIMPLEMENTATIONUID ) )
       
   439             {
       
   440 
       
   441             TRACE( T_LIT("  -> compressing view ids, service: %d"), serviceId );
       
   442             TRACE( T_LIT("  -> compressing view ids, view id: (%d)"), ( KVIMPSTTabbedViewIdBase+ serviceId ) );
       
   443 
       
   444             WriteTabViewIdToServiceTableL( services[ i ], ( KVIMPSTTabbedViewIdBase + serviceId ) );
       
   445         
       
   446             ret = ETrue;
       
   447             }
       
   448         }
       
   449     CleanupStack::PopAndDestroy( &services );
       
   450     
       
   451     TRACE( T_LIT("CompressViewIdsL returns: (%d)"), ret );     
       
   452     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::CompressViewIdsL end"));    
       
   453     
       
   454     return ret;
       
   455     }
       
   456 
       
   457 
       
   458 // ---------------------------------------------------------------------------
       
   459 // CVIMPSTEngineServiceTableFetcher::WriteTabViewIdToServiceTableL()
       
   460 // ---------------------------------------------------------------------------
       
   461 //
       
   462 void CVIMPSTEngineServiceTableFetcher::WriteTabViewIdToServiceTableL( 
       
   463     TUint32 aServiceId, TUint aViewId ) 
       
   464     {
       
   465     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::WriteTabViewIdToServiceTableL start"));   
       
   466     TRACE( T_LIT("WriteTabViewIdToServiceTableL() aServiceId: %d, aViewId: %d "), 
       
   467     										aServiceId, aViewId );
       
   468     
       
   469     // Write specific view id to service table
       
   470     // No need to check for error beacuse 
       
   471     // we need to add/update the property
       
   472 
       
   473     
       
   474     CSPProperty* property = CSPProperty::NewLC();
       
   475     iSettings->FindPropertyL( aServiceId,
       
   476                                 EPropertyContactViewId,
       
   477                                 *property );    
       
   478     
       
   479     TRACE( T_LIT( 
       
   480        "WriteTabViewIdToServiceTableL() - OK"));
       
   481     
       
   482     TInt err = property->SetName( EPropertyContactViewId );
       
   483     
       
   484      TRACE( T_LIT( 
       
   485        "WriteTabViewIdToServiceTableL ERR1=%d"), err );
       
   486     
       
   487     TInt err2 = property->SetValue( aViewId );
       
   488     
       
   489     if ( !err && !err2 )
       
   490         {
       
   491         iSettings->AddOrUpdatePropertyL( aServiceId, *property );
       
   492         }
       
   493     
       
   494     TRACE( T_LIT( 
       
   495        "WriteTabViewIdToServiceTableL ERR2=%d"), err2 );
       
   496         
       
   497     
       
   498     CleanupStack::PopAndDestroy( property );  
       
   499                    
       
   500     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::WriteTabViewIdToServiceTableL end") );
       
   501     }
       
   502 
       
   503 // ---------------------------------------------------------------------------
       
   504 // CVIMPSTEngineServiceTableFetcher::ShutDownPhonebookL()
       
   505 // ---------------------------------------------------------------------------
       
   506 //
       
   507 void CVIMPSTEngineServiceTableFetcher::ShutDownPhonebookL()
       
   508     {
       
   509     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::ShutDownPhonebookL start"));   
       
   510     
       
   511     // Kills phonebook if running
       
   512     RWsSession ws;
       
   513     User::LeaveIfError( ws.Connect() );
       
   514     CleanupClosePushL( ws );
       
   515     TApaTaskList list( ws );
       
   516     TUid uid = { KPbk2UID3 };
       
   517     TApaTask task( list.FindApp( uid ) );
       
   518     if ( task.Exists() )
       
   519         {
       
   520         task.EndTask();
       
   521         }
       
   522     CleanupStack::PopAndDestroy( &ws ); // ws
       
   523     
       
   524     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::ShutDownPhonebookL end"));
       
   525     }
       
   526     
       
   527 // ---------------------------------------------------------------------------
       
   528 // CVIMPSTEngineServiceTableFetcher::XimpAdapterUidL()
       
   529 // ---------------------------------------------------------------------------
       
   530 //
       
   531 TInt CVIMPSTEngineServiceTableFetcher::XimpAdapterUidL( 
       
   532     TUint32 aServiceId )
       
   533     {
       
   534     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::XimpAdapterUidL start"));   
       
   535     
       
   536     TRACE( T_LIT("XimpAdapterUidL() ServiceId: %d"), aServiceId );
       
   537     										
       
   538     TInt ret = KErrNotFound;
       
   539     CSPProperty* property = CSPProperty::NewLC();
       
   540     
       
   541     TInt err = iSettings->FindPropertyL( aServiceId,
       
   542                                 EPropertyPCSPluginId,
       
   543                                 *property );    
       
   544     if (KErrNone == err)
       
   545 	    {
       
   546 	    property->GetValue( ret );
       
   547 	    }
       
   548     
       
   549     CleanupStack::PopAndDestroy( property );
       
   550     
       
   551     TRACE( T_LIT("XimpAdapterUidL() XimpAdapterUid: %d "), 
       
   552     										ret );
       
   553     										
       
   554     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::XimpAdapterUidL end"));   
       
   555     return ret;
       
   556     }        
       
   557     
       
   558 // ---------------------------------------------------------------------------
       
   559 // CVIMPSTEngineServiceTableFetcher::PresenceRequestStatusL()
       
   560 // ---------------------------------------------------------------------------
       
   561 //
       
   562 TVIMPSTEnums::TVIMPSTPresenceRequestStatus 
       
   563 CVIMPSTEngineServiceTableFetcher::PresenceRequestStatusL( 
       
   564         TUint32 aServiceId )    
       
   565     {
       
   566     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::PresenceRequestStatusL  start")); 
       
   567     
       
   568     TRACE( T_LIT("PresenceRequestStatusL() ServiceId: %d"), aServiceId );
       
   569     
       
   570     TVIMPSTEnums::TVIMPSTPresenceRequestStatus ret = 
       
   571     			TVIMPSTEnums::ESVCEPresenceRequestStatusUnKnown;
       
   572             
       
   573     CSPProperty* property = CSPProperty::NewLC();
       
   574     
       
   575     TInt err = iSettings->FindPropertyL( aServiceId,
       
   576            ESubPropertyPresenceRequestPreference,
       
   577                                 *property );    
       
   578     if ( KErrNone == err )
       
   579         {
       
   580         TOnOff value = EOff;        
       
   581         err = property->GetValue( value );
       
   582         if ( !err )
       
   583             {
       
   584             if ( EOn == value )
       
   585                 {
       
   586                 ret = TVIMPSTEnums::ESVCEPresenceRequestStatusAutoAccept;
       
   587                 }
       
   588 			else
       
   589 				{
       
   590 				ret = TVIMPSTEnums::ESVCEPresenceRequestStatusAlwaysAsk;
       
   591 				}                
       
   592             }
       
   593         }
       
   594     
       
   595     CleanupStack::PopAndDestroy( property );
       
   596     
       
   597     TRACE( T_LIT("PresenceRequestStatusL() PresenceRequestStatus: %d "), 
       
   598     										ret );
       
   599     										
       
   600     TRACE( T_LIT("CVIMPSTEngineServiceTableFetcher::PresenceRequestStatusL end"));   
       
   601     return ret;        
       
   602     }
       
   603   
       
   604 // ---------------------------------------------------------------------------
       
   605 // CVIMPSTEngineServiceTableFetcher::GetDefaultDomainNameL()
       
   606 // ---------------------------------------------------------------------------
       
   607 //
       
   608 void CVIMPSTEngineServiceTableFetcher::GetDefaultDomainNameL( 
       
   609     TUint32 aServiceId, TDes& aDefaultDomainName )
       
   610     {
       
   611     TRACE( T_LIT( 
       
   612        "CVIMPSTEngineServiceTableFetcher::GetDefaultDomainNameL start")); 
       
   613     
       
   614     TRACE( T_LIT("GetContactStoreIdL() ServiceId: %d"), aServiceId );
       
   615         
       
   616     CSPProperty* property = CSPProperty::NewLC();
       
   617     TInt err = iSettings->FindPropertyL( aServiceId,
       
   618                                 ESubPropertyPresenceAddrScheme,      
       
   619                                 *property );    
       
   620 	if (KErrNone == err)
       
   621 		{	
       
   622 	    property->GetValue( aDefaultDomainName );	    
       
   623 		}
       
   624 
       
   625     CleanupStack::PopAndDestroy( property );
       
   626     
       
   627     TRACE( T_LIT("GetContactStoreIdL() - StoreId: %S"), &aDefaultDomainName );                
       
   628     
       
   629     TRACE( T_LIT( 
       
   630        "CVIMPSTEngineServiceTableFetcher::GetDefaultDomainNameL end"));  
       
   631  	
       
   632     } 
       
   633 
       
   634    
       
   635 // End of file