--- a/installationservices/swcomponentregistry/source/client/screntries.cpp Thu May 27 12:58:35 2010 +0300
+++ b/installationservices/swcomponentregistry/source/client/screntries.cpp Fri Jun 11 13:45:18 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
@@ -30,6 +30,7 @@
#include "usiflog.h"
#include <scs/streamingarray.h>
#include <scs/cleanuputils.h>
+#include <usif/scr/screntries_platform.h>
using namespace Usif;
@@ -841,6 +842,158 @@
return *iVendor;
}
+/////////////////////////////
+// TCustomAccessInfo
+/////////////////////////////
+
+EXPORT_C TCustomAccessInfo::TCustomAccessInfo(TSecureId aSecureId, TAccessMode aAccessMode)
+ {
+ iSecureId = aSecureId;
+ iAccessMode = aAccessMode;
+ }
+
+EXPORT_C TSecureId TCustomAccessInfo::SecureId() const
+ {
+ return iSecureId;
+ }
+
+EXPORT_C TAccessMode TCustomAccessInfo::AccessMode() const
+ {
+ return iAccessMode;
+ }
+
+/////////////////////////////
+// CSoftwareTypeRegInfo
+/////////////////////////////
+
+EXPORT_C CSoftwareTypeRegInfo* CSoftwareTypeRegInfo::NewL(const TDesC& aUniqueSoftwareTypeName)
+ {
+ CSoftwareTypeRegInfo* self = new (ELeave) CSoftwareTypeRegInfo();
+ CleanupStack::PushL(self);
+ self->iUniqueSoftwareTypeName = HBufC::NewL(aUniqueSoftwareTypeName.Length());
+ self->iUniqueSoftwareTypeName->Des().Copy(aUniqueSoftwareTypeName);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+EXPORT_C CSoftwareTypeRegInfo* CSoftwareTypeRegInfo::NewL(RReadStream& aStream)
+ {
+ CSoftwareTypeRegInfo* self = new (ELeave) CSoftwareTypeRegInfo();
+ CleanupStack::PushL(self);
+ self->InternalizeL(aStream);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CSoftwareTypeRegInfo::CSoftwareTypeRegInfo()
+ {
+ }
+
+EXPORT_C CSoftwareTypeRegInfo::~CSoftwareTypeRegInfo()
+ {
+ delete iUniqueSoftwareTypeName;
+ iCustomAccessList.Close();
+ iMimeTypes.Close();
+ iLocalizedSoftwareTypeNames.Close();
+ delete iLauncherExecutable;
+ }
+
+EXPORT_C void CSoftwareTypeRegInfo::ExternalizeL(RWriteStream& aStream) const
+ {
+ aStream << *iUniqueSoftwareTypeName;
+ aStream << iSifPluginUid.iUid;
+
+ //Sids
+ const TInt numSids = iCustomAccessList.Count();
+ aStream.WriteInt32L(numSids);
+ for (TInt i=0; i< numSids; ++i)
+ {
+ TUid sid = iCustomAccessList[i].SecureId();
+ aStream << sid.iUid;
+ aStream.WriteInt32L(iCustomAccessList[i].AccessMode());
+ }
+
+ // MIME types
+ const TInt numMimeTypes = iMimeTypes.Count();
+ aStream.WriteInt32L(numMimeTypes);
+ for (TInt i=0; i<numMimeTypes; ++i)
+ {
+ aStream << *iMimeTypes[i];
+ }
+
+ // Localized names
+ const TInt numLocalizedNames = iLocalizedSoftwareTypeNames.Count();
+ aStream.WriteInt32L(numLocalizedNames);
+ for (TInt i=0; i<numLocalizedNames; ++i)
+ {
+ aStream << *iLocalizedSoftwareTypeNames[i];
+ }
+
+ // Launcher executable
+ aStream << *iLauncherExecutable;
+ }
+
+void CSoftwareTypeRegInfo::InternalizeL(RReadStream& aStream)
+ {
+ ASSERT(iUniqueSoftwareTypeName == NULL);
+
+ iUniqueSoftwareTypeName = HBufC::NewL(aStream, EUniqueSwTypeNameMaxLength);
+
+ iSifPluginUid = TUid::Uid(aStream.ReadInt32L());
+
+ // Sids
+ const TInt numSids = aStream.ReadInt32L();
+ for (TInt i=0; i<numSids; ++i)
+ {
+ TSecureId secId(TUid::Uid(aStream.ReadInt32L()));
+ TCustomAccessInfo customAccessInfo(secId, static_cast<TAccessMode>(aStream.ReadInt32L()));
+ iCustomAccessList.AppendL(customAccessInfo);
+ }
+
+ // MIME types
+ const TInt numMimeTypes = aStream.ReadInt32L();
+ for (TInt i=0; i<numMimeTypes; ++i)
+ {
+ HBufC* mimeType = HBufC::NewLC(aStream, EUniqueSwTypeNameMaxLength);
+ iMimeTypes.AppendL(mimeType);
+ CleanupStack::Pop(mimeType);
+ }
+
+ // Localized names
+ const TInt numLocalizedNames = aStream.ReadInt32L();
+ for (TInt i=0; i<numLocalizedNames; ++i)
+ {
+ CLocalizedSoftwareTypeName* name = CLocalizedSoftwareTypeName::NewL(aStream);
+ CleanupStack::PushL(name);
+ iLocalizedSoftwareTypeNames.AppendL(name);
+ CleanupStack::Pop(name);
+ }
+
+ iLauncherExecutable = HBufC::NewL(aStream, ELauncherExecutableMaxLength);
+ }
+
+EXPORT_C void CSoftwareTypeRegInfo::SetMimeTypeL(const TDesC& aMimeType)
+ {
+ HBufC* mimeType = HBufC::NewLC(aMimeType.Length());
+ mimeType->Des().Copy(aMimeType);
+ iMimeTypes.AppendL(mimeType);
+ CleanupStack::Pop(mimeType);
+ }
+
+EXPORT_C void CSoftwareTypeRegInfo::SetLocalizedSoftwareTypeNameL(TLanguage aLanguage, const TDesC& aName)
+ {
+ CLocalizedSoftwareTypeName* name = CLocalizedSoftwareTypeName::NewLC(aName, aLanguage);
+ iLocalizedSoftwareTypeNames.AppendL(name);
+ CleanupStack::Pop(name);
+ }
+
+EXPORT_C void CSoftwareTypeRegInfo::SetLauncherExecutableL(const TDesC& aLauncherExecutable)
+ {
+ HBufC* launcherExecutable = HBufC::NewLC(aLauncherExecutable.Length());
+ launcherExecutable->Des().Copy(aLauncherExecutable);
+ iLauncherExecutable = launcherExecutable;
+ CleanupStack::Pop(launcherExecutable);
+ }
/////////////////////////////
// CComponentFilter
@@ -858,6 +1011,7 @@
delete iSwType;
delete iFile;
iPropertyList.ResetAndDestroy();
+ iPropertyOperatorList.Reset();
}
EXPORT_C CComponentFilter* CComponentFilter::NewL()
@@ -954,27 +1108,33 @@
iSetFlag |= EInstalledDrive;
}
-EXPORT_C void CComponentFilter::AddPropertyL(const TDesC& aName, const TDesC& aValue, TLanguage aLocale)
+EXPORT_C void CComponentFilter::AddPropertyL(const TDesC& aName, const TDesC& aValue, TLanguage aLocale,
+ TDbOperator aNameOperator, TDbOperator aValueOperator)
{
CPropertyEntry *prop = CLocalizablePropertyEntry::NewLC(aName, aValue, aLocale);
iPropertyList.AppendL(prop);
CleanupStack::Pop(prop);
+ iPropertyOperatorList.AppendL(TPropertyOperator(aNameOperator, aValueOperator));
iSetFlag |= EProperty;
}
-EXPORT_C void CComponentFilter::AddPropertyL(const TDesC& aName, TInt64 aValue)
+EXPORT_C void CComponentFilter::AddPropertyL(const TDesC& aName, TInt64 aValue, TDbOperator aNameOperator,
+ TDbOperator aValueOperator)
{
CPropertyEntry *prop = CIntPropertyEntry::NewLC(aName, aValue);
iPropertyList.AppendL(prop);
CleanupStack::Pop(prop);
+ iPropertyOperatorList.AppendL(TPropertyOperator(aNameOperator, aValueOperator));
iSetFlag |= EProperty;
}
-EXPORT_C void CComponentFilter::AddPropertyL(const TDesC& aName, const TDesC8& aValue)
+EXPORT_C void CComponentFilter::AddPropertyL(const TDesC& aName, const TDesC8& aValue, TDbOperator aNameOperator,
+ TDbOperator aValueOperator)
{
CPropertyEntry *prop = CBinaryPropertyEntry::NewLC(aName, aValue);
iPropertyList.AppendL(prop);
CleanupStack::Pop(prop);
+ iPropertyOperatorList.AppendL(TPropertyOperator(aNameOperator, aValueOperator));
iSetFlag |= EProperty;
}
@@ -995,6 +1155,7 @@
aStream << iInstalledDrives;
aStream << TCardinality(iRemovable);
ExternalizePointersArrayL(iPropertyList, aStream);
+ ExternalizeFixedLengthArrayL(iPropertyOperatorList, aStream);
aStream << *iFile;
aStream << TCardinality(iDrmProtected);
aStream << TCardinality(iHidden);
@@ -1019,6 +1180,8 @@
iRemovable = c;
iPropertyList.Reset();
InternalizePointersArrayL(iPropertyList, aStream);
+ iPropertyOperatorList.Reset();
+ InternalizeFixedLengthArrayL(iPropertyOperatorList, aStream);
DeleteObjectZ(iFile);
iFile = HBufC::NewL(aStream, KMaxTInt); // No restriction on length
// Read if it is DRM protected
@@ -1217,3 +1380,31 @@
{
return iComponentId;
}
+
+EXPORT_C CComponentFilter::TPropertyOperator::TPropertyOperator(TDbOperator aNameOperator, TDbOperator aValueOperator):
+ iNameOperator(aNameOperator),
+ iValueOperator(aValueOperator)
+ {
+ }
+
+void CComponentFilter::TPropertyOperator::ExternalizeL(RWriteStream& aStream) const
+ {
+ aStream.WriteInt32L(iNameOperator);
+ aStream.WriteInt32L(iValueOperator);
+ }
+
+EXPORT_C void CComponentFilter::TPropertyOperator::InternalizeL(RReadStream& aStream)
+ {
+ iNameOperator = static_cast<TDbOperator>(aStream.ReadInt32L());
+ iValueOperator = static_cast<TDbOperator>(aStream.ReadInt32L());
+ }
+
+EXPORT_C CComponentFilter::TDbOperator CComponentFilter::TPropertyOperator::NameOperator() const
+ {
+ return iNameOperator;
+ }
+
+EXPORT_C CComponentFilter::TDbOperator CComponentFilter::TPropertyOperator::ValueOperator() const
+ {
+ return iValueOperator;
+ }