diff -r 3104fc151679 -r 9a48e301e94b uiservicetab/vimpstdetailsviewplugin/src/cvimpstdetailsviewfactory.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiservicetab/vimpstdetailsviewplugin/src/cvimpstdetailsviewfactory.cpp Wed Sep 01 12:33:36 2010 +0100 @@ -0,0 +1,165 @@ +/* +* 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: Implementation of detailsview plugin control container + * +*/ +// settings + +#include +#include +#include +#include +#include + +#include "cvimpstdetailsviewpluginfactory.h" +#include "cvimpstdetailsviewplugin.h" + +#include "uiservicetabtracer.h" +// meco service uid +#define KMECOIMPLEMENTATIONUID 0x20012423 +// --------------------------------------------------------------------------- +// CVIMPSTDetailsViewPluginFactory::NewL +// --------------------------------------------------------------------------- +// +CVIMPSTDetailsViewPluginFactory* CVIMPSTDetailsViewPluginFactory::NewL() + { + CVIMPSTDetailsViewPluginFactory* self = new ( ELeave ) CVIMPSTDetailsViewPluginFactory(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop();//self, do not pass the parameter to pop since this is an M Class.. + return self; + } + +// --------------------------------------------------------------------------- +// CVIMPSTDetailsViewPluginFactory::CVIMPSTDetailsViewPluginFactory +// --------------------------------------------------------------------------- +// +CVIMPSTDetailsViewPluginFactory::CVIMPSTDetailsViewPluginFactory(): + iServiceId( 0 ) + { + } + +// --------------------------------------------------------------------------- +// CVIMPSTDetailsViewPluginFactory::ConstructL +// --------------------------------------------------------------------------- +// +void CVIMPSTDetailsViewPluginFactory::ConstructL() + { + TRACER_AUTO; + + RProperty::Define(KMeCoPropertyUid, KMeCoXSPDetailsServiceIdKey, RProperty::EInt, + ECapabilityReadUserData ,ECapabilityWriteUserData); + + ReadServiceIdL(); + if(iServiceIds.Count() == 0) + { + User::Leave(KErrArgument); + } + + } +// --------------------------------------------------------------------------- +// CVIMPSTDetailsViewPluginFactory::~CVIMPSTDetailsViewPluginFactory +// --------------------------------------------------------------------------- +// +CVIMPSTDetailsViewPluginFactory::~CVIMPSTDetailsViewPluginFactory() + { + iServiceIds.Reset(); + iServiceIds.Close(); + RProperty::Set(KMeCoPropertyUid, KMeCoXSPDetailsServiceIdKey, 0 ); //reset to zero + } + +// --------------------------------------------------------------------------- +// CVIMPSTDetailsViewPluginFactory::TabViewCount +// --------------------------------------------------------------------------- +// +TInt CVIMPSTDetailsViewPluginFactory::TabViewCount() + { + TRACER_AUTO; + // read the service id from RProperty + RProperty::Get(KMeCoPropertyUid, KMeCoXSPDetailsServiceIdKey, iServiceId ); + TInt returnVal = 0; + if( iServiceId <= 0 ) + { + TRACE("iservice <=0"); + return iServiceIds.Count(); + } + else + { + TRACE("iservice > 0"); + iServiceIds.Reset(); + iServiceIds.Append( iServiceId ); + returnVal = 1; + } + return returnVal; + } + +// --------------------------------------------------------------------------- +// CVIMPSTDetailsViewPluginFactory::CreateTabViewL +// --------------------------------------------------------------------------- +// +CCCAppViewPluginBase* CVIMPSTDetailsViewPluginFactory::CreateTabViewL( TInt aIndex ) + { + TRACER_AUTO; + + TRACE("aIndex = %d", aIndex); + CCCAppViewPluginBase* viewPluginBase = NULL; + if( aIndex < iServiceIds.Count() && aIndex >= 0 ) + { + TRACE("creating view aIndex = %d", aIndex); + viewPluginBase = CVIMPSTDetailsViewPlugin::NewL( iServiceIds[aIndex]); + TRACE("view created"); + } + else + { + User::Leave(KErrArgument); + } + + return viewPluginBase; + } + +// --------------------------------------------------------------------------- +// CVIMPSTDetailsViewPluginFactory::ReadServiceIdL +// --------------------------------------------------------------------------- +// +TInt CVIMPSTDetailsViewPluginFactory::ReadServiceIdL() + { + TRACER_AUTO; + CSPSettings* settings = CSPSettings::NewLC(); + iServiceIds.Reset(); + ///////////////////////Get Service Id//////////////// + RArray services; + CleanupClosePushL( services ); + settings->FindServiceIdsL( services ); + const TInt serviceCount = services.Count(); + for ( TInt i( 0 ); i < serviceCount; i++ ) + { + TInt refContactUid = KErrNotFound; + CSPProperty* property = CSPProperty::NewLC(); + settings->FindPropertyL( services[i],EPropertyContactViewPluginId,*property ); + if ( property ) + { + property->GetValue( refContactUid ); + } + CleanupStack::PopAndDestroy( property ); + if ( (TUid::Uid( refContactUid ) == TUid::Uid( KMECOIMPLEMENTATIONUID )) + || (TUid::Uid( refContactUid ) == TUid::Uid( 0x20007B6D ) ) + || (TUid::Uid( refContactUid ) == TUid::Uid( 0x2002B334 ))) + { + iServiceIds.Append( services[i] ); + } + } + CleanupStack::PopAndDestroy( &services ); + CleanupStack::PopAndDestroy( settings ); + return iServiceIds.Count(); + }