Fixed Volume App Immovability Issue 70/317170/2
authorMd. Farhan Mahtab/NC eXperience Group /SRBD/Engineer/Samsung Electronics <farhan.m1@samsung.com>
Wed, 4 Sep 2024 12:05:56 +0000 (18:05 +0600)
committerMd. Farhan Mahtab/NC eXperience Group /SRBD/Engineer/Samsung Electronics <farhan.m1@samsung.com>
Thu, 5 Sep 2024 06:48:55 +0000 (12:48 +0600)
[Problem][TNINE-4371] Volume app isn't movable

[Cause & Measure]
 Cause : Movable Feature wasn't implented
 Measure : Used Tizen.NUI.PanGestureDetector to implement movability.

Change-Id: I9e99cd9bd29e4520c9f00a805b15766ad952f4d8
Signed-off-by: Md. Farhan Mahtab/NC eXperience Group /SRBD/Engineer/Samsung Electronics <farhan.m1@samsung.com>
VolumeApp/Core/ViewManager.cs
VolumeApp/Views/MainView.cs
VolumeApp/VolumeApp.cs

index 28e69eb44b9da4156bf0ac5d5946813d16b40cc9..f02c99fc4de495da87f71689c11be498d27cc3e5 100644 (file)
@@ -24,6 +24,7 @@ namespace VolumeApp.Core
         private MainView mainView;
         private Timer volumeAppAutoHideTimer;
         private Window window;
+        private PanGestureDetector panGestureDetector;
 
         public ViewManager()
         {
@@ -44,6 +45,28 @@ namespace VolumeApp.Core
 
             window.KeyEvent += OnKeyEvent;
             window.TouchEvent += OnTouched;
+
+            InitPanGestureDetector();
+        }
+
+        private void InitPanGestureDetector()
+        {
+            if (panGestureDetector == null)
+            {
+                panGestureDetector = new PanGestureDetector();
+                panGestureDetector.Attach(mainView);
+                panGestureDetector.Detected += OnPanGestureDetected;
+            }
+        }
+
+        private void OnPanGestureDetected(object source, PanGestureDetector.DetectedEventArgs e)
+        {
+            if (e == null)
+            {
+                return;
+            }
+            PanGesture panGesture = e.PanGesture;
+            mainView.Position += new Position(panGesture.ScreenDisplacement.X, panGesture.ScreenDisplacement.Y, 0);
         }
 
         public void UpdateMainView()
@@ -51,6 +74,12 @@ namespace VolumeApp.Core
             mainView.UpdateMainView();
         }
 
+        public void ResetPanGesture()
+        {
+            panGestureDetector.Detach(mainView);
+            panGestureDetector.Attach(mainView);
+        }
+
         public void StartTimer()
         {
             volumeAppAutoHideTimer?.Start();
@@ -113,11 +142,13 @@ namespace VolumeApp.Core
         {
             StartTimer();
             mainView.TouchEvent += OnMainViewTouched;
+            panGestureDetector.Detected += OnPanGestureDetected;
         }
         private void OnSafeLevelVolumePopupAdded()
         {
             StopTimer();
             mainView.TouchEvent -= OnMainViewTouched;
+            panGestureDetector.Detected -= OnPanGestureDetected;
         }
         private void OnSliderSlidingFinished()
         {
@@ -171,8 +202,10 @@ namespace VolumeApp.Core
                 mainView.SliderSlidingFinished -= OnSliderSlidingFinished;
                 mainView.SafeVolumeLevelPopupAdded -= OnSafeLevelVolumePopupAdded;
                 mainView.SafeVolumeLevelPopupRemoved -= OnSafeLevelVolumePopupRemoved;
+                panGestureDetector.Detected -= OnPanGestureDetected;
 
                 window.Remove(mainView);
+                panGestureDetector?.Dispose();
                 mainView?.Dispose();
             }
             base.Dispose(type);
index c0907894ef7c6bd518b9091f8c4f8148e04b875c..a9e4c1410a9405575ab2bf68a85aeec35d4b772c 100644 (file)
@@ -158,8 +158,8 @@ namespace VolumeApp.Views
         private Position2D UpdatePosition()
         {
             int posX = ScreenSizeUtils.IsPortrait
-                ? ScreenSizeUtils.Width - ((int)(ScreenSizeUtils.Width * AppCommon.sliderPaddingRatioPortrait)) - (int)(AppCommon.mainViewWidthRatio * ScreenSizeUtils.Width)
-                : ScreenSizeUtils.Width - ((int)(ScreenSizeUtils.Width * AppCommon.sliderPaddingRatioLandscape)) - (int)(AppCommon.mainViewWidthRatio * ScreenSizeUtils.Width);
+                ? ScreenSizeUtils.Width - (int)(ScreenSizeUtils.Width * (AppCommon.sliderPaddingRatioPortrait + AppCommon.mainViewWidthRatio))
+                : ScreenSizeUtils.Width - (int)(ScreenSizeUtils.Width * (AppCommon.sliderPaddingRatioLandscape + AppCommon.mainViewWidthRatio));
 
             int posY = (ScreenSizeUtils.Height - (int)SizeHeight) / 2;
             return new Position2D(posX, posY);
index 2e048b2d18d33d006b807e4fb66246a7df065e78..1518b9f79e0f5ccc4ab7e7af59a0cd656ebcd2e5 100644 (file)
@@ -132,6 +132,7 @@ namespace VolumeApp
         private void OnWindowOrientationChanged(object sender, WindowOrientationChangedEventArgs e)
         {
             Tizen.Log.Debug(Resources.LogTag, "Current orientation is: " + e.WindowOrientation);
+            viewManager.ResetPanGesture();
             viewManager.UpdateMainView();
         }