using MusicPlayer.Views;
using MusicPlayer.ViewModels;
using Tizen.NUI;
+using Tizen.NUI.BaseComponents;
using MusicPlayer.Models;
namespace MusicPlayer.Core
private PlayerView playerView;
private PlayerViewModel playerViewModel;
+ private readonly MiniPlayer miniPlayer;
private PlaybackHelper()
{
playerViewModel = new PlayerViewModel();
playerView = new PlayerView(playerViewModel);
+ miniPlayer = new MiniPlayer(playerViewModel);
playerView.BackKeyPressed += OnBackKeyPressed;
playerViewModel.ShowDetails += OnShowDetails;
}
playerView.HideView();
}
+ public View GetMiniPlayer()
+ {
+ return miniPlayer;
+ }
+
+ public void ShowMiniPlayer()
+ {
+ miniPlayer.ShowView();
+ }
+
+ public void HideMiniPlayer()
+ {
+ miniPlayer.HideView();
+ }
+
public void PlayAll(ListViewModel<Track> trackList, Track startingTrack)
{
ShowPlayer();
return isTrackDeleted;
}
- public bool DeleteTrackList(int playlistId, List<int> memberList)
+ public bool DeleteTrackList(int playlistId, List<string> memberList)
{
if (memberList.Count <= 0)
{
Tizen.Log.Error(AppConstants.LogTag, "Track list empty , can't remove anything from playlist");
return false;
}
- bool isTracksDeleted = Contents.DeletePlaylistMembers(playlistId, memberList);
- if(isTracksDeleted)
+ bool isTracksDeleted=false;
+ int n = 0;
+ foreach(string member in memberList)
+ {
+ int mediaId = Contents.GetMemberId(playlistId, member);
+ isTracksDeleted = Contents.DeletePlaylistMember(playlistId, mediaId);
+ if (!isTracksDeleted)
+ break;
+ n++;
+ }
+ if(n > 0)
{
PostUpdate();
}
\r
public static Playlist GetPlaylistById(int playlistId)\r
{\r
- Playlist list = null;\r
- list = playlistInfo.Select(playlistId);\r
- return list;\r
+ return playlistInfo.Select(playlistId);\r
}\r
\r
public static Playlist CreatePlaylist(string name)\r
return playlistInfo.CountMember(playlistId);\r
}\r
\r
+ public static int GetMemberId(int playlistId, string mediaId)\r
+ {\r
+ return playlistInfo.GetMemberId(playlistId, mediaId);\r
+ }\r
+\r
public static bool DeletePlaylist(int playlistId)\r
{\r
return playlistInfo.Delete(playlistId);\r
{
PlaylistManager.Instance.PlaylistDataChanged += OnPlaylistDetailChanged;
playlist = PlaylistManager.Instance.GetPlaylist(playlistId);
+ PlaylistId = playlistId;
PlaylistName = playlist.Name;
IsNotDefaultPlaylist = true;
if(PlaylistName == AppConstants.RecentlyAddedPlaylist || PlaylistName == AppConstants.FavouritePlaylist)
public string PlaylistName { get; set; }
- private ListViewModel<Track> listViewModel;
+ public int PlaylistId { get; internal set; }
+
+ private readonly ListViewModel<Track> listViewModel;
public ListViewModel<Track> ListViewModel
{
using System.Collections.Generic;
using MusicPlayer.Models;
using MusicPlayer.Common;
+using MusicPlayer.Core;
namespace MusicPlayer.ViewModels
{
class SelectorViewModel<T> : PropertyNotifier where T : new()
{
PlaylistSelectorViewModel playlistSelectorViewModel;
+ readonly object callerViewModel;
- public SelectorViewModel(ListViewModel<T> viewModel)
+ public SelectorViewModel(ListViewModel<T> viewModel, object callerViewModel = null)
{
listViewModel = viewModel;
SelectedCount = "0";
TotalCount = ListViewModel.Count;
+ this.callerViewModel = callerViewModel;
}
private readonly ListViewModel<T> listViewModel;
return tracksShared;
}
+ public bool AddMediaToPlaylist(List<string> mediaList)
+ {
+ PlaylistDetailViewModel playlistDetailViewModel = (PlaylistDetailViewModel)callerViewModel;
+ bool tracksAdded = PlaylistManager.Instance.AddTracks(playlistDetailViewModel.PlaylistId, mediaList);
+ return tracksAdded;
+ }
+
+ public bool RemoveMediaFromPlaylist(List<string> mediaList)
+ {
+ PlaylistDetailViewModel playlistDetailViewModel = (PlaylistDetailViewModel)callerViewModel;
+ bool tracksRemoved = PlaylistManager.Instance.DeleteTrackList(playlistDetailViewModel.PlaylistId, mediaList);
+ return tracksRemoved;
+ }
+
public PlaylistSelectorViewModel GetPlaylistSelectorViewModel(List<string> addedTrackList)
{
- return playlistSelectorViewModel ?? new PlaylistSelectorViewModel(addedTrackList);
+ return playlistSelectorViewModel ??= new PlaylistSelectorViewModel(addedTrackList);
}
}
}
class BaseView : View
{
private View topView;
- private View bottomView; // TODO Used this for MiniController UI
private View contentView;
private TextLabel titleLabel;
private Button backButton;
{
ThemeChangeSensitive = true,
WidthSpecification = LayoutParamPolicies.MatchParent,
- HeightSpecification = 876,
+ HeightResizePolicy = ResizePolicyType.FillToParent,
};
base.Add(contentView);
FlexLayout.SetFlexGrow(contentView, 1);
base.Remove(tabs);
tabs?.Dispose();
tabs = null;
-
- base.Remove(bottomView);
- bottomView?.Dispose();
- bottomView = null;
}
base.Dispose(type);
--- /dev/null
+using Tizen.NUI;\r
+using Tizen.NUI.Components;\r
+using Tizen.NUI.BaseComponents;\r
+using Tizen.NUI.Binding;\r
+using MusicPlayer.Common;\r
+using MusicPlayer.ViewModels;\r
+using MusicPlayer.Views.Utils;\r
+using System.Collections.Generic;\r
+using MusicPlayer.Core;\r
+\r
+namespace MusicPlayer.Views\r
+{\r
+ class MiniPlayer : View\r
+ {\r
+ private ImageView thumbnail;\r
+ private View trackInfo;\r
+ private TextLabel titleLabel;\r
+ private TextLabel artistLabel;\r
+\r
+ private View controlsView;\r
+ private View sliderView;\r
+ private MultiStateButton playButton;\r
+ private Button prevButton;\r
+ private Button nextButton;\r
+ private Slider playbackSlider;\r
+ private TextLabel currentTime;\r
+ private TextLabel totalTime;\r
+\r
+ private readonly PlayerViewModel viewModel;\r
+\r
+ public MiniPlayer(PlayerViewModel viewModel) : base()\r
+ {\r
+ this.viewModel = viewModel;\r
+ BindingContext = viewModel.playerModel;\r
+ StyleName = "MiniPlayer";\r
+ ThemeChangeSensitive = true;\r
+ WidthSpecification = LayoutParamPolicies.MatchParent;\r
+ HeightSpecification = 124;\r
+ Layout = new FlexLayout()\r
+ {\r
+ Direction = FlexLayout.FlexDirection.Row,\r
+ Padding = new Extents(64, 64, 24, 19),\r
+ };\r
+ AddTrackDetails();\r
+ AddControlElements();\r
+ AddSliderElements();\r
+ }\r
+\r
+ private void AddTrackDetails()\r
+ {\r
+ AddThumbnail();\r
+ trackInfo = new View()\r
+ {\r
+ WidthSpecification = 666,\r
+ Layout = new FlexLayout()\r
+ {\r
+ Direction = FlexLayout.FlexDirection.Column,\r
+ Padding = new Extents(30, 120, 0, 0),\r
+ Margin = new Extents(0, 0, 0, 5),\r
+ }\r
+ };\r
+ base.Add(trackInfo);\r
+ AddTrackName();\r
+ AddArtistName();\r
+ }\r
+\r
+ private void AddThumbnail()\r
+ {\r
+ thumbnail = new ImageView()\r
+ {\r
+ BackgroundColor = UIColors.HEXEEEFF1,\r
+ Size2D = new Size2D(76, 76),\r
+ Margin = new Extents(0, 0, 0, 5),\r
+ };\r
+ thumbnail.SetBinding(ImageView.ResourceUrlProperty, "ThumbnailPath");\r
+ thumbnail.TouchEvent += (object source, TouchEventArgs e) =>\r
+ {\r
+ PlaybackHelper.Instance.ShowPlayer();\r
+ return true;\r
+ };\r
+ base.Add(thumbnail);\r
+ }\r
+\r
+ private void AddTrackName()\r
+ {\r
+ titleLabel = new TextLabel()\r
+ {\r
+ StyleName = "TitleText",\r
+ ThemeChangeSensitive = true,\r
+ Size2D = new Size2D(516, 48),\r
+ PixelSize = 36,\r
+ FontFamily = "BreezeSans",\r
+ HorizontalAlignment = HorizontalAlignment.Begin,\r
+ VerticalAlignment = VerticalAlignment.Center,\r
+ Ellipsis = true,\r
+ };\r
+ titleLabel.SetBinding(TextLabel.TextProperty, "TrackName");\r
+ trackInfo.Add(titleLabel);\r
+ }\r
+\r
+ private void AddArtistName()\r
+ {\r
+ artistLabel = new TextLabel()\r
+ {\r
+ StyleName = "TitleText",\r
+ ThemeChangeSensitive = true,\r
+ Size2D = new Size2D(382, 28),\r
+ PixelSize = 22,\r
+ FontFamily = "BreezeSans",\r
+ HorizontalAlignment = HorizontalAlignment.Begin,\r
+ VerticalAlignment = VerticalAlignment.Center,\r
+ Ellipsis = true,\r
+ };\r
+ artistLabel.SetBinding(TextLabel.TextProperty, "TrackArtist");\r
+ trackInfo.Add(artistLabel);\r
+ }\r
+ private void AddControlElements()\r
+ {\r
+ controlsView = new View()\r
+ {\r
+ WidthSpecification = 304,\r
+ Layout = new LinearLayout()\r
+ {\r
+ CellPadding = new Size2D(80, 0),\r
+ LinearAlignment = LinearLayout.Alignment.CenterVertical,\r
+ LinearOrientation = LinearLayout.Orientation.Horizontal,\r
+ },\r
+ Margin = new Extents(0, 120, 14, 19),\r
+ };\r
+ base.Add(controlsView);\r
+ AddPreviousButton();\r
+ AddPlayButton();\r
+ AddNextButton();\r
+ }\r
+\r
+ private void AddPreviousButton()\r
+ {\r
+ prevButton = new Button("PrevButton")\r
+ {\r
+ ThemeChangeSensitive = true,\r
+ };\r
+ prevButton.Clicked += (object sender, ClickedEventArgs e) =>\r
+ {\r
+ viewModel.PrevButtonClicked();\r
+ };\r
+ prevButton.BindingContext = viewModel;\r
+ prevButton.SetBinding(Button.IsEnabledProperty, "HasPreviousTrack");\r
+ controlsView.Add(prevButton);\r
+ }\r
+\r
+ private void AddPlayButton()\r
+ {\r
+ playButton = new MultiStateButton()\r
+ {\r
+ Size2D = new Size2D(48, 48),\r
+ BackgroundColor = Color.Transparent,\r
+ IconResources = new Dictionary<ThemeType, Dictionary<string, StringSelector>>()\r
+ {\r
+ {\r
+ ThemeType.Light,\r
+ new Dictionary<string, StringSelector>()\r
+ {\r
+ {\r
+ "Play",\r
+ new StringSelector()\r
+ {\r
+ Normal = Resources.GetImagePath() + "light/play.png",\r
+ Pressed = Resources.GetImagePath() + "play_pressed.png",\r
+ Disabled = Resources.GetImagePath() + "play_disabled.png",\r
+ }\r
+ },\r
+ {\r
+ "Pause",\r
+ new StringSelector()\r
+ {\r
+ Normal = Resources.GetImagePath() + "light/pause.png",\r
+ Pressed = Resources.GetImagePath() + "pause_pressed.png",\r
+ Disabled = Resources.GetImagePath() + "pause_disabled.png",\r
+ }\r
+ },\r
+ }\r
+ },\r
+ {\r
+ ThemeType.Dark,\r
+ new Dictionary<string, StringSelector>()\r
+ {\r
+ {\r
+ "Play",\r
+ new StringSelector()\r
+ {\r
+ Normal = Resources.GetImagePath() + "dark/play.png",\r
+ Pressed = Resources.GetImagePath() + "play_pressed.png",\r
+ Disabled = Resources.GetImagePath() + "play_disabled.png",\r
+ }\r
+ },\r
+ {\r
+ "Pause",\r
+ new StringSelector()\r
+ {\r
+ Normal = Resources.GetImagePath() + "dark/pause.png",\r
+ Pressed = Resources.GetImagePath() + "pause_pressed.png",\r
+ Disabled = Resources.GetImagePath() + "pause_disabled.png",\r
+ }\r
+ },\r
+ }\r
+ }\r
+ },\r
+ };\r
+ playButton.BindingContext = viewModel;\r
+ playButton.SetBinding(MultiStateButton.CustomStateProperty, "PlayButtonState");\r
+ controlsView.Add(playButton);\r
+ playButton.Clicked += (object sender, ClickedEventArgs e) =>\r
+ {\r
+ viewModel.PlayingStatusChanged();\r
+ };\r
+ }\r
+\r
+ private void AddNextButton()\r
+ {\r
+ nextButton = new Button("NextButton")\r
+ {\r
+ ThemeChangeSensitive = true,\r
+ };\r
+ nextButton.Clicked += (object sender, ClickedEventArgs e) =>\r
+ {\r
+ viewModel.NextButtonClicked();\r
+ };\r
+ nextButton.BindingContext = viewModel;\r
+ nextButton.SetBinding(Button.IsEnabledProperty, "HasNextTrack");\r
+ controlsView.Add(nextButton);\r
+ }\r
+\r
+ private void AddSliderElements()\r
+ {\r
+ sliderView = new View()\r
+ {\r
+ WidthSpecification = 626,\r
+ BackgroundColor = Color.Transparent,\r
+ Margin = new Extents(0, 0, 19, 0),\r
+ };\r
+ base.Add(sliderView);\r
+ AddPlaybackSlider();\r
+ AddCurrentTimeLabel();\r
+ AddTotalTimeLabel();\r
+ }\r
+\r
+ private void AddPlaybackSliderEventHandler()\r
+ {\r
+ playbackSlider.SlidingStarted += (object sender, SliderSlidingStartedEventArgs e) =>\r
+ {\r
+ viewModel.StopPlaybackTimer();\r
+ };\r
+ playbackSlider.ValueChanged += (object sender, SliderValueChangedEventArgs e) =>\r
+ {\r
+ viewModel.SetElapsedTime(e.CurrentValue);\r
+ };\r
+ playbackSlider.SlidingFinished += (object sender, SliderSlidingFinishedEventArgs e) =>\r
+ {\r
+ viewModel.UpdatePlayerPosition(e.CurrentValue);\r
+ };\r
+ }\r
+\r
+ private void AddPlaybackSlider()\r
+ {\r
+ playbackSlider = new Slider("Slider")\r
+ {\r
+ ThemeChangeSensitive = true,\r
+ MinValue = 0.0f,\r
+ MaxValue = 1.0f,\r
+ WidthResizePolicy = ResizePolicyType.FillToParent,\r
+ SizeHeight = 38,\r
+ ThumbSize = new Tizen.NUI.Size(30, 30),\r
+ Direction = Slider.DirectionType.Horizontal,\r
+ };\r
+ playbackSlider.SetBinding(Slider.CurrentValueProperty, "ElapsedTime");\r
+ sliderView.Add(playbackSlider);\r
+ AddPlaybackSliderEventHandler();\r
+ }\r
+\r
+ private void AddCurrentTimeLabel()\r
+ {\r
+ currentTime = new TextLabel()\r
+ {\r
+ StyleName = "TitleText",\r
+ ThemeChangeSensitive = true,\r
+ Size2D = new Size2D(180, 24),\r
+ Position2D = new Position2D(0, 38),\r
+ PixelSize = 18,\r
+ FontFamily = "BreezeSans",\r
+ Text = "00::00:00",\r
+ HorizontalAlignment = HorizontalAlignment.Begin,\r
+ };\r
+ currentTime.SetBinding(TextLabel.TextProperty, "PlayingTime");\r
+ sliderView.Add(currentTime);\r
+ }\r
+\r
+ private void AddTotalTimeLabel()\r
+ {\r
+ totalTime = new TextLabel()\r
+ {\r
+ StyleName = "TitleText",\r
+ ThemeChangeSensitive = true,\r
+ Size2D = new Size2D(180, 24),\r
+ Position2D = new Position2D(626 - 180, 38),\r
+ PixelSize = 18,\r
+ FontFamily = "BreezeSans",\r
+ HorizontalAlignment = HorizontalAlignment.End,\r
+ Text = "59:59:59",\r
+ };\r
+ totalTime.SetBinding(TextLabel.TextProperty, "TrackLength");\r
+ sliderView.Add(totalTime);\r
+ }\r
+\r
+ public void ShowView()\r
+ {\r
+ Show();\r
+ }\r
+\r
+ public void HideView()\r
+ {\r
+ Hide();\r
+ }\r
+ }\r
+}\r
private void AddPreviousButton()
{
- prevButton = new Button("PrevButton");
- prevButton.ThemeChangeSensitive = true;
+ prevButton = new Button("PrevButton")
+ {
+ Position2D = new Position2D(168, 196),
+ ThemeChangeSensitive = true
+ };
// TODO need to implement command instead
prevButton.Clicked += (object sender, ClickedEventArgs e) =>
{
private void AddNextButton()
{
- nextButton = new Button("NextButton");
- nextButton.ThemeChangeSensitive = true;
+ nextButton = new Button("NextButton")
+ {
+ Position2D = new Position2D(424, 196),
+ ThemeChangeSensitive = true
+ };
// TODO need to implement command instead
nextButton.Clicked += (object sender, ClickedEventArgs e) =>
{
if (viewModel.IsNotDefaultPlaylist)
{
- var delete = new MenuItem { Text = "Delete" };
+ var add = new MenuItem { Text = "Add" };
+ add.Clicked += OnAddClick;
+ menuItemList.Add(add);
+ var delete = new MenuItem { Text = "Remove" };
delete.Clicked += OnDeleteClick;
menuItemList.Add(delete);
}
moreMenu.Items = menuItemList;
}
+ private void OnAddClick(object sender, ClickedEventArgs e)
+ {
+ TrackViewModel trackViewModel = new TrackViewModel();
+ OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.AddToCurrentPlaylist, ContentViewType.Track, trackViewModel.ListViewModel, viewModel);
+ OnOperationViewAdd(operationEventArgs);
+ }
+
protected override void OnPlayAllClicked()
{
Tizen.Log.Debug(AppConstants.LogTag, "PlaylistDetailView OnPlayAllClicked");
private void OnDeleteClick(object sender, ClickedEventArgs e)
{
- OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.Delete, ContentViewType.Track, viewModel.ListViewModel);
+ OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.RemoveFromCurrentPlaylist, ContentViewType.Track, viewModel.ListViewModel, viewModel);
OnOperationViewAdd(operationEventArgs);
}
private void AddCreatePlayListButton()
{
- ButtonStyle buttonStyle = new ButtonStyle()
- {
- Text = new TextLabelStyle()
- {
- Text = "+ Create new playlist",
- PixelSize = 32,
- FontFamily = "BreezeSans",
- TextColor = UIColors.HEX001447,
- HorizontalAlignment = HorizontalAlignment.Begin,
- VerticalAlignment = VerticalAlignment.Center,
- },
- IsSelectable = false,
- };
createNewPlaylistButton = new Button("PlaylistCreate")
{
{
ThemeChangeSensitive = true,
StyleName = "ListBackground",
- Size2D = new Size2D(1792, 108),
+ WidthSpecification = LayoutParamPolicies.MatchParent,
Padding = new Extents(0, 0, 0, 0),
ItemsLayouter = new LinearLayouter(),
ItemTemplate = new DataTemplate(() =>
{
- ListItemLayout layout = new ListItemLayout();
- layout.Padding = new Extents(0, 0, 0, 0);
- layout.Margin = new Extents(0, 0, 0, 0);
+ ListItemLayout layout = new ListItemLayout()
+ {
+ Padding = new Extents(0, 0, 0, 0),
+ Margin = new Extents(0, 0, 0, 0)
+ };
layout.Icon.SetBinding(ImageView.ResourceUrlProperty, "Thumbnail");
layout.TitleLabel.SetBinding(TextLabel.TextProperty, "Title");
layout.SubtitleLabel.SetBinding(TextLabel.TextProperty, "SubTitle");
}),
GroupHeaderTemplate = new DataTemplate(() =>
{
- DefaultTitleItem group = new DefaultTitleItem("DefaultTitle");
- group.WidthSpecification = 1792;
- group.Padding = new Extents(0, 0, 0, 0);
- group.Margin = new Extents(0, 0, 0, 0);
+ DefaultTitleItem group = new DefaultTitleItem("DefaultTitle")
+ {
+ Padding = new Extents(0, 0, 0, 0),
+ Margin = new Extents(0, 0, 0, 0)
+ };
group.Label.FontStyle = UIFontStyles.AllNormal;
group.Label.SetBinding(TextLabel.TextProperty, "DataCount");
group.Label.HorizontalAlignment = HorizontalAlignment.Begin;
private void OnItemSelection(object sender, SelectionChangedEventArgs e)
{
object selectedObject = collectionView.SelectedItem;
- if (selectedObject is SearchModel)
+ if (selectedObject is SearchModel searchModel)
{
- SearchModel searchModel = (SearchModel)selectedObject;
if (searchModel.ItemType == 0)
{
Artist currentArtist = searchModel.ArtistDetail;
}
};
}
+ else if(currentViewType == OperationViewType.AddToCurrentPlaylist)
+ {
+ bool AddedItems = viewModel.AddMediaToPlaylist(SelectedItemList);
+ ClearSelectionAndRemove();
+ }
+ else if(currentViewType == OperationViewType.RemoveFromCurrentPlaylist)
+ {
+ bool RemovedItems = viewModel.RemoveMediaFromPlaylist(SelectedItemList);
+ ClearSelectionAndRemove();
+ }
}
private void ClearSelectionAndRemove()
if (item != null && !newSel.Contains(item))
{
itemCount--;
- if (item is Track)
+ if (item is Track trackItem)
{
- Track trackItem = (Track)item;
trackItem.IsSelected = false;
selectedItemList.Remove(trackItem.Id);
}
- else if (item is Artist)
+ else if (item is Artist artistItem)
{
- Artist artistItem = (Artist)item;
artistItem.IsSelected = false;
string text = artistItem.ArtistName;
if (text == "Unknown")
selectedItemList.Remove(track.Id);
}
}
- else if (item is MusicAlbum)
+ else if (item is MusicAlbum albumItem)
{
- MusicAlbum albumItem = (MusicAlbum)item;
albumItem.IsSelected = false;
List<AudioInfo> albumTrackList = AlbumDataProvider.GetAlbumTrackList(albumItem.Id);
foreach (AudioInfo track in albumTrackList)
selectedItemList.Remove(track.Id);
}
}
- else if(item is PlaylistModel)
+ else if (item is PlaylistModel playlistItem)
{
- PlaylistModel playlistItem = (PlaylistModel)item;
playlistItem.PlaylistIsSelected = false;
selectedItemList.Remove(playlistItem.PlaylistId.ToString());
}
if (item != null && !oldSel.Contains(item))
{
itemCount++;
- if (item is Track)
+ if (item is Track trackItem)
{
- Track trackItem = (Track)item;
trackItem.IsSelected = true;
selectedItemList.Add(trackItem.Id);
}
- else if (item is Artist)
+ else if (item is Artist artistItem)
{
- Artist artistItem = (Artist)item;
artistItem.IsSelected = true;
string text = artistItem.ArtistName;
if (text == "Unknown")
selectedItemList.Add(track.Id);
}
}
- else if (item is MusicAlbum)
+ else if (item is MusicAlbum albumItem)
{
- MusicAlbum albumItem = (MusicAlbum)item;
albumItem.IsSelected = true;
List<AudioInfo> albumTrackList = AlbumDataProvider.GetAlbumTrackList(albumItem.Id);
foreach (AudioInfo track in albumTrackList)
selectedItemList.Add(track.Id);
}
}
- else if (item is PlaylistModel)
+ else if (item is PlaylistModel playlistItem)
{
- PlaylistModel playlistItem = (PlaylistModel)item;
playlistItem.PlaylistIsSelected = true;
selectedItemList.Add(playlistItem.PlaylistId.ToString());
}
using Tizen.NUI.BaseComponents;
using MusicPlayer.Views.Utils;
using MusicPlayer.Common;
-
+using MusicPlayer.Core;
namespace MusicPlayer.Views
{
private Window window;
private ViewLibrary viewLibrary;
private View rootView;
- private BaseView baseView;
+ private BaseView baseView;
+ private View miniPlayer;
private static string[] TabNames = new string[]
{
"Playlists",
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);
}
private void OnSearchIconClicked(object sender, ClickedEventArgs e)
baseView.AddSubViewContent(subViewAddEventArgs.TitleText, baseSubContentView);
}
- private void OnOpeationViewAdded(object sender, OperationViewAddEventArgs e)
+ private void OnOperationViewAdded(object sender, OperationViewAddEventArgs e)
{
- viewLibrary.AddOperationView(e.OperationViewType, e.ContentViewType, e.ViewModelData);
+ viewLibrary.AddOperationView(e.OperationViewType, e.ContentViewType, e.ViewModelData, e.CallerViewModel);
}
private void SetTabItem(int previousIndex, int currentIndex)
if(previousContentView != null)
{
previousContentView.SubContentViewAdded -= OnSubViewAdded;
- previousContentView.OperationViewAdded -= OnOpeationViewAdded;
+ previousContentView.OperationViewAdded -= OnOperationViewAdded;
}
Tizen.Log.Error(AppConstants.LogTag, "Removing " + previousContentView.Name);
}
if (currentContentView != null)
{
currentContentView.SubContentViewAdded += OnSubViewAdded;
- currentContentView.OperationViewAdded += OnOpeationViewAdded;
+ currentContentView.OperationViewAdded += OnOperationViewAdded;
}
Tizen.Log.Error(AppConstants.LogTag, "Adding " + currentContentView.Name);
}
Id="DarkTheme">
<ViewStyle x:Key="AppBackground" BackgroundColor="#0E1017" />
+ <ViewStyle x:Key="MiniPlayer" BackgroundColor="#0E1017" />
<ViewStyle x:Key="InputLine" BackgroundColor="#FFFFFF" />
<ViewStyle x:Key="SearchBox" BackgroundImage="*Resource*/images/dark/search_box_bg.png" />
<ViewStyle x:Key="SelectAllBg" BackgroundImage="*Resource*/images/dark/selectall_bg.png" />
</c:DefaultTitleItemStyle.Label>
</c:DefaultTitleItemStyle>
- <c:ButtonStyle x:Key="PrevButton" Size="48, 48" Position="168, 196" IsSelectable="false" IsEnabled="true" BackgroundColor="Transparent">
+ <c:ButtonStyle x:Key="PrevButton" Size="48, 48" IsSelectable="false" IsEnabled="true" BackgroundColor="Transparent">
<c:ButtonStyle.Icon>
<ImageViewStyle>
<ImageViewStyle.ResourceUrl>
</c:ButtonStyle.Icon>
</c:ButtonStyle>
- <c:ButtonStyle x:Key="NextButton" Size="48, 48" Position="424, 196" IsSelectable="false" IsEnabled="true" BackgroundColor="Transparent">
+ <c:ButtonStyle x:Key="NextButton" Size="48, 48" IsSelectable="false" IsEnabled="true" BackgroundColor="Transparent">
<c:ButtonStyle.Icon>
<ImageViewStyle>
<ImageViewStyle.ResourceUrl>
Id="LightTheme">
<ViewStyle x:Key="AppBackground" BackgroundColor="#EEEFF1" />
+ <ViewStyle x:Key="MiniPlayer" BackgroundColor="#FFFFFF" />
<ViewStyle x:Key="InputLine" BackgroundColor="#0A0E4A" />
<ViewStyle x:Key="SearchBox" BackgroundImage="*Resource*/images/light/search_box_bg.png" />
<ViewStyle x:Key="SelectAllBg" BackgroundImage="*Resource*/images/light/selectall_bg.png" />
</c:DefaultTitleItemStyle.Label>
</c:DefaultTitleItemStyle>
- <c:ButtonStyle x:Key="PrevButton" Size="48, 48" Position="168, 196" BackgroundColor="Transparent">
+ <c:ButtonStyle x:Key="PrevButton" Size="48, 48" BackgroundColor="Transparent" >
<c:ButtonStyle.Icon>
<ImageViewStyle>
<ImageViewStyle.ResourceUrl>
</c:ButtonStyle.Icon>
</c:ButtonStyle>
- <c:ButtonStyle x:Key="NextButton" Size="48, 48" Position="424, 196" IsSelectable="false" IsEnabled="true" BackgroundColor="Transparent" >
+ <c:ButtonStyle x:Key="NextButton" Size="48, 48" IsSelectable="false" IsEnabled="true" BackgroundColor="Transparent" >
<c:ButtonStyle.Icon>
<ImageViewStyle>
<ImageViewStyle.ResourceUrl>