serviceproviders/sapi_sysinfo/sysinfoservice/src/sysinfoservice.cpp
branchRCL_3
changeset 66 a9c0808a1095
parent 65 0b68a1b0c15e
--- a/serviceproviders/sapi_sysinfo/sysinfoservice/src/sysinfoservice.cpp	Tue Aug 31 16:06:03 2010 +0300
+++ b/serviceproviders/sapi_sysinfo/sysinfoservice/src/sysinfoservice.cpp	Wed Sep 01 12:28:47 2010 +0100
@@ -444,7 +444,7 @@
         User::LeaveIfError(RProperty::Get(KPSUidNetworkInfo,
                                     KNWRegistrationStatus,status));
         }
-    else if( !aKey.CompareF(KNetworkMode) )
+    else if( !aKey.CompareF(SysInfo::KNetworkMode) )
         {
         User::LeaveIfError(RProperty::Get(KPSUidNetworkInfo,
                                     KNWTelephonyNetworkMode,status));
@@ -579,6 +579,28 @@
         featureID = KFeatureIdSideVolumeKeys;
     else if( !aKey.CompareF(KVibra) )
         featureID = KFeatureIdVibra;
+    else if( !aKey.CompareF(KVideoDecoder) )
+        {
+        MMMFDevVideoPlayObserverImpl obsImpl;
+        RArray<TUid> aDecoders;
+        CMMFDevVideoPlay *videoPlay=CMMFDevVideoPlay::NewL(obsImpl);
+        //place object on cleanupstack.
+        CleanupStack::PushL(videoPlay);
+        
+        videoPlay->GetDecoderListL(aDecoders);
+        CVideoDecDataList *decDataList=CVideoDecDataList::NewL();
+        for(int i=0;i<aDecoders.Count();i++)
+            {
+            CVideoDecoderInfo *decoderInfo=videoPlay->VideoDecoderInfoLC(aDecoders[i]);
+            CVideoDecDataList::CVideoDecData *data=new CVideoDecDataList::CVideoDecData(decoderInfo->Manufacturer(),decoderInfo->Identifier(),decoderInfo->MaxBitrate(),decoderInfo->Accelerated(),decoderInfo->Version().Name());
+            decDataList->AppendL(data);
+            CleanupStack::PopAndDestroy(decoderInfo);
+            }
+        
+        aSysData = decDataList;
+        CleanupStack::PopAndDestroy(videoPlay);
+        return;     
+        }
     else
         User::Leave(KErrNotFound);
 
@@ -667,6 +689,48 @@
             }  
         aSysData = CStringData::NewL(FormatedMacAddress);
         }
+    else if( !aKey.CompareF(KWirelessConnSupport) )
+        {
+        CDesCArray*     connTypesDesArray;
+        connTypesDesArray = new (ELeave) CDesCArrayFlat(4);
+        CleanupStack::PushL(connTypesDesArray);
+
+         //Initialize the feature manager if not already done.
+         if (!iFeatureManagerInitialized)
+         {
+             FeatureManager::InitializeLibL();
+             iFeatureManagerInitialized = ETrue;
+         }
+         
+         if(FeatureManager::FeatureSupported(KFeatureIdBt))
+             {
+             connTypesDesArray->AppendL(KBT);
+             }
+         if(FeatureManager::FeatureSupported(KFeatureIdIrda))
+             {
+             connTypesDesArray->AppendL(KIrda);
+             }
+         if(FeatureManager::FeatureSupported(KFeatureIdProtocolWlan))
+             {
+             connTypesDesArray->AppendL(KWlan);
+             }
+         if(FeatureManager::FeatureSupported(KFeatureIdProtocolGsm))
+             {
+             connTypesDesArray->AppendL(KGsm);
+             }
+         if(FeatureManager::FeatureSupported(KFeatureIdProtocolWcdma))
+             {
+             connTypesDesArray->AppendL(KWcdma);
+             }
+         if(FeatureManager::FeatureSupported(KFeatureIdProtocolCdma))
+             {
+             connTypesDesArray->AppendL(KCdma);
+             }
+
+        //connTypesDesArray ownership passed to CStringList.
+        aSysData = CStringList::NewL(connTypesDesArray);
+        CleanupStack::Pop(connTypesDesArray);         
+        }
     else
         User::Leave(KErrNotFound);
     }