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()
{
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)
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)
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
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
Margin = new Extents(0, 0, 0, 5),\r
}\r
};\r
- base.Add(trackInfo);\r
+ baseView.Add(trackInfo);\r
AddTrackName();\r
AddArtistName();\r
}\r
PlaybackHelper.Instance.ShowPlayer();\r
return true;\r
};\r
- base.Add(thumbnail);\r
+ baseView.Add(thumbnail);\r
}\r
\r
private void AddTrackName()\r
},\r
Margin = new Extents(0, 120, 14, 19),\r
};\r
- base.Add(controlsView);\r
+ baseView.Add(controlsView);\r
AddPreviousButton();\r
AddPlayButton();\r
AddNextButton();\r
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
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)