diff -r 989d2f495d90 -r fc9cf246af83 serviceproviders/sapi_sysinfo/sysinfoservice/src/sysinfoservice.cpp --- a/serviceproviders/sapi_sysinfo/sysinfoservice/src/sysinfoservice.cpp Fri Jul 03 15:51:24 2009 +0100 +++ b/serviceproviders/sapi_sysinfo/sysinfoservice/src/sysinfoservice.cpp Thu Aug 27 07:43:07 2009 +0300 @@ -43,6 +43,7 @@ #include #include +#include #include "sysinfoservice.h" #include "sysinfo.h" @@ -52,6 +53,7 @@ #include "deviceinfo.h" #include "sysrange.h" +#include using namespace SysInfo; @@ -59,7 +61,10 @@ const TInt KGranularity(2); const TInt KPhoneWlanMacAddressLength = 50; const TChar KPhoneWlanSeparator (':'); +const TUint KPrimaryCameraDisplayID = 2; _LIT(KWLanMACDataFormat, "%02x"); +const TInt KPhoneLanguageLength = 20; +const TInt KMimeTypeLength = 20; // -------------------------------------------------------------------- // CSysInfoService::CSysInfoService() @@ -340,6 +345,9 @@ else if( !aEntity.CompareF(KFeatures) ) GetFeatureInfoL(aKey,aOutput); + + else if ( !aEntity.CompareF( KCameraInfo ) ) + GetCameraDataL( aKey,aOutput ); else User::Leave(KErrNotFound); @@ -681,6 +689,15 @@ RepositoryUtil::GetRepositoryKeyL(KCRUidAknFep, KAknFepInputTxtLang,inputLang); aSysData = CStatus::NewL(inputLang); + } + else if ( !aKey.CompareF( KDisplayLanguage ) ) + { + HBufC* phoneLang = NULL; + TBuf language; + TRAP_IGNORE(phoneLang = AknLangUtils::DisplayLanguageTagL()); + language.Copy( phoneLang->Des() ); + delete phoneLang; + aSysData = CStringData::NewL( language ); } else if( !aKey.CompareF(KSupportedLanguages) ) { @@ -914,4 +931,62 @@ CleanupStack::PopAndDestroy(2,&usbsessn); } +// -------------------------------------------------------------------- +// CSysInfoService::GetACameraDataL() +// Returns the readonly properties of camera - Media Types and Sizes Supported. +// returns CSysData. +// -------------------------------------------------------------------- +// +void CSysInfoService::GetCameraDataL( TPtrC aKey, CSysData*& aSysData ) + { + if ( !aKey.CompareF( KCameraProperties ) ) + { + CImagingConfigManager* cfgMgr = CImagingConfigManager::NewL(); + CleanupStack::PushL( cfgMgr ); + TImageQualitySet set; + RPointerArray camResArr( KGranularity ); + CDesCArray* mimeArray= NULL; + mimeArray = new (ELeave) CDesCArrayFlat( KGranularity ); + CleanupStack::PushL( mimeArray ); + + CCameraResolutionList* resList= NULL; + CStringList* mimeList= NULL; + + TInt totalLevels = cfgMgr->NumberOfImageQualityLevels(); + CArrayFixFlat* levels = new (ELeave) CArrayFixFlat( totalLevels ); + CleanupStack::PushL( levels ); + + cfgMgr->GetImageQualityLevelsL( *levels, KPrimaryCameraDisplayID ); + TInt numLevels(levels->Count() ); + for ( int i=0; iGetImageQualitySet( set, levels->At(i), KPrimaryCameraDisplayID ); + if ( set.iCamcorderVisible > 0 ) + { + CResolution* camRes = CResolution::NewL( set.iImageWidth, set.iImageHeight ); + CleanupStack::PushL( camRes ); + camResArr.AppendL( camRes ); + CleanupStack::Pop( camRes ); + + TText8* mimeType = set.iImageFileMimeType; + TInt length = strlen( (const char *)mimeType ); + TPtrC8 mimeTypePtr( mimeType, length ); + TBuf8 mimeTypeBuf = mimeTypePtr; + TBuf16 imageMimeType; + imageMimeType.Copy( mimeTypeBuf ); + mimeArray->AppendL( imageMimeType ); + } + } + resList = CCameraResolutionList::NewL( camResArr ); //Ownership of camResArr is transferred to CCameraResolutionList + mimeList = CStringList::NewL( mimeArray ); //Ownership of mimeArray is transferred to CStringList + CleanupStack::PopAndDestroy( levels ); + CleanupStack::Pop( mimeArray ); + CleanupStack::PopAndDestroy( cfgMgr ); + camResArr.Reset(); + aSysData = CCameraInfo::NewL( resList, mimeList ); //Ownership of resList and mimeList is transferred to CCameraInfo + } + else + User::Leave( KErrNotFound ); + } + // End of file.