--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tsrc/CenrepEditor/Src/cenrepeditormodel.cpp Thu Dec 17 08:44:37 2009 +0200
@@ -0,0 +1,523 @@
+/*
+* 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 <cenrepeditor.rsg>
+#include <e32property.h>
+#include <aknnotewrappers.h>
+#ifdef _KODIAK_PHONE_CALL
+#include <CTSYDomainPSKeys.h>
+#else
+const TUid KPSUidCtsyCallInformation = {0x102029AC};
+const TUint32 KCTsyKodiakPtt = 0x00000003;
+enum TPSCTsyKodiakPtt
+ {
+ EPSCTsyKodiakPttNotActive,
+ EPSCTsyKodiakPttActive
+ };
+#endif
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+CPhoneResources* CPhoneResources::NewLC()
+ {
+ // create a new expense object
+ CPhoneResources* self = new (ELeave) CPhoneResources();
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+CPhoneResources* CPhoneResources::NewL()
+ {
+ CPhoneResources* self = CPhoneResources::NewLC();
+ CleanupStack::Pop();
+ return self;
+ }
+
+void CPhoneResources::ConstructL()
+ {
+ iCameraAvailability = -1;
+ iKeypadAvailability = -1 ;
+ iVideoPlayerAvailability = -1;
+ iCameraInformation = -1;
+ iKodiakPhoneCall = -1;
+ iDummy = 1; // just a postive value , dirty idea but just works at this time
+ }
+
+void CPhoneResources::ReadL()
+ {
+ TInt err = KErrNone;
+ // 1. camera property
+ err = RProperty::Get( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraAvailability,
+ iCameraAvailability);
+ if(err)HandleError(ETrue,err,_L("CameraAvailability"));
+ // 2. keypad property
+ err = RProperty::Get( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KKeypadAvailability,
+ iKeypadAvailability );
+ if(err)HandleError(ETrue , err,_L("KeypadAvailability"));
+ // 3. video player property
+ err = RProperty::Get( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KVideoPlayerAvailability,
+ iVideoPlayerAvailability );
+ if(err)HandleError( ETrue, err ,_L("VideoPlayerAvailability"));
+ // 3. video player property
+ err = RProperty::Get( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraInformation,
+ iCameraInformation );
+ if(err)HandleError( ETrue, err ,_L("CameraInformation"));
+ err = RProperty::Get( KPSUidCtsyCallInformation,
+ KCTsyKodiakPtt,
+ iKodiakPhoneCall );
+ if(err)
+ {
+ iKodiakPhoneCall = EPSCTsyKodiakPttNotActive;
+ RProperty::Define(KPSUidCtsyCallInformation,KCTsyKodiakPtt,EPSCTsyKodiakPttNotActive);
+ }
+ }
+
+
+CPhoneResources::~CPhoneResources()
+ {
+ }
+
+void CPhoneResources::SaveL()
+ {
+ //TInt err = KErrNone;
+
+ User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraAvailability,
+ iCameraAvailability));
+ //if(err)HandleError( EFalse, err ,_L("CameraAvailability"));
+ // 2. keypad property
+ User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KKeypadAvailability,
+ iKeypadAvailability ));
+ //if(err)HandleError(EFalse, err,_L("KeypadAvailability"));
+ // 3. video player property
+ User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KVideoPlayerAvailability,
+ iVideoPlayerAvailability ));
+ //if(err)HandleError(EFalse, err,_L("VideoPlayerAvailability"));
+ // 3. video player property
+ User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid,
+ NMusResourceApi::KCameraInformation,
+ iCameraInformation ));
+ //if(err)HandleError(EFalse, err,_L("CameraInformation"));
+ // 4. Kodiak PS Key
+ User::LeaveIfError(SetValueL( KPSUidCtsyCallInformation,
+ KCTsyKodiakPtt,
+ iKodiakPhoneCall ));
+ //if(err)HandleError( EFalse, err ,_L("KodiakPSKeyInformation"));
+ }
+
+TInt CPhoneResources::SetValueL(TUid aCategory, TUint aKey, TInt aValue)
+ {
+ if(aValue<0)return KErrNone; // dont care if the key is not read intially
+ return RProperty::Set( aCategory, aKey, aValue );
+ }
+
+
+void CPhoneResources::HandleError(TBool aType ,TInt aError , TPtrC aKeyName )
+ {
+ CAknErrorNote *dlg = new CAknErrorNote(ETrue);
+ TBuf<100> buf;
+ if(aType)
+ {
+ buf.Append(_L("Unable to Read Key "));
+ }
+ else
+ {
+ buf.Append(_L("Unable to Save "));
+ }
+ buf.Append(aKeyName);
+ buf.Append(_L(" Error "));
+ buf.AppendNum(aError);
+ dlg->ExecuteLD(buf);
+ }
+
+COtherResources* COtherResources::NewLC()
+ {
+ // create a new expense object
+ 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()
+ {
+ iActivation = -1 ;
+ iOperatorVariant = -1 ;
+ iAuditoryNotification = -1;
+ iPopupNotification = -1 ;
+ iPopupNotificationType = -1 ;
+ iEdgeDtmSupport = -1 ;
+ iSessionSetupMethod = -1 ;
+ iAutoRecord = -1 ;
+ iVideoLocation = -1 ;
+ iSipProfileId = -1 ;
+ iUiOrientation = -1 ;
+ iCapabilityQuery = -1;
+ iProductModeVariation=-1;
+ iEncodingDevice = -1;
+ iPrivacyVariation = -1;
+ iDummy = 1; // just a postive value
+ }
+
+void COtherResources::ReadL()
+ {
+
+ TRAPD(err,ReadCRKeyValuesL());
+ if(err) HandleError (ETrue,err,_L("Read Error"));
+
+ }
+
+void COtherResources::ReadCRKeyValuesL()
+{
+
+ TInt err=KErrNone;
+ CRepository* cr = NULL ;
+ TRAP(err,cr = CRepository::NewL( MusSettingsKeys::KRepositoryUid ));
+ cr->CleanupCancelTransactionPushL();
+ if(err)
+ {
+ CAknErrorNote *dlg = new CAknErrorNote(ETrue);
+ dlg->ExecuteLD(_L(\
+ "Unable to Construct CRepository for UID 0x1028238B"));
+ return ; // dont leave
+ }
+
+ ReadKeyValueL( cr, MusSettingsKeys::KActivation,iActivation );
+ ReadKeyValueL( cr, MusSettingsKeys::KOperatorVariant,iOperatorVariant);
+ ReadKeyValueL( cr, MusSettingsKeys::KAuditoryNotification, iAuditoryNotification);
+ ReadKeyValueL( cr, MusSettingsKeys::KPopupNotification, iPopupNotification);
+ ReadKeyValueL( cr, MusSettingsKeys::KPopupNotificationType, iPopupNotificationType);
+ ReadKeyValueL( cr, MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport);
+ ReadKeyValueL( cr, MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod);
+ ReadKeyValueL( cr, MusSettingsKeys::KAutoRecord, iAutoRecord);
+ ReadKeyValueL( cr, MusSettingsKeys::KVideoLocation, iVideoLocation);
+ ReadKeyValueL( cr, MusSettingsKeys::KSipProfileId, iSipProfileId);
+ ReadKeyValueL( cr, MusSettingsKeys::KUiOrientation, iUiOrientation);
+ ReadKeyValueL( cr, MusSettingsKeys::KCapabilityQuery, iCapabilityQuery);
+ ReadKeyValueL( cr, MusSettingsKeys::KProductModeVariation, iProductModeVariation);
+ ReadKeyValueL( cr, MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo );
+ ReadKeyValueL( cr, MusSettingsKeys::KEncodingDevice, iEncodingDevice );
+ ReadKeyValueL( cr, MusSettingsKeys::KPrivacyExchange, iPrivacyVariation );
+
+ iEncodingDeviceStr.Zero();
+ iEncodingDeviceStr.AppendNum(iEncodingDevice, EHex);
+
+ CleanupStack::PopAndDestroy(cr);
+ delete cr;
+
+}
+
+
+COtherResources::~COtherResources()
+ {
+ }
+
+void COtherResources::SaveL()
+ {
+
+ TRAPD(err,SaveCRKeyValuesL());
+ if(err) HandleError (ETrue,err,_L("Save Error"));
+
+ }
+
+void COtherResources::SaveCRKeyValuesL()
+ {
+ CRepository* cr = NULL ;
+ TRAPD(err,cr = CRepository::NewL( MusSettingsKeys::KRepositoryUid ));
+ cr->CleanupCancelTransactionPushL();
+ if(err)
+ {
+ CAknErrorNote *dlg = new CAknErrorNote(ETrue);
+ dlg->ExecuteLD(_L(\
+ "Unable to Construct CRepository for UID 0x1028238B"));
+ User::Leave(err);
+ }
+ SetKeyValueL( cr,MusSettingsKeys::KActivation, iActivation);
+ SetKeyValueL( cr,MusSettingsKeys::KOperatorVariant, iOperatorVariant);
+ SetKeyValueL( cr,MusSettingsKeys::KAuditoryNotification, iAuditoryNotification);
+ SetKeyValueL( cr,MusSettingsKeys::KPopupNotification, iPopupNotification);
+ SetKeyValueL( cr,MusSettingsKeys::KPopupNotificationType, iPopupNotificationType);
+ SetKeyValueL( cr,MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport);
+ SetKeyValueL( cr,MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod);
+ SetKeyValueL( cr,MusSettingsKeys::KAutoRecord, iAutoRecord);
+ SetKeyValueL( cr,MusSettingsKeys::KVideoLocation, iVideoLocation);
+ SetKeyValueL( cr,MusSettingsKeys::KSipProfileId, iSipProfileId);
+ SetKeyValueL( cr,MusSettingsKeys::KUiOrientation, iUiOrientation);
+ SetKeyValueL( cr,MusSettingsKeys::KCapabilityQuery, iCapabilityQuery);
+ SetKeyValueL( cr,MusSettingsKeys::KProductModeVariation, iProductModeVariation);
+ SetKeyValueL( cr,MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo );
+ SetKeyValueL( cr,MusSettingsKeys::KPrivacyExchange, iPrivacyVariation );
+
+ TLex lex( iEncodingDeviceStr );
+ TUint uid;
+ err = lex.Val(uid, EHex);
+ if ( (err == KErrNone) && lex.Eos() )
+ {
+ iEncodingDevice = uid;
+ SetKeyValueL( cr, MusSettingsKeys::KEncodingDevice, iEncodingDevice );
+ }
+
+ CleanupStack::PopAndDestroy(cr);
+ delete cr;
+ }
+
+void COtherResources::SetKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal)
+ {
+ if(aVal<0) return; // dont care if key is not intially read
+ TUint32 key(aKey);
+ User::LeaveIfError(repository->StartTransaction(
+ CRepository::EConcurrentReadWriteTransaction));
+ User::LeaveIfError(repository->Set(key,aVal));
+ User::LeaveIfError(repository->CommitTransaction(key));
+ }
+
+void COtherResources::ReadKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal)
+ {
+ TUint32 key(aKey);
+ User::LeaveIfError(repository->StartTransaction(
+ CRepository::EConcurrentReadWriteTransaction));
+ User::LeaveIfError(repository->Get(key,aVal));
+ User::LeaveIfError(repository->CommitTransaction(key));
+ }
+
+void COtherResources::SetKeyValueL(CRepository* repository, TInt aKey, const TDesC& aVal)
+ {
+ TUint32 key(aKey);
+ User::LeaveIfError(repository->StartTransaction(
+ CRepository::EConcurrentReadWriteTransaction));
+ User::LeaveIfError(repository->Set(key,aVal));
+ User::LeaveIfError(repository->CommitTransaction(key));
+ }
+
+void COtherResources::ReadKeyValueL(CRepository* repository, TInt aKey, TDes& aVal)
+ {
+ TUint32 key(aKey);
+ User::LeaveIfError(repository->StartTransaction(
+ CRepository::EConcurrentReadWriteTransaction));
+ User::LeaveIfError(repository->Get(key,aVal));
+ User::LeaveIfError(repository->CommitTransaction(key));
+ }
+
+void COtherResources::HandleError(TBool aType ,
+ TInt aError , TPtrC aKeyName )
+ {
+ CAknErrorNote *dlg = new CAknErrorNote(ETrue);
+ TBuf<100> buf;
+ if(aType)
+ {
+ buf.Append(_L("Unable to Read Key "));
+ }
+ else
+ {
+ buf.Append(_L("Unable to Save Key "));
+ }
+ buf.Append(aKeyName);
+ buf.Append(_L(" Error "));
+ buf.AppendNum(aError);
+ dlg->ExecuteLD(buf);
+ }
+
+CMusApplication* CMusApplication::NewLC()
+ {
+ // create a new expense object
+ 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()
+ {
+ TInt status = KErrGeneral;
+ /*TRequestStatus requestStatus;
+ TRAPD(err,iMultimediasharing->
+ MonitorAvailabilityL(
+ requestStatus,
+ MultimediaSharing::TMusAvailabilityStatus(status))
+ );
+ if(err)HandleError(err,_L("MusAvailability "));
+ User::WaitForRequest(requestStatus);
+ */
+ return status;
+ }
+
+
+
+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
+