tsrc/CenrepEditor/Src/cenrepeditormodel.cpp
changeset 0 f0cf47e981f9
child 32 73a1feb507fb
--- /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  
+