diff -r 2b7283837edb -r 3104fc151679 uiservicetab/vimpstengine/src/cvimpstengineservicetablefetcher.cpp --- a/uiservicetab/vimpstengine/src/cvimpstengineservicetablefetcher.cpp Thu Aug 19 09:41:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,609 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Handles the use of Service Provider Settings API -* -*/ - - -// INCLUDE FILES -#include -#include -#include - - -// Phonebook shutter -#include -#include -#include -#include -#include - -#include "cvimpstengineservicetablefetcher.h" -#include "cvimpstenginecchhandler.h" - -#include "vimpstextentionuiuid.h" -#include "tvimpstconsts.h" -#include "mvimpstenginefactory.h" -#include "cvimpstenginefactory.h" -#include "mvimpststorageserviceview.h" -#include "cvimpststoragemanagerfactory.h" -#include "uiservicetabtracer.h" - - - -// ================= MEMBER FUNCTIONS ======================= - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::CVIMPSTEngineServiceTableFetcher() -// --------------------------------------------------------------------------- -// -CVIMPSTEngineServiceTableFetcher::CVIMPSTEngineServiceTableFetcher() - { - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::ConstructL() -// --------------------------------------------------------------------------- -// -void CVIMPSTEngineServiceTableFetcher::ConstructL() - { - TRACER_AUTO; - iSettings = CSPSettings::NewL(); - CompressViewIdsL(); - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::NewL() -// --------------------------------------------------------------------------- -// -CVIMPSTEngineServiceTableFetcher* - CVIMPSTEngineServiceTableFetcher::NewL( ) - { - TRACER_AUTO; - - CVIMPSTEngineServiceTableFetcher* self = NewLC(); - CleanupStack::Pop(self); - - return self; - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::NewLC() -// --------------------------------------------------------------------------- -// -CVIMPSTEngineServiceTableFetcher* - CVIMPSTEngineServiceTableFetcher::NewLC() - { - TRACER_AUTO; - - CVIMPSTEngineServiceTableFetcher* self = - new (ELeave) CVIMPSTEngineServiceTableFetcher( ); - CleanupStack::PushL(self); - self->ConstructL(); - - return self; - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher:: -// ~CVIMPSTEngineServiceTableFetcher() -// --------------------------------------------------------------------------- -// -CVIMPSTEngineServiceTableFetcher::~CVIMPSTEngineServiceTableFetcher() - { - TRACER_AUTO; - - - delete iSettings; - iSettings = NULL; - - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::GetMasterServiceIdsL() -// --------------------------------------------------------------------------- -// -void CVIMPSTEngineServiceTableFetcher::GetMasterServiceIdsL( - RArray& aServiceIds ) - { - TRACER_AUTO; - - RArray services; - CleanupClosePushL( services ); - iSettings->FindServiceIdsL( services ); - - const TInt serviceCount = services.Count(); - for ( TInt i( 0 ); i < serviceCount; i++ ) - { - TUint32 refContactUid = ContactViewUidL( services[i] ); - - if ( TUid::Uid( refContactUid ) == - TUid::Uid( KIMCONTACTSEXTNIMPLEMENTATIONUID ) - || TUid::Uid( refContactUid ) == - TUid::Uid( 0x20007B6D ) ) - { - TRACE( " found serviceid: (%d)", services[ i ] ); - - aServiceIds.Append( services[ i ] ); - - TRACE("service append ok" ); - - } - } - CleanupStack::PopAndDestroy( &services ); - - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::GetContactStoreIdL() -// --------------------------------------------------------------------------- -// -void CVIMPSTEngineServiceTableFetcher::GetContactStoreIdL( - TUint32 aServiceId, TDes& aContactStoreId ) - { - TRACER_AUTO; - - TRACE( "ServiceId: %d", aServiceId ); - - CSPProperty* property = CSPProperty::NewLC(); - TInt err = iSettings->FindPropertyL( aServiceId, - EPropertyContactStoreId, - *property ); - if (KErrNone == err) - { - err = property->GetValue( aContactStoreId ); - - } - - CleanupStack::PopAndDestroy( property ); - - TRACE( "StoreId: %S", &aContactStoreId ); - - - } - - - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::GetBrandIdL() -// --------------------------------------------------------------------------- -// -void CVIMPSTEngineServiceTableFetcher::GetBrandIdL( - TUint32 aServiceId, TDes8& aBrandId ) - { - TRACER_AUTO; - - TRACE( "ServiceId: %d", aServiceId ); - - HBufC* ret = HBufC::NewLC( KVIMPSTUISPSMaxPropertyLength ); - TPtr retPtr( ret->Des() ); - - CSPProperty* property = CSPProperty::NewLC(); - TInt err = iSettings->FindPropertyL( aServiceId, - EPropertyBrandId, - *property ); - if ( KErrNone == err ) - { - err = property->GetValue( retPtr ); - if ( KErrNone == err ) - { - aBrandId.Copy( retPtr ); - } - } - CleanupStack::PopAndDestroy( property ); - CleanupStack::PopAndDestroy( ret ); - - TRACE( "BrandId: %S", &aBrandId ); - - } - - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::FindPropertyL() -// --------------------------------------------------------------------------- -// -TInt CVIMPSTEngineServiceTableFetcher::FindPropertyL( TUint32 aServiceId, - TServicePropertyName aPropertyName ) - { - TRACER_AUTO; - - TRACE( "ServiceId: %d Property: %d", aServiceId, aPropertyName ); - - CSPProperty* property = CSPProperty::NewLC(); - TInt result = iSettings->FindPropertyL( aServiceId, - aPropertyName, - *property ); - CleanupStack::PopAndDestroy( property ); - - TRACE(" Result: %d", result ); - - - return result; - } - - - - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::PropertyBrandVersionL() -// --------------------------------------------------------------------------- -// -TInt CVIMPSTEngineServiceTableFetcher::PropertyBrandVersionL( - TUint32 aServiceId ) - { - TRACER_AUTO; - - TRACE( "ServiceId: %d", aServiceId ); - - TInt brandVersion = KErrNotFound; // default value - CSPProperty* property = CSPProperty::NewLC(); - TInt err = iSettings->FindPropertyL( aServiceId, - EPropertyBrandVersion, - *property ); - if ( KErrNone == err ) - { - err = property->GetValue( brandVersion ); - } - - CleanupStack::PopAndDestroy( property ); - - TRACE( "version: %d", brandVersion ); - - return brandVersion; - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::PropertyBrandLanguageL() -// --------------------------------------------------------------------------- -// -TLanguage CVIMPSTEngineServiceTableFetcher::PropertyBrandLanguageL( - TUint32 aServiceId ) - { - TRACER_AUTO; - - TRACE( " ServiceId: %d", aServiceId ); - - // ELangInternationalEnglish is selected as Default Brand Language Id. - TInt brandLanguage = ELangInternationalEnglish; - CSPProperty* property = CSPProperty::NewLC(); - TInt err = iSettings->FindPropertyL( aServiceId, - EPropertyBrandLanguage, - *property ); - if ( KErrNone == err ) - { - err = property->GetValue( brandLanguage ); - } - CleanupStack::PopAndDestroy( property ); - - TRACE( "brandLanguage: (%d) ", brandLanguage ); - - - return ((TLanguage) (brandLanguage) ); - } - - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::ContactViewUidL() -// --------------------------------------------------------------------------- -// -TUint32 CVIMPSTEngineServiceTableFetcher::ContactViewUidL( - TUint32 aServiceId ) - { - TRACER_AUTO; - - TRACE( "ServiceId: %d", aServiceId ); - - TInt contactViewUid = KErrNotFound; - CSPProperty* property = CSPProperty::NewLC(); - TInt err = iSettings->FindPropertyL( aServiceId, - EPropertyContactViewPluginId, - *property ); - if ( KErrNone == err ) - { - property->GetValue( contactViewUid ); - } - CleanupStack::PopAndDestroy( property ); - - TRACE( "ContactViewUid: %d", contactViewUid ); - - - return contactViewUid; - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::GetServiceNameL() -// --------------------------------------------------------------------------- -// -void CVIMPSTEngineServiceTableFetcher::GetServiceNameL( - TUint32 aServiceId, TDes& aServiceName ) - { - TRACER_AUTO; - - TRACE( "ServiceId: %d", aServiceId ); - - CSPEntry* entry = CSPEntry::NewLC(); - TInt err = iSettings->FindEntryL( aServiceId, *entry ) ; - if ( !err ) - { - aServiceName = entry->GetServiceName(); - } - - CleanupStack::PopAndDestroy( entry ); - - TRACE("ServiceName: %S", &aServiceName ); - - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::DoHandleNotifyChangeL() -// --------------------------------------------------------------------------- -// -void CVIMPSTEngineServiceTableFetcher::DoHandleNotifyChangeL( - TServiceId aServiceId, TBool aNewService, MVIMPSTEngine* aEngine ) - { - TRACER_AUTO; - TRACE( "ServiceId:%d", aServiceId ); - TBool serviceFound( EFalse ); - if(!aNewService) - { - RArray serviceIdArray; - CleanupClosePushL( serviceIdArray ); - RArray services; - CleanupClosePushL( services ); - GetMasterServiceIdsL(serviceIdArray); - iSettings->FindServiceIdsL(services ); - const TInt serviceCount = services.Count(); - for ( TInt index = 0 ; index < serviceCount ; index++ ) - { - if ( services[index] == aServiceId ) - { - TRACE( "Service (%d) found", aServiceId ); - serviceFound = ETrue; - } - } - CleanupStack::PopAndDestroy( &services ); - CleanupStack::PopAndDestroy( &serviceIdArray ); - } - if ( aNewService || !serviceFound ) // new service or MECO service not found - { - // check if any other services other then MECO exists before - // shutting down the phonebook. there can be services which does't use - // MECO UI ( example OVI - does't use MECO UI it uses own UI ) - // check with the property EPropertyContactViewPluginId in the service - // this will the meco UID in case of MECO Service. - //this is a temperory hack as phonebook doesnot refresh once we delete or add any service - //once phonebook gives a permanant fix ,remove the below code - if(( TUid::Uid(ContactViewUidL( aServiceId )) == TUid::Uid( KIMCONTACTSEXTNIMPLEMENTATIONUID )) || aEngine ) - { // only MecoServicetabs shutdown phonebook. - TRACE( "removing service" ); //or while deleting service from settings - CompressViewIdsL(); //check whether engine exists,which is true for only MecoServicetabs. - if(aEngine) - { - aEngine->DeleteDataBaseL(); - } - ShutDownPhonebookL(); - } - TRACE( "service removed" ); - } - - } -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::CompressViewIdsL() -// --------------------------------------------------------------------------- -// -TBool CVIMPSTEngineServiceTableFetcher::CompressViewIdsL( - TServiceId aServiceId ) - { - TRACER_AUTO; - TRACE(" ServiceId: %d", aServiceId ); - - TBool ret = EFalse; - // Compress view id's in service table - RArray services; - CleanupClosePushL( services ); - iSettings->FindServiceIdsL( services ); - TUint32 serviceId = 0; - const TInt serviceCount = services.Count(); - for ( TInt i( 0 ); i < serviceCount; i++ ) - { - serviceId = services[i]; - TUint32 refContactUid = ContactViewUidL( serviceId ); - if ( TUid::Uid( refContactUid ) == - TUid::Uid( KIMCONTACTSEXTNIMPLEMENTATIONUID ) ) - { - - TRACE( " -> compressing view ids, service: %d", serviceId ); - TRACE( " -> compressing view ids, view id: (%d)", ( KVIMPSTTabbedViewIdBase+ serviceId ) ); - - WriteTabViewIdToServiceTableL( services[ i ], ( KVIMPSTTabbedViewIdBase + serviceId ) ); - - ret = ETrue; - } - } - CleanupStack::PopAndDestroy( &services ); - - TRACE( "CompressViewIdsL returns: (%d)", ret ); - - return ret; - } - - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::WriteTabViewIdToServiceTableL() -// --------------------------------------------------------------------------- -// -void CVIMPSTEngineServiceTableFetcher::WriteTabViewIdToServiceTableL( - TUint32 aServiceId, TUint aViewId ) - { - TRACER_AUTO; - - TRACE( "aServiceId: %d, aViewId: %d ",aServiceId, aViewId ); - - // Write specific view id to service table - // No need to check for error beacuse - // we need to add/update the property - - - CSPProperty* property = CSPProperty::NewLC(); - iSettings->FindPropertyL( aServiceId, - EPropertyContactViewId, - *property ); - - TRACE( " OK"); - - TInt err = property->SetName( EPropertyContactViewId ); - - TRACE( " ERR1=%d", err ); - - TInt err2 = property->SetValue( aViewId ); - - if ( !err && !err2 ) - { - iSettings->AddOrUpdatePropertyL( aServiceId, *property ); - } - - TRACE(" ERR2=%d", err2 ); - - - CleanupStack::PopAndDestroy( property ); - - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::ShutDownPhonebookL() -// --------------------------------------------------------------------------- -// -void CVIMPSTEngineServiceTableFetcher::ShutDownPhonebookL() - { - TRACER_AUTO; - - // Kills phonebook if running - RWsSession ws; - User::LeaveIfError( ws.Connect() ); - CleanupClosePushL( ws ); - TApaTaskList list( ws ); - TUid uid = { KPbk2UID3 }; - TApaTask task( list.FindApp( uid ) ); - if ( task.Exists() ) - { - task.EndTask(); - } - CleanupStack::PopAndDestroy( &ws ); // ws - - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::XimpAdapterUidL() -// --------------------------------------------------------------------------- -// -TInt CVIMPSTEngineServiceTableFetcher::XimpAdapterUidL( - TUint32 aServiceId ) - { - TRACER_AUTO; - - TRACE( "ServiceId: %d", aServiceId ); - - TInt ret = KErrNotFound; - CSPProperty* property = CSPProperty::NewLC(); - - TInt err = iSettings->FindPropertyL( aServiceId, - EPropertyPCSPluginId, - *property ); - if (KErrNone == err) - { - property->GetValue( ret ); - } - - CleanupStack::PopAndDestroy( property ); - - - TRACE( "XimpAdapterUid: %d ",ret ); - - return ret; - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::PresenceRequestStatusL() -// --------------------------------------------------------------------------- -// -TVIMPSTEnums::TVIMPSTPresenceRequestStatus -CVIMPSTEngineServiceTableFetcher::PresenceRequestStatusL( - TUint32 aServiceId ) - { - TRACER_AUTO; - - TRACE( " ServiceId: %d", aServiceId ); - - TVIMPSTEnums::TVIMPSTPresenceRequestStatus ret = - TVIMPSTEnums::ESVCEPresenceRequestStatusUnKnown; - - CSPProperty* property = CSPProperty::NewLC(); - - TInt err = iSettings->FindPropertyL( aServiceId, - ESubPropertyPresenceRequestPreference, - *property ); - if ( KErrNone == err ) - { - TOnOff value = EOff; - err = property->GetValue( value ); - if ( !err ) - { - if ( EOn == value ) - { - ret = TVIMPSTEnums::ESVCEPresenceRequestStatusAutoAccept; - } - else - { - ret = TVIMPSTEnums::ESVCEPresenceRequestStatusAlwaysAsk; - } - } - } - - CleanupStack::PopAndDestroy( property ); - - TRACE("PresenceRequestStatus: %d ", ret ); - - return ret; - } - -// --------------------------------------------------------------------------- -// CVIMPSTEngineServiceTableFetcher::GetDefaultDomainNameL() -// --------------------------------------------------------------------------- -// -void CVIMPSTEngineServiceTableFetcher::GetDefaultDomainNameL( - TUint32 aServiceId, TDes& aDefaultDomainName ) - { - TRACER_AUTO; - - - TRACE( "ServiceId: %d", aServiceId ); - - CSPProperty* property = CSPProperty::NewLC(); - TInt err = iSettings->FindPropertyL( aServiceId, - ESubPropertyPresenceAddrScheme, - *property ); - if (KErrNone == err) - { - property->GetValue( aDefaultDomainName ); - } - - CleanupStack::PopAndDestroy( property ); - - TRACE( " StoreId: %S", &aDefaultDomainName ); - - - } - - -// End of file