devsoundextensions/globalaudiosettings/src/GlobalAudioSettingsImpl.cpp
changeset 38 4269ca484c7b
parent 0 40261b775718
child 50 948c7f65f6d4
--- a/devsoundextensions/globalaudiosettings/src/GlobalAudioSettingsImpl.cpp	Tue Jul 06 16:02:18 2010 +0300
+++ b/devsoundextensions/globalaudiosettings/src/GlobalAudioSettingsImpl.cpp	Wed Aug 18 11:16:18 2010 +0300
@@ -31,6 +31,8 @@
 #define PRINT_MESSAGE
 #endif // _DEBUG
 
+const TInt KMaxLength=256;
+_LIT( KNoSound, "z:\\resource\\No_Sound.wav" );
 // ============================ MEMBER FUNCTIONS ===============================
 
 // -----------------------------------------------------------------------------
@@ -51,7 +53,7 @@
 // 
 // -----------------------------------------------------------------------------
 //
-EXPORT_C CGlobalAudioSettingsImpl* CGlobalAudioSettingsImpl::NewL(
+CGlobalAudioSettingsImpl* CGlobalAudioSettingsImpl::NewL(
                                         CGlobalAudioSettings &aGlobalAudioSettings,
                                         MAudioSettingsObserver& aAudioSettingsObserver)
 	{
@@ -93,7 +95,54 @@
                         	                iAudioSettingsObserver,
                         	                iGlobalAudioSettingsData);
 	iVibraObserverAO->Subscribe();
-
+	iRingingTypeObserverAO = CRingingTypeObserverAO::NewL(
+	                                            iGlobalAudioSettings,
+	                                            iAudioSettingsObserver,
+	                                            iGlobalAudioSettingsData);
+    iRingingTypeObserverAO->Subscribe();
+     
+	iMessageToneObserverAO = CMessageToneObserverAO::NewL(
+	                                            iGlobalAudioSettings,
+	                                            iAudioSettingsObserver,
+	                                            iGlobalAudioSettingsData);
+	iMessageToneObserverAO->Subscribe();
+	iEmailToneObserverAO = CEmailToneObserverAO::NewL(
+	                                                iGlobalAudioSettings,
+	                                                iAudioSettingsObserver,
+	                                                iGlobalAudioSettingsData);
+	iEmailToneObserverAO->Subscribe();   
+	
+	
+    iVideoCallObserverAO = CVideoCallToneObserverAO::NewL(
+                                                            iGlobalAudioSettings,
+                                                            iAudioSettingsObserver,
+                                                            iGlobalAudioSettingsData);
+    iVideoCallObserverAO->Subscribe();  
+        
+    iRingingTone1ObserverAO = CRingingTone1ObserverAO::NewL(
+                                                                    iGlobalAudioSettings,
+                                                                    iAudioSettingsObserver,
+                                                                    iGlobalAudioSettingsData);
+    iRingingTone1ObserverAO->Subscribe();
+	
+    iRingingTone2ObserverAO = CRingingTone2ObserverAO::NewL(
+                                                                            iGlobalAudioSettings,
+                                                                            iAudioSettingsObserver,
+                                                                            iGlobalAudioSettingsData);
+    iRingingTone2ObserverAO->Subscribe();  
+	
+    iKeypadToneObserverAO = CKeypadToneObserverAO::NewL(
+                                                                            iGlobalAudioSettings,
+                                                                            iAudioSettingsObserver,
+                                                                            iGlobalAudioSettingsData);
+    iKeypadToneObserverAO->Subscribe();  
+                
+    iSilenceModeObserverAO = CSilenceModeObserverAO::NewL(
+                                                                                iGlobalAudioSettings,
+                                                                                iAudioSettingsObserver,
+                                                                                iGlobalAudioSettingsData);
+     iSilenceModeObserverAO->Subscribe();  
+	                    
     RProperty publicSilenceProperty;
 	User::LeaveIfError(publicSilenceProperty.Attach(KGASPSUidGlobalAudioSettings, KGASPublicSilence));
 	User::LeaveIfError(publicSilenceProperty.Get(iGlobalAudioSettingsData.iPublicSilence));
@@ -105,12 +154,20 @@
     }
     
 // Destructor
-EXPORT_C CGlobalAudioSettingsImpl::~CGlobalAudioSettingsImpl()
+CGlobalAudioSettingsImpl::~CGlobalAudioSettingsImpl()
     {
         delete iWarningTonesObserverAO;
         delete iMessagingTonesObserverAO;
         delete iSilentProfileObserverAO;
         delete iVibraObserverAO;
+        delete iRingingTypeObserverAO;
+        delete iMessageToneObserverAO;
+        delete iEmailToneObserverAO;
+        delete iVideoCallObserverAO;
+        delete iRingingTone1ObserverAO;
+        delete iRingingTone2ObserverAO;
+        delete iKeypadToneObserverAO;
+        delete iSilenceModeObserverAO;
         delete iCAudioClientsListManagerAO;
         delete iPausedClientsListManagerAO;
         iAudioClientsListObserverArray.Close();
@@ -121,7 +178,7 @@
 // Static function for creating an instance of the EnvironmentalReverb object.
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TBool CGlobalAudioSettingsImpl::IsWarningTonesEnabled()
+ TBool CGlobalAudioSettingsImpl::IsWarningTonesEnabled()
 	{
 	if(iGlobalAudioSettingsData.iWarningTones)
 	    return(ETrue);
@@ -134,7 +191,7 @@
 // 
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TBool CGlobalAudioSettingsImpl::IsMessageTonesEnabled()
+TBool CGlobalAudioSettingsImpl::IsMessageTonesEnabled()
 	{
 	if(iGlobalAudioSettingsData.iMessageTones)
 	    return(ETrue);
@@ -147,7 +204,7 @@
 // 
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TBool CGlobalAudioSettingsImpl::IsSilentProfileEnabled()
+TBool CGlobalAudioSettingsImpl::IsSilentProfileEnabled()
 	{
 	if(iGlobalAudioSettingsData.iSilentProfile)
 	    return(ETrue);
@@ -160,7 +217,7 @@
 // 
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TBool CGlobalAudioSettingsImpl::IsVibraEnabled()
+ TBool CGlobalAudioSettingsImpl::IsVibraEnabled()
 	{
 	if(iGlobalAudioSettingsData.iVibra)
 	    return(ETrue);
@@ -173,7 +230,7 @@
 // 
 // -----------------------------------------------------------------------------
 //
-EXPORT_C TBool CGlobalAudioSettingsImpl::IsPublicSilenceEnabled()
+TBool CGlobalAudioSettingsImpl::IsPublicSilenceEnabled()
 	{
 	if(iGlobalAudioSettingsData.iPublicSilence)
 	    return(ETrue);
@@ -181,6 +238,90 @@
 	    return(EFalse);
 	}
 
+
+
+
+TDesC& CGlobalAudioSettingsImpl::MessageAlertTone()
+    {
+     return *iGlobalAudioSettingsData.iMessageToneName;
+    
+    }
+
+TBool CGlobalAudioSettingsImpl::IsMessageAlertToneEnabled()
+    {
+     if(iGlobalAudioSettingsData.iMessageToneName->CompareF(KNoSound)==0)
+         return EFalse;
+     else
+         return ETrue;
+    
+    }
+ TDesC& CGlobalAudioSettingsImpl::EmailAlertTone()
+    {
+    return *iGlobalAudioSettingsData.iEmailToneName;
+        
+    }
+ TBool CGlobalAudioSettingsImpl::IsEmailAlertToneEnabled()
+     {
+      if(iGlobalAudioSettingsData.iEmailToneName->CompareF(KNoSound)==0)
+          return EFalse;
+      else
+          return ETrue;
+     
+     }
+  CGlobalAudioSettings::TGASRingingType CGlobalAudioSettingsImpl::RingingType()
+    {
+    CGlobalAudioSettings::TGASRingingType type;
+   type= ( CGlobalAudioSettings::TGASRingingType)iGlobalAudioSettingsData.iRingingType;
+ 
+      return type;
+    }
+  
+  TDesC& CGlobalAudioSettingsImpl::VideoCallAlertTone()
+      {
+      return *iGlobalAudioSettingsData.iVideoCallToneName;
+      }
+  TBool CGlobalAudioSettingsImpl::IsVideoCallAlertToneEnabled()
+      {
+       if(iGlobalAudioSettingsData.iVideoCallToneName->CompareF(KNoSound)==0)
+           return EFalse;
+       else
+           return ETrue;
+      
+      }
+  TDesC& CGlobalAudioSettingsImpl::RingingAlertTone1()
+     {
+     return *iGlobalAudioSettingsData.iRingingTone1Name;
+     }
+  TBool CGlobalAudioSettingsImpl::IsRingingAlertTone1Enabled()
+      {
+       if(iGlobalAudioSettingsData.iRingingTone1Name->CompareF(KNoSound)==0)
+           return EFalse;
+       else
+           return ETrue;
+      
+      }
+  TDesC& CGlobalAudioSettingsImpl::RingingAlertTone2()
+     {
+     return *iGlobalAudioSettingsData.iRingingTone2Name;
+     }
+  
+  TBool CGlobalAudioSettingsImpl::IsRingingAlertTone2Enabled()
+      {
+       if(iGlobalAudioSettingsData.iRingingTone2Name->CompareF(KNoSound)==0)
+           return EFalse;
+       else
+           return ETrue;
+      
+      }
+ CGlobalAudioSettings::TGASKeypadVolume CGlobalAudioSettingsImpl::KeyPadToneVolume()
+     {
+     return (CGlobalAudioSettings::TGASKeypadVolume)iGlobalAudioSettingsData.iKeyPadVolume;
+     }
+ 
+ TBool CGlobalAudioSettingsImpl::IsSilenceModeEnabled()
+     {
+      return iGlobalAudioSettingsData.iSilenceMode;
+     }
 // -----------------------------------------------------------------------------
 // CGlobalAudioSettingsImpl::RegisterAudioClientsListObserver
 // 
@@ -319,7 +460,8 @@
         status = iWarningTonesProperty.Get(iGlobalAudioSettingsData.iWarningTones);
         if(status == KErrNone)
             {
-            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, MAudioSettingsObserver::KWarningTones );
+        MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASWarningTones;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
             }
 #ifdef PRINT_MESSAGE
         else
@@ -402,7 +544,8 @@
         status = iMessagingTonesProperty.Get(iGlobalAudioSettingsData.iMessageTones);
         if(status == KErrNone)
             {
-            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, MAudioSettingsObserver::KMessageTones);
+        MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASMessageTones;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
             }
 #ifdef PRINT_MESSAGE
         else
@@ -485,7 +628,8 @@
         status = iSilentProfileProperty.Get(iGlobalAudioSettingsData.iSilentProfile);
         if(status == KErrNone)
             {
-            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, MAudioSettingsObserver::KSilentProfile);
+        MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASSilentProfile;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
             }
 #ifdef PRINT_MESSAGE
         else
@@ -569,7 +713,8 @@
         status = iVibraProperty.Get(iGlobalAudioSettingsData.iVibra);
         if( status == KErrNone)
             {
-            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, MAudioSettingsObserver::KVibra);
+        MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASVibra;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings,id);
             }
 #ifdef PRINT_MESSAGE
         else
@@ -590,4 +735,787 @@
 	return KErrNone;
 	}
 
+//////////////////////////////////////////////////////////////////////
+//  CRingingTypeObserverAO                                                //
+//////////////////////////////////////////////////////////////////////
+CRingingTypeObserverAO::CRingingTypeObserverAO(
+                        CGlobalAudioSettings &aGlobalAudioSettings,
+                        MAudioSettingsObserver& aAudioSettingsObserver,
+                        TGlobalAudioSettings& aGlobalAudioSettingsData)
+:CActive(EPriorityStandard),
+ iGlobalAudioSettings(aGlobalAudioSettings),
+ iAudioSettingsObserver(aAudioSettingsObserver),
+ iGlobalAudioSettingsData(aGlobalAudioSettingsData)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CRingingTypeObserverAO::~CRingingTypeObserverAO()
+    {
+    Cancel();
+    iRingingTypeProperty.Close();
+    }
+
+CRingingTypeObserverAO* CRingingTypeObserverAO::NewL(
+                            CGlobalAudioSettings &aGlobalAudioSettings,
+                            MAudioSettingsObserver& aAudioSettingsObserver,
+                            TGlobalAudioSettings& aGlobalAudioSettingsData)
+    {
+    CRingingTypeObserverAO* self = new (ELeave) CRingingTypeObserverAO(
+                                            aGlobalAudioSettings,
+                                            aAudioSettingsObserver, 
+                                            aGlobalAudioSettingsData);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+void CRingingTypeObserverAO::ConstructL()
+    {
+    User::LeaveIfError(iRingingTypeProperty.Attach(KGASPSUidGlobalAudioSettings, KGASRingingType));
+    TInt value=KErrNone;
+    User::LeaveIfError(iRingingTypeProperty.Get(value));
+    iGlobalAudioSettingsData.iRingingType=(CGlobalAudioSettings::TGASRingingType)value;
+    
+    }
+    
+void CRingingTypeObserverAO::Subscribe()
+    {
+    if (!IsActive())
+        {
+        SetActive();
+        
+        iRingingTypeProperty.Subscribe(iStatus);
+        }
+    }
+
+void CRingingTypeObserverAO::RunL()
+    {
+    TInt status(iStatus.Int());
+#ifdef PRINT_MESSAGE
+    RDebug::Print(_L(" CRingingTypeObserverAO::RunL:iStatus[%d]"), status);
+#endif // PRINT_MESSAGE
+    if ( status == KErrNone )
+        {
+        Subscribe();
+        TInt value=KErrNone;
+        status=(iRingingTypeProperty.Get(value));
+        iGlobalAudioSettingsData.iRingingType=(CGlobalAudioSettings::TGASRingingType)value;
+        if( status == KErrNone)
+            {
+        MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASRingingType;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
+            }
+#ifdef PRINT_MESSAGE
+        else
+            {
+            RDebug::Print(_L(" CRingingTypeObserverAO::RunL:Property.Get Error[%d]"), status);
+            }
+#endif // PRINT_MESSAGE
+        }
+    }
+
+void CRingingTypeObserverAO::DoCancel()
+    {
+    iRingingTypeProperty.Cancel();
+    }
+
+TInt CRingingTypeObserverAO::RunError(TInt /*aError*/)
+    {
+    return KErrNone;
+    }
+
+//////////////////////////////////////////////////////////////////////
+//  CMessageToneObserverAO                                                //
+//////////////////////////////////////////////////////////////////////
+CMessageToneObserverAO::CMessageToneObserverAO(
+                        CGlobalAudioSettings &aGlobalAudioSettings,
+                        MAudioSettingsObserver& aAudioSettingsObserver,
+                        TGlobalAudioSettings& aGlobalAudioSettingsData)
+:CActive(EPriorityStandard),
+ iGlobalAudioSettings(aGlobalAudioSettings),
+ iAudioSettingsObserver(aAudioSettingsObserver),
+ iGlobalAudioSettingsData(aGlobalAudioSettingsData)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CMessageToneObserverAO::~CMessageToneObserverAO()
+    {
+    Cancel();
+    iMessageToneNameProperty.Close();
+    if( iGlobalAudioSettingsData.iMessageToneName)
+        {
+          delete  iGlobalAudioSettingsData.iMessageToneName;
+          iGlobalAudioSettingsData.iMessageToneName=NULL;
+        }
+    }
+
+CMessageToneObserverAO* CMessageToneObserverAO::NewL(
+                            CGlobalAudioSettings &aGlobalAudioSettings,
+                            MAudioSettingsObserver& aAudioSettingsObserver,
+                            TGlobalAudioSettings& aGlobalAudioSettingsData)
+    {
+    CMessageToneObserverAO* self = new (ELeave) CMessageToneObserverAO(
+                                            aGlobalAudioSettings,
+                                            aAudioSettingsObserver, 
+                                            aGlobalAudioSettingsData);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+void CMessageToneObserverAO::ConstructL()
+    {
+    iGlobalAudioSettingsData.iMessageToneName=HBufC::NewL(KMaxLength);
+    User::LeaveIfError(iMessageToneNameProperty.Attach(KGASPSUidGlobalAudioSettings, KGASMessageToneName));
+    TPtr16 ptr=iGlobalAudioSettingsData.iMessageToneName->Des();
+    User::LeaveIfError(iMessageToneNameProperty.Get(ptr));
+    
+    }
+    
+void CMessageToneObserverAO::Subscribe()
+    {
+    if (!IsActive())
+        {
+        SetActive();
+        
+        iMessageToneNameProperty.Subscribe(iStatus);
+        }
+    }
+
+void CMessageToneObserverAO::RunL()
+    {
+    TInt status(iStatus.Int());
+#ifdef PRINT_MESSAGE
+    RDebug::Print(_L(" CMessageToneObserverAO::RunL:iStatus[%d]"), status);
+#endif // PRINT_MESSAGE
+    if ( status == KErrNone )
+        {
+        Subscribe();
+        delete iGlobalAudioSettingsData.iMessageToneName;
+        iGlobalAudioSettingsData.iMessageToneName=NULL;
+        iGlobalAudioSettingsData.iMessageToneName=HBufC::NewL(KMaxLength);
+        TPtr16 ptr=iGlobalAudioSettingsData.iMessageToneName->Des();
+        status = iMessageToneNameProperty.Get(ptr);
+        if( status == KErrNone)
+            {
+            MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASMessageToneName;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
+            }
+#ifdef PRINT_MESSAGE
+        else
+            {
+            RDebug::Print(_L(" CMessageToneObserverAO::RunL:Property.Get Error[%d]"), status);
+            }
+#endif // PRINT_MESSAGE
+        }
+    }
+
+void CMessageToneObserverAO::DoCancel()
+    {
+    iMessageToneNameProperty.Cancel();
+    }
+
+TInt CMessageToneObserverAO::RunError(TInt /*aError*/)
+    {
+    return KErrNone;
+    }
+
+
+/////////////////////////////////////////////////////////////////////
+//  CEmailToneObserverAO                                                //
+//////////////////////////////////////////////////////////////////////
+CEmailToneObserverAO::CEmailToneObserverAO(
+                        CGlobalAudioSettings &aGlobalAudioSettings,
+                        MAudioSettingsObserver& aAudioSettingsObserver,
+                        TGlobalAudioSettings& aGlobalAudioSettingsData)
+:CActive(EPriorityStandard),
+ iGlobalAudioSettings(aGlobalAudioSettings),
+ iAudioSettingsObserver(aAudioSettingsObserver),
+ iGlobalAudioSettingsData(aGlobalAudioSettingsData)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CEmailToneObserverAO::~CEmailToneObserverAO()
+    {
+    Cancel();
+    iEmailToneNameProperty.Close();
+    
+    if(iGlobalAudioSettingsData.iEmailToneName)
+        {
+        delete  iGlobalAudioSettingsData.iEmailToneName;
+        iGlobalAudioSettingsData.iEmailToneName=NULL;
+        }
+   
+    }
+
+CEmailToneObserverAO* CEmailToneObserverAO::NewL(
+                            CGlobalAudioSettings &aGlobalAudioSettings,
+                            MAudioSettingsObserver& aAudioSettingsObserver,
+                            TGlobalAudioSettings& aGlobalAudioSettingsData)
+    {
+    CEmailToneObserverAO* self = new (ELeave) CEmailToneObserverAO(
+                                            aGlobalAudioSettings,
+                                            aAudioSettingsObserver, 
+                                            aGlobalAudioSettingsData);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+void CEmailToneObserverAO::ConstructL()
+    {
+    
+    iGlobalAudioSettingsData.iEmailToneName=HBufC::NewL(KMaxLength);
+    User::LeaveIfError(iEmailToneNameProperty.Attach(KGASPSUidGlobalAudioSettings, KGASEmailToneName));
+    TPtr16 ptr=iGlobalAudioSettingsData.iEmailToneName->Des();
+    User::LeaveIfError(iEmailToneNameProperty.Get(ptr));
+    
+    }
+    
+void CEmailToneObserverAO::Subscribe()
+    {
+    if (!IsActive())
+        {
+        SetActive();
+        
+        iEmailToneNameProperty.Subscribe(iStatus);
+        }
+    }
+
+void CEmailToneObserverAO::RunL()
+    {
+    TInt status(iStatus.Int());
+#ifdef PRINT_MESSAGE
+    RDebug::Print(_L(" CEmailToneObserverAO::RunL:iStatus[%d]"), status);
+#endif // PRINT_MESSAGE
+    if ( status == KErrNone )
+        {
+        Subscribe();
+        delete iGlobalAudioSettingsData.iEmailToneName;
+        iGlobalAudioSettingsData.iEmailToneName=NULL;
+        iGlobalAudioSettingsData.iEmailToneName=HBufC::NewL(KMaxLength);
+        TPtr16 ptr=iGlobalAudioSettingsData.iEmailToneName->Des();
+        status = iEmailToneNameProperty.Get(ptr);
+        if( status == KErrNone)
+            {
+            MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASEmailToneName;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
+            }
+#ifdef PRINT_MESSAGE
+        else
+            {
+            RDebug::Print(_L(" CEmailToneObserverAO::RunL:Property.Get Error[%d]"), status);
+            }
+#endif // PRINT_MESSAGE
+        }
+    }
+
+void CEmailToneObserverAO::DoCancel()
+    {
+    iEmailToneNameProperty.Cancel();
+    }
+
+TInt CEmailToneObserverAO::RunError(TInt /*aError*/)
+    {
+    return KErrNone;
+    }
+
+
+/////////////////////////////////////////////////////////////////////
+//  CVideoCallToneObserverAO                                                //
+//////////////////////////////////////////////////////////////////////
+CVideoCallToneObserverAO::CVideoCallToneObserverAO(
+                        CGlobalAudioSettings &aGlobalAudioSettings,
+                        MAudioSettingsObserver& aAudioSettingsObserver,
+                        TGlobalAudioSettings& aGlobalAudioSettingsData)
+:CActive(EPriorityStandard),
+ iGlobalAudioSettings(aGlobalAudioSettings),
+ iAudioSettingsObserver(aAudioSettingsObserver),
+ iGlobalAudioSettingsData(aGlobalAudioSettingsData)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CVideoCallToneObserverAO::~CVideoCallToneObserverAO()
+    {
+    Cancel();
+    iVideoCallToneNameProperty.Close();
+    if( iGlobalAudioSettingsData.iVideoCallToneName)
+        {
+    delete  iGlobalAudioSettingsData.iVideoCallToneName;
+    iGlobalAudioSettingsData.iVideoCallToneName=NULL;
+        }
+     
+    
+    }
+
+CVideoCallToneObserverAO* CVideoCallToneObserverAO::NewL(
+                            CGlobalAudioSettings &aGlobalAudioSettings,
+                            MAudioSettingsObserver& aAudioSettingsObserver,
+                            TGlobalAudioSettings& aGlobalAudioSettingsData)
+    {
+    CVideoCallToneObserverAO* self = new (ELeave) CVideoCallToneObserverAO(
+                                            aGlobalAudioSettings,
+                                            aAudioSettingsObserver, 
+                                            aGlobalAudioSettingsData);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+void CVideoCallToneObserverAO::ConstructL()
+    {
+    
+    iGlobalAudioSettingsData.iVideoCallToneName=HBufC::NewL(KMaxLength);
+    User::LeaveIfError(iVideoCallToneNameProperty.Attach(KGASPSUidGlobalAudioSettings, KGASVideoCallToneName));
+    TPtr16 ptr=iGlobalAudioSettingsData.iVideoCallToneName->Des();
+    User::LeaveIfError(iVideoCallToneNameProperty.Get(ptr));
+    
+    }
+    
+void CVideoCallToneObserverAO::Subscribe()
+    {
+    if (!IsActive())
+        {
+        SetActive();
+        
+        iVideoCallToneNameProperty.Subscribe(iStatus);
+        }
+    }
+
+void CVideoCallToneObserverAO::RunL()
+    {
+    TInt status(iStatus.Int());
+#ifdef PRINT_MESSAGE
+    RDebug::Print(_L(" CVideocallToneObserverAO::RunL:iStatus[%d]"), status);
+#endif // PRINT_MESSAGE
+    if ( status == KErrNone )
+        {
+        Subscribe();
+        delete iGlobalAudioSettingsData.iVideoCallToneName;
+        iGlobalAudioSettingsData.iVideoCallToneName=NULL;
+        iGlobalAudioSettingsData.iVideoCallToneName=HBufC::NewL(KMaxLength);
+        TPtr16 ptr=iGlobalAudioSettingsData.iVideoCallToneName->Des();
+        status = iVideoCallToneNameProperty.Get(ptr);
+        if( status == KErrNone)
+            {
+        MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASVideoCallToneName;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
+            }
+#ifdef PRINT_MESSAGE
+        else
+            {
+            RDebug::Print(_L(" CVideoCallToneObserverAO::RunL:Property.Get Error[%d]"), status);
+            }
+#endif // PRINT_MESSAGE
+        }
+    }
+
+void CVideoCallToneObserverAO::DoCancel()
+    {
+    iVideoCallToneNameProperty.Cancel();
+    }
+
+TInt CVideoCallToneObserverAO::RunError(TInt /*aError*/)
+    {
+    return KErrNone;
+    }
+
+/////////////////////////////////////////////////////////////////////
+//  CRingingToneObserverAO                                                //
+//////////////////////////////////////////////////////////////////////
+CRingingTone1ObserverAO::CRingingTone1ObserverAO(
+                        CGlobalAudioSettings &aGlobalAudioSettings,
+                        MAudioSettingsObserver& aAudioSettingsObserver,
+                        TGlobalAudioSettings& aGlobalAudioSettingsData)
+:CActive(EPriorityStandard),
+ iGlobalAudioSettings(aGlobalAudioSettings),
+ iAudioSettingsObserver(aAudioSettingsObserver),
+ iGlobalAudioSettingsData(aGlobalAudioSettingsData)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CRingingTone1ObserverAO::~CRingingTone1ObserverAO()
+    {
+    Cancel();
+    iRingingTone1NameProperty.Close();
+    if( iGlobalAudioSettingsData.iRingingTone1Name)
+        {
+        delete  iGlobalAudioSettingsData.iRingingTone1Name;
+        iGlobalAudioSettingsData.iRingingTone1Name=NULL;
+        }
+    }
+
+CRingingTone1ObserverAO* CRingingTone1ObserverAO::NewL(
+                            CGlobalAudioSettings &aGlobalAudioSettings,
+                            MAudioSettingsObserver& aAudioSettingsObserver,
+                            TGlobalAudioSettings& aGlobalAudioSettingsData)
+    {
+    CRingingTone1ObserverAO* self = new (ELeave) CRingingTone1ObserverAO(
+                                            aGlobalAudioSettings,
+                                            aAudioSettingsObserver, 
+                                            aGlobalAudioSettingsData);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+void CRingingTone1ObserverAO::ConstructL()
+    {
+    
+    iGlobalAudioSettingsData.iRingingTone1Name=HBufC::NewL(KMaxLength);
+    User::LeaveIfError(iRingingTone1NameProperty.Attach(KGASPSUidGlobalAudioSettings, KGASRingingTone1Name));
+    TPtr16 ptr=iGlobalAudioSettingsData.iRingingTone1Name->Des();
+    User::LeaveIfError(iRingingTone1NameProperty.Get(ptr));
+    
+    }
+    
+void CRingingTone1ObserverAO::Subscribe()
+    {
+    if (!IsActive())
+        {
+        SetActive();
+        
+        iRingingTone1NameProperty.Subscribe(iStatus);
+        }
+    }
+
+void CRingingTone1ObserverAO::RunL()
+    {
+    TInt status(iStatus.Int());
+#ifdef PRINT_MESSAGE
+    RDebug::Print(_L(" CRingingTone1ObserverAO::RunL:iStatus[%d]"), status);
+#endif // PRINT_MESSAGE
+    if ( status == KErrNone )
+        {
+        Subscribe();
+        delete iGlobalAudioSettingsData.iRingingTone1Name;
+        iGlobalAudioSettingsData.iRingingTone1Name=NULL;
+        iGlobalAudioSettingsData.iRingingTone1Name=HBufC::NewL(KMaxLength);
+        TPtr16 ptr=iGlobalAudioSettingsData.iRingingTone1Name->Des();
+        status = iRingingTone1NameProperty.Get(ptr);
+        if( status == KErrNone)
+            {
+            MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASRingingTone1Name;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
+            }
+#ifdef PRINT_MESSAGE
+        else
+            {
+            RDebug::Print(_L(" CRingingToneObserverAO::RunL:Property.Get Error[%d]"), status);
+            }
+#endif // PRINT_MESSAGE
+        }
+    }
+
+void CRingingTone1ObserverAO::DoCancel()
+    {
+    iRingingTone1NameProperty.Cancel();
+    }
+
+TInt CRingingTone1ObserverAO::RunError(TInt /*aError*/)
+    {
+    return KErrNone;
+    }
+
+////////////////////////////////////////////////////////////////////
+//  CRingingToneObserverAO                                                //
+//////////////////////////////////////////////////////////////////////
+CRingingTone2ObserverAO::CRingingTone2ObserverAO(
+                        CGlobalAudioSettings &aGlobalAudioSettings,
+                        MAudioSettingsObserver& aAudioSettingsObserver,
+                        TGlobalAudioSettings& aGlobalAudioSettingsData)
+:CActive(EPriorityStandard),
+ iGlobalAudioSettings(aGlobalAudioSettings),
+ iAudioSettingsObserver(aAudioSettingsObserver),
+ iGlobalAudioSettingsData(aGlobalAudioSettingsData)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CRingingTone2ObserverAO::~CRingingTone2ObserverAO()
+    {
+    Cancel();
+    iRingingTone2NameProperty.Close();
+    if(iGlobalAudioSettingsData.iRingingTone2Name)
+        {
+    delete iGlobalAudioSettingsData.iRingingTone2Name;
+    iGlobalAudioSettingsData.iRingingTone2Name=NULL;
+        }
+     
+    
+    }
+
+CRingingTone2ObserverAO* CRingingTone2ObserverAO::NewL(
+                            CGlobalAudioSettings &aGlobalAudioSettings,
+                            MAudioSettingsObserver& aAudioSettingsObserver,
+                            TGlobalAudioSettings& aGlobalAudioSettingsData)
+    {
+    CRingingTone2ObserverAO* self = new (ELeave) CRingingTone2ObserverAO(
+                                            aGlobalAudioSettings,
+                                            aAudioSettingsObserver, 
+                                            aGlobalAudioSettingsData);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+void CRingingTone2ObserverAO::ConstructL()
+    {
+    
+    iGlobalAudioSettingsData.iRingingTone2Name=HBufC::NewL(KMaxLength);
+    User::LeaveIfError(iRingingTone2NameProperty.Attach(KGASPSUidGlobalAudioSettings, KGASRingingTone2Name));
+    TPtr16 ptr=iGlobalAudioSettingsData.iRingingTone2Name->Des();
+    User::LeaveIfError(iRingingTone2NameProperty.Get(ptr));
+    
+    }
+    
+void CRingingTone2ObserverAO::Subscribe()
+    {
+    if (!IsActive())
+        {
+        SetActive();
+        
+        iRingingTone2NameProperty.Subscribe(iStatus);
+        }
+    }
+
+void CRingingTone2ObserverAO::RunL()
+    {
+    TInt status(iStatus.Int());
+#ifdef PRINT_MESSAGE
+    RDebug::Print(_L(" CRingingTone2ObserverAO::RunL:iStatus[%d]"), status);
+#endif // PRINT_MESSAGE
+    if ( status == KErrNone )
+        {
+        Subscribe();
+        delete iGlobalAudioSettingsData.iRingingTone2Name;
+        iGlobalAudioSettingsData.iRingingTone2Name=NULL;
+        iGlobalAudioSettingsData.iRingingTone2Name=HBufC::NewL(KMaxLength);
+        TPtr16 ptr=iGlobalAudioSettingsData.iRingingTone2Name->Des();
+        status = iRingingTone2NameProperty.Get(ptr);
+        if( status == KErrNone)
+            {
+        MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASRingingTone2Name;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
+            }
+#ifdef PRINT_MESSAGE
+        else
+            {
+            RDebug::Print(_L(" CRingingToneObserverAO::RunL:Property.Get Error[%d]"), status);
+            }
+#endif // PRINT_MESSAGE
+        }
+    }
+
+void CRingingTone2ObserverAO::DoCancel()
+    {
+    iRingingTone2NameProperty.Cancel();
+    }
+
+TInt CRingingTone2ObserverAO::RunError(TInt /*aError*/)
+    {
+    return KErrNone;
+    }
+
+/////////////////////////////////////////////////////////////////////
+//  CKeypadToneObserverAO                                                //
+//////////////////////////////////////////////////////////////////////
+CKeypadToneObserverAO::CKeypadToneObserverAO(
+                        CGlobalAudioSettings &aGlobalAudioSettings,
+                        MAudioSettingsObserver& aAudioSettingsObserver,
+                        TGlobalAudioSettings& aGlobalAudioSettingsData)
+:CActive(EPriorityStandard),
+ iGlobalAudioSettings(aGlobalAudioSettings),
+ iAudioSettingsObserver(aAudioSettingsObserver),
+ iGlobalAudioSettingsData(aGlobalAudioSettingsData)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CKeypadToneObserverAO::~CKeypadToneObserverAO()
+    {
+    Cancel();
+    iKeypadToneVolumeProperty.Close();
+    }
+
+CKeypadToneObserverAO* CKeypadToneObserverAO::NewL(
+                            CGlobalAudioSettings &aGlobalAudioSettings,
+                            MAudioSettingsObserver& aAudioSettingsObserver,
+                            TGlobalAudioSettings& aGlobalAudioSettingsData)
+    {
+    CKeypadToneObserverAO* self = new (ELeave) CKeypadToneObserverAO(
+                                            aGlobalAudioSettings,
+                                            aAudioSettingsObserver, 
+                                            aGlobalAudioSettingsData);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+void CKeypadToneObserverAO::ConstructL()
+    {
+    
+    
+    User::LeaveIfError(iKeypadToneVolumeProperty.Attach(KGASPSUidGlobalAudioSettings, KGASKeypadToneVolume));
+    TInt value=KErrNone;
+    User::LeaveIfError(iKeypadToneVolumeProperty.Get(value));
+    iGlobalAudioSettingsData.iKeyPadVolume=(CGlobalAudioSettings::TGASKeypadVolume)value;
+    }
+    
+void CKeypadToneObserverAO::Subscribe()
+    {
+    if (!IsActive())
+        {
+        SetActive();
+        
+        iKeypadToneVolumeProperty.Subscribe(iStatus);
+        }
+    }
+
+void CKeypadToneObserverAO::RunL()
+    {
+    TInt status(iStatus.Int());
+#ifdef PRINT_MESSAGE
+    RDebug::Print(_L(" CKeypadToneObserverAO::RunL:iStatus[%d]"), status);
+#endif // PRINT_MESSAGE
+    if ( status == KErrNone )
+        {
+        Subscribe();
+        TInt value=KErrNone;
+            status=iKeypadToneVolumeProperty.Get(value);
+            iGlobalAudioSettingsData.iKeyPadVolume=(CGlobalAudioSettings::TGASKeypadVolume)value;
+        
+        
+        if( status == KErrNone)
+            {
+            MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASKeyPadVolume;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
+            }
+#ifdef PRINT_MESSAGE
+        else
+            {
+            RDebug::Print(_L(" CKeypadToneObserverAO::RunL:Property.Get Error[%d]"), status);
+            }
+#endif // PRINT_MESSAGE
+        }
+    }
+
+void CKeypadToneObserverAO::DoCancel()
+    {
+    iKeypadToneVolumeProperty.Cancel();
+    }
+
+TInt CKeypadToneObserverAO::RunError(TInt /*aError*/)
+    {
+    return KErrNone;
+    }
+
+
+/////////////////////////////////////////////////////////////////////
+//  CSilenceModeObserverAO                                                //
+//////////////////////////////////////////////////////////////////////
+CSilenceModeObserverAO::CSilenceModeObserverAO(
+                        CGlobalAudioSettings &aGlobalAudioSettings,
+                        MAudioSettingsObserver& aAudioSettingsObserver,
+                        TGlobalAudioSettings& aGlobalAudioSettingsData)
+:CActive(EPriorityStandard),
+ iGlobalAudioSettings(aGlobalAudioSettings),
+ iAudioSettingsObserver(aAudioSettingsObserver),
+ iGlobalAudioSettingsData(aGlobalAudioSettingsData)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+CSilenceModeObserverAO::~CSilenceModeObserverAO()
+    {
+    Cancel();
+    iSilenceModeProperty.Close();
+    }
+
+CSilenceModeObserverAO* CSilenceModeObserverAO::NewL(
+                            CGlobalAudioSettings &aGlobalAudioSettings,
+                            MAudioSettingsObserver& aAudioSettingsObserver,
+                            TGlobalAudioSettings& aGlobalAudioSettingsData)
+    {
+    CSilenceModeObserverAO* self = new (ELeave) CSilenceModeObserverAO(
+                                            aGlobalAudioSettings,
+                                            aAudioSettingsObserver, 
+                                            aGlobalAudioSettingsData);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+void CSilenceModeObserverAO::ConstructL()
+    {
+    
+    
+    User::LeaveIfError(iSilenceModeProperty.Attach(KGASPSUidGlobalAudioSettings, KGASSilenceMode));
+   
+    User::LeaveIfError(iSilenceModeProperty.Get(iGlobalAudioSettingsData.iSilenceMode));
+    RDebug::Printf("in constructL,silence mode %d",iGlobalAudioSettingsData.iSilenceMode);
+  
+    }
+    
+void CSilenceModeObserverAO::Subscribe()
+    {
+    if (!IsActive())
+        {
+        SetActive();
+        
+        iSilenceModeProperty.Subscribe(iStatus);
+        }
+    }
+
+void CSilenceModeObserverAO::RunL()
+    {
+    TInt status(iStatus.Int());
+#ifdef PRINT_MESSAGE
+    RDebug::Print(_L(" CSilenceModeObserverAO::RunL:iStatus[%d]"), status);
+#endif // PRINT_MESSAGE
+    if ( status == KErrNone )
+        {
+        Subscribe();
+       
+            status=iSilenceModeProperty.Get(  iGlobalAudioSettingsData.iSilenceMode);
+            RDebug::Printf("value of silent mode :%d",iGlobalAudioSettingsData.iSilenceMode);
+        
+        
+        if( status == KErrNone)
+            {
+            MAudioSettingsObserver::TGASEventId id=MAudioSettingsObserver::EGASSilenceMode;
+            iAudioSettingsObserver.SettingsChanged(iGlobalAudioSettings, id);
+            }
+#ifdef PRINT_MESSAGE
+        else
+            {
+            RDebug::Print(_L(" CKeypadToneObserverAO::RunL:Property.Get Error[%d]"), status);
+            }
+#endif // PRINT_MESSAGE
+        }
+    }
+
+void CSilenceModeObserverAO::DoCancel()
+    {
+    iSilenceModeProperty.Cancel();
+    }
+
+TInt CSilenceModeObserverAO::RunError(TInt /*aError*/)
+    {
+    return KErrNone;
+    }
+
 //End of file