Revision: 201033 RCL_3 PDK_3.0.3 PDK_3.0.4
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 14 Sep 2010 22:59:08 +0300
branchRCL_3
changeset 67 5146369cfdc9
parent 66 a9c0808a1095
Revision: 201033 Kit: 201035
serviceproviders/sapi_applicationmanager/appmanagerservice/group/appmanagerservice.mmp
serviceproviders/sapi_applicationmanager/appmanagerservice/inc/appmanagercommon.h
serviceproviders/sapi_applicationmanager/appmanagerservice/inc/launcher.h
serviceproviders/sapi_applicationmanager/appmanagerservice/src/appmanagerservice.cpp
serviceproviders/sapi_applicationmanager/appmanagerservice/src/launcher.cpp
serviceproviders/sapi_applicationmanager/group/appmanagerprovider.mmp
serviceproviders/sapi_applicationmanager/src/appmanagerinterface.cpp
serviceproviders/sapi_sysinfo/src/sysinfointerface.cpp
serviceproviders/sapi_sysinfo/src/sysinfoobserver.cpp
serviceproviders/sapi_sysinfo/sysinfoservice/src/activestore.cpp
serviceproviders/sapi_sysinfo/sysinfoservice/src/sysconnectionrequest.cpp
--- a/serviceproviders/sapi_applicationmanager/appmanagerservice/group/appmanagerservice.mmp	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_applicationmanager/appmanagerservice/group/appmanagerservice.mmp	Tue Sep 14 22:59:08 2010 +0300
@@ -72,7 +72,7 @@
 LIBRARY 			sisregistryclient.lib
 LIBRARY       ws32.lib
 LIBRARY       cone.lib
-LIBRARY       efsrv.lib
+LIBRARY       efsrv.lib commonui.lib
 
 paged
 
--- a/serviceproviders/sapi_applicationmanager/appmanagerservice/inc/appmanagercommon.h	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_applicationmanager/appmanagerservice/inc/appmanagercommon.h	Tue Sep 14 22:59:08 2010 +0300
@@ -32,6 +32,7 @@
 
 _LIT(KForeground ,"Foreground");
 _LIT(KStandalone,"Standalone");
+_LIT(KChained,"Chained");
 /**
 * This is an interface class which provides the information about the installed application or package as per 
 * content type.
@@ -291,4 +292,4 @@
     EAppCancel = 0x1
     };
 
-#endif
\ No newline at end of file
+#endif
--- a/serviceproviders/sapi_applicationmanager/appmanagerservice/inc/launcher.h	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_applicationmanager/appmanagerservice/inc/launcher.h	Tue Sep 14 22:59:08 2010 +0300
@@ -24,7 +24,7 @@
 class RApaLsSession;
 class CLauncherObserver;
 class TDocument;
-
+class CDocumentHandler;
 
 /**
 * This Class provides the core functionality of launching 
@@ -73,7 +73,17 @@
        	                            const TDesC8& aMimeType, 
        	                            const TOptions& aProperties , 
        	                            TDesC& aFileName );
-
+       	
+        /**
+        * This function Launch the Given Document. This function is written to support the requirement of webtv widget .
+        * This is applicable only to synchronous chained mode version of launchdocument.
+        * succeed.
+        * @since  Series60 v3.2
+        * @param  aCriteria Document to be launch 
+        * 
+        */
+       	
+       	void LaunchDocumentL( TDocument& aCriteria );
         
         /**
         * Destructor
@@ -128,7 +138,8 @@
      	*/
       
         RApaLsSession& iApaLsSession;
-
+        CDocumentHandler* iDocHandler; // this handler wiil be created only in the chained mode and destroyed in dtor.
+        
       };
 
-#endif __LAUNCHER_H
\ No newline at end of file
+#endif __LAUNCHER_H
--- a/serviceproviders/sapi_applicationmanager/appmanagerservice/src/appmanagerservice.cpp	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_applicationmanager/appmanagerservice/src/appmanagerservice.cpp	Tue Sep 14 22:59:08 2010 +0300
@@ -121,7 +121,14 @@
         {
         //Synchronous call
         __UHEAP_MARK;
-        iLauncher->LaunchDocumentL( aCriteria, aMimeType, aOptions, aFileName);
+        if( 0 == aOptions.iMode.CompareF( KChained ) )
+            {
+            iLauncher->LaunchDocumentL( aCriteria );
+            }
+        else
+            {
+            iLauncher->LaunchDocumentL( aCriteria, aMimeType, aOptions, aFileName);
+            }
         __UHEAP_MARKEND;
         }
     else
--- a/serviceproviders/sapi_applicationmanager/appmanagerservice/src/launcher.cpp	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_applicationmanager/appmanagerservice/src/launcher.cpp	Tue Sep 14 22:59:08 2010 +0300
@@ -25,14 +25,15 @@
 #include <eikenv.h>
 #include <e32base.h>
 #include <f32file.h>
-//#include <documenthandler.h>
+#include <documenthandler.h>
 
 #include "launcher.h"
 #include "launcherobserver.h"
 #include "appmanagerservice.h"
 
+
 _LIT(KBackground ,"Background");
-_LIT(KChained,"Chained");
+//_LIT(KChained,"Chained");
 _LIT(KScheme,"s60uid://0x");
 const TInt KDocMaxDigitsInHexString = 8; // 32 bits.
 
@@ -151,7 +152,19 @@
     return threadNotUsed;
     }
 
-
+ // -----------------------------------------------------------------------------
+ // CLauncher::LaunchDocumentL
+ // This function Launch the Given Document in synchronous chained mode
+ // -----------------------------------------------------------------------------
+ void CLauncher::LaunchDocumentL( TDocument& aCriteria ) 
+     {
+     if( !iDocHandler )
+         {
+         iDocHandler = CDocumentHandler::NewL();
+         }
+     TDataType dataType;
+     User::LeaveIfError(iDocHandler->OpenFileEmbeddedL(aCriteria.iPath, dataType));
+     }
 // -----------------------------------------------------------------------------
 // CLauncher::LaunchDocumentL
 // This function Launch the Given Document
@@ -400,7 +413,10 @@
 CLauncher::~CLauncher( )
 
 	{
-
+    if( iDocHandler )
+        {
+        delete iDocHandler;
+        }
 	}
 
 
--- a/serviceproviders/sapi_applicationmanager/group/appmanagerprovider.mmp	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_applicationmanager/group/appmanagerprovider.mmp	Tue Sep 14 22:59:08 2010 +0300
@@ -70,6 +70,7 @@
 
 LIBRARY 		platformenv.lib
 LIBRARY	        ecom.lib
-LIBRARY	        appmanagerservice.lib
+LIBRARY	        appmanagerservice.lib bafl.lib
+
 
 paged
--- a/serviceproviders/sapi_applicationmanager/src/appmanagerinterface.cpp	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_applicationmanager/src/appmanagerinterface.cpp	Tue Sep 14 22:59:08 2010 +0300
@@ -22,7 +22,7 @@
 #include <liwcommon.h>
 #include <liwbufferextension.h>
 #include <utf.h>
-
+#include <BAUTILS.H>
 #include "appmanagerinterface.h"
 #include "appmanagerservice.h"
 #include "appitemslist.h"
@@ -74,6 +74,11 @@
 _LIT8(KTransactionID,"TransactionID");
 
 
+_LIT(KRtspPrefix,"rtsp://");
+_LIT(KTempFile, "c:\\system\\temp\\tempvideo.ram");
+_LIT(KTempPath, "c:\\system\\temp\\");
+_LIT8(KRamMime, "application/ram");
+
 
 // -----------------------------------------------------------------------------
 // CAppManagerInterface::NewLC
@@ -96,6 +101,13 @@
 // -----------------------------------------------------------------------------
 CAppManagerInterface::~CAppManagerInterface()
 	{
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    if( BaflUtils::FileExists(fs,KTempFile) )
+        {
+        BaflUtils::DeleteFile(fs,KTempFile);
+        }
+    fs.Close() ;
      //Release the instance of core class
 	 delete iCoreClass;
      iCoreClass = NULL;
@@ -980,6 +992,27 @@
        TPtr8 mimetype8( heapBuffer->Des() );
        mimetype8.Copy( mimetype );
        TPtrC filename;
+       // RTSP handling       
+       if( ! document.iPath.Left(KRtspPrefix().Length()).CompareF(KRtspPrefix) )
+           {
+           RFs fs;
+           User::LeaveIfError(fs.Connect());
+           RFile file;
+           fs.MkDir( KTempPath );
+           file.Replace( fs, KTempFile, EFileWrite | EFileStreamText );  
+           HBufC8 *tempPath = HBufC8::NewLC( document.iPath.Length() );
+           tempPath->Des().Copy( document.iPath );
+           file.Write( *tempPath );
+           document.iPath.Set( KTempFile );
+           file.Close();
+           fs.Close();
+           HBufC8 *tempMime;
+           tempMime = KRamMime().AllocLC();
+           mimetype8.Set( tempMime->Des() );
+           CleanupStack::PopAndDestroy( tempMime );
+           CleanupStack::PopAndDestroy( tempPath );
+           }
+      
 
        if( aCallBack )
             {
--- a/serviceproviders/sapi_sysinfo/src/sysinfointerface.cpp	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_sysinfo/src/sysinfointerface.cpp	Tue Sep 14 22:59:08 2010 +0300
@@ -668,250 +668,253 @@
     aOutMapParam = CLiwDefaultMap::NewL();
     CleanupClosePushL(*aOutMapParam);
     TInt count = 0;
-    switch (aInSysData->DataType())
+    if(aInSysData)
         {
-        case CSysData::EStatus:
-            {
-            TInt32 status = ((CStatus*) aInSysData)->Status();
-            aOutMapParam->InsertL(KStatus,(TInt32)status);
-            }
-            break;
-        case CSysData::EVersion:
-            {
-            TBuf<KMaxVersionTxt> majortxt(KNullDesC);
-            TBuf<KMaxVersionTxt> minortxt(KNullDesC);
-            majortxt.FillZ(0);
-            minortxt.FillZ(0);
-            const CVersion* version = (CVersion*) aInSysData;
-            NumberConversion::AppendFormatNumber (majortxt, 
-                            version->MajorVersion(),EDigitTypeWestern);
-            aOutMapParam->InsertL(KMajorVersion,majortxt);
-            NumberConversion::AppendFormatNumber (minortxt, 
-                            version->MinorVersion(),EDigitTypeWestern);
-            aOutMapParam->InsertL(KMinorVersion,minortxt);
-            }
-            break;
-        case CSysData::EConnectionList:
-            {
-            CConnectionList* dataconnections = (CConnectionList*) aInSysData;
-            CSysInfoConnList* connlist = CSysInfoConnList::NewL(dataconnections);
-            CleanupClosePushL(*connlist);
-            aOutMapParam->InsertL(KConnectionList,connlist);
-            CleanupStack::PopAndDestroy(connlist);
-            }
-            break;
-        case CSysData::ENetworkInfo:
-            {
-            const CNetworkInfo* networkinfo = (CNetworkInfo*) aInSysData;
-            aOutMapParam->InsertL(KNetworkName,networkinfo->NetworkName());
-            aOutMapParam->InsertL(KNetworkStatus,
-                                        (TInt32)networkinfo->NetworkStatus());
-            aOutMapParam->InsertL(KNetworkMode,(TInt32)networkinfo->NetworkMode());
-            aOutMapParam->InsertL(KCountryCode,networkinfo->CountryCode());
-            aOutMapParam->InsertL(KNetworkCode,networkinfo->NetworkCode());
-            aOutMapParam->InsertL(KLocationStatus,
-                                        networkinfo->ValidLocationAreaCode());
-            aOutMapParam->InsertL(KAreaCode,(TInt32)networkinfo->LocationAreaCode());
-            aOutMapParam->InsertL(KCellId,(TInt32)networkinfo->CellId());
-            }
-            break;
-        case CSysData::EConnectionInfo:
-            {
-            const CConnectionInfo* connectioninfo = 
-                                            ((CConnectionInfo*) aInSysData);
-            aOutMapParam->InsertL(KIAPID,(TInt32)connectioninfo->IAPId());
-            aOutMapParam->InsertL(KIAPName,connectioninfo->IAPName());
-            aOutMapParam->InsertL(KIAPConnectionName,
-                                            connectioninfo->ConnectionName());
-            aOutMapParam->InsertL(KNetworkName,connectioninfo->NetworkName());
-            aOutMapParam->InsertL(KConnectionType,
-                                        (TInt32)connectioninfo->BearerType());
-            aOutMapParam->InsertL(KConnectionStatus,
-                                    (TInt32)connectioninfo->ConnectionState());
-            }
-            break;
-        case CSysData::EDriveInfo:	
+        switch (aInSysData->DataType())
             {
-            const CDriveInfo* driveinfo = (CDriveInfo*) aInSysData;		
-            
-            TBuf<KMaxDriveLength> drive;
-            drive.FillZ();
-            drive.Append('A'+driveinfo->DriveNumber());
-            drive.Append(KDriveSeperator);
-            
-            aOutMapParam->InsertL(KDriveNo,drive);
-            aOutMapParam->InsertL(KCriticalSpace,
-                                        (TInt32)driveinfo->CriticalSpace());
-            aOutMapParam->InsertL(KMediaType,(TInt32)driveinfo->MediaType());
-            //totalspace and freespace converted to string .
-            TBuf<KMax64BitNumLen> string64bitnum(KNullDesC);
-            string64bitnum.FillZ(0);
-            string64bitnum.Num(driveinfo->TotalSpace());
-            aOutMapParam->InsertL(KTotalSpace,string64bitnum);
-            string64bitnum.FillZ(0);
-            string64bitnum.Num(driveinfo->FreeSpace());
-            aOutMapParam->InsertL(KFreeSpace,string64bitnum);
-            TPtrC drvname;
-            driveinfo->DriveName(drvname);
-            aOutMapParam->InsertL(KDriveName,drvname);
-            aOutMapParam->InsertL(KBatteryState,(TInt32)driveinfo->BatteryState());
-            }
-            break;
-            
-        case CSysData::EAccessoryInfo:
-            {
-            const CAccessoryInfo* accessoryinfo = ((CAccessoryInfo*) aInSysData);
-            aOutMapParam->InsertL(KAccessoryType,
-                                    (TInt32)accessoryinfo->AccessoryType());
-            aOutMapParam->InsertL(KAccessoryState,
-                                    (TInt32)accessoryinfo->ConnectionState());
-            }
-            break;
-        case CSysData::EResolution:
-            {
-            const CResolution* resolution = ((CResolution*) aInSysData);
-            aOutMapParam->InsertL(KXPixels,(TInt32)resolution->XPixels());
-            aOutMapParam->InsertL(KYPixels,(TInt32)resolution->YPixels());
-            }
-            break;
-        case CSysData::EStringData:
-            {
-            const CStringData* stringdata = ((CStringData*) aInSysData);
-            TPtrC string;
-            stringdata->StringData(string);
-            aOutMapParam->InsertL(KStringData,string);
-            }
-            break;
-        case CSysData::EAccessoryList:
-            {
-            CAccList* accessories = (CAccList*) aInSysData;
-            CSysInfoAccList* accessorylist = CSysInfoAccList::NewL(accessories);
-            CleanupClosePushL(*accessorylist);
-            aOutMapParam->InsertL(KAccessoryList,accessorylist);
-            CleanupStack::PopAndDestroy(accessorylist);
-            }
-            break;
-        case  CSysData::ELanguageList:
-            {
-            CLiwList* langlist = CLiwDefaultList::NewL();
-            CleanupClosePushL(*langlist);
-            const CLanguageList* languages = ((CLanguageList*) aInSysData);
-            count= languages->Count();
-            for(int index=0; index<count; index++ )
+            case CSysData::EStatus:
+                {
+                TInt32 status = ((CStatus*) aInSysData)->Status();
+                aOutMapParam->InsertL(KStatus,(TInt32)status);
+                }
+                break;
+            case CSysData::EVersion:
+                {
+                TBuf<KMaxVersionTxt> majortxt(KNullDesC);
+                TBuf<KMaxVersionTxt> minortxt(KNullDesC);
+                majortxt.FillZ(0);
+                minortxt.FillZ(0);
+                const CVersion* version = (CVersion*) aInSysData;
+                NumberConversion::AppendFormatNumber (majortxt, 
+                                version->MajorVersion(),EDigitTypeWestern);
+                aOutMapParam->InsertL(KMajorVersion,majortxt);
+                NumberConversion::AppendFormatNumber (minortxt, 
+                                version->MinorVersion(),EDigitTypeWestern);
+                aOutMapParam->InsertL(KMinorVersion,minortxt);
+                }
+                break;
+            case CSysData::EConnectionList:
+                {
+                CConnectionList* dataconnections = (CConnectionList*) aInSysData;
+                CSysInfoConnList* connlist = CSysInfoConnList::NewL(dataconnections);
+                CleanupClosePushL(*connlist);
+                aOutMapParam->InsertL(KConnectionList,connlist);
+                CleanupStack::PopAndDestroy(connlist);
+                }
+                break;
+            case CSysData::ENetworkInfo:
                 {
-                TInt language = 0;
-                languages->At(index,language);
-                langlist->AppendL(TLiwVariant(((TInt32)language)));
+                const CNetworkInfo* networkinfo = (CNetworkInfo*) aInSysData;
+                aOutMapParam->InsertL(KNetworkName,networkinfo->NetworkName());
+                aOutMapParam->InsertL(KNetworkStatus,
+                                            (TInt32)networkinfo->NetworkStatus());
+                aOutMapParam->InsertL(KNetworkMode,(TInt32)networkinfo->NetworkMode());
+                aOutMapParam->InsertL(KCountryCode,networkinfo->CountryCode());
+                aOutMapParam->InsertL(KNetworkCode,networkinfo->NetworkCode());
+                aOutMapParam->InsertL(KLocationStatus,
+                                            networkinfo->ValidLocationAreaCode());
+                aOutMapParam->InsertL(KAreaCode,(TInt32)networkinfo->LocationAreaCode());
+                aOutMapParam->InsertL(KCellId,(TInt32)networkinfo->CellId());
                 }
-            aOutMapParam->InsertL(KLanguageList,langlist);
-            CleanupStack::PopAndDestroy(langlist);
-            }
-            break;
-
-        case  CSysData::EDriveList:
-            {
-            CLiwList* drivelist = CLiwDefaultList::NewL();
-            CleanupClosePushL(*drivelist);
-            const CDriveList* drives = ((CDriveList*) aInSysData);
-            count = drives->Count();
-            for(int index=0; index<count; index++ )
+                break;
+            case CSysData::EConnectionInfo:
                 {
-                TInt driveVal = 0;
-                drives->At(index,driveVal);
+                const CConnectionInfo* connectioninfo = 
+                                                ((CConnectionInfo*) aInSysData);
+                aOutMapParam->InsertL(KIAPID,(TInt32)connectioninfo->IAPId());
+                aOutMapParam->InsertL(KIAPName,connectioninfo->IAPName());
+                aOutMapParam->InsertL(KIAPConnectionName,
+                                                connectioninfo->ConnectionName());
+                aOutMapParam->InsertL(KNetworkName,connectioninfo->NetworkName());
+                aOutMapParam->InsertL(KConnectionType,
+                                            (TInt32)connectioninfo->BearerType());
+                aOutMapParam->InsertL(KConnectionStatus,
+                                        (TInt32)connectioninfo->ConnectionState());
+                }
+                break;
+            case CSysData::EDriveInfo:	
+                {
+                const CDriveInfo* driveinfo = (CDriveInfo*) aInSysData;		
+                
                 TBuf<KMaxDriveLength> drive;
                 drive.FillZ();
-                drive.Append('A'+driveVal);
+                drive.Append('A'+driveinfo->DriveNumber());
                 drive.Append(KDriveSeperator);
-                drivelist->AppendL(TLiwVariant(drive));
+                
+                aOutMapParam->InsertL(KDriveNo,drive);
+                aOutMapParam->InsertL(KCriticalSpace,
+                                            (TInt32)driveinfo->CriticalSpace());
+                aOutMapParam->InsertL(KMediaType,(TInt32)driveinfo->MediaType());
+                //totalspace and freespace converted to string .
+                TBuf<KMax64BitNumLen> string64bitnum(KNullDesC);
+                string64bitnum.FillZ(0);
+                string64bitnum.Num(driveinfo->TotalSpace());
+                aOutMapParam->InsertL(KTotalSpace,string64bitnum);
+                string64bitnum.FillZ(0);
+                string64bitnum.Num(driveinfo->FreeSpace());
+                aOutMapParam->InsertL(KFreeSpace,string64bitnum);
+                TPtrC drvname;
+                driveinfo->DriveName(drvname);
+                aOutMapParam->InsertL(KDriveName,drvname);
+                aOutMapParam->InsertL(KBatteryState,(TInt32)driveinfo->BatteryState());
                 }
-            aOutMapParam->InsertL(KDriveList,drivelist);
-            CleanupStack::PopAndDestroy(drivelist);
-            }
-            break;	
-
-        case  CSysData::EStringList:
-            {
-            CLiwList* stringlist = CLiwDefaultList::NewL();
-            CleanupClosePushL(*stringlist);
-            CStringList* strings = ((CStringList*) aInSysData);
-            count = strings->Count();
-            for(int index=0; index<count; index++ )
+                break;
+                
+            case CSysData::EAccessoryInfo:
                 {
+                const CAccessoryInfo* accessoryinfo = ((CAccessoryInfo*) aInSysData);
+                aOutMapParam->InsertL(KAccessoryType,
+                                        (TInt32)accessoryinfo->AccessoryType());
+                aOutMapParam->InsertL(KAccessoryState,
+                                        (TInt32)accessoryinfo->ConnectionState());
+                }
+                break;
+            case CSysData::EResolution:
+                {
+                const CResolution* resolution = ((CResolution*) aInSysData);
+                aOutMapParam->InsertL(KXPixels,(TInt32)resolution->XPixels());
+                aOutMapParam->InsertL(KYPixels,(TInt32)resolution->YPixels());
+                }
+                break;
+            case CSysData::EStringData:
+                {
+                const CStringData* stringdata = ((CStringData*) aInSysData);
                 TPtrC string;
-                strings->At(index,string);
-                stringlist->AppendL(TLiwVariant(string));
+                stringdata->StringData(string);
+                aOutMapParam->InsertL(KStringData,string);
+                }
+                break;
+            case CSysData::EAccessoryList:
+                {
+                CAccList* accessories = (CAccList*) aInSysData;
+                CSysInfoAccList* accessorylist = CSysInfoAccList::NewL(accessories);
+                CleanupClosePushL(*accessorylist);
+                aOutMapParam->InsertL(KAccessoryList,accessorylist);
+                CleanupStack::PopAndDestroy(accessorylist);
                 }
-            aOutMapParam->InsertL(KStringList,stringlist);
-            CleanupStack::PopAndDestroy(stringlist);
-            }
-            break;	
-        case CSysData::ECameraInfo:
-            {
-            CLiwList* camResList = CLiwDefaultList::NewL();
-            CleanupClosePushL( *camResList );
-            CLiwList* camMimeTypesList = CLiwDefaultList::NewL();
-            CleanupClosePushL( *camMimeTypesList );
-            const CCameraInfo* camInfo = ((CCameraInfo*) aInSysData);
-            count = camInfo->ResolutionList()->Count();
-
-            for ( int index=0; index<count; index++ )
+                break;
+            case  CSysData::ELanguageList:
+                {
+                CLiwList* langlist = CLiwDefaultList::NewL();
+                CleanupClosePushL(*langlist);
+                const CLanguageList* languages = ((CLanguageList*) aInSysData);
+                count= languages->Count();
+                for(int index=0; index<count; index++ )
+                    {
+                    TInt language = 0;
+                    languages->At(index,language);
+                    langlist->AppendL(TLiwVariant(((TInt32)language)));
+                    }
+                aOutMapParam->InsertL(KLanguageList,langlist);
+                CleanupStack::PopAndDestroy(langlist);
+                }
+                break;
+    
+            case  CSysData::EDriveList:
                 {
-                TInt val = 0;
-                CLiwMap* resMap = CLiwDefaultMap::NewL();
-                CleanupStack::PushL( resMap );
-                camInfo->ResolutionList()->At( index, 0, val );
-                resMap->InsertL( KXPixels, (TInt32)val );
-                camInfo->ResolutionList()->At( index, 1, val );
-                resMap->InsertL( KYPixels, (TInt32)val );
-                camResList->AppendL( resMap );
-                CleanupStack::Pop( resMap );
-                resMap->Close();
-                TPtrC string;
-                camInfo->MimeTypesList()->At( index, string );
-                camMimeTypesList->AppendL( string );
+                CLiwList* drivelist = CLiwDefaultList::NewL();
+                CleanupClosePushL(*drivelist);
+                const CDriveList* drives = ((CDriveList*) aInSysData);
+                count = drives->Count();
+                for(int index=0; index<count; index++ )
+                    {
+                    TInt driveVal = 0;
+                    drives->At(index,driveVal);
+                    TBuf<KMaxDriveLength> drive;
+                    drive.FillZ();
+                    drive.Append('A'+driveVal);
+                    drive.Append(KDriveSeperator);
+                    drivelist->AppendL(TLiwVariant(drive));
+                    }
+                aOutMapParam->InsertL(KDriveList,drivelist);
+                CleanupStack::PopAndDestroy(drivelist);
+                }
+                break;	
+    
+            case  CSysData::EStringList:
+                {
+                CLiwList* stringlist = CLiwDefaultList::NewL();
+                CleanupClosePushL(*stringlist);
+                CStringList* strings = ((CStringList*) aInSysData);
+                count = strings->Count();
+                for(int index=0; index<count; index++ )
+                    {
+                    TPtrC string;
+                    strings->At(index,string);
+                    stringlist->AppendL(TLiwVariant(string));
+                    }
+                aOutMapParam->InsertL(KStringList,stringlist);
+                CleanupStack::PopAndDestroy(stringlist);
                 }
-            aOutMapParam->InsertL( KCamResList, camResList );
-            aOutMapParam->InsertL( KCamMimeTypesList, camMimeTypesList );
-            CleanupStack::PopAndDestroy( camMimeTypesList );
-            CleanupStack::PopAndDestroy( camResList );
+                break;	
+            case CSysData::ECameraInfo:
+                {
+                CLiwList* camResList = CLiwDefaultList::NewL();
+                CleanupClosePushL( *camResList );
+                CLiwList* camMimeTypesList = CLiwDefaultList::NewL();
+                CleanupClosePushL( *camMimeTypesList );
+                const CCameraInfo* camInfo = ((CCameraInfo*) aInSysData);
+                count = camInfo->ResolutionList()->Count();
+    
+                for ( int index=0; index<count; index++ )
+                    {
+                    TInt val = 0;
+                    CLiwMap* resMap = CLiwDefaultMap::NewL();
+                    CleanupStack::PushL( resMap );
+                    camInfo->ResolutionList()->At( index, 0, val );
+                    resMap->InsertL( KXPixels, (TInt32)val );
+                    camInfo->ResolutionList()->At( index, 1, val );
+                    resMap->InsertL( KYPixels, (TInt32)val );
+                    camResList->AppendL( resMap );
+                    CleanupStack::Pop( resMap );
+                    resMap->Close();
+                    TPtrC string;
+                    camInfo->MimeTypesList()->At( index, string );
+                    camMimeTypesList->AppendL( string );
+                    }
+                aOutMapParam->InsertL( KCamResList, camResList );
+                aOutMapParam->InsertL( KCamMimeTypesList, camMimeTypesList );
+                CleanupStack::PopAndDestroy( camMimeTypesList );
+                CleanupStack::PopAndDestroy( camResList );
+                }
+                break; 
+            case CSysData::EVideoDecList:
+                {
+                CLiwList* decResList = CLiwDefaultList::NewL();
+                CleanupClosePushL( *decResList );
+                const CVideoDecDataList* declist = ((CVideoDecDataList*) aInSysData);
+                count = declist->Count();
+                CVideoDecDataList::CVideoDecData * decinfo = NULL;
+                
+                for ( int index=0; index<count; index++ )
+                    {
+                    TInt val = 0;
+                    CLiwMap* resMap = CLiwDefaultMap::NewL();
+                    CleanupStack::PushL( resMap );
+                    decinfo=(*declist)[index];
+                    TPtrC temp;
+                    temp.Set(*(decinfo->Manufacturer));
+                    TPtrC temp1;
+                    temp1.Set(*(decinfo->Identifier));
+                    
+                    resMap->InsertL( KDecManufacturer, temp );
+                    resMap->InsertL( KIdentifier, temp1 );
+                    resMap->InsertL( KMaxBitrate, (TInt32)decinfo->MaxBitrate );
+                    resMap->InsertL( KAccelerated, (TBool)decinfo->Accelerated );
+                    resMap->InsertL( KVersion, decinfo->Version );
+                    
+                    decResList->AppendL( resMap );
+                    CleanupStack::Pop( resMap );
+                    resMap->Close();
+                    }
+                aOutMapParam->InsertL( KCapability, decResList );
+                CleanupStack::PopAndDestroy( decResList );
+                //aOutMapParam->InsertL( KCapability, 1 );
+                }
+                break; 
+            default:
+                User::Leave(KErrArgument);
             }
-            break; 
-        case CSysData::EVideoDecList:
-            {
-            CLiwList* decResList = CLiwDefaultList::NewL();
-            CleanupClosePushL( *decResList );
-            const CVideoDecDataList* declist = ((CVideoDecDataList*) aInSysData);
-            count = declist->Count();
-            CVideoDecDataList::CVideoDecData * decinfo = NULL;
-            
-            for ( int index=0; index<count; index++ )
-                {
-                TInt val = 0;
-                CLiwMap* resMap = CLiwDefaultMap::NewL();
-                CleanupStack::PushL( resMap );
-                decinfo=(*declist)[index];
-                TPtrC temp;
-                temp.Set(*(decinfo->Manufacturer));
-                TPtrC temp1;
-                temp1.Set(*(decinfo->Identifier));
-                
-                resMap->InsertL( KDecManufacturer, temp );
-                resMap->InsertL( KIdentifier, temp1 );
-                resMap->InsertL( KMaxBitrate, (TInt32)decinfo->MaxBitrate );
-                resMap->InsertL( KAccelerated, (TBool)decinfo->Accelerated );
-                resMap->InsertL( KVersion, decinfo->Version );
-                
-                decResList->AppendL( resMap );
-                CleanupStack::Pop( resMap );
-                resMap->Close();
-                }
-            aOutMapParam->InsertL( KCapability, decResList );
-            CleanupStack::PopAndDestroy( decResList );
-            //aOutMapParam->InsertL( KCapability, 1 );
-            }
-            break; 
-        default:
-            User::Leave(KErrArgument);
         }
     CleanupStack::Pop(aOutMapParam);
     }
--- a/serviceproviders/sapi_sysinfo/src/sysinfoobserver.cpp	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_sysinfo/src/sysinfoobserver.cpp	Tue Sep 14 22:59:08 2010 +0300
@@ -96,10 +96,12 @@
         eventParamList->AppendL(TLiwGenericParam(KErrorCode,TLiwVariant((TInt32)SapiErr)));
         CLiwMap* outparam=NULL;
 
-        if( (aOutput->DataType() == CSysData::EAccessoryList) ||
-                (aOutput->DataType() == CSysData::EConnectionList) )
-            ownership = ETrue;
-
+        if(aOutput)
+            {
+            if( (aOutput->DataType() == CSysData::EAccessoryList) ||
+                    (aOutput->DataType() == CSysData::EConnectionList) )
+                ownership = ETrue;
+            }
         CSysInfoInterface::ConvertSysData2AiwParamL(aOutput,outparam);
         //Add Entity and Key to the output map.
         if(outparam)
--- a/serviceproviders/sapi_sysinfo/sysinfoservice/src/activestore.cpp	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_sysinfo/sysinfoservice/src/activestore.cpp	Tue Sep 14 22:59:08 2010 +0300
@@ -106,6 +106,12 @@
         else if( (!Key.CompareF(SysInfo::KConnectionStatus)) && (aSysRequest.RequestType() == TSysRequest::ENotification) )
             aActiveObj = CConnection::NewL(aSysRequest);
         
+        else if( (!Key.CompareF(SysInfo::KConnectionStatus)) && (aSysRequest.RequestType() == TSysRequest::EASyncONESHOT) ){
+            TSysRequest systemRequest(aSysRequest.Entity(),SysInfo::KActiveConnections,aSysRequest.SystemData(),aSysRequest.TransactionID(),aSysRequest.Observer(),
+                                                TSysRequest::EASyncONESHOT);
+            aActiveObj = CConnection::NewL(systemRequest);
+        }
+            
         else
             User::Leave(KErrNotFound);
         }
--- a/serviceproviders/sapi_sysinfo/sysinfoservice/src/sysconnectionrequest.cpp	Wed Sep 01 12:28:47 2010 +0100
+++ b/serviceproviders/sapi_sysinfo/sysinfoservice/src/sysconnectionrequest.cpp	Tue Sep 14 22:59:08 2010 +0300
@@ -164,14 +164,23 @@
     TInt32 transId = this->TransactionID();
     iReadConnectionInfo = NULL;
 
-    if(TSysRequest::ENotification == RequestType())
+    if(TSysRequest::ENotification == RequestType() )
         {
-        iConnectionInfoArray.AppendL(aInfo);
-        if( !iConnectionInit )
+        if(!error)
             {
-            CConnectionInfo* conninfo = aInfo->CopyL();
+            iConnectionInfoArray.AppendL(aInfo);
+            if( !iConnectionInit )
+                {
+                CConnectionInfo* conninfo = aInfo->CopyL();
+                TRAP_IGNORE(SystemObserver()->HandleResponseL(*iEntity, *iKey,
+                                        conninfo, transId, RequestType(), error));
+                }
+            }
+        else
+            {
             TRAP_IGNORE(SystemObserver()->HandleResponseL(*iEntity, *iKey,
-                                    conninfo, transId, RequestType(), error));
+                            NULL, transId, RequestType(), error));
+        
             }
         }
     else
@@ -238,6 +247,7 @@
     {
     TUint connectionId =0;
     CReadConnectionInfo* rdConnectionInfo = NULL;
+    
     switch( aEvent.EventType() )
         {
         case EConnMonCreateConnection:
@@ -355,7 +365,7 @@
 
     TInt error(iStatus.Int());
     if(error >= KErrNone)
-        {
+    {
         switch(iState)
             {
             case EInitial: