--- 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 <spsettings.h>
-#include <spentry.h>
-#include <spproperty.h>
-
-
-// Phonebook shutter
-#include <apgtask.h>
-#include <w32std.h>
-#include <Pbk2UID.h>
-#include <apgcli.h>
-#include <apaid.h>
-
-#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<TUint32>& aServiceIds )
- {
- TRACER_AUTO;
-
- RArray<TServiceId> 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<TUint32> serviceIdArray;
- CleanupClosePushL( serviceIdArray );
- RArray<TServiceId> 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<TServiceId> 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