--- a/Symbian3/PDK/Source/GUID-CCD3B91F-9E7F-5CE2-8AFC-4ABF787E5614.dita Tue Mar 30 11:42:04 2010 +0100
+++ b/Symbian3/PDK/Source/GUID-CCD3B91F-9E7F-5CE2-8AFC-4ABF787E5614.dita Tue Mar 30 11:56:28 2010 +0100
@@ -1,95 +1,95 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (c) 2007-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" 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:
--->
-<!DOCTYPE concept
- PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
-<concept id="GUID-CCD3B91F-9E7F-5CE2-8AFC-4ABF787E5614" xml:lang="en"><title>Using
-UPS Management API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
-<section><title>Introduction</title> <p>Decisions made by phone users are
-stored in a decision database. The management APIs allow device creators to
-implement a control panel-type application to enable phone users to carry
-out the following tasks on stored decisions: </p> <ul>
-<li id="GUID-63530E7D-3115-5CD6-9E76-A2D4991DB53E"><p>View "Always" and "Never"
-decisions </p> </li>
-<li id="GUID-2FD986BA-AA37-5D0B-98D4-CB874C964575"><p>Delete "Always" and
-"Never" decisions </p> </li>
-<li id="GUID-D72B1FA8-D636-52F0-A42E-DA8BC860AF5F"><p>Change "Always" decisions
-to "Never" decisions and vice versa </p> </li>
-</ul> <p>The APIs for viewing and deleting records can act on multiple records
-in one operation. The set of records may be controlled via a filter, for example
-only delete records for a client application with a particular SID. </p> <p>Applications
-that allow phone users to view their decisions need <codeph>ReadDeviceData</codeph> capability.
-Applications that allow phone users to delete their decisions need <codeph>WriteDeviceData</codeph> capability.
-Applications that allow phone users to change their decisions need <codeph>AllFiles</codeph> capability. </p> <p> <b>Note</b>: </p> <ul>
-<li id="GUID-2F16752F-9528-51EA-91C1-C06AE50A8D67"><p>Management APIs should
-not be called from the policy evaluator or the dialog creator. Doing so could
-lead to deadlock. It is best to call them from a control panel-type application. </p> </li>
-<li id="GUID-0098B86A-7540-5EE5-83C0-05A2CEBF1760"><p>A query may fail if
-another UPS operation is carried out at the same time as the query. For example,
-installing a new policy file at the same time as making a query may result
-in a conflict that causes the query to fail. </p> </li>
-</ul> </section>
-<example><title>UPS management APIs implementation example</title> <p>The
-following code uses the management APIs: </p> <codeblock id="GUID-8ED40779-581B-5CCA-A16A-DE845BACC034" xml:space="preserve">
-
-using namespace UserPromptService;
-...
-
-TRequestStatus rs;
-
-// Create a management session and a handle to it
-RUpsManagement mngmnt;
-User::LeaveIfError(mngmnt.Connect());
-
-// Create a filter, which stores the key values used to query the database. The empty
-// filter is first created and then the required filter keys are set separately
-CDecisionFilter *filter = CDecisionFilter::NewLC();
-filter->SetClientSid(KClientSid, EEqual);
-filter->SetServerSid(KServerSid, EEqual);
-
-// Create a view with a filter and status as parameters
-// Needs ReadDeviceData capability
-mngmnt.CreateView(*filter, rs);
-User::WaitForRequest(rs);
-
-CleanupStack::PopAndDestroy(filter);
-
-while(CDecisionRecord *record = mngmnt.NextMatchL())
-{
- CleanupStack::PushL(record);
- // Update the decision value for the current recordId
- // Needs AllFiles capability
- mngmnt.UpdateDecision(record->iRecordId, ETrue, rs);
- User::WaitForRequest(rs);
- // Delete the record via an exact filter.
- // Needs WriteDeviceData capability.
- // We could have just passed "filter" directly to RemoveDecision to remove all
- // the matching decisions with a single call
- CDecisionFilter *exactFilter = CDecisionFilter::NewLC(record->iClientSid,
- record->iEvaluatorId,
- record->iServiceId,
- record->iServerSid,
- record->iFingerprint,
- record->iClientEntity,
- record->iMajorPolicyVersion);
- mngmnt.RemoveDecisionsL(*exactFilter);
- CleanupStack::PopAndDestroy(exactFilter);
- CleanupStack::PopAndDestroy(record);
-};
-
-// Cancel and close the view and session
-mngmnt.CancelAndCloseView();
-
-// Delete the existing decision database completely.
-// Could also call RemoveDecisionsL( filter ) to remove parts of database
-// Needs WriteDeviceData capability
-mngmnt.DeleteDatabaseL();
-mngmnt.Close();
-</codeblock></example>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-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" 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:
+-->
+<!DOCTYPE concept
+ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
+<concept id="GUID-CCD3B91F-9E7F-5CE2-8AFC-4ABF787E5614" xml:lang="en"><title>Using
+UPS Management API</title><prolog><metadata><keywords/></metadata></prolog><conbody>
+<section><title>Introduction</title> <p>Decisions made by phone users are
+stored in a decision database. The management APIs allow device creators to
+implement a control panel-type application to enable phone users to carry
+out the following tasks on stored decisions: </p> <ul>
+<li id="GUID-63530E7D-3115-5CD6-9E76-A2D4991DB53E"><p>View "Always" and "Never"
+decisions </p> </li>
+<li id="GUID-2FD986BA-AA37-5D0B-98D4-CB874C964575"><p>Delete "Always" and
+"Never" decisions </p> </li>
+<li id="GUID-D72B1FA8-D636-52F0-A42E-DA8BC860AF5F"><p>Change "Always" decisions
+to "Never" decisions and vice versa </p> </li>
+</ul> <p>The APIs for viewing and deleting records can act on multiple records
+in one operation. The set of records may be controlled via a filter, for example
+only delete records for a client application with a particular SID. </p> <p>Applications
+that allow phone users to view their decisions need <codeph>ReadDeviceData</codeph> capability.
+Applications that allow phone users to delete their decisions need <codeph>WriteDeviceData</codeph> capability.
+Applications that allow phone users to change their decisions need <codeph>AllFiles</codeph> capability. </p> <p> <b>Note</b>: </p> <ul>
+<li id="GUID-2F16752F-9528-51EA-91C1-C06AE50A8D67"><p>Management APIs should
+not be called from the policy evaluator or the dialog creator. Doing so could
+lead to deadlock. It is best to call them from a control panel-type application. </p> </li>
+<li id="GUID-0098B86A-7540-5EE5-83C0-05A2CEBF1760"><p>A query may fail if
+another UPS operation is carried out at the same time as the query. For example,
+installing a new policy file at the same time as making a query may result
+in a conflict that causes the query to fail. </p> </li>
+</ul> </section>
+<example><title>UPS management APIs implementation example</title> <p>The
+following code uses the management APIs: </p> <codeblock id="GUID-8ED40779-581B-5CCA-A16A-DE845BACC034" xml:space="preserve">
+
+using namespace UserPromptService;
+...
+
+TRequestStatus rs;
+
+// Create a management session and a handle to it
+RUpsManagement mngmnt;
+User::LeaveIfError(mngmnt.Connect());
+
+// Create a filter, which stores the key values used to query the database. The empty
+// filter is first created and then the required filter keys are set separately
+CDecisionFilter *filter = CDecisionFilter::NewLC();
+filter->SetClientSid(KClientSid, EEqual);
+filter->SetServerSid(KServerSid, EEqual);
+
+// Create a view with a filter and status as parameters
+// Needs ReadDeviceData capability
+mngmnt.CreateView(*filter, rs);
+User::WaitForRequest(rs);
+
+CleanupStack::PopAndDestroy(filter);
+
+while(CDecisionRecord *record = mngmnt.NextMatchL())
+{
+ CleanupStack::PushL(record);
+ // Update the decision value for the current recordId
+ // Needs AllFiles capability
+ mngmnt.UpdateDecision(record->iRecordId, ETrue, rs);
+ User::WaitForRequest(rs);
+ // Delete the record via an exact filter.
+ // Needs WriteDeviceData capability.
+ // We could have just passed "filter" directly to RemoveDecision to remove all
+ // the matching decisions with a single call
+ CDecisionFilter *exactFilter = CDecisionFilter::NewLC(record->iClientSid,
+ record->iEvaluatorId,
+ record->iServiceId,
+ record->iServerSid,
+ record->iFingerprint,
+ record->iClientEntity,
+ record->iMajorPolicyVersion);
+ mngmnt.RemoveDecisionsL(*exactFilter);
+ CleanupStack::PopAndDestroy(exactFilter);
+ CleanupStack::PopAndDestroy(record);
+};
+
+// Cancel and close the view and session
+mngmnt.CancelAndCloseView();
+
+// Delete the existing decision database completely.
+// Could also call RemoveDecisionsL( filter ) to remove parts of database
+// Needs WriteDeviceData capability
+mngmnt.DeleteDatabaseL();
+mngmnt.Close();
+</codeblock></example>
</conbody></concept>
\ No newline at end of file