featuremgmt/featuremgr/src/serverexe/featmgrfeatureregistry.cpp
branchRCL_3
changeset 23 26645d81f48d
parent 21 28839de615b4
child 24 cc28652e0254
--- a/featuremgmt/featuremgr/src/serverexe/featmgrfeatureregistry.cpp	Thu Aug 19 11:36:21 2010 +0300
+++ b/featuremgmt/featuremgr/src/serverexe/featmgrfeatureregistry.cpp	Tue Aug 31 16:57:14 2010 +0300
@@ -163,6 +163,11 @@
         }
     else
         {
+        TBitFlags32 flags = iFeatureList[index].FeatureFlags();
+        flags.Assign( EFeatureSupported, KFeatureUnsupported );
+        TUint32 data = iFeatureList[index].FeatureData();
+        TFeatureServerEntry entry( aFeature.FeatureUid(), flags, data );
+        aFeature = entry;
         err = KFeatureUnsupported;
         }
 
@@ -276,8 +281,19 @@
             {
             data = *aData;
             }
-        TFeatureServerEntry entry( aFeature, flags, data );    
-        err = SWICacheCommand(ESWISetFeatAndData, entry);
+
+        TFeatureServerEntry entry( aFeature, flags, data );
+
+        // If aData is not null, we want to change the user data too
+        //  otherwise only change the feature status.
+        if( aData )
+            {
+            err = SWICacheCommand(ESWISetFeatAndData, entry);
+            }
+        else
+            {
+            err = SWICacheCommand(ESWISetFeat, entry);
+            }
     	}
     else 
     	{
@@ -1442,6 +1458,13 @@
 							EFeatureSupportUntouch,&data);
 				}
 				break;
+            case ESWISetFeat:
+                {
+                SetFeature( iSWICachedOperations[i].iFeatEntry.FeatureUid(),
+                            iSWICachedOperations[i].iFeatEntry.FeatureFlags().Value(),
+                            NULL);
+                }
+                break;
 			default:
 				break;
 				};