diff -r 000000000000 -r 4e1aa6a622a0 sysstatemgmt/systemstarter/dscstoresrc/dscitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sysstatemgmt/systemstarter/dscstoresrc/dscitem.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,396 @@ +// Copyright (c) 2006-2009 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: +// + +#include +#include +#include "dscdatabase.h" +#include "sysstartpanic.h" + + +/** +Used to create an instance of the CDscItem class +@return An instance of CDscItem +@leave One of the system-wide error codes +@publishedAll +@released +*/ +EXPORT_C CDscItem* CDscItem::NewL() + { + CDscItem* self = CDscItem::NewLC(); + CleanupStack::Pop(self); + return self; + } + +/** +Used to create an instance of the CDscItem class. +The returned instance is put on the CleanupStack. +@return An instance of CDscItem +@leave One of the system-wide error codes +@publishedAll +@released +*/ +EXPORT_C CDscItem* CDscItem::NewLC() + { + CDscItem* self = new (ELeave) CDscItem(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +/** + @see NewL + @see SetFileParamsL + */ +EXPORT_C CDscItem* CDscItem::NewL(const TDesC& aFileName, const TDesC& aArgs) + { + CDscItem* self = CDscItem::NewLC(aFileName, aArgs); + CleanupStack::Pop(self); + return self; + } + +/** + @see NewLC + @see SetFileParamsL + */ +EXPORT_C CDscItem* CDscItem::NewLC(const TDesC& aFileName, const TDesC& aArgs) + { + CDscItem* self = CDscItem::NewLC(); + self->SetFileParamsL(aFileName, aArgs); + return self; + } + +EXPORT_C CDscItem::~CDscItem() + { + delete iStartupProperties; + } + +CDscItem::CDscItem() : + iDscId(TUid::Uid(KDefaultSymbianDsc)) + { + } + +void CDscItem::ConstructL() + { + iStartupProperties = CStartupProperties::NewL(); + } + +/** +Sets the Id of the Dynamic Startup Configuration list this item resides in. +The dscId of a DSC in the database must be set with this method before adding, updating, or deleting this item in this DSC +@publishedAll +@released +@param aDscId Id of the DSC this item resides in. +*/ +EXPORT_C void CDscItem::SetDscId(const TUid& aDscId) + { + iDscId=aDscId; + } + +/** +Accessor function returning the DscId of the DSC this item was retrieved from +@publishedAll +@released +@return DscId property +*/ +EXPORT_C TUid CDscItem::DscId() const + { + return iDscId; + } + +/** +Accessor function returning ItemId of the item +@publishedAll +@released +@return ItemId property +*/ +EXPORT_C TInt CDscItem::ItemId() const + { + return iItemId; + } + +/** +Accessor function returning the filename value of the item +@publishedAll +@released +@return iStartupProperties->FileName +@see CStartupProperties +*/ +EXPORT_C TPtrC CDscItem::FileName() const + { + return iStartupProperties->FileName(); + } + +/** +Accessor function returning the args value of the item +@publishedAll +@released +@return iStartupProperties->Args +@see CStartupProperties +*/ +EXPORT_C TPtrC CDscItem::Args() const + { + return iStartupProperties->Args(); + } + +/** +Accessor function returning the startup type value of the item +@publishedAll +@released +@return iStartupProperties->StartupType +@see CStartupProperties +*/ +EXPORT_C TStartupType CDscItem::StartupType() const + { + return iStartupProperties->StartupType(); + } + +/** +Accessor function returning the start method value of the item +@publishedAll +@released +@return iStartupProperties->StartMethod +@see CStartupProperties +*/ +EXPORT_C TStartMethod CDscItem::StartMethod() const + { + return iStartupProperties->StartMethod(); + } + +/** +Accessor function returning the number of retries value of the item +@publishedAll +@released +@return iStartupProperties->NoOfRetries +@see CStartupProperties +*/ +EXPORT_C TInt CDscItem::NoOfRetries() const + { + return iStartupProperties->NoOfRetries(); + } + +/** +Accessor function returning the timeout value of the item +@publishedAll +@released +@return iStartupProperties->Timeout +@see CStartupProperties +*/ +EXPORT_C TInt CDscItem::Timeout() const + { + return iStartupProperties->Timeout(); + } + +/** +Accessor function returning the monitored value of the item +@publishedAll +@released +@return iStartupProperties->Monitored +@see CStartupProperties +*/ +EXPORT_C TBool CDscItem::Monitored() const + { + return iStartupProperties->Monitored(); + } + +/** +Accessor function returning the viewless value of the item +@publishedAll +@released +@return iStartupProperties->Viewless +@see CStartupProperties +*/ +EXPORT_C TBool CDscItem::Viewless() const + { + return iStartupProperties->Viewless(); + } + +/** +Accessor function returning the StartInBackground value of the item +@publishedAll +@released +@return iStartupProperties->StartInBackground +@see CStartupProperties +*/ +EXPORT_C TBool CDscItem::StartInBackground() const + { + return iStartupProperties->StartInBackground(); + } + +/** +Sets the filename and args values of the item +@publishedAll +@released +@param aFileName filename of the component. +@param aArgs arg list of the component. +@leave KErrArgument - the filename is empty or one of the parameters exceeds KDscStoreMaxStringLength +@leave One of the system-wide error codes +@see CStartupProperties +*/ +EXPORT_C void CDscItem::SetFileParamsL(const TDesC& aFileName, const TDesC& aArgs) + { + + if ((aFileName==KNullDesC) || (aFileName.Length() > CDscDatabase::MaxStringLength()) || + (aArgs.Length() > CDscDatabase::MaxStringLength())) + { + User::Leave(KErrArgument); + } + iStartupProperties->SetFileParamsL(aFileName, aArgs); + } + +/** +Sets the start method value of the item +@publishedAll +@released +@param aStartMethod How we want to start the component +@leave KErrArgument - the start method is not either EFireAndForget or EWaitForStart +@see CStartupProperties +*/ +EXPORT_C void CDscItem::SetStartMethodL(TStartMethod aStartMethod) + { + if ((aStartMethod != EFireAndForget) && (aStartMethod != EWaitForStart)) + { + User::Leave(KErrArgument); + } + iStartupProperties->SetStartMethod(aStartMethod); + } + +/** +Sets the number of retries value of the item +@publishedAll +@released +@param aNumRetries number of retries should the start fail +@leave KErrArgument - the number of retries must be either 0 or 1 +@see CStartupProperties +*/ +EXPORT_C void CDscItem::SetNoOfRetriesL(TInt aNumRetries) + { + if (aNumRetries != 0 && aNumRetries != 1) + { + User::Leave(KErrArgument); + } + iStartupProperties->SetNoOfRetries(aNumRetries); + } + +/** +Sets the timeout value of the item +@publishedAll +@released +@param aTimeout timeout between retries +@leave KErrArgument - the timeout must not be negative +@see CStartupProperties +*/ +EXPORT_C void CDscItem::SetTimeoutL(TInt aTimeout) + { + if (aTimeout < 0) + { + User::Leave(KErrArgument); + } + iStartupProperties->SetTimeout(aTimeout); + } + +/** +Sets the monitored value value of the item +@publishedAll +@released +@param aMonitored Whether the component is to be monitored once it is started +@see CStartupProperties +*/ +EXPORT_C void CDscItem::SetMonitored(TBool aMonitored) + { + iStartupProperties->SetMonitored(aMonitored); + } + +/** +Sets the startup type value of the item +@publishedAll +@released +@param aType The startup type +@see CStartupProperties +*/ +EXPORT_C void CDscItem::SetStartupType(TStartupType aType) + { + iStartupProperties->SetStartupType(aType); + } + +/** +Sets the viewless value of the item +@publishedAll +@released +@param aViewless Whether the application is viewless or not +@see CStartupProperties +*/ +EXPORT_C void CDscItem::SetViewless(TBool aViewless) + { + iStartupProperties->SetViewless(aViewless); + } + +/** +Sets the StartInBackground value of the item +@publishedAll +@released +@param aStartInBackground Whether to start the application in the background or not +@see CStartupProperties +*/ +EXPORT_C void CDscItem::SetStartInBackground(TBool aStartInBackground) + { + iStartupProperties->SetStartInBackground(aStartInBackground); + } + + +/** +Returns a const reference to the embedded startup properties object +@publishedAll +@released +@return Const reference to the embedded CStartupProperties object +@see CStartupProperties +*/ +EXPORT_C const CStartupProperties& CDscItem::StartupProperties() const + { + return (*iStartupProperties); + } + +/** +Reset all variables in this instance back to constructor defaults. +This will enable to reuse this instance instead of having to delete it +and create a new one. +@publishedAll +@released +*/ +EXPORT_C void CDscItem::Reset() + { + iDscId = TUid::Uid(KDefaultSymbianDsc); + iItemId = 0; + iStartupProperties->Reset(); + } + +/** +Sets itemId parameter for the item. Can only be set once. +Normally the itemId is set by the DBMS, but if you know the itemId for a DscItem +in the database you can create an empty CDscItem, set the itemId+dscId and let the DBMS look +it up and fill in the other values. +@internalComponent +@released +@param aItemId Id of the item. +@panic if you try to change the value +*/ +EXPORT_C void CDscItem::SetItemId(const TInt aItemId) + { + if(aItemId != iItemId) + { + __ASSERT_ALWAYS( 0==iItemId, PanicNow(KPanicDsc, EIdCannotChange)); + iItemId = aItemId; + } + } +