Syncing volume slider with audio changed event 91/293091/3
authorShivam Varshney/Core S/W Group /SRI-Delhi/Engineer/Samsung Electronics <shivam.v2@samsung.com>
Fri, 19 May 2023 10:47:08 +0000 (16:17 +0530)
committerShivam Varshney/Core S/W Group /SRI-Delhi/Engineer/Samsung Electronics <shivam.v2@samsung.com>
Wed, 24 May 2023 08:48:19 +0000 (14:18 +0530)
Change-Id: I7a678959e1fb9360409e72ad330456210c2556c7
Signed-off-by: Shivam Varshney/Core S/W Group /SRI-Delhi/Engineer/Samsung Electronics <shivam.v2@samsung.com>
VolumeApp/Core/ViewManager.cs
VolumeApp/Views/MainView.cs
VolumeApp/VolumeApp.csproj
packaging/org.tizen.volume-nui-1.0.0.tpk

index 474e2c16379d3f5b540cef56d062626fd970869c..ce700d39443f7feaa13969c3fd5c05c5ba10642d 100644 (file)
@@ -43,7 +43,8 @@ namespace VolumeApp.Core
             mainView.SafeVolumeLevelPopupAdded += OnSafeLevelVolumePopupAdded;
             mainView.SafeVolumeLevelPopupRemoved += OnSafeLevelVolumePopupRemoved;
 
-            Window.Instance.KeyEvent += OnKeyEvent;
+            window.KeyEvent += OnKeyEvent;
+            window.TouchEvent += OnTouched;
         }
 
         public void UpdateMainView()
@@ -51,33 +52,15 @@ namespace VolumeApp.Core
             mainView.UpdateMainView();
         }
 
-        protected override void Dispose(DisposeTypes type)
+        public void StartTimer()
         {
-            if (Disposed)
-            {
-                return;
-            }
-
-            if (type == DisposeTypes.Explicit)
-            {
-                Window.Instance.KeyEvent -= OnKeyEvent;
-
-                volumeAppAutoHideTimer.Tick -= OnTimerTick;
-                volumeAppAutoHideTimer?.Dispose();
-
-                mainView.TouchEvent -= OnMainViewTouched;
-                mainView.SliderSlidingStarted -= OnSliderSlidingStarted;
-                mainView.SliderSlidingFinished -= OnSliderSlidingFinished;
-                mainView.SafeVolumeLevelPopupAdded -= OnSafeLevelVolumePopupAdded;
-                mainView.SafeVolumeLevelPopupRemoved -= OnSafeLevelVolumePopupRemoved;
-
-                window.Remove(mainView);
-                mainView?.Dispose();
-
-                ThemeUtility.GetInstance().Clear();
-            }
-            base.Dispose(type);
+            volumeAppAutoHideTimer?.Start();
         }
+        public void StopTimer()
+        {
+            volumeAppAutoHideTimer?.Stop();
+        }
+
         private void OnKeyEvent(object sender, Window.KeyEventArgs e)
         {
 
@@ -114,14 +97,17 @@ namespace VolumeApp.Core
                 }
             }
         }
-        public void StartTimer()
-        {
-            volumeAppAutoHideTimer?.Start();
-        }
-        public void StopTimer()
+
+        private void OnTouched(object sender, Window.TouchEventArgs e)
         {
-            volumeAppAutoHideTimer?.Stop();
+            if (e.Touch.GetState(0) == PointStateType.Started)
+            {
+                mainView.RemoveSafeVolumeLevelPopup();
+                StopTimer();
+                window.Lower();
+            }
         }
+
         private void OnSafeLevelVolumePopupRemoved()
         {
             StartTimer();
@@ -162,6 +148,34 @@ namespace VolumeApp.Core
             Window.Instance.Lower();
             return true;
         }
+
+        protected override void Dispose(DisposeTypes type)
+        {
+            if (Disposed)
+            {
+                return;
+            }
+
+            if (type == DisposeTypes.Explicit)
+            {
+                Window.Instance.KeyEvent -= OnKeyEvent;
+
+                volumeAppAutoHideTimer.Tick -= OnTimerTick;
+                volumeAppAutoHideTimer?.Dispose();
+
+                mainView.TouchEvent -= OnMainViewTouched;
+                mainView.SliderSlidingStarted -= OnSliderSlidingStarted;
+                mainView.SliderSlidingFinished -= OnSliderSlidingFinished;
+                mainView.SafeVolumeLevelPopupAdded -= OnSafeLevelVolumePopupAdded;
+                mainView.SafeVolumeLevelPopupRemoved -= OnSafeLevelVolumePopupRemoved;
+
+                window.Remove(mainView);
+                mainView?.Dispose();
+
+                ThemeUtility.GetInstance().Clear();
+            }
+            base.Dispose(type);
+        }
     }
 }
 
index e2df3fed7a7e560a674a0f28807d4d3d2a34529d..0377b775450904a599b20e65bbf6fb6de1994888 100644 (file)
@@ -33,6 +33,7 @@ namespace VolumeApp.Views
         private Button cancelButton;
         private Button increaseButton;
         private bool safetyModeEnabled;
+        private bool volumeInternallyChanged;
 
         public event Action SliderSlidingStarted;
         public event Action SliderSlidingFinished;
@@ -78,6 +79,7 @@ namespace VolumeApp.Views
 
             safetyModeEnabled = slider.CurrentValue <= 0.9f * MaxVolume;
             volumeIcon.ResourceUrl = SetVolumeIcon(slider.CurrentValue);
+            volumeInternallyChanged = false;
             Add(slider);
 
             RelativeLayout.SetBottomTarget(slider, volumeIcon);
@@ -90,6 +92,8 @@ namespace VolumeApp.Views
             slider.ValueChanged += OnSliderValueChanged;
             slider.SlidingFinished += OnSlidingFinished;
 
+            UpdateTheme(ThemeManager.PlatformThemeId);
+            AudioManager.VolumeController.Changed += OnAudioVolumeChanged;
         }
 
         public void IncreaseSliderValue()
@@ -112,66 +116,39 @@ namespace VolumeApp.Views
             return safeVolumeLevelPopup != null && safeVolumeLevelPopup.IsOnWindow;
         }
 
-        private void UpdateTheme(string theme)
+        public void UpdateMainView()
         {
-            if (theme == Resources.LightPlatformThemeId)
-            {
-                BoxShadow = AppCommon.mainViewLightBoxShadow;
-            }
-            else
-            {
-                BoxShadow = AppCommon.mainViewDarkBoxShadow;
-            }
+            UpdateAlertPopUp();
+            Position2D = UpdatePosition();
         }
 
-        protected override void Dispose(DisposeTypes type)
+        public void RemoveSafeVolumeLevelPopup()
         {
-            if(Disposed)
+            if (safeVolumeLevelPopup != null)
             {
-                return;
+                slider.IsEnabled = true;
+                slider.ThumbSize = AppCommon.sliderThumbSizeNormal;
+                Window.Instance.Remove(safeVolumeLevelPopup);
+                SafeVolumeLevelPopupRemoved?.Invoke();
             }
+        }
 
-            if(type == DisposeTypes.Explicit)
+        private void OnAudioVolumeChanged(object sender, VolumeChangedEventArgs e)
+        {
+            if (e.Type == AudioVolumeType.Media)
             {
-
-                SliderSlidingStarted = null;
-                SliderSlidingFinished = null;
-                SafeVolumeLevelPopupAdded = null;
-                SafeVolumeLevelPopupRemoved = null;
-
-                slider.SlidingStarted -= OnSlidingStarted;
-                slider.ValueChanged -= OnSliderValueChanged;
-                slider.SlidingFinished -= OnSlidingFinished;
-
-                Remove(slider);
-                slider?.Dispose();
-
-                Remove(volumeIcon);
-                volumeIcon?.Dispose();
-                if(safeVolumeLevelPopup != null)
+                if (volumeInternallyChanged == false)
                 {
-                    cancelButton.Clicked -= OnCancelButtonClicked;
-                    increaseButton.Clicked -= OnIncreaseButtonClicked;
-                    Window.Instance.Remove(safeVolumeLevelPopup);
-                    safeVolumeLevelPopup?.Dispose();
+                    volumeInternallyChanged = true;
+                    slider.CurrentValue = e.Level;
+                }
+                else
+                {
+                    volumeInternallyChanged = false;
                 }
             }
-            base.Dispose(type);
-        }
-        public void UpdateMainView()
-        {
-            UpdateAlertPopUp();
-            Position2D = UpdatePosition();
         }
 
-        private void UpdateAlertPopUp()
-        {
-            if(IsAlertPopupShown() == true)
-            {
-                Window.Instance.Remove(safeVolumeLevelPopup);
-                Window.Instance.Add(safeVolumeLevelPopup);
-            }
-        }
         private Position2D UpdatePosition()
         {
             int posX = ScreenSizeUtils.IsPortrait
@@ -194,6 +171,7 @@ namespace VolumeApp.Views
         }
         private void OnSliderValueChanged(object sender, SliderValueChangedEventArgs e)
         {
+            volumeInternallyChanged = true;
             if (e.CurrentValue > 0.9f * MaxVolume && safetyModeEnabled == true)
             {
                 int safeVolumeLevel = (int)(0.9f * MaxVolume);
@@ -212,10 +190,34 @@ namespace VolumeApp.Views
             {
                 Tizen.Log.Error(Resources.LogTag, "Exception thrown is : " + ex.Message);
             }
-
             volumeIcon.ResourceUrl = SetVolumeIcon(e.CurrentValue);
 
         }
+
+        private string SetVolumeIcon(float currentVolume)
+        {
+            if (currentVolume == 0.0f)
+            {
+                return Resources.MuteIconPath;
+            }
+            else if (currentVolume <= 0.33 * MaxVolume)
+            {
+                return Resources.Volume1_33IconPath;
+            }
+            else if (currentVolume <= 0.66 * MaxVolume)
+            {
+                return Resources.Volume34_66IconPath;
+            }
+            else if (currentVolume <= MaxVolume)
+            {
+                return Resources.Volume67_100IconPath;
+            }
+            else
+            {
+                return Resources.Volume67_100IconPath;
+            }
+        }
+
         private void AddSafeLevelVolumePopup()
         {
             cancelButton = new Button("CancelButton")
@@ -250,56 +252,89 @@ namespace VolumeApp.Views
 
             }
             Window.Instance.Add(safeVolumeLevelPopup);
+            Window.Instance.Raise();
             SafeVolumeLevelPopupAdded?.Invoke();
 
             cancelButton.Clicked += OnCancelButtonClicked;
             increaseButton.Clicked += OnIncreaseButtonClicked;
         }
 
+        private void UpdateAlertPopUp()
+        {
+            if (IsAlertPopupShown() == true)
+            {
+                Window.Instance.Remove(safeVolumeLevelPopup);
+                Window.Instance.Add(safeVolumeLevelPopup);
+            }
+        }
+
         private void OnIncreaseButtonClicked(object sender, ClickedEventArgs e)
         {
             safetyModeEnabled = false;
-            slider.IsEnabled = true;
-            slider.ThumbSize = AppCommon.sliderThumbSizeNormal;
             RemoveSafeVolumeLevelPopup();
             AudioManager.VolumeController.Level[AudioVolumeType.Media] = (int)slider.CurrentValue;
         }
+
         private void OnCancelButtonClicked(object sender, ClickedEventArgs e)
         {
-            slider.IsEnabled = true;
-            slider.ThumbSize = AppCommon.sliderThumbSizeNormal;
             RemoveSafeVolumeLevelPopup();
         }
-        private void RemoveSafeVolumeLevelPopup()
-        {
-            if (safeVolumeLevelPopup != null)
-            {
-                Window.Instance.Remove(safeVolumeLevelPopup);
-                SafeVolumeLevelPopupRemoved?.Invoke();
-            }
-        }
-        private string SetVolumeIcon(float currentVolume)
+
+        private void UpdateTheme(string theme)
         {
-            if (currentVolume == 0.0f)
+            if (theme == Resources.LightPlatformThemeId)
             {
-                return Resources.MuteIconPath;
+                BoxShadow = AppCommon.mainViewLightBoxShadow;
             }
-            else if (currentVolume <= 0.33 * MaxVolume)
+            else
             {
-                return Resources.Volume1_33IconPath;
+                BoxShadow = AppCommon.mainViewDarkBoxShadow;
             }
-            else if (currentVolume <= 0.66 * MaxVolume)
+        }
+
+        protected override void OnThemeChanged(object sender, ThemeChangedEventArgs e)
+        {
+            if (e.IsPlatformThemeChanged)
             {
-                return Resources.Volume34_66IconPath;
+                UpdateTheme(ThemeManager.PlatformThemeId);
             }
-            else if (currentVolume <= MaxVolume)
+        }
+
+        protected override void Dispose(DisposeTypes type)
+        {
+            if (Disposed)
             {
-                return Resources.Volume67_100IconPath;
+                return;
             }
-            else
+
+            if (type == DisposeTypes.Explicit)
             {
-                return Resources.Volume67_100IconPath;
+
+                SliderSlidingStarted = null;
+                SliderSlidingFinished = null;
+                SafeVolumeLevelPopupAdded = null;
+                SafeVolumeLevelPopupRemoved = null;
+
+                slider.SlidingStarted -= OnSlidingStarted;
+                slider.ValueChanged -= OnSliderValueChanged;
+                slider.SlidingFinished -= OnSlidingFinished;
+
+                Remove(slider);
+                slider?.Dispose();
+
+                Remove(volumeIcon);
+                volumeIcon?.Dispose();
+                if (safeVolumeLevelPopup != null)
+                {
+                    cancelButton.Clicked -= OnCancelButtonClicked;
+                    increaseButton.Clicked -= OnIncreaseButtonClicked;
+                    Window.Instance.Remove(safeVolumeLevelPopup);
+                    safeVolumeLevelPopup?.Dispose();
+                }
+
+                AudioManager.VolumeController.Changed -= OnAudioVolumeChanged;
             }
+            base.Dispose(type);
         }
     }
 }
index 7dfd4fc57e5e5c876c43c315cf898b4c2ced3ace..8830c4a04b6fe6ade4c4247e0a7db0b35cdceafb 100644 (file)
@@ -15,7 +15,7 @@
        </PropertyGroup>
 
        <ItemGroup>
-               <PackageReference Include="Tizen.NET" Version="11.0.0.17657" />
+               <PackageReference Include="Tizen.NET" Version="11.0.0.17828" />
                <PackageReference Include="Tizen.NET.Sdk" Version="1.1.9" />
        </ItemGroup>
 
index 6385e0f20bc78c85d5fb697e234ac9140cef3f7e..6b027baaa204ea09b67c6e5c0bc18ea64dd81238 100644 (file)
Binary files a/packaging/org.tizen.volume-nui-1.0.0.tpk and b/packaging/org.tizen.volume-nui-1.0.0.tpk differ