tsrc/CenrepEditor/Src/cenrepeditormodel.cpp
changeset 0 f0cf47e981f9
child 32 73a1feb507fb
equal deleted inserted replaced
-1:000000000000 0:f0cf47e981f9
       
     1 /*
       
     2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include "cenrepeditormodel.h"
       
    21 #include "musresourceproperties.h"
       
    22 #include "mussettingskeys.h"
       
    23 #include <cenrepeditor.rsg>
       
    24 #include <e32property.h>
       
    25 #include <aknnotewrappers.h>
       
    26 #ifdef _KODIAK_PHONE_CALL
       
    27 #include <CTSYDomainPSKeys.h>
       
    28 #else
       
    29 const TUid KPSUidCtsyCallInformation = {0x102029AC};
       
    30 const TUint32 KCTsyKodiakPtt = 0x00000003;    
       
    31 enum TPSCTsyKodiakPtt
       
    32     {
       
    33     EPSCTsyKodiakPttNotActive,
       
    34     EPSCTsyKodiakPttActive
       
    35     };
       
    36 #endif
       
    37 
       
    38 
       
    39 // ================= MEMBER FUNCTIONS =======================
       
    40 
       
    41 CPhoneResources* CPhoneResources::NewLC()
       
    42     {
       
    43     // create a new expense object
       
    44     CPhoneResources* self = new (ELeave) CPhoneResources();
       
    45     CleanupStack::PushL(self);
       
    46     self->ConstructL();
       
    47     return self;
       
    48     }
       
    49 
       
    50 CPhoneResources* CPhoneResources::NewL()
       
    51     {
       
    52     CPhoneResources* self = CPhoneResources::NewLC();
       
    53     CleanupStack::Pop();
       
    54     return self;
       
    55     }
       
    56 
       
    57 void CPhoneResources::ConstructL()
       
    58 	{
       
    59     iCameraAvailability = -1;
       
    60     iKeypadAvailability = -1 ;
       
    61     iVideoPlayerAvailability = -1;
       
    62     iCameraInformation = -1;
       
    63     iKodiakPhoneCall = -1;
       
    64     iDummy = 1; // just a postive value , dirty idea but just works at this time 
       
    65 	}
       
    66 
       
    67 void CPhoneResources::ReadL()
       
    68 	{
       
    69     TInt err = KErrNone;
       
    70             // 1. camera property
       
    71     err = RProperty::Get( NMusResourceApi::KCategoryUid, 
       
    72                              NMusResourceApi::KCameraAvailability, 
       
    73                               iCameraAvailability);
       
    74     if(err)HandleError(ETrue,err,_L("CameraAvailability"));
       
    75             // 2. keypad property
       
    76     err = RProperty::Get( NMusResourceApi::KCategoryUid, 
       
    77                                NMusResourceApi::KKeypadAvailability, 
       
    78                                iKeypadAvailability );
       
    79     if(err)HandleError(ETrue , err,_L("KeypadAvailability"));
       
    80             // 3. video player property
       
    81     err = RProperty::Get( NMusResourceApi::KCategoryUid, 
       
    82                                NMusResourceApi::KVideoPlayerAvailability, 
       
    83                                iVideoPlayerAvailability );
       
    84     if(err)HandleError( ETrue, err ,_L("VideoPlayerAvailability"));
       
    85             // 3. video player property
       
    86     err = RProperty::Get( NMusResourceApi::KCategoryUid, 
       
    87                                NMusResourceApi::KCameraInformation, 
       
    88                                iCameraInformation );
       
    89     if(err)HandleError( ETrue, err ,_L("CameraInformation"));    
       
    90     err = RProperty::Get( KPSUidCtsyCallInformation, 
       
    91                                KCTsyKodiakPtt, 
       
    92                                iKodiakPhoneCall );
       
    93     if(err)
       
    94         {  
       
    95         iKodiakPhoneCall = EPSCTsyKodiakPttNotActive;        
       
    96         RProperty::Define(KPSUidCtsyCallInformation,KCTsyKodiakPtt,EPSCTsyKodiakPttNotActive);
       
    97         }   
       
    98 	}
       
    99 
       
   100 
       
   101 CPhoneResources::~CPhoneResources()
       
   102 	{
       
   103 	}
       
   104 
       
   105 void CPhoneResources::SaveL()
       
   106     {
       
   107     //TInt err = KErrNone;
       
   108 
       
   109     User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid, 
       
   110                              NMusResourceApi::KCameraAvailability, 
       
   111                               iCameraAvailability));
       
   112     //if(err)HandleError( EFalse, err ,_L("CameraAvailability"));
       
   113             // 2. keypad property
       
   114     User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid, 
       
   115                                NMusResourceApi::KKeypadAvailability, 
       
   116                                iKeypadAvailability ));
       
   117     //if(err)HandleError(EFalse, err,_L("KeypadAvailability"));
       
   118           // 3. video player property
       
   119     User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid, 
       
   120                                NMusResourceApi::KVideoPlayerAvailability, 
       
   121                                iVideoPlayerAvailability ));
       
   122     //if(err)HandleError(EFalse, err,_L("VideoPlayerAvailability"));
       
   123           // 3. video player property
       
   124     User::LeaveIfError(SetValueL( NMusResourceApi::KCategoryUid, 
       
   125                                NMusResourceApi::KCameraInformation, 
       
   126                                 iCameraInformation ));
       
   127     //if(err)HandleError(EFalse, err,_L("CameraInformation"));
       
   128              // 4. Kodiak PS Key    
       
   129     User::LeaveIfError(SetValueL( KPSUidCtsyCallInformation, 
       
   130                                KCTsyKodiakPtt, 
       
   131                                 iKodiakPhoneCall ));
       
   132     //if(err)HandleError( EFalse, err ,_L("KodiakPSKeyInformation"));                 
       
   133     }
       
   134 
       
   135 TInt CPhoneResources::SetValueL(TUid aCategory, TUint aKey, TInt aValue)
       
   136     {
       
   137     if(aValue<0)return KErrNone; // dont care if the key is not read intially
       
   138     return RProperty::Set( aCategory, aKey, aValue );
       
   139     }
       
   140 
       
   141 
       
   142 void CPhoneResources::HandleError(TBool aType ,TInt aError , TPtrC aKeyName )
       
   143     {
       
   144     CAknErrorNote *dlg = new CAknErrorNote(ETrue);
       
   145     TBuf<100> buf;
       
   146     if(aType)
       
   147         {
       
   148         buf.Append(_L("Unable to Read Key "));
       
   149         }
       
   150     else
       
   151         {
       
   152         buf.Append(_L("Unable to Save "));
       
   153         }
       
   154     buf.Append(aKeyName);
       
   155     buf.Append(_L(" Error "));
       
   156     buf.AppendNum(aError);
       
   157     dlg->ExecuteLD(buf); 
       
   158     }
       
   159 
       
   160 COtherResources* COtherResources::NewLC()
       
   161     {
       
   162     // create a new expense object
       
   163     COtherResources* self = new (ELeave) COtherResources();
       
   164     CleanupStack::PushL(self);
       
   165     self->ConstructL();
       
   166     return self;
       
   167     }
       
   168 
       
   169 COtherResources* COtherResources::NewL()
       
   170     {
       
   171     COtherResources* self = COtherResources::NewLC();
       
   172     CleanupStack::Pop();
       
   173     return self;
       
   174     }
       
   175 
       
   176 void COtherResources::ConstructL()
       
   177     {
       
   178     iActivation = -1 ;
       
   179     iOperatorVariant = -1 ;
       
   180     iAuditoryNotification = -1;
       
   181     iPopupNotification = -1 ;
       
   182     iPopupNotificationType = -1 ;
       
   183     iEdgeDtmSupport = -1 ;
       
   184     iSessionSetupMethod = -1 ;
       
   185     iAutoRecord = -1 ;
       
   186     iVideoLocation = -1 ;
       
   187     iSipProfileId = -1 ;
       
   188     iUiOrientation = -1 ;
       
   189     iCapabilityQuery = -1;  
       
   190     iProductModeVariation=-1;
       
   191     iEncodingDevice = -1;
       
   192     iPrivacyVariation = -1;
       
   193     iDummy = 1; // just a postive value      
       
   194     }
       
   195 
       
   196 void COtherResources::ReadL()
       
   197 	{     
       
   198     
       
   199     TRAPD(err,ReadCRKeyValuesL());
       
   200     if(err) HandleError (ETrue,err,_L("Read Error"));
       
   201     
       
   202 	}
       
   203 	
       
   204 void COtherResources::ReadCRKeyValuesL()
       
   205 {
       
   206 
       
   207 	TInt err=KErrNone;
       
   208     CRepository* cr = NULL ;
       
   209     TRAP(err,cr = CRepository::NewL( MusSettingsKeys::KRepositoryUid ));
       
   210     cr->CleanupCancelTransactionPushL();
       
   211     if(err)
       
   212         {
       
   213         CAknErrorNote *dlg = new CAknErrorNote(ETrue);
       
   214         dlg->ExecuteLD(_L(\
       
   215                    "Unable to Construct CRepository for UID 0x1028238B"));        
       
   216         return ; // dont leave 
       
   217         }    
       
   218    
       
   219     ReadKeyValueL( cr, MusSettingsKeys::KActivation,iActivation ); 
       
   220 	ReadKeyValueL( cr, MusSettingsKeys::KOperatorVariant,iOperatorVariant);
       
   221   	ReadKeyValueL( cr, MusSettingsKeys::KAuditoryNotification, iAuditoryNotification);
       
   222    	ReadKeyValueL( cr, MusSettingsKeys::KPopupNotification, iPopupNotification);
       
   223     ReadKeyValueL( cr, MusSettingsKeys::KPopupNotificationType, iPopupNotificationType);
       
   224     ReadKeyValueL( cr, MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport);
       
   225     ReadKeyValueL( cr, MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod);
       
   226    	ReadKeyValueL( cr, MusSettingsKeys::KAutoRecord, iAutoRecord);
       
   227 	ReadKeyValueL( cr, MusSettingsKeys::KVideoLocation, iVideoLocation);
       
   228  	ReadKeyValueL( cr, MusSettingsKeys::KSipProfileId, iSipProfileId);
       
   229   	ReadKeyValueL( cr, MusSettingsKeys::KUiOrientation, iUiOrientation);    
       
   230  	ReadKeyValueL( cr, MusSettingsKeys::KCapabilityQuery, iCapabilityQuery);     	
       
   231  	ReadKeyValueL( cr, MusSettingsKeys::KProductModeVariation, iProductModeVariation);    
       
   232  	ReadKeyValueL( cr, MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo );
       
   233  	ReadKeyValueL( cr, MusSettingsKeys::KEncodingDevice, iEncodingDevice );
       
   234  	ReadKeyValueL( cr, MusSettingsKeys::KPrivacyExchange, iPrivacyVariation ); 
       
   235 
       
   236  	iEncodingDeviceStr.Zero();
       
   237  	iEncodingDeviceStr.AppendNum(iEncodingDevice, EHex); 	    
       
   238  	
       
   239  	CleanupStack::PopAndDestroy(cr);
       
   240    	delete cr;
       
   241 
       
   242 }
       
   243 
       
   244 
       
   245 COtherResources::~COtherResources()
       
   246 	{
       
   247 	}
       
   248 
       
   249 void COtherResources::SaveL()
       
   250     {
       
   251    
       
   252    	TRAPD(err,SaveCRKeyValuesL());
       
   253    	if(err) HandleError (ETrue,err,_L("Save Error"));
       
   254     
       
   255     }
       
   256 
       
   257 void COtherResources::SaveCRKeyValuesL()
       
   258     {
       
   259 	CRepository* cr = NULL ;
       
   260     TRAPD(err,cr = CRepository::NewL( MusSettingsKeys::KRepositoryUid ));        
       
   261     cr->CleanupCancelTransactionPushL();
       
   262     if(err)
       
   263         {
       
   264         CAknErrorNote *dlg = new CAknErrorNote(ETrue);
       
   265         dlg->ExecuteLD(_L(\
       
   266                    "Unable to Construct CRepository for UID 0x1028238B"));  
       
   267         User::Leave(err);        
       
   268         }      
       
   269     SetKeyValueL( cr,MusSettingsKeys::KActivation, iActivation);
       
   270  	SetKeyValueL( cr,MusSettingsKeys::KOperatorVariant, iOperatorVariant);
       
   271  	SetKeyValueL( cr,MusSettingsKeys::KAuditoryNotification,  iAuditoryNotification);
       
   272 	SetKeyValueL( cr,MusSettingsKeys::KPopupNotification, iPopupNotification);
       
   273 	SetKeyValueL( cr,MusSettingsKeys::KPopupNotificationType, iPopupNotificationType);
       
   274 	SetKeyValueL( cr,MusSettingsKeys::KEdgeDtmSupport, iEdgeDtmSupport);
       
   275 	SetKeyValueL( cr,MusSettingsKeys::KForceInternetSignaling, iSessionSetupMethod);
       
   276 	SetKeyValueL( cr,MusSettingsKeys::KAutoRecord, iAutoRecord);
       
   277 	SetKeyValueL( cr,MusSettingsKeys::KVideoLocation, iVideoLocation);
       
   278 	SetKeyValueL( cr,MusSettingsKeys::KSipProfileId,  iSipProfileId);
       
   279 	SetKeyValueL( cr,MusSettingsKeys::KUiOrientation, iUiOrientation);    
       
   280 	SetKeyValueL( cr,MusSettingsKeys::KCapabilityQuery, iCapabilityQuery);    
       
   281     SetKeyValueL( cr,MusSettingsKeys::KProductModeVariation, iProductModeVariation);    
       
   282     SetKeyValueL( cr,MusSettingsKeys::KEncoderConfigurationInfo, iEncoderInfo );
       
   283     SetKeyValueL( cr,MusSettingsKeys::KPrivacyExchange, iPrivacyVariation );
       
   284     
       
   285     TLex lex( iEncodingDeviceStr );
       
   286     TUint uid;
       
   287     err = lex.Val(uid, EHex);    
       
   288     if ( (err == KErrNone) && lex.Eos() )
       
   289         {
       
   290         iEncodingDevice = uid;
       
   291         SetKeyValueL( cr, MusSettingsKeys::KEncodingDevice, iEncodingDevice );        
       
   292         }
       
   293            
       
   294     CleanupStack::PopAndDestroy(cr);
       
   295 	delete cr;
       
   296     }
       
   297 
       
   298 void COtherResources::SetKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal)
       
   299     {  
       
   300     if(aVal<0)  return; // dont care if key is not intially read
       
   301     TUint32 key(aKey);
       
   302     User::LeaveIfError(repository->StartTransaction(
       
   303                         CRepository::EConcurrentReadWriteTransaction));    
       
   304     User::LeaveIfError(repository->Set(key,aVal));
       
   305     User::LeaveIfError(repository->CommitTransaction(key));    
       
   306     }
       
   307 
       
   308 void COtherResources::ReadKeyValueL(CRepository* repository, const TInt & aKey , TInt & aVal)
       
   309     {
       
   310     TUint32 key(aKey);
       
   311     User::LeaveIfError(repository->StartTransaction(
       
   312                         CRepository::EConcurrentReadWriteTransaction));
       
   313     User::LeaveIfError(repository->Get(key,aVal));
       
   314     User::LeaveIfError(repository->CommitTransaction(key));
       
   315     }
       
   316 
       
   317 void COtherResources::SetKeyValueL(CRepository* repository, TInt aKey, const TDesC& aVal)
       
   318     {
       
   319     TUint32 key(aKey);
       
   320     User::LeaveIfError(repository->StartTransaction(
       
   321                         CRepository::EConcurrentReadWriteTransaction));    
       
   322     User::LeaveIfError(repository->Set(key,aVal));
       
   323     User::LeaveIfError(repository->CommitTransaction(key));
       
   324     }
       
   325 
       
   326 void COtherResources::ReadKeyValueL(CRepository* repository, TInt aKey, TDes& aVal)
       
   327     {
       
   328     TUint32 key(aKey);
       
   329     User::LeaveIfError(repository->StartTransaction(
       
   330                         CRepository::EConcurrentReadWriteTransaction));
       
   331     User::LeaveIfError(repository->Get(key,aVal));
       
   332     User::LeaveIfError(repository->CommitTransaction(key));
       
   333     }
       
   334 
       
   335 void COtherResources::HandleError(TBool aType ,
       
   336                                     TInt aError , TPtrC aKeyName )
       
   337     {
       
   338     CAknErrorNote *dlg = new CAknErrorNote(ETrue);
       
   339     TBuf<100> buf;
       
   340     if(aType)
       
   341         {
       
   342         buf.Append(_L("Unable to Read Key "));
       
   343         }
       
   344     else
       
   345         {
       
   346         buf.Append(_L("Unable to Save Key "));
       
   347         }
       
   348     buf.Append(aKeyName);
       
   349     buf.Append(_L(" Error "));
       
   350     buf.AppendNum(aError);
       
   351     dlg->ExecuteLD(buf); 
       
   352     }
       
   353 
       
   354 CMusApplication* CMusApplication::NewLC()
       
   355     {
       
   356     // create a new expense object
       
   357     CMusApplication* self = new (ELeave) CMusApplication();
       
   358     CleanupStack::PushL(self);
       
   359     self->ConstructL();
       
   360     return self;
       
   361     }
       
   362 
       
   363 CMusApplication* CMusApplication::NewL()
       
   364     {
       
   365     CMusApplication* self = CMusApplication::NewLC();
       
   366     CleanupStack::Pop();
       
   367     return self;
       
   368     }
       
   369 
       
   370 void CMusApplication::ConstructL()
       
   371     {
       
   372     iUseCase = MultimediaSharing::EMusLiveVideo;     
       
   373     //iMultimediasharing=CMusManager::NewL();    
       
   374     //iMultimediasharing->ExamineAvailabilityL();
       
   375     }
       
   376 
       
   377 CMusApplication::~CMusApplication()
       
   378 	{
       
   379     delete iMultimediasharing;
       
   380     iMultimediasharing=NULL;
       
   381 	}
       
   382 
       
   383 void CMusApplication::HandleError(TInt aError , TPtrC aVal )
       
   384     {
       
   385     CAknErrorNote *dlg = new CAknErrorNote(ETrue);
       
   386     TBuf<100> buf;        
       
   387     buf.Append(aVal);
       
   388     buf.Append(_L(" Error "));
       
   389     buf.AppendNum(aError);
       
   390     dlg->ExecuteLD(buf); 
       
   391     }
       
   392 
       
   393 TBool CMusApplication::Start(TInt aUseCase)
       
   394     {
       
   395     /*TRAPD(err,iMultimediasharing->StartApplicationL(
       
   396                             MultimediaSharing::TMusUseCase(aUseCase)));
       
   397     if(err)HandleError(err,_L("MusStart "));    
       
   398     return (err)?EFalse :ETrue; */       
       
   399     }
       
   400      
       
   401 TBool CMusApplication::Stop()
       
   402     {
       
   403     TRAPD(err,iMultimediasharing->StopApplicationL());
       
   404     if(err)HandleError(err,_L("MusStop "));
       
   405     return (err)?EFalse :ETrue;    
       
   406     }
       
   407 
       
   408 TInt CMusApplication::Availability()
       
   409     {
       
   410     TInt status=-1;
       
   411     TRAPD(err,status=iMultimediasharing->AvailabilityL());
       
   412     if(err)HandleError(err,_L("MusAvailability "));
       
   413     return status;    
       
   414     }
       
   415 TInt CMusApplication::MonitorAvailability()
       
   416     {
       
   417     TInt status = KErrGeneral;
       
   418     /*TRequestStatus requestStatus;
       
   419     TRAPD(err,iMultimediasharing->
       
   420             MonitorAvailabilityL(
       
   421                 requestStatus,
       
   422                 MultimediaSharing::TMusAvailabilityStatus(status))
       
   423                                 );
       
   424     if(err)HandleError(err,_L("MusAvailability "));
       
   425     User::WaitForRequest(requestStatus);    
       
   426     */
       
   427     return status;        
       
   428     }
       
   429 
       
   430 
       
   431 
       
   432 TBool CMusApplication::AvailabilityInfo()
       
   433     {                                   
       
   434     TBuf<100> buf(_L("Availability Info: ")); 
       
   435     TBool available = EFalse ;
       
   436     switch(Availability())
       
   437         {
       
   438             case MultimediaSharing::ESipRegistrationPending:
       
   439                  buf.Append(_L("SipRegistrationPending "));
       
   440                  break;
       
   441 
       
   442             case MultimediaSharing::ESipOptionsSent:
       
   443                  buf.Append(_L("SipOptionsSent "));
       
   444                  available = ETrue ;
       
   445                  break;
       
   446 
       
   447             case MultimediaSharing::ESipOptionsNotCapable:
       
   448                  buf.Append(_L("SipOptionsNotCapable "));
       
   449                  available = ETrue ;
       
   450                  break;
       
   451 
       
   452             case MultimediaSharing::ESipOptionsNotSent:
       
   453                  buf.Append(_L("SipOptionsNotSent "));
       
   454                  available = ETrue ;
       
   455                  break;
       
   456 
       
   457             case MultimediaSharing::EErrSipRegistration:
       
   458                  buf.Append(_L("ErrSipRegistration "));
       
   459                  break;
       
   460 
       
   461             case MultimediaSharing::EErrNoActiveCall:
       
   462                  buf.Append(_L("ErrNoActiveCall "));
       
   463                  break;
       
   464 
       
   465             case MultimediaSharing::EErrCallOnHold:
       
   466                  buf.Append(_L("ErrCallOnHold "));
       
   467                  break;
       
   468 
       
   469             case MultimediaSharing::EErrConferenceCall:
       
   470                  buf.Append(_L("ErrConferenceCall "));
       
   471                  break;
       
   472 
       
   473             case MultimediaSharing::EErrRoaming:
       
   474                  buf.Append(_L("ErrRoaming "));
       
   475                  break;
       
   476 
       
   477             case MultimediaSharing::EErrNetwork:
       
   478                  buf.Append(_L("ErrNetwork "));
       
   479                  break;
       
   480 
       
   481             default:
       
   482                  buf.Append(_L("Error Occured "));
       
   483                  break;
       
   484 
       
   485         }     
       
   486     CAknErrorNote *dlg = new CAknErrorNote(ETrue);    
       
   487     dlg->ExecuteLD(buf);     
       
   488     return available;
       
   489     }
       
   490 
       
   491 void CMusApplication::MusUseCaseInfo(TBool aStart)
       
   492     {
       
   493     CAknErrorNote *dlg = new CAknErrorNote(ETrue);                                   
       
   494     TBuf<50> buf;  
       
   495     switch (iUseCase)
       
   496         {
       
   497             case MultimediaSharing::EMusLiveVideo:                    
       
   498             buf.Append(_L("MusLiveVideo "));
       
   499             break;
       
   500             case MultimediaSharing::EMusClipVideo:
       
   501             buf.Append(_L("MusClipVideo "));
       
   502             break;                     
       
   503             case MultimediaSharing::EMusStillImage:
       
   504             buf.Append(_L("MusStillImage "));
       
   505             break;
       
   506             case MultimediaSharing::EMusReceive:
       
   507             buf.Append(_L("MusReceive "));
       
   508             break;
       
   509             case MultimediaSharing::EMusContinue:
       
   510             buf.Append(_L("MusContinue "));
       
   511             break;
       
   512             default :
       
   513             buf.Append(_L("Unknown Usecase "));
       
   514             break;
       
   515         }          
       
   516     (aStart) ? buf.Append(_L("Started")) : buf.Append(_L("Stoped"));
       
   517     dlg->ExecuteLD(buf);      
       
   518     }
       
   519        
       
   520 
       
   521   
       
   522 // End of File  
       
   523