diff -r ccd8e69b5392 -r 496ad160a278 tsrc/CenrepEditor/Src/cenrepeditormodel.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsrc/CenrepEditor/Src/cenrepeditormodel.cpp Fri Jun 11 13:36:18 2010 +0300 @@ -0,0 +1,447 @@ +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: +* +* Description: +* +*/ + + +// INCLUDE FILES +#include "cenrepeditormodel.h" +#include "musresourceproperties.h" +#include "mussettingskeys.h" +#include +#include +#include +#ifdef _KODIAK_PHONE_CALL +#include +#else +const TUid KPSUidCtsyCallInformation = {0x102029AC}; +const TUint32 KCTsyKodiakPtt = 0x00000003; +enum TPSCTsyKodiakPtt + { + EPSCTsyKodiakPttNotActive, + EPSCTsyKodiakPttActive + }; +#endif + + +// ================= MEMBER FUNCTIONS ======================= + +CPhoneResources* CPhoneResources::NewLC() + { + CPhoneResources* self = new (ELeave) CPhoneResources(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CPhoneResources* CPhoneResources::NewL() + { + CPhoneResources* self = CPhoneResources::NewLC(); + CleanupStack::Pop(); + return self; + } + +CPhoneResources::~CPhoneResources() + { + } + +void CPhoneResources::ConstructL() + { + // If a P&S key is not found, set it to KErrNotFound. + // This is why the RProperty::Get return values are not handled below. + iCameraAvailability = KErrNotFound; + RProperty::Get(NMusResourceApi::KCategoryUid, + NMusResourceApi::KCameraAvailability, + iCameraAvailability); + + iKeypadAvailability = KErrNotFound; + RProperty::Get(NMusResourceApi::KCategoryUid, + NMusResourceApi::KKeypadAvailability, + iKeypadAvailability); + + iVideoPlayerAvailability = KErrNotFound; + RProperty::Get(NMusResourceApi::KCategoryUid, + NMusResourceApi::KVideoPlayerAvailability, + iVideoPlayerAvailability ); + + iCameraInformation = KErrNotFound; + RProperty::Get(NMusResourceApi::KCategoryUid, + NMusResourceApi::KCameraInformation, + iCameraInformation ); + + iKodiakPhoneCall = KErrNotFound; + TInt err = RProperty::Get(KPSUidCtsyCallInformation, + KCTsyKodiakPtt, + iKodiakPhoneCall ); + if (err != KErrNone) + { + iKodiakPhoneCall = EPSCTsyKodiakPttNotActive; + RProperty::Define(KPSUidCtsyCallInformation,KCTsyKodiakPtt,EPSCTsyKodiakPttNotActive); + } + } + +void CPhoneResources::SaveL() + { + SetValueL(NMusResourceApi::KCategoryUid, + NMusResourceApi::KCameraAvailability, + iCameraAvailability); + + SetValueL(NMusResourceApi::KCategoryUid, + NMusResourceApi::KKeypadAvailability, + iKeypadAvailability); + + SetValueL(NMusResourceApi::KCategoryUid, + NMusResourceApi::KVideoPlayerAvailability, + iVideoPlayerAvailability); + + SetValueL(NMusResourceApi::KCategoryUid, + NMusResourceApi::KCameraInformation, + iCameraInformation); + + SetValueL(KPSUidCtsyCallInformation, + KCTsyKodiakPtt, + iKodiakPhoneCall); + } + +void CPhoneResources::SetValueL(TUid aCategory, TUint aKey, TInt aValue) + { + // Don't care if the key is not found initially + if (aValue >= 0) + { + User::LeaveIfError(RProperty::Set(aCategory, aKey, aValue)); + } + } + +COtherResources* COtherResources::NewLC() + { + COtherResources* self = new (ELeave) COtherResources(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +COtherResources* COtherResources::NewL() + { + COtherResources* self = COtherResources::NewLC(); + CleanupStack::Pop(); + return self; + } + +void COtherResources::ConstructL() + { + iRepository = CRepository::NewL(MusSettingsKeys::KRepositoryUid); + + // If a CenRep key is not found, set it to KErrNotFound. + // This is why the CRepository::Get return values are not handled below. + iActivation = KErrNotFound; + iRepository->Get(MusSettingsKeys::KActivation, iActivation); + + iOperatorVariant = KErrNotFound; + iRepository->Get(MusSettingsKeys::KOperatorVariant,iOperatorVariant); + + iAuditoryNotification = KErrNotFound; + iRepository->Get(MusSettingsKeys::KAuditoryNotification, iAuditoryNotification); + + iPopupNotification = KErrNotFound; + iRepository->Get(MusSettingsKeys::KPopupNotification, iPopupNotification); + + iPopupNotificationType = KErrNotFound; + iRepository->Get(MusSettingsKeys::KPopupNotificationType, iPopupNotificationType); + + iEdgeDtmSupport = KErrNotFound; + iRepository->Get(MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport); + + iSessionSetupMethod = KErrNotFound; + iRepository->Get(MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod); + + iAutoRecord = KErrNotFound; + iRepository->Get(MusSettingsKeys::KAutoRecord, iAutoRecord); + + iVideoLocation = KErrNotFound; + iRepository->Get(MusSettingsKeys::KVideoLocation, iVideoLocation); + + iSipProfileId = KErrNotFound; + iRepository->Get(MusSettingsKeys::KSipProfileId, iSipProfileId); + + iUiOrientation = KErrNotFound; + iRepository->Get(MusSettingsKeys::KUiOrientation, iUiOrientation); + + iCapabilityQuery = KErrNotFound; + iRepository->Get(MusSettingsKeys::KCapabilityQuery, iCapabilityQuery); + + iProductModeVariation = KErrNotFound; + iRepository->Get(MusSettingsKeys::KProductModeVariation, iProductModeVariation); + + iRepository->Get(MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo ); + + iEncodingDevice = KErrNotFound; + iRepository->Get(MusSettingsKeys::KEncodingDevice, iEncodingDevice ); + iEncodingDeviceStr.Zero(); + if ( iEncodingDevice >= 0 ) + { + iEncodingDeviceStr.AppendNum(iEncodingDevice, EHex); + } + + iOnlyWithActiveCSCall = KErrNotFound; + iRepository->Get(MusSettingsKeys::KAllowOnlyWithActiveCSCall, iOnlyWithActiveCSCall); + + iOnlyIn3GNetwork = KErrNotFound; + iRepository->Get(MusSettingsKeys::KAllowOnlyIn3GNetwork, iOnlyIn3GNetwork); + + iCameraUsage = KErrNotFound; + iRepository->Get(MusSettingsKeys::KCameraUsage, iCameraUsage); + + iVideoDirection = KErrNotFound; + iRepository->Get(MusSettingsKeys::KVideoDirection, iVideoDirection); + + iVideoBandwidth = KErrNotFound; + iRepository->Get(MusSettingsKeys::KVideoBandwidth, iVideoBandwidth); + + iFastMode = KErrNotFound; + iRepository->Get(MusSettingsKeys::KFastStartupMode, iFastMode); + } + +COtherResources::~COtherResources() + { + delete iRepository; + } + +void COtherResources::SaveL() + { + User::LeaveIfError( + iRepository->StartTransaction(CRepository::EConcurrentReadWriteTransaction)); + iRepository->CleanupCancelTransactionPushL(); + + SetKeyValueL(MusSettingsKeys::KActivation, iActivation); + SetKeyValueL(MusSettingsKeys::KOperatorVariant, iOperatorVariant); + SetKeyValueL(MusSettingsKeys::KAuditoryNotification, iAuditoryNotification); + SetKeyValueL(MusSettingsKeys::KPopupNotification, iPopupNotification); + SetKeyValueL(MusSettingsKeys::KPopupNotificationType, iPopupNotificationType); + SetKeyValueL(MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport); + SetKeyValueL(MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod); + SetKeyValueL(MusSettingsKeys::KAutoRecord, iAutoRecord); + SetKeyValueL(MusSettingsKeys::KVideoLocation, iVideoLocation); + SetKeyValueL(MusSettingsKeys::KSipProfileId, iSipProfileId); + SetKeyValueL(MusSettingsKeys::KUiOrientation, iUiOrientation); + SetKeyValueL(MusSettingsKeys::KCapabilityQuery, iCapabilityQuery); + SetKeyValueL(MusSettingsKeys::KProductModeVariation, iProductModeVariation); + User::LeaveIfError( + iRepository->Set(MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo)); + TLex lex( iEncodingDeviceStr ); + TUint tmpUid; + lex.SkipSpace(); + if ( lex.Val(tmpUid, EHex) == KErrNone ) + { + iEncodingDevice = tmpUid; + } + else + { + iEncodingDevice = KErrNotFound; + } + SetKeyValueL(MusSettingsKeys::KEncodingDevice, iEncodingDevice); + SetKeyValueL(MusSettingsKeys::KAllowOnlyWithActiveCSCall, iOnlyWithActiveCSCall); + SetKeyValueL(MusSettingsKeys::KAllowOnlyIn3GNetwork, iOnlyIn3GNetwork); + SetKeyValueL(MusSettingsKeys::KCameraUsage, iCameraUsage); + SetKeyValueL(MusSettingsKeys::KVideoDirection, iVideoDirection); + SetKeyValueL(MusSettingsKeys::KVideoBandwidth, iVideoBandwidth); + SetKeyValueL(MusSettingsKeys::KFastStartupMode, iFastMode); + + TUint32 modifiedKeyCount(0); + User::LeaveIfError(iRepository->CommitTransaction(modifiedKeyCount)); + CleanupStack::Pop(); // transaction + } + +void COtherResources::SetKeyValueL( + const TUint32& aKey, + TInt& aVal) + { + TBool keyExistsInRepository(EFalse); + TInt tmpVal(0); + keyExistsInRepository = (iRepository->Get(aKey,tmpVal) == KErrNone); + if (aVal < 0) + { + if (keyExistsInRepository) + { + User::LeaveIfError(iRepository->Delete(aKey)); + } + } + else + { + if (keyExistsInRepository) + { + User::LeaveIfError(iRepository->Set(aKey,aVal)); + } + else + { + User::LeaveIfError(iRepository->Create(aKey,aVal)); + } + } + } + +CMusApplication* CMusApplication::NewLC() + { + CMusApplication* self = new (ELeave) CMusApplication(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CMusApplication* CMusApplication::NewL() + { + CMusApplication* self = CMusApplication::NewLC(); + CleanupStack::Pop(); + return self; + } + +void CMusApplication::ConstructL() + { + iUseCase = MultimediaSharing::EMusLiveVideo; + iMultimediasharing=CMusManager::NewL(); + iMultimediasharing->ExamineAvailabilityL(); + } + +CMusApplication::~CMusApplication() + { + delete iMultimediasharing; + iMultimediasharing=NULL; + } + +void CMusApplication::HandleError(TInt aError , TPtrC aVal ) + { + CAknErrorNote *dlg = new CAknErrorNote(ETrue); + TBuf<100> buf; + buf.Append(aVal); + buf.Append(_L(" Error ")); + buf.AppendNum(aError); + dlg->ExecuteLD(buf); + } + +TBool CMusApplication::Start(TInt aUseCase) + { + TRAPD(err,iMultimediasharing->StartApplicationL( + MultimediaSharing::TMusUseCase(aUseCase))); + if(err)HandleError(err,_L("MusStart ")); + return (err)?EFalse :ETrue; + } + +TBool CMusApplication::Stop() + { + TRAPD(err,iMultimediasharing->StopApplicationL()); + if(err)HandleError(err,_L("MusStop ")); + return (err)?EFalse :ETrue; + } + +TInt CMusApplication::Availability() + { + TInt status=-1; + TRAPD(err,status=iMultimediasharing->AvailabilityL()); + if(err)HandleError(err,_L("MusAvailability ")); + return status; + } +TInt CMusApplication::MonitorAvailability() + { + return KErrGeneral; + } + +TBool CMusApplication::AvailabilityInfo() + { + TBuf<100> buf(_L("Availability Info: ")); + TBool available = EFalse ; + switch(Availability()) + { + case MultimediaSharing::ESipRegistrationPending: + buf.Append(_L("SipRegistrationPending ")); + break; + + case MultimediaSharing::ESipOptionsSent: + buf.Append(_L("SipOptionsSent ")); + available = ETrue ; + break; + + case MultimediaSharing::ESipOptionsNotCapable: + buf.Append(_L("SipOptionsNotCapable ")); + available = ETrue ; + break; + + case MultimediaSharing::ESipOptionsNotSent: + buf.Append(_L("SipOptionsNotSent ")); + available = ETrue ; + break; + + case MultimediaSharing::EErrSipRegistration: + buf.Append(_L("ErrSipRegistration ")); + break; + + case MultimediaSharing::EErrNoActiveCall: + buf.Append(_L("ErrNoActiveCall ")); + break; + + case MultimediaSharing::EErrCallOnHold: + buf.Append(_L("ErrCallOnHold ")); + break; + + case MultimediaSharing::EErrConferenceCall: + buf.Append(_L("ErrConferenceCall ")); + break; + + case MultimediaSharing::EErrRoaming: + buf.Append(_L("ErrRoaming ")); + break; + + case MultimediaSharing::EErrNetwork: + buf.Append(_L("ErrNetwork ")); + break; + + default: + buf.Append(_L("Error Occured ")); + break; + + } + CAknErrorNote *dlg = new CAknErrorNote(ETrue); + dlg->ExecuteLD(buf); + return available; + } + +void CMusApplication::MusUseCaseInfo(TBool aStart) + { + CAknErrorNote *dlg = new CAknErrorNote(ETrue); + TBuf<50> buf; + switch (iUseCase) + { + case MultimediaSharing::EMusLiveVideo: + buf.Append(_L("MusLiveVideo ")); + break; + case MultimediaSharing::EMusClipVideo: + buf.Append(_L("MusClipVideo ")); + break; + case MultimediaSharing::EMusStillImage: + buf.Append(_L("MusStillImage ")); + break; + case MultimediaSharing::EMusReceive: + buf.Append(_L("MusReceive ")); + break; + case MultimediaSharing::EMusContinue: + buf.Append(_L("MusContinue ")); + break; + default : + buf.Append(_L("Unknown Usecase ")); + break; + } + (aStart) ? buf.Append(_L("Started")) : buf.Append(_L("Stoped")); + dlg->ExecuteLD(buf); + } + +// End of File +