devsoundextensions/globalaudiosettings/src/GlobalAudioSettingsImpl.cpp
changeset 46 ed4308a6c628
parent 43 98aa3ecc14d2
--- a/devsoundextensions/globalaudiosettings/src/GlobalAudioSettingsImpl.cpp	Mon Aug 23 20:19:06 2010 +0100
+++ b/devsoundextensions/globalaudiosettings/src/GlobalAudioSettingsImpl.cpp	Mon Aug 23 21:33:25 2010 +0100
@@ -137,7 +137,11 @@
                                                                             iGlobalAudioSettingsData);
     iKeypadToneObserverAO->Subscribe();  
                 
-                
+    iSilenceModeObserverAO = CSilenceModeObserverAO::NewL(
+                                                                                iGlobalAudioSettings,
+                                                                                iAudioSettingsObserver,
+                                                                                iGlobalAudioSettingsData);
+     iSilenceModeObserverAO->Subscribe();  
 	                    
     RProperty publicSilenceProperty;
 	User::LeaveIfError(publicSilenceProperty.Attach(KGASPSUidGlobalAudioSettings, KGASPublicSilence));
@@ -163,6 +167,7 @@
         delete iRingingTone1ObserverAO;
         delete iRingingTone2ObserverAO;
         delete iKeypadToneObserverAO;
+        delete iSilenceModeObserverAO;
         delete iCAudioClientsListManagerAO;
         delete iPausedClientsListManagerAO;
         iAudioClientsListObserverArray.Close();
@@ -312,6 +317,11 @@
      {
      return (CGlobalAudioSettings::TGASKeypadVolume)iGlobalAudioSettingsData.iKeyPadVolume;
      }
+ 
+ TBool CGlobalAudioSettingsImpl::IsSilenceModeEnabled()
+     {
+      return iGlobalAudioSettingsData.iSilenceMode;
+     }
 // -----------------------------------------------------------------------------
 // CGlobalAudioSettingsImpl::RegisterAudioClientsListObserver
 // 
@@ -1412,4 +1422,100 @@
     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