sysstatemgmt/systemstarter/dscstoresrc/dscitem.cpp
changeset 0 4e1aa6a622a0
--- /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 <dscitem.h>
+#include <dscstoredefs.h>
+#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;	
+		}
+	}
+