sl@0: /* sl@0: * Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of the License "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * sl@0: */ sl@0: sl@0: sl@0: #include sl@0: #include sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include "f32defaultattributes.h" sl@0: sl@0: sl@0: using namespace ContentAccess; sl@0: sl@0: TInt TF32DefaultAttributes::GetAttribute(TInt aAttribute, TInt& aValue, const TDesC& ) sl@0: { sl@0: TInt err = KErrNone; sl@0: // All files handled by the F32 agent are unprotected and have the same sl@0: // standard set of attributes sl@0: switch(aAttribute) sl@0: { sl@0: case EIsForwardable: sl@0: case EIsModifyable: sl@0: case EIsCopyable: sl@0: case ECanPlay: sl@0: case ECanPrint: sl@0: case ECanExecute: sl@0: case ECanView: sl@0: case ECanRewind: sl@0: case ECopyPaste: sl@0: case ECanMove: sl@0: case ECanRename: sl@0: case ECanAutomaticConsume: sl@0: aValue = ETrue; sl@0: break; sl@0: case EIsMediaPlayerOnly: sl@0: case EIsAutomatedUseOnly: sl@0: case EIsProtected: sl@0: case EPreviewAvailable: sl@0: aValue = EFalse; sl@0: break; sl@0: case ETrackNumber: sl@0: case EContentCDataInUse: sl@0: case EContentVersion: sl@0: default: sl@0: err = KErrCANotSupported; sl@0: break; sl@0: }; sl@0: return err; sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::GetAttributeSet(RAttributeSet& aAttributeSet, const TDesC& aUri) sl@0: { sl@0: TInt i = 0; sl@0: TInt attribute = 0; sl@0: TInt value=0; sl@0: TInt err = KErrNone; sl@0: TInt numAttributes = aAttributeSet.Count(); sl@0: sl@0: // loop through all the attriutes in the set and find their values sl@0: for(i = 0; i < numAttributes; i++) sl@0: { sl@0: attribute = aAttributeSet[i]; sl@0: err = GetAttribute(attribute, value, aUri); sl@0: aAttributeSet.SetValue(attribute, value, err); sl@0: } sl@0: return KErrNone; sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::GetStringAttribute(TInt aAttribute, TDes& aValue, const TDesC& aUri) sl@0: { sl@0: TInt err = KErrNone; sl@0: TBuf8 mimeType; sl@0: sl@0: switch(aAttribute) sl@0: { sl@0: case EMimeType: sl@0: TRAP(err, GetMimeTypeL(aUri, mimeType)); sl@0: if(err == KErrNone) sl@0: { sl@0: aValue.Copy(mimeType); sl@0: } sl@0: break; sl@0: default: sl@0: err = KErrCANotSupported; sl@0: break; sl@0: }; sl@0: return err; sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TDesC& aUri) sl@0: { sl@0: TInt i = 0; sl@0: TInt attribute = 0; sl@0: TInt err = KErrNone; sl@0: TBuf buf; sl@0: sl@0: TInt numAttributes = aStringAttributeSet.Count(); sl@0: sl@0: // loop through all the attriutes in the set and find their values sl@0: for(i = 0; i < numAttributes; i++) sl@0: { sl@0: buf.SetLength(0); sl@0: attribute = aStringAttributeSet[i]; sl@0: err = GetStringAttribute(attribute, buf, aUri); sl@0: err = aStringAttributeSet.SetValue(attribute,buf, err); sl@0: if(err != KErrNone) sl@0: { sl@0: return err; sl@0: } sl@0: } sl@0: return KErrNone; sl@0: } sl@0: sl@0: void TF32DefaultAttributes::GetMimeTypeL(const TDesC& aURI, TDes8& aMimeType) sl@0: { sl@0: TUid appUid(KNullUid); sl@0: TDataType dataType; sl@0: RApaLsSession apparcSession; sl@0: sl@0: // Connect to Apparc sl@0: User::LeaveIfError(apparcSession.Connect()); sl@0: CleanupClosePushL(apparcSession); sl@0: sl@0: User::LeaveIfError(apparcSession.AppForDocument(aURI, appUid, dataType)); sl@0: sl@0: if(dataType.Des8().Length() == 0) sl@0: { sl@0: User::Leave(KErrNotFound); sl@0: } sl@0: sl@0: aMimeType.Append(dataType.Des8()); sl@0: CleanupStack::PopAndDestroy(&apparcSession); sl@0: } sl@0: sl@0: sl@0: TInt TF32DefaultAttributes::GetAttribute(TInt aAttribute, TInt& aValue, RFile& /*aFile*/) sl@0: { sl@0: return GetAttribute(aAttribute, aValue, KNullDesC); sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::GetAttributeSet(RAttributeSet& aAttributeSet, RFile& aFile) sl@0: { sl@0: TInt i = 0; sl@0: TInt attribute = 0; sl@0: TInt value = 0; sl@0: TInt err = KErrNone; sl@0: TInt numAttributes = aAttributeSet.Count(); sl@0: sl@0: // loop through all the attributes in the set and find their values sl@0: for(i = 0; i < numAttributes; i++) sl@0: { sl@0: attribute = aAttributeSet[i]; sl@0: err = GetAttribute(attribute, value, aFile); sl@0: aAttributeSet.SetValue(attribute, value, err); sl@0: } sl@0: return KErrNone; sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::GetStringAttribute(TInt aAttribute, TDes& aValue, RFile& aFile) sl@0: { sl@0: TInt err = KErrNone; sl@0: TBuf8 mimeType; sl@0: sl@0: switch(aAttribute) sl@0: { sl@0: case EMimeType: sl@0: TRAP(err, GetMimeTypeL(aFile, mimeType)); sl@0: if(err == KErrNone) sl@0: { sl@0: aValue.Copy(mimeType); sl@0: } sl@0: break; sl@0: default: sl@0: err = KErrCANotSupported; sl@0: break; sl@0: }; sl@0: return err; sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, RFile& aFile) sl@0: { sl@0: TInt i = 0; sl@0: TInt attribute = 0; sl@0: TInt err = KErrNone; sl@0: TBuf buf; sl@0: sl@0: TInt numAttributes = aStringAttributeSet.Count(); sl@0: sl@0: // loop through all the attriutes in the set and find their values sl@0: for(i = 0; i < numAttributes; i++) sl@0: { sl@0: buf.SetLength(0); sl@0: attribute = aStringAttributeSet[i]; sl@0: err = GetStringAttribute(attribute, buf, aFile); sl@0: err = aStringAttributeSet.SetValue(attribute,buf, err); sl@0: if(err != KErrNone) sl@0: { sl@0: return err; sl@0: } sl@0: } sl@0: return KErrNone; sl@0: } sl@0: sl@0: void TF32DefaultAttributes::GetMimeTypeL(RFile& aFile, TDes8& aMimeType) sl@0: { sl@0: TUid appUid(KNullUid); sl@0: TDataType dataType; sl@0: RApaLsSession apparcSession; sl@0: sl@0: // Connect to Apparc sl@0: User::LeaveIfError(apparcSession.Connect()); sl@0: CleanupClosePushL(apparcSession); sl@0: sl@0: User::LeaveIfError(apparcSession.AppForDocument(aFile, appUid, dataType)); sl@0: sl@0: if(dataType.Des8().Length() == 0) sl@0: { sl@0: User::Leave(KErrNotFound); sl@0: } sl@0: sl@0: aMimeType.Append(dataType.Des8()); sl@0: CleanupStack::PopAndDestroy(&apparcSession); sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::CheckUniqueId(const TDesC& aUniqueId) sl@0: { sl@0: // The only UniqueId values that make sense for the F32 agent are sl@0: // a zero length descriptor (indicating the application is referring to the entire file sl@0: // or KDefaultContentObject which is also the entire file in the case of the F32 agent sl@0: if(aUniqueId.Length() == 0 || aUniqueId == KDefaultContentObject()) sl@0: { sl@0: return KErrNone; sl@0: } sl@0: else sl@0: { sl@0: return KErrNotFound; sl@0: } sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::CheckVirtualPath(const TVirtualPathPtr& aVirtualPath) sl@0: { sl@0: // check the Unique Id sl@0: TInt err = CheckUniqueId(aVirtualPath.UniqueId()); sl@0: sl@0: // check if the file exists sl@0: sl@0: sl@0: return err; sl@0: } sl@0: sl@0: TUint TF32DefaultAttributes::GetFileMode(TContentShareMode aMode) sl@0: { sl@0: sl@0: TUint fileMode = EFileStream | EFileRead; sl@0: sl@0: if(aMode == EContentShareReadWrite) sl@0: { sl@0: fileMode |= EFileShareReadersOrWriters; sl@0: } sl@0: else if(aMode == EContentShareExclusive) sl@0: { sl@0: fileMode |= EFileShareExclusive; sl@0: } sl@0: else sl@0: { sl@0: fileMode |= EFileShareReadersOnly; sl@0: } sl@0: sl@0: return fileMode; sl@0: } sl@0: sl@0: #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT sl@0: sl@0: TInt TF32DefaultAttributes::GetAttribute(const TDesC8& /*aHeaderData*/, TInt aAttribute, TInt& aValue) sl@0: { sl@0: return GetAttribute(aAttribute, aValue, KNullDesC); sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet) sl@0: { sl@0: TInt i = 0; sl@0: TInt attribute = 0; sl@0: TInt value = 0; sl@0: TInt err = KErrNone; sl@0: TInt numAttributes = aAttributeSet.Count(); sl@0: sl@0: // loop through all the attriutes in the set and find their values sl@0: for(i = 0; i < numAttributes; i++) sl@0: { sl@0: attribute = aAttributeSet[i]; sl@0: err = GetAttribute(aHeaderData, attribute, value); sl@0: aAttributeSet.SetValue(attribute, value, err); sl@0: } sl@0: return KErrNone; sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::GetStringAttribute(const TDesC8& /*aHeaderData*/, TInt aAttribute, TDes& aValue) sl@0: { sl@0: TInt err = KErrNone; sl@0: TBuf8 mimeType; sl@0: sl@0: switch(aAttribute) sl@0: { sl@0: case EMimeType: sl@0: aValue.Copy(KNullDesC()); sl@0: break; sl@0: case EContentID: sl@0: aValue.Copy(KDefaultContentObject()); sl@0: break; sl@0: default: sl@0: err = KErrCANotSupported; sl@0: break; sl@0: }; sl@0: return err; sl@0: } sl@0: sl@0: TInt TF32DefaultAttributes::GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aStringAttributeSet) sl@0: { sl@0: TInt i = 0; sl@0: TInt attribute = 0; sl@0: TInt err = KErrNone; sl@0: TBuf buf; sl@0: sl@0: TInt numAttributes = aStringAttributeSet.Count(); sl@0: sl@0: // loop through all the attriutes in the set and find their values sl@0: for(i = 0; i < numAttributes; i++) sl@0: { sl@0: buf.SetLength(0); sl@0: attribute = aStringAttributeSet[i]; sl@0: err = GetStringAttribute(aHeaderData, attribute, buf); sl@0: err = aStringAttributeSet.SetValue(attribute, buf, err); sl@0: if(err != KErrNone) sl@0: { sl@0: return err; sl@0: } sl@0: } sl@0: return KErrNone; sl@0: } sl@0: sl@0: #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT