[TIZENIOT-2507]Fixing mini-player adding process 53/269253/1
authoraman.jeph <aman.jeph@samsung.com>
Wed, 12 Jan 2022 05:05:23 +0000 (10:35 +0530)
committeraman.jeph <aman.jeph@samsung.com>
Wed, 12 Jan 2022 05:05:23 +0000 (10:35 +0530)
Change-Id: Ib5efb9271ee4e32205a74029249e3ab0cd0f6411
Signed-off-by: aman.jeph <aman.jeph@samsung.com>
music-player/Core/PlaybackHelper.cs
music-player/Views/MiniPlayer.cs
music-player/Views/ViewManager.cs

index 8cce6e98a4ee22283b4c3f2863ee0a1715ebad5c..9b294025c5604846c3f6a01a02f19bc2f096abba 100755 (executable)
@@ -14,9 +14,12 @@ namespace MusicPlayer.Core
 
         private static readonly PlaybackHelper instance = new PlaybackHelper();
 
+        public event EventHandler AddMiniPlayer;
+
         private readonly PlayerView playerView;
         private readonly PlayerViewModel playerViewModel;
         private readonly MiniPlayer miniPlayer;
+        private bool isMiniPlayerAdded;
 
         private PlaybackHelper()
         {
@@ -25,6 +28,16 @@ namespace MusicPlayer.Core
             miniPlayer = new MiniPlayer(playerViewModel);
             playerView.BackKeyPressed += OnBackKeyPressed;
             playerViewModel.ShowDetails += OnShowDetails;
+            playerView.RemovedFromWindow += OnPlayViewRemoved;
+            isMiniPlayerAdded = false;
+        }
+
+        private void OnPlayViewRemoved(object sender, EventArgs e)
+        {
+            if(isMiniPlayerAdded == false)
+            {
+                AddMiniPlayer?.Invoke(this, new EventArgs());
+            }
         }
 
         private void OnShowDetails(object sender, DetailOperationEventHandlerArgs e)
@@ -50,19 +63,21 @@ namespace MusicPlayer.Core
             playerView.HideView();
         }
 
-        public View GetMiniPlayer()
-        {
-            return miniPlayer;
-        }
-
-        public void ShowMiniPlayer()
+        public void ShowMiniPlayer(View parent)
         {
-            miniPlayer.ShowView();
+            if(parent)
+            {
+                parent.Add(miniPlayer);
+                miniPlayer.ShowView();
+                isMiniPlayerAdded = true;
+            }
         }
 
         public void HideMiniPlayer()
         {
+            miniPlayer.Unparent();
             miniPlayer.HideView();
+            isMiniPlayerAdded = false;
         }
 
         public void PlayAll(ListViewModel<Track> trackList, Track startingTrack)
index 36e9b987655cfa923a652b09bba23942ebaf8e09..add31030a0f37aa35bb859a173b5587d208e5f3e 100755 (executable)
@@ -25,7 +25,7 @@ namespace MusicPlayer.Views
         private Slider playbackSlider;\r
         private TextLabel currentTime;\r
         private TextLabel totalTime;\r
-\r
+        private View baseView;\r
         private readonly PlayerViewModel viewModel;\r
 \r
         public MiniPlayer(PlayerViewModel viewModel) : base()\r
@@ -36,14 +36,35 @@ namespace MusicPlayer.Views
             ThemeChangeSensitive = true;\r
             WidthSpecification = LayoutParamPolicies.MatchParent;\r
             HeightSpecification = 124;\r
-            Layout = new FlexLayout()\r
+            baseView = new View()\r
+            {\r
+                WidthSpecification = LayoutParamPolicies.MatchParent,\r
+                HeightSpecification = LayoutParamPolicies.MatchParent,\r
+                BackgroundColor = Color.Transparent,\r
+                Position = new Position(0, 0),\r
+            };\r
+            Add(baseView);\r
+            baseView.Layout = new FlexLayout()\r
             {\r
                 Direction = FlexLayout.FlexDirection.Row,\r
-                Padding = new Extents(64, 64, 24, 19),\r
+                Padding = new Extents(64, 64, 24, 20),\r
             };\r
             AddTrackDetails();\r
             AddControlElements();\r
             AddSliderElements();\r
+            AddSeparatorLine();\r
+        }\r
+\r
+        private void AddSeparatorLine()\r
+        {\r
+            View separator = new View()\r
+            {\r
+                WidthSpecification = LayoutParamPolicies.MatchParent,\r
+                HeightSpecification = 1,\r
+                StyleName = "InputLine",\r
+                Position = new Position(0, 0),\r
+            };\r
+            Add(separator);\r
         }\r
 \r
         private void AddTrackDetails()\r
@@ -59,7 +80,7 @@ namespace MusicPlayer.Views
                     Margin = new Extents(0, 0, 0, 5),\r
                 }\r
             };\r
-            base.Add(trackInfo);\r
+            baseView.Add(trackInfo);\r
             AddTrackName();\r
             AddArtistName();\r
         }\r
@@ -78,7 +99,7 @@ namespace MusicPlayer.Views
                 PlaybackHelper.Instance.ShowPlayer();\r
                 return true;\r
             };\r
-            base.Add(thumbnail);\r
+            baseView.Add(thumbnail);\r
         }\r
 \r
         private void AddTrackName()\r
@@ -127,7 +148,7 @@ namespace MusicPlayer.Views
                 },\r
                 Margin = new Extents(0, 120, 14, 19),\r
             };\r
-            base.Add(controlsView);\r
+            baseView.Add(controlsView);\r
             AddPreviousButton();\r
             AddPlayButton();\r
             AddNextButton();\r
@@ -238,7 +259,7 @@ namespace MusicPlayer.Views
                 BackgroundColor = Color.Transparent,\r
                 Margin = new Extents(0, 0, 19, 0),\r
             };\r
-            base.Add(sliderView);\r
+            baseView.Add(sliderView);\r
             AddPlaybackSlider();\r
             AddCurrentTimeLabel();\r
             AddTotalTimeLabel();\r
index 22a90db09887797106b7c9eea76f9ae8dd41218e..ce6ef127ebcd46d422fab2e1488744f7b41ac11b 100755 (executable)
@@ -125,15 +125,12 @@ namespace MusicPlayer.Views
             baseView.Tabs.ItemChangedEvent += OnTabItemSelect;
             baseView.GetSearchButton().Clicked += OnSearchIconClicked;
             SetTabItem(-1, (int)ContentViewType.Playlist);
-            miniPlayer = PlaybackHelper.Instance.GetMiniPlayer();
-            View separator = new View()
-            {
-                WidthSpecification = LayoutParamPolicies.MatchParent,
-                HeightSpecification = 1,
-                StyleName = "InputLine",
-            };
-            rootview.Add(separator);
-            rootView.Add(miniPlayer);
+            PlaybackHelper.Instance.AddMiniPlayer += OnMiniPlayerAdd;
+        }
+
+        private void OnMiniPlayerAdd(object sender, EventArgs e)
+        {
+            PlaybackHelper.Instance.ShowMiniPlayer(rootView);
         }
 
         private void OnSearchIconClicked(object sender, ClickedEventArgs e)