#include <caf/content.h>
class ContentAccess::CContent : public CBase |
CContent allows applications to browse the content objects contained within a single file and construct a CData object for reading that content.
Applications will use an object of this type rather than the traditional RFile mechanisms. They will, however, be required to indicate DRM Intent - something that determines whether (and how) access to the content should be permitted by a Content-Access agent.
CContent allows direct access to meta-data such as the attributes of the content and indirect access to the plaintext data itself through the CData class.
Applications can use CContent to browse the hierarchy of content objects within a file containing several content objects.
During construction CContent loads the correct CAF Agent plugin to handle the file specified by the URI.
IMPORT_C const TAgent & | Agent | ( | ) | const |
Find out which agent is handling this file
Returns: The agent handling the File
Allows extended synchronous calls to the CAF agent handling this file
Applications familiar with the agent can pass objects in and out using serialization.
Parameter | Description |
---|---|
aCommand | The agent defined command. |
aInputBuffer | Non modifyable input data buffer. |
aOutputBuffer | Modifyable output buffer to hold the result of the command. |
Returns: The outcome of the agent specific command. KErrCANotSupported if the agent does not recognize the command. KErrOverflow if the output buffer supplied is too small. KErrPermissionDenied if the agent does not allow the client to execute the command. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
IMPORT_C void | AgentSpecificCommand | ( | TInt | aCommand, |
const TDesC8 & | aInputBuffer, | |||
TDes8 & | aOutputBuffer, | |||
TRequestStatus & | aStatus | |||
) |
Allows extended synchronous calls to the CAF agent handling this file Applications familiar with the agent can pass objects in and out using serialization. NB: It is important that the descriptor passed to aOutputBuffer remains in scope until the request has completed.
Parameter | Description |
---|---|
aCommand | The agent defined command. |
aInputBuffer | Non modifyable input data buffer. |
aOutputBuffer | Modifyable output buffer to hold the result of the command. |
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the command was successfully executed. KErrCANotSupported if the agent does not recognize the command. KErrOverflow if the output buffer supplied is too small. KErrPermissionDenied if the agent does not allow the client to execute the command. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors. |
IMPORT_C TInt | CancelNotifyStatusChange | ( | TRequestStatus & | aStatus | ) |
Cancel a previous notification request for the default content object
Parameter | Description |
---|---|
aStatus | The TRequestStatus supplied in the call to NotifyStatusChange(). |
Returns: The outcome of the cancel request. KErrNone if the request was cancelled. KErrNotFound if there was no matching request outstanding.
IMPORT_C TInt | CancelNotifyStatusChange | ( | TRequestStatus & | aStatus, |
const TDesC & | aUniqueId | |||
) |
Cancel a previous notification request
Parameter | Description |
---|---|
aStatus | The TRequestStatus supplied in the call to NotifyStatusChange(). |
aUniqueId | The UniqueId of the content object within the file. |
Returns: The outcome of the cancel request. KErrNone if the request was cancelled. KErrNotFound if there was no matching request outstanding.
IMPORT_C TInt | CancelRequestRights | ( | TRequestStatus & | aStatus | ) |
Cancel a previous RequestRights() request for the default content object
Parameter | Description |
---|---|
aStatus | The TRequestStatus that was supplied to the RequestRights() function. |
Returns: The result of the cancel rights request. KErrNone if the rights request was cancelled. KErrNotFound if there was no matching rights request outstanding.
IMPORT_C TInt | CancelRequestRights | ( | TRequestStatus & | aStatus, |
const TDesC & | aUniqueId | |||
) |
Cancel a previous RequestRights() request
Parameter | Description |
---|---|
aStatus | The TRequestStatus that was supplied to the RequestRights() function. |
aUniqueId | The objects Unique Id that was supplied to the RequestRights() function. |
Returns: The result of the cancel rights request. KErrNone if the rights request was cancelled. KErrNotFound if there was no matching rights request outstanding.
IMPORT_C TInt | CloseContainer | ( | ) |
Close the current container object and go back to previous enclosing container within the file.
Allows an application to access the content objects and any nested container objects within parent container.
Returns: Whether the container was closed. KErrNone if the container was closed. KErrNotFound if there is no enclosing container. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent.
IMPORT_C void | DisplayInfoL | ( | TDisplayInfo | aInfo | ) | const |
View information associated with the default content object
This call blocks execution and only returns once the display is dismissed by the user.
See also: ContentAccess::TDisplayInfo
Parameter | Description |
---|---|
aInfo | The information to display. |
IMPORT_C void | DisplayInfoL | ( | TDisplayInfo | aInfo, |
const TDesC & | aUniqueId | |||
) | const |
View information associated with a single content object
This call blocks execution and only returns once the display is dismissed by the user.
See also: ContentAccess::TDisplayInfo
Parameter | Description |
---|---|
aInfo | The information to display. |
aUniqueId | The unique id of the object within the file. |
Get an attribute for the default content object within the file
See also: ContentAccess::TAttribute
TInt value = 0; CContent* c = CContent::NewL(uri); TInt err =c->GetAttribute(EIsProtected, value); if(err == KErrNone && value) { DisplayPadLock(); }
Parameter | Description |
---|---|
aAttribute | The attribute to query, from ContentAccess::TAttribute. |
aValue | Used to return the attribute value. |
Returns: Whether the attribute value was updated. KErrNone if the value of the attribute was updated. KErrNotFound if the object with the given UniqueId was not found. KErrCANotSupported if the requested attribute does not exist. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Get an attribute for an object within the file
See also: ContentAccess::TAttribute
TInt value = 0; CContent* c = CContent::NewL(uri); TInt err =c->GetAttribute(EIsProtected, value, uniqueId); if(err == KErrNone && value) { DisplayPadLock(); }
Parameter | Description |
---|---|
aAttribute | The attribute to query, from ContentAccess::TAttribute. |
aValue | Used to return the attribute value. |
aUniqueId | The UniqueId of the object within the file. |
Returns: Whether the attribute value was updated. KErrNone if the value of the attribute was updated. KErrNotFound if the object with the given UniqueId was not found. KErrCANotSupported if the requested attribute does not exist. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
IMPORT_C TInt | GetAttributeSet | ( | RAttributeSet & | aAttributeSet | ) | const |
Get a set of attributes for the default content object within the file
See also: ContentAccess::TAttribute
The following example determines whether the default content object is protected and has rights that will enable it to be viewed by the user
CContent* content = CContent::NewLC(uri); RAttributeSet attributeSet; CleanupClosePushL(attributeSet); attributeSet->AddL(EProtected); attributeSet->AddL(ECanView); User::LeaveIfError(content->GetAttributeSet(attributeSet); TInt err = attributeSet.GetValue(EProtected, value); if(err == KErrNone && value) { // file is DRM protected } err = attributeSet.GetValue(ECanView, value); if(err == KErrNone && value) { // File has rights that allow it to be displayed on screen } // Finished CleanupStack::PopAndDestroy(2); // content, attributeSet.Close()
Parameter | Description |
---|---|
aAttributeSet | The set of attributes to query and update. |
Returns: Whether the attribute set was updated. KErrNone if the attributes were retrieved successfully. KErrNotFound if the default content object was not found. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
IMPORT_C TInt | GetAttributeSet | ( | RAttributeSet & | aAttributeSet, |
const TDesC & | aUniqueId | |||
) | const |
Get a set of attributes from an object within the file
See also: ContentAccess::TAttribute
The following example determines whether the default content object is protected and has rights that will enable it to be viewed by the user
CContent* content = CContent::NewLC(uri); RAttributeSet attributeSet; CleanupClosePushL(attributeSet); attributeSet->AddL(EProtected); attributeSet->AddL(ECanView); User::LeaveIfError(content->GetAttributeSet(attributeSet, uniqueId); TInt err = attributeSet.GetValue(EProtected, value); if(err == KErrNone && value) { // file is DRM protected } err = attributeSet.GetValue(ECanView, value); if(err == KErrNone && value) { // File has rights that allow it to be displayed on screen } // Finished CleanupStack::PopAndDestroy(2); // content, attributeSet.Close()
Parameter | Description |
---|---|
aAttributeSet | The set of attributes to query and update. |
aUniqueId | The unique ID of the object within the file. |
Returns: Whether that attribute set was updated. KErrNone if the attributes were retrieved successfully. KErrNotFound if the default content object was not found. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
IMPORT_C void | GetEmbeddedObjectsL | ( | RStreamablePtrArray< CEmbeddedObject > & | aArray | ) | const |
List all the embedded container objects and content objects within the current container
The UniqueId() member of CEmbeddedObject can be used to refer directly to a particular object within the file.
// Create a ccontent object for the file of interest CContent* content = CContent::NewLC(uri); // Define an array to store the results RStreamablePtrArray <CEmbeddedObject> array; CleanupClosePushL(array); // Find all the content and container objects within the current container content->GetEmbeddedObjectsL(array); // Do something with the array .... // Finished CleanupStack::PopAndDestroy(2);
Parameter | Description |
---|---|
aArray | The array to be populated with the embedded objects. |
IMPORT_C void | GetEmbeddedObjectsL | ( | RStreamablePtrArray< CEmbeddedObject > & | aArray, |
TEmbeddedType | aType | |||
) | const |
List all the embedded objects within the current container that are of the specified type
// Create a ccontent object for the file of interest CContent* content = CContent::NewLC(uri); // Define an array to store the results RStreamablePtrArray <CEmbeddedObject> array; CleanupClosePushL(array); // Find all the content objects within the current container content->GetEmbeddedObjectsL(array, EContentObject); // Do something with the array .... // Finished CleanupStack::PopAndDestroy(2);
Parameter | Description |
---|---|
aArray | The array to be populated with the embedded objects. |
aType | The type of objects to list. |
Get text string attributes or meta-data for the default content object within the file
See also: ContentAccess::TStringAttribute
TInt err = KErrNone; CContent* c = CContent::NewL(uri); TBuf <MAX_PATH> previewUri; err = c->GetStringAttribute(EPreviewURI, previewUri); if(err == KErrNone) { DisplayPreview(previewUri); }
Parameter | Description |
---|---|
aAttribute | The attribute to query, from ContentAccess::TStringAttribute. |
aValue | Returns the value of the attribute. |
Returns: Whether the attribute value was updated. KErrNone if the attribute was retrieved. KErrNotFound if the default content object was not found. KErrOverflow if the buffer was not large enough to return the result. KErrCANotSupported if the requested attribute does not exist. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Get text string attributes or meta-data for an object within the file
See also: ContentAccess::TStringAttribute
TInt err = KErrNone; CContent* c = CContent::NewL(uri); TBuf <MAX_PATH> previewUri; err = c->GetStringAttribute(EPreviewURI, previewUri, uniqueId); if(err == KErrNone) { DisplayPreview(previewUri); }
Parameter | Description |
---|---|
aAttribute | The attribute to query, from ContentAccess::TStringAttribute. |
aValue | Returns the value of the attribute. |
aUniqueId | The UniqueId of the object within the file. |
Returns: Whether the attribute value was updated. KErrNone if the attribute was retrieved. KErrNotFound if the object with the given UniqueId was not found. KErrOverflow if the buffer was not large enough to return the result. KErrCANotSupported if the requested attribute does not exist. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
IMPORT_C TInt | GetStringAttributeSet | ( | RStringAttributeSet & | aStringAttributeSet | ) | const |
Obtain a set of string attributes for the default content object within the file
See also: ContentAccess::TStringAttribute
CContent* content = CContent::NewLC(uri); // create the attribute set, add the attributes we are interested in RStringAttributeSet stringAttributeSet; CleanupClosePushL(stringAttributeSet); stringAttributeSet.AddL(EPreviewURI); stringAttributeSet.AddL(ETitle); User::LeaveIfError(content->GetStringAttributeSet(stringAttributeSet)); // Pass the value of the string attribute to DisplayPreview() TFileName previewUri; TInt err = stringAttributeSet.GetValue(EPreviewURI, previewUri); if(err == KErrNone) { DisplayPreview(previewUri); } CleanupStack::PopAndDestroy(2); // content, stringAttributeSet.Close()
Parameter | Description |
---|---|
aStringAttributeSet | The set of attributes to query and update. |
Returns: Whether the attribute set was updated. KErrNone if the attributes were retrieved successfully. KErrNotFound if the default content object was not found. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
IMPORT_C TInt | GetStringAttributeSet | ( | RStringAttributeSet & | aStringAttributeSet, |
const TDesC & | aUniqueId | |||
) | const |
Used to obtain a set of string attributes for an object within the file
See also: ContentAccess::TStringAttribute
CContent* content = CContent::NewLC(uri); // create the attribute set, add the attributes we are interested in RStringAttributeSet stringAttributeSet; CleanupClosePushL(stringAttributeSet); stringAttributeSet.AddL(EPreviewURI); stringAttributeSet.AddL(ETitle); User::LeaveIfError(content->GetStringAttributeSet(stringAttributeSet, uniqueId)); // Pass the value of the string attribute to DisplayPreview() TFileName previewUri; TInt err = stringAttributeSet.GetValue(EPreviewURI, previewUri); if(err == KErrNone) { DisplayPreview(previewUri); } CleanupStack::PopAndDestroy(2); // content, stringAttributeSet.Close()
Parameter | Description |
---|---|
aStringAttributeSet | The set of attributes to query and update. |
aUniqueId | The UniqueId of the container or content. |
Returns: Whether the attribute set was updated. KErrNone if the attributes were retrieved successfully. KErrNotFound if the object with the given UniqueId was not found. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
IMPORT_C CAttribute * | NewAttributeL | ( | TBool | aPreloaded | ) |
Create a CAttribute object to determine the attributes of the default content object
Returns: The agent handling the File
IMPORT_C CAttribute * | NewAttributeL | ( | TBool | aPreloaded, |
TContentShareMode | aShareMode | |||
) |
Create a CAttribute object to determine the attributes of the default content object
Returns: The agent handling the File
Constructs a new CContent object with a given URI. The URI can be in the same format as a virtual path for more information see CVirtualPath and TVirtualPathPtr
Parameter | Description |
---|---|
aURI | The filename, URI or virtual path of the DRM file. |
Returns: a new CContent object.
IMPORT_C CContent * | NewL | ( | const TDesC & | aURI, |
TContentShareMode | aShareMode | |||
) | [static] |
Constructs a new CContent object with a given URI. The URI can be in the same format as a virtual path for more information see CVirtualPath and TVirtualPathPtr
Parameter | Description |
---|---|
aURI | The filename, URI or virtual path of the DRM file. |
aShareMode | The sharing mode used when accessing the content. |
Returns: a new CContent object.
Constructs a new CContent object with an open file handle.
CContent will use a duplicate of this file handle, the client is free to close its file handle any time after creating the CContent object.
Parameter | Description |
---|---|
aFile | The file handle. The file must already be open before calling this method. The underlying RFs session should be shared for transfer to other processes using RFs::ShareProtected(), since the agent may use transfer this handle to its own or one of the system servers. |
Returns: a new CContent object.
Constructs a new CContent object with a given URI. The URI can be in the same format as a virtual path for more information see CVirtualPath and TVirtualPathPtr
Parameter | Description |
---|---|
aURI | The filename, URI or virtual path of the DRM file. |
Returns: a new CContent object.
IMPORT_C CContent * | NewLC | ( | const TDesC & | aURI, |
TContentShareMode | aShareMode | |||
) | [static] |
Constructs a new CContent object with a given URI. The URI can be in the same format as a virtual path for more information see CVirtualPath and TVirtualPathPtr
Parameter | Description |
---|---|
aURI | The filename, URI or virtual path of the DRM file. |
aShareMode | The sharing mode used when accessing the content. |
Returns: a new CContent object.
Constructs a new CContent object with an open file handle.
CContent will use a duplicate of this file handle, the client is free to close its file handle any time after creating the CContent object.
Parameter | Description |
---|---|
aFile | The file handle. The file must already be open before calling NewLC. The underlying RFs session should be shared for transfer to other processes using RFs::ShareProtected(), since the agent may use transfer this handle to its own or one of the system servers. |
Returns: a new CContent object.
IMPORT_C void | NotifyStatusChange | ( | TEventMask | aMask, |
TRequestStatus & | aStatus | |||
) |
Request notification for an event for the default content object within the file
See also: ContentAccess::TEventMask
Parameter | Description |
---|---|
aMask | Bitmask of events the caller is interested in. |
aStatus | The TRequestStatus object to complete if the event occurs. |
IMPORT_C void | NotifyStatusChange | ( | TEventMask | aMask, |
TRequestStatus & | aStatus, | |||
const TDesC & | aUniqueId | |||
) |
Request notification for an event for an object within the file
See also: ContentAccess::TEventMask
Parameter | Description |
---|---|
aMask | Bitmask of events the caller is interested in. |
aStatus | The TRequestStatus object to complete if the event occurs. |
aUniqueId | The UniqueId of the container or content. |
Open a Container object within the file.
Allows an application to access the content objects and any nested container objects within the specified container.
Parameter | Description |
---|---|
aUniqueId | The container object's unique ID. |
Returns: Whether the container was opened. KErrNone if the container was opened successfully. KErrNotFound if the container does not exist. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
Grants read access to the default content object based on evaluation of the supplied intent information.
Note that the intent is simply evaluated and not executed. To force the intent to be executed, clients must use the call ContentAccess::CData::ExecuteIntent().
CData* MyData = myContent->OpenContentL(ChosenIntent); ... delete MyData; // when finished accessing plaintext content
See also: ContentAccess::TIntent
Parameter | Description |
---|---|
aIntent | The intent indicator. |
Returns: A CData instance. The caller gets ownership of this object.
Grants read access to the content object based on evaluation of the supplied intent information.
Note that the intent is simply evaluated and not executed. To force the intent to be executed, clients must use the call ContentAccess::CData::ExecuteIntent().
CData* MyData = myContent->OpenContentL(ChosenIntent, uniqueId); ... delete MyData; // when finished accessing plaintext content
See also: ContentAccess::TIntent
Parameter | Description |
---|---|
aIntent | The intent indicator. |
aUniqueId | The object to open for reading. If the UniqueId is set to KNullDesC16() the entire file will be opened for reading with no transformation. |
Returns: A CData instance. The caller gets ownership of this object.
IMPORT_C CData * | OpenContentL | ( | TIntent | aIntent, |
TContentShareMode | aShareMode | |||
) |
Create a CData object for reading the content
See also: ContentAccess::TIntent
Parameter | Description |
---|---|
aIntent | The intended use of the content |
aShareMode | The mode used to open the file. If EContentShareExclusive is required, use CData::NewL() instead |
Returns: A new CData object
Grants read access to the default content object based on evaluation of the supplied intent information.
Note that the intent is simply evaluated and not executed. To force the intent to be executed, clients must use the call ContentAccess::CData::ExecuteIntent().
CData* myData = myContent->OpenContentLC(ChosenIntent); ... // when finished accessing plaintext content CleanupStack::PopAndDestroy(myData);
See also: ContentAccess::TIntent
Parameter | Description |
---|---|
aIntent | The intent indicator. |
Returns: A CData instance. The caller gets ownership of this object.
Grants read access to the content object based on evaluation of the supplied intent information.
Note that the intent is simply evaluated and not executed. To force the intent to be executed, clients must use the call ContentAccess::CData::ExecuteIntent().
CData* MyData = myContent->OpenContentLC(ChosenIntent, uniqueId); ... PopAndDestroy(MyData); // when finished accessing plaintext content
See also: ContentAccess::TIntent
Parameter | Description |
---|---|
aIntent | The intent indicator. |
aUniqueId | The object to open for reading. If the UniqueId is set to KNullDesC16() the entire file will be opened for reading with no transformation. |
Returns: A CData instance. The caller gets ownership of this object.
IMPORT_C void | RequestRights | ( | TRequestStatus & | aStatus | ) |
Request the agent to obtain rights for the default content object
This request may be handled differently by different agents. Some agents may open a browser and direct the user to a URL. Others may download and install the rights in the background.
The call should not block execution, applications can wait for a notification if they are interested in the outcome.
Parameter | Description |
---|---|
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the rights request was successful. KErrCANotSupported if the agent does not allow rights requests. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors. |
IMPORT_C void | RequestRights | ( | TRequestStatus & | aStatus, |
const TDesC & | aUniqueId | |||
) |
Request the agent to obtain rights for a protected content object
This request may be handled differently by different agents. Some agents may open a browser and direct the user to a URL. Others may download and install the rights in the background.
The call should not block execution, applications can wait for a notification if they are interested in the outcome.
Parameter | Description |
---|---|
aStatus | Asynchronous request status. On completion this will contain one of the following error codes: KErrNone if the rights request was successful. KErrCANotSupported if the agent does not allow rights requests. Otherwise one of the other CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors. |
aUniqueId | The unique id of the object within the file. |
IMPORT_C TInt | Search | ( | RStreamablePtrArray< CEmbeddedObject > & | aArray, |
const TDesC8 & | aMimeType, | |||
TBool | aRecursive | |||
) |
Search the current container for content objects with a particular mime type
_LIT8(KTextPlainMimeType, "text/plain"); // Create a ccontent object for the file of interest CContent* content = CContent::NewLC(uri); // Define an array to store the results RStreamablePtrArray <CEmbeddedObject> array; CleanupClosePushL(array); // Recursively search for all the content objects with the // specified mime type User::LeaveIfError(content->Search(array, KTextPlainMimeType(), ETrue)); // Do something with the array .... // Finished CleanupStack::PopAndDestroy(2);
Parameter | Description |
---|---|
aArray | The array to store the results of the search. The agent will add CEmbeddedObject objects to the supplied array. |
aMimeType | The mime type to search for. |
aRecursive | ETrue to search inside containers embedded within the current container, EFalse to search only the current container. |
Returns: The result of the search. KErrNone if the search was successful, even if no content objects were found. KErrPermissionDenied if the access to the protected content is not permitted by the CAF Agent. Otherwise one of the CAF error codes defined in caferr.h or one of the other system-wide error codes for any other errors.
IMPORT_C TInt | SetProperty | ( | TAgentProperty | aProperty, |
TInt | aValue | |||
) |
Request the agent handling this content to set a property value. If the property is set it is only set for this CContent session and does not impact other CAF users and is not set for CData products created by the CContent.
See also: ContentAccess::TAgentProperty
Parameter | Description |
---|---|
aProperty | The property to set. |
aValue | The value of the property. |
Returns: Whether the property was set. KErrNone if the property was set. KErrCANotSupported if the agent does not support the property or value. KErrAccessDenied if the agent does not permit the property to be changed. KErrPermissionDenied if the application does not have the necessary capability to change the property.
TContentShareMode | ShareMode | ( | ) | const [inline] |
Indicates the mode in which the content is shared.
Returns: The content sharing mode