From: shivamv Date: Tue, 23 Nov 2021 05:34:33 +0000 (+0530) Subject: 1. Adding Utils for Add/Remove songs to playlist. X-Git-Tag: submit/tizen/20211125.074930^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=90ff180267993f144749fc5f1a143285682f22e8;p=profile%2Fiot%2Fapps%2Fdotnet%2Fmusic-player.git 1. Adding Utils for Add/Remove songs to playlist. 2. Cleaning the whole code, Making required fields readonly. Change-Id: Ib43579a3e0a54195c019e5abbacf02b2ca36d553 Signed-off-by: shivamv --- diff --git a/music-player/Core/PlaybackHelper.cs b/music-player/Core/PlaybackHelper.cs index f454312..8cce6e9 100755 --- a/music-player/Core/PlaybackHelper.cs +++ b/music-player/Core/PlaybackHelper.cs @@ -12,10 +12,10 @@ namespace MusicPlayer.Core class PlaybackHelper { - private static PlaybackHelper instance = new PlaybackHelper(); + private static readonly PlaybackHelper instance = new PlaybackHelper(); - private PlayerView playerView; - private PlayerViewModel playerViewModel; + private readonly PlayerView playerView; + private readonly PlayerViewModel playerViewModel; private readonly MiniPlayer miniPlayer; private PlaybackHelper() diff --git a/music-player/Core/PlaylistManager.cs b/music-player/Core/PlaylistManager.cs index 264132b..55ea0ae 100755 --- a/music-player/Core/PlaylistManager.cs +++ b/music-player/Core/PlaylistManager.cs @@ -10,7 +10,7 @@ namespace MusicPlayer.Core { class PlaylistManager : IDisposable { - private static PlaylistManager instance = new PlaylistManager(); + private static readonly PlaylistManager instance = new PlaylistManager(); /// /// MediaDatabase doesn't provide update event when playlist is added , removed or changed diff --git a/music-player/MediaContent/MediaDatabase.cs b/music-player/MediaContent/MediaDatabase.cs index 5e3ec37..9d2ca86 100755 --- a/music-player/MediaContent/MediaDatabase.cs +++ b/music-player/MediaContent/MediaDatabase.cs @@ -5,7 +5,7 @@ namespace MusicPlayer.Media { class Database : IDisposable { - private MediaDatabase mediaDatabase; + private readonly MediaDatabase mediaDatabase; public Database() { diff --git a/music-player/ViewModels/AlbumDetailViewModel.cs b/music-player/ViewModels/AlbumDetailViewModel.cs index f5a90f0..e0ad562 100755 --- a/music-player/ViewModels/AlbumDetailViewModel.cs +++ b/music-player/ViewModels/AlbumDetailViewModel.cs @@ -64,7 +64,7 @@ namespace MusicPlayer.ViewModels set => SetProperty(ref albumArtPath, value); } - private ListViewModel listViewModel; + private readonly ListViewModel listViewModel; public ListViewModel ListViewModel { diff --git a/music-player/ViewModels/ArtistDetailViewModel.cs b/music-player/ViewModels/ArtistDetailViewModel.cs index 0668ddc..d0e8921 100755 --- a/music-player/ViewModels/ArtistDetailViewModel.cs +++ b/music-player/ViewModels/ArtistDetailViewModel.cs @@ -90,9 +90,6 @@ namespace MusicPlayer.ViewModels List albumList = ArtistDataProvider.GetArtistAlbumList(text); albumListViewModel.CreateData(albumList); - List trackList = ArtistDataProvider.GetArtistTrackList(text); - trackListViewModel.CreateData(trackList); - foreach (MusicAlbum album in albumListViewModel) { ArtistDetailAlbum artistAlbum = new ArtistDetailAlbum(album); @@ -102,6 +99,7 @@ namespace MusicPlayer.ViewModels foreach (Track track in albumTrackListViewModel) { artistAlbum.Add(track); + trackListViewModel.Add(track); } groupListViewModel.Add(artistAlbum); } diff --git a/music-player/ViewModels/PlayerViewModel.cs b/music-player/ViewModels/PlayerViewModel.cs index 43760ce..9bbdd47 100755 --- a/music-player/ViewModels/PlayerViewModel.cs +++ b/music-player/ViewModels/PlayerViewModel.cs @@ -39,8 +39,10 @@ namespace MusicPlayer.ViewModels lyricsViewModel = new LyricsViewModel(); playingListViewModel = new PlayingListViewModel(); playingListViewModel.ItemSelected += OnPlayingListItemSelected; - playerModel = new PlayerModel(); - playerModel.ElapsedTime = 0.0f; + playerModel = new PlayerModel() + { + ElapsedTime = 0.0f, + }; PlayingStatus = PlayingStatus.None; PlayerController.Instance.PlayerEventOccurred += OnPlayerEventOccurred; playbackTimer = new Timer(PlaybackTimerDuration); diff --git a/music-player/ViewModels/SelectorViewModel.cs b/music-player/ViewModels/SelectorViewModel.cs index c0753ab..cb2e6dc 100755 --- a/music-player/ViewModels/SelectorViewModel.cs +++ b/music-player/ViewModels/SelectorViewModel.cs @@ -8,14 +8,14 @@ namespace MusicPlayer.ViewModels class SelectorViewModel : PropertyNotifier where T : new() { PlaylistSelectorViewModel playlistSelectorViewModel; - readonly object callerViewModel; + readonly object additionalData; - public SelectorViewModel(ListViewModel viewModel, object callerViewModel = null) + public SelectorViewModel(ListViewModel viewModel, object additionalData = null) { listViewModel = viewModel; SelectedCount = "0"; TotalCount = ListViewModel.Count; - this.callerViewModel = callerViewModel; + this.additionalData = additionalData; } private readonly ListViewModel listViewModel; @@ -46,15 +46,15 @@ namespace MusicPlayer.ViewModels public bool AddMediaToPlaylist(List mediaList) { - PlaylistDetailViewModel playlistDetailViewModel = (PlaylistDetailViewModel)callerViewModel; - bool tracksAdded = PlaylistManager.Instance.AddTracks(playlistDetailViewModel.PlaylistId, mediaList); + int playlistId = (int)additionalData; + bool tracksAdded = PlaylistManager.Instance.AddTracks(playlistId, mediaList); return tracksAdded; } public bool RemoveMediaFromPlaylist(List mediaList) { - PlaylistDetailViewModel playlistDetailViewModel = (PlaylistDetailViewModel)callerViewModel; - bool tracksRemoved = PlaylistManager.Instance.DeleteTrackList(playlistDetailViewModel.PlaylistId, mediaList); + int playlistId = (int)additionalData; + bool tracksRemoved = PlaylistManager.Instance.DeleteTrackList(playlistId, mediaList); return tracksRemoved; } diff --git a/music-player/ViewModels/TrackViewModel.cs b/music-player/ViewModels/TrackViewModel.cs index 4eff12e..cc82ffd 100755 --- a/music-player/ViewModels/TrackViewModel.cs +++ b/music-player/ViewModels/TrackViewModel.cs @@ -18,7 +18,7 @@ namespace MusicPlayer.ViewModels TrackCount = listViewModel.Count.ToString(); } - private ListViewModel listViewModel; + private readonly ListViewModel listViewModel; public ListViewModel ListViewModel { diff --git a/music-player/Views/AlbumDetailView.cs b/music-player/Views/AlbumDetailView.cs index 2c74b00..c0c4bca 100755 --- a/music-player/Views/AlbumDetailView.cs +++ b/music-player/Views/AlbumDetailView.cs @@ -19,7 +19,7 @@ namespace MusicPlayer.Views private TextLabel albumNameLabel; private TextLabel albumArtistLabel; - private AlbumDetailViewModel viewModel; + private readonly AlbumDetailViewModel viewModel; public AlbumDetailView(AlbumDetailViewModel viewModel) : base() { Name = "AlbumDetailView"; diff --git a/music-player/Views/AlbumView.cs b/music-player/Views/AlbumView.cs index aad0253..b6d2725 100755 --- a/music-player/Views/AlbumView.cs +++ b/music-player/Views/AlbumView.cs @@ -11,7 +11,7 @@ namespace MusicPlayer.Views { class AlbumView : BaseContentView { - private AlbumViewModel viewModel; + private readonly AlbumViewModel viewModel; private TextLabel albumCountLabel; public AlbumView(AlbumViewModel viewModel) : base() diff --git a/music-player/Views/ArtistDetailView.cs b/music-player/Views/ArtistDetailView.cs index 9cdecb0..16f25c3 100755 --- a/music-player/Views/ArtistDetailView.cs +++ b/music-player/Views/ArtistDetailView.cs @@ -10,7 +10,7 @@ namespace MusicPlayer.Views { class ArtistDetailView : BaseSubContentView { - private ArtistDetailViewModel viewModel; + private readonly ArtistDetailViewModel viewModel; public ArtistDetailView(ArtistDetailViewModel viewModel) : base() { diff --git a/music-player/Views/ArtistView.cs b/music-player/Views/ArtistView.cs index 47558c6..67a1767 100755 --- a/music-player/Views/ArtistView.cs +++ b/music-player/Views/ArtistView.cs @@ -11,7 +11,7 @@ namespace MusicPlayer.Views { class ArtistView : BaseContentView { - private ArtistViewModel viewModel; + private readonly ArtistViewModel viewModel; private TextLabel artistCountLabel; public ArtistView(ArtistViewModel viewModel) diff --git a/music-player/Views/BaseContentView.cs b/music-player/Views/BaseContentView.cs index d137ff3..ddb7c59 100755 --- a/music-player/Views/BaseContentView.cs +++ b/music-player/Views/BaseContentView.cs @@ -185,7 +185,6 @@ namespace MusicPlayer.Views MenuItem item = listItem[0]; listItem.RemoveAt(0); item.Dispose(); - item = null; } moreMenu.Dismiss(); moreMenu = null; diff --git a/music-player/Views/BaseView.cs b/music-player/Views/BaseView.cs index b1e87be..bc45261 100755 --- a/music-player/Views/BaseView.cs +++ b/music-player/Views/BaseView.cs @@ -20,7 +20,7 @@ namespace MusicPlayer.Views // TODO these name strings are temporary...once the po files are added // need to use Translatable names. - private static string[] TabNames = new string[] + private static readonly string[] TabNames = new string[] { "Playlists", "Tracks", @@ -91,8 +91,10 @@ namespace MusicPlayer.Views base.Add(tabs); for(int i = 0; i<4; ++i) { - Tab.TabItemData item = new Tab.TabItemData(); - item.Text = TabNames[i]; + Tab.TabItemData item = new Tab.TabItemData() + { + Text = TabNames[i], + }; tabs.AddItem(item); } diff --git a/music-player/Views/PlayerView.cs b/music-player/Views/PlayerView.cs index 996ae4a..deaa755 100755 --- a/music-player/Views/PlayerView.cs +++ b/music-player/Views/PlayerView.cs @@ -58,7 +58,7 @@ namespace MusicPlayer.Views private PlayingListView currentListView; private LyricsView lyricsView; - private PlayerViewModel viewModel; + private readonly PlayerViewModel viewModel; private PlayerViewState viewState; private bool isPlaylistAddViewCreated = false; @@ -86,6 +86,7 @@ namespace MusicPlayer.Views AddListActionButtons(); AddThumbnail(); AddLyricsView(); + TouchEvent += (object source, TouchEventArgs e) => false; } public void ShowView() @@ -100,8 +101,10 @@ namespace MusicPlayer.Views private void AddPlayerBackground() { - playerBackgroundView = new View(); - playerBackgroundView.Size2D = new Size2D(Window.Instance.WindowSize.Width, Window.Instance.WindowSize.Height); + playerBackgroundView = new View() + { + Size2D = new Size2D(Window.Instance.WindowSize.Width, Window.Instance.WindowSize.Height) + }; WidthResizePolicy = ResizePolicyType.FillToParent; HeightResizePolicy = ResizePolicyType.FillToParent; base.Add(playerBackgroundView); @@ -138,12 +141,14 @@ namespace MusicPlayer.Views private void AddRightViewBackground() { - rightViewBackground = new View(); - rightViewBackground.BackgroundColor = Color.Transparent; - rightViewBackground.SizeWidth = Window.Instance.WindowSize.Width / 2; - rightViewBackground.SizeHeight = Window.Instance.WindowSize.Height; - rightViewBackground.WidthResizePolicy = ResizePolicyType.FillToParent; - rightViewBackground.HeightResizePolicy = ResizePolicyType.FillToParent; + rightViewBackground = new View() + { + BackgroundColor = Color.Transparent, + SizeWidth = Window.Instance.WindowSize.Width / 2, + SizeHeight = Window.Instance.WindowSize.Height, + WidthResizePolicy = ResizePolicyType.FillToParent, + HeightResizePolicy = ResizePolicyType.FillToParent + }; rightView.Add(rightViewBackground); rightViewBackground.BindingContext = viewModel; rightViewBackground.SetBinding(BackgroundProperty, "PlayerBackground"); @@ -166,9 +171,11 @@ namespace MusicPlayer.Views private void AddTopButtons() { - backButton = new Button("BackButton"); - backButton.ThemeChangeSensitive = true; - backButton.Position2D = new Position2D(LayoutPadding, TopBarButtonsY); + backButton = new Button("BackButton") + { + ThemeChangeSensitive = true, + Position2D = new Position2D(LayoutPadding, TopBarButtonsY) + }; leftView.Add(backButton); backButton.Clicked += (object sender, ClickedEventArgs clickedEventArgs) => { @@ -176,9 +183,11 @@ namespace MusicPlayer.Views HideView(); }; - moreButton = new Button("MoreButton"); - moreButton.ThemeChangeSensitive = true; - moreButton.Position2D = new Position2D(Window.Instance.WindowSize.Width / 2 - LayoutPadding - IconSize, TopBarButtonsY); + moreButton = new Button("MoreButton") + { + ThemeChangeSensitive = true, + Position2D = new Position2D(Window.Instance.WindowSize.Width / 2 - LayoutPadding - IconSize, TopBarButtonsY) + }; rightView.Add(moreButton); moreButton.Clicked += OnMoreButtonClicked; } @@ -599,15 +608,17 @@ namespace MusicPlayer.Views private void AddVolumeSlider() { - volumeSlider = new Slider("Slider"); - volumeSlider.ThemeChangeSensitive = true; - volumeSlider.Size2D = new Size2D(496, 48); - volumeSlider.Position2D = new Position2D(72, 336); - volumeSlider.ThumbSize = new Tizen.NUI.Size(36, 36); - volumeSlider.Direction = Slider.DirectionType.Horizontal; - volumeSlider.MinValue = 0; - volumeSlider.MaxValue = AudioManager.VolumeController.MaxLevel[AudioVolumeType.Media]; - volumeSlider.CurrentValue = AudioManager.VolumeController.Level[AudioVolumeType.Media]; + volumeSlider = new Slider("Slider") + { + ThemeChangeSensitive = true, + Size2D = new Size2D(496, 48), + Position2D = new Position2D(72, 336), + ThumbSize = new Tizen.NUI.Size(36, 36), + Direction = Slider.DirectionType.Horizontal, + MinValue = 0, + MaxValue = AudioManager.VolumeController.MaxLevel[AudioVolumeType.Media], + CurrentValue = AudioManager.VolumeController.Level[AudioVolumeType.Media] + }; controlsView.Add(volumeSlider); volumeSlider.BindingContext = viewModel; volumeSlider.SetBinding(Slider.CurrentValueProperty, "VolumeLevel"); diff --git a/music-player/Views/PlayingListView.cs b/music-player/Views/PlayingListView.cs index 8124b77..a9a62c5 100755 --- a/music-player/Views/PlayingListView.cs +++ b/music-player/Views/PlayingListView.cs @@ -12,8 +12,8 @@ namespace MusicPlayer.Views { class PlayingListView : View { - private CollectionView collectionView; - private PlayingListViewModel viewModel; + private readonly CollectionView collectionView; + private readonly PlayingListViewModel viewModel; public PlayingListView(PlayingListViewModel viewModel) : base() { diff --git a/music-player/Views/PlaylistDetailView.cs b/music-player/Views/PlaylistDetailView.cs index 6085bac..0b2881c 100755 --- a/music-player/Views/PlaylistDetailView.cs +++ b/music-player/Views/PlaylistDetailView.cs @@ -11,7 +11,7 @@ namespace MusicPlayer.Views { class PlaylistDetailView : BaseSubContentView { - private PlaylistDetailViewModel viewModel; + private readonly PlaylistDetailViewModel viewModel; public PlaylistDetailView(PlaylistDetailViewModel playlistViewModel) { @@ -23,6 +23,7 @@ namespace MusicPlayer.Views layout.Icon.SetBinding(ImageView.ResourceUrlProperty, "ThumbnailPath"); layout.TitleLabel.SetBinding(TextLabel.TextProperty, "TrackTitle"); layout.SubtitleLabel.SetBinding(TextLabel.TextProperty, "ArtistName"); + //layout.SetBinding(ListItemLayout.IsPlayingProperty, "IsPlaying"); //Need to Modify return layout; }); collectionView.SelectionChanged += OnTrackSelection; @@ -60,7 +61,7 @@ namespace MusicPlayer.Views private void OnAddClick(object sender, ClickedEventArgs e) { TrackViewModel trackViewModel = new TrackViewModel(); - OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.AddToCurrentPlaylist, ContentViewType.Track, trackViewModel.ListViewModel, viewModel); + OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.AddToCurrentPlaylist, ContentViewType.Track, trackViewModel.ListViewModel, viewModel.PlaylistId); OnOperationViewAdd(operationEventArgs); } @@ -90,7 +91,7 @@ namespace MusicPlayer.Views private void OnDeleteClick(object sender, ClickedEventArgs e) { - OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.RemoveFromCurrentPlaylist, ContentViewType.Track, viewModel.ListViewModel, viewModel); + OperationViewAddEventArgs operationEventArgs = new OperationViewAddEventArgs(OperationViewType.RemoveFromCurrentPlaylist, ContentViewType.Track, viewModel.ListViewModel, viewModel.PlaylistId); OnOperationViewAdd(operationEventArgs); } diff --git a/music-player/Views/PlaylistSelectorView.cs b/music-player/Views/PlaylistSelectorView.cs index 78b42af..120e7b3 100755 --- a/music-player/Views/PlaylistSelectorView.cs +++ b/music-player/Views/PlaylistSelectorView.cs @@ -38,7 +38,7 @@ namespace MusicPlayer.Views private AlertDialog createPlaylistDialog; private TextField textField; private Button crossButton; - private PlaylistSelectorViewModel viewModel; + private readonly PlaylistSelectorViewModel viewModel; public event EventHandler PlaylistMemberAdd; @@ -167,9 +167,11 @@ namespace MusicPlayer.Views FlexLayout.SetFlexShrink(collectionView, 1); collectionView.ItemTemplate = new DataTemplate(() => { - DefaultLinearItem layout = new DefaultLinearItem("LinearItem"); - layout.WidthSpecification = LayoutParamPolicies.MatchParent; - layout.HeightSpecification = 108; + DefaultLinearItem layout = new DefaultLinearItem("LinearItem") + { + WidthSpecification = LayoutParamPolicies.MatchParent, + HeightSpecification = 108 + }; layout.Seperator.BackgroundColor = UIColors.ItemSeperator; layout.Seperator.Padding = new Extents(0, 0, 0, 0); layout.Seperator.Margin = new Extents(0, 0, 0, 0); diff --git a/music-player/Views/PlaylistView.cs b/music-player/Views/PlaylistView.cs index d674a6f..4c02601 100755 --- a/music-player/Views/PlaylistView.cs +++ b/music-player/Views/PlaylistView.cs @@ -17,7 +17,7 @@ namespace MusicPlayer.Views private TextLabel playlistCountLabel; private Button playlistCreateButton; - private PlaylistViewModel viewModel; + private readonly PlaylistViewModel viewModel; public PlaylistView(PlaylistViewModel viewModel) { diff --git a/music-player/Views/SearchView.cs b/music-player/Views/SearchView.cs index d4b1e0b..715878a 100755 --- a/music-player/Views/SearchView.cs +++ b/music-player/Views/SearchView.cs @@ -23,7 +23,7 @@ namespace MusicPlayer.Views private View searchBox; private TextLabel searchLabel; - private SearchViewModel viewModel; + private readonly SearchViewModel viewModel; public event EventHandler LaunchDetailView; diff --git a/music-player/Views/SelectorView.cs b/music-player/Views/SelectorView.cs index cd79f85..6b61f96 100755 --- a/music-player/Views/SelectorView.cs +++ b/music-player/Views/SelectorView.cs @@ -30,14 +30,13 @@ namespace MusicPlayer.Views private CheckBox selAllButton; private Button cancelButton; private Button doneButton; - private CollectionView collectionView; + private readonly CollectionView collectionView; int itemCount = 0; public List selectedItemList; - private SelectorViewModel viewModel; - private OperationViewType currentViewType; - + private readonly SelectorViewModel viewModel; + private readonly OperationViewType currentViewType; public SelectorView(OperationViewType viewType, SelectorViewModel viewModel) : base() { diff --git a/music-player/Views/TrackDetailView.cs b/music-player/Views/TrackDetailView.cs index 840d413..b37670a 100755 --- a/music-player/Views/TrackDetailView.cs +++ b/music-player/Views/TrackDetailView.cs @@ -14,7 +14,7 @@ namespace MusicPlayer.Views { private ContentPage contentPage; private ScrollableBase scrollableBase; - private TrackDetailViewModel viewModel; + private readonly TrackDetailViewModel viewModel; private View itemRootView; public TrackDetailView(TrackDetailViewModel viewModel) : base() { @@ -66,7 +66,6 @@ namespace MusicPlayer.Views RecursivelyDisposeChildren(child); view.Remove(child); child.Dispose(); - child = null; } } diff --git a/music-player/Views/TrackView.cs b/music-player/Views/TrackView.cs index bca9791..f756ccb 100755 --- a/music-player/Views/TrackView.cs +++ b/music-player/Views/TrackView.cs @@ -10,7 +10,7 @@ namespace MusicPlayer.Views { class TrackView : BaseContentView { - private TrackViewModel viewModel; + private readonly TrackViewModel viewModel; private TextLabel trackCountLabel; private Button playAllWithShuffle; private Button playAll; @@ -26,6 +26,7 @@ namespace MusicPlayer.Views layout.Icon.SetBinding(ImageView.ResourceUrlProperty, "ThumbnailPath"); layout.TitleLabel.SetBinding(TextLabel.TextProperty, "TrackTitle"); layout.SubtitleLabel.SetBinding(TextLabel.TextProperty, "ArtistName"); + //layout.SetBinding(ListItemLayout.IsPlayingProperty, "IsPlaying"); //Need to Modify return layout; }); collectionView.ScrollingDirection = ScrollableBase.Direction.Vertical; diff --git a/music-player/Views/Utils/OperationViewAddEventArgs.cs b/music-player/Views/Utils/OperationViewAddEventArgs.cs index 348ef7f..fd256c8 100755 --- a/music-player/Views/Utils/OperationViewAddEventArgs.cs +++ b/music-player/Views/Utils/OperationViewAddEventArgs.cs @@ -6,11 +6,12 @@ namespace MusicPlayer.Views.Utils { class OperationViewAddEventArgs : EventArgs { - public OperationViewAddEventArgs(OperationViewType type, ContentViewType contentType, object creationDetails) + public OperationViewAddEventArgs(OperationViewType type, ContentViewType contentType, object creationDetails, object additionalDetails = null) { OperationViewType = type; ContentViewType = contentType; ViewModelData = creationDetails; + OtherData = additionalDetails; } public OperationViewType OperationViewType { get; private set; } @@ -18,5 +19,7 @@ namespace MusicPlayer.Views.Utils public ContentViewType ContentViewType { get; private set; } public object ViewModelData { get; private set; } + + public object OtherData { get; private set; } } } diff --git a/music-player/Views/Utils/OperationViewFactory.cs b/music-player/Views/Utils/OperationViewFactory.cs index 57ad2b0..61beb10 100755 --- a/music-player/Views/Utils/OperationViewFactory.cs +++ b/music-player/Views/Utils/OperationViewFactory.cs @@ -14,15 +14,17 @@ namespace MusicPlayer.Views.Utils Search = 1, Share = 2, AddToPlaylist = 3, + AddToCurrentPlaylist = 4, + RemoveFromCurrentPlaylist = 5, } abstract class OperationViewFactory { - public abstract View AddOperationView(OperationViewType type, ContentViewType viewType, object viewModelData); + public abstract View AddOperationView(OperationViewType type, ContentViewType viewType, object viewModelData, object otherData = null); } class ConcreteOperationViewFactory : OperationViewFactory { - public override View AddOperationView(OperationViewType type, ContentViewType viewType, object viewModelData) + public override View AddOperationView(OperationViewType type, ContentViewType viewType, object viewModelData, object otherData = null) { Tizen.Log.Debug(AppConstants.LogTag, "Getting operation view of type: " + type.ToString()); View view = null; @@ -34,6 +36,7 @@ namespace MusicPlayer.Views.Utils break; case OperationViewType.Search: Tizen.Log.Info(AppConstants.LogTag, "Creationg Search View"); + view = CreateSearchView(); break; case OperationViewType.Share: Tizen.Log.Info(AppConstants.LogTag, "Creationg Share View"); @@ -45,6 +48,18 @@ namespace MusicPlayer.Views.Utils Tizen.Log.Info(AppConstants.LogTag, "Creationg AddtoPlaylist View"); view = CreateAddToPlaylistView(viewType, viewModelData); break; + case OperationViewType.AddToCurrentPlaylist: + Tizen.Log.Info(AppConstants.LogTag, "Creationg AddtoCurrentPlaylist View"); + SelectorViewModel addToCurrentPlaylistViewModel = new SelectorViewModel((ListViewModel)viewModelData, otherData); + SelectorView addToCurrentPlaylistView = new SelectorView(OperationViewType.AddToCurrentPlaylist, addToCurrentPlaylistViewModel); + view = addToCurrentPlaylistView; + break; + case OperationViewType.RemoveFromCurrentPlaylist: + Tizen.Log.Info(AppConstants.LogTag, "Creationg RemoveFromCurrentPlaylist View"); + SelectorViewModel removeFromCurrentPlaylistViewModel = new SelectorViewModel((ListViewModel)viewModelData, otherData); + SelectorView removeFromCurrentPlaylistView = new SelectorView(OperationViewType.RemoveFromCurrentPlaylist, removeFromCurrentPlaylistViewModel); + view = removeFromCurrentPlaylistView; + break; } return view; } diff --git a/music-player/Views/Utils/ViewLibrary.cs b/music-player/Views/Utils/ViewLibrary.cs index 937a75b..14392db 100755 --- a/music-player/Views/Utils/ViewLibrary.cs +++ b/music-player/Views/Utils/ViewLibrary.cs @@ -6,10 +6,10 @@ namespace MusicPlayer.Views.Utils { class ViewLibrary { - private IDictionary contentViewDictionary; - private ConcreteContentViewFactory contentViewFactory; - private ConcreteSubContentViewFactory subContentViewFactory; - private ConcreteOperationViewFactory operationViewFactory; + private readonly IDictionary contentViewDictionary; + private readonly ConcreteContentViewFactory contentViewFactory; + private readonly ConcreteSubContentViewFactory subContentViewFactory; + private readonly ConcreteOperationViewFactory operationViewFactory; public ViewLibrary() { @@ -39,9 +39,9 @@ namespace MusicPlayer.Views.Utils return view; } - public void AddOperationView(OperationViewType type, ContentViewType contentType, object viewModelData) + public void AddOperationView(OperationViewType type, ContentViewType contentType, object viewModelData, object otherData) { - operationViewFactory.AddOperationView(type, contentType, viewModelData); + operationViewFactory.AddOperationView(type, contentType, viewModelData, otherData); } public SearchView CreateSearchView() diff --git a/music-player/Views/ViewManager.cs b/music-player/Views/ViewManager.cs index 86ff41c..22a90db 100755 --- a/music-player/Views/ViewManager.cs +++ b/music-player/Views/ViewManager.cs @@ -13,12 +13,11 @@ namespace MusicPlayer.Views { public class ViewManager { - private Window window; - private ViewLibrary viewLibrary; + private readonly ViewLibrary viewLibrary; private View rootView; private BaseView baseView; private View miniPlayer; - private static string[] TabNames = new string[] + private static readonly string[] TabNames = new string[] { "Playlists", "Tracks", @@ -28,7 +27,6 @@ namespace MusicPlayer.Views public ViewManager(Window win) { - window = win; viewLibrary = new ViewLibrary(); UpdateTheme(ThemeManager.PlatformThemeId); InitializeRootView(win); @@ -155,7 +153,7 @@ namespace MusicPlayer.Views private void OnOperationViewAdded(object sender, OperationViewAddEventArgs e) { - viewLibrary.AddOperationView(e.OperationViewType, e.ContentViewType, e.ViewModelData, e.CallerViewModel); + viewLibrary.AddOperationView(e.OperationViewType, e.ContentViewType, e.ViewModelData, e.OtherData); } private void SetTabItem(int previousIndex, int currentIndex) diff --git a/music-player/music-player.csproj b/music-player/music-player.csproj index a36f2ac..be15aa6 100755 --- a/music-player/music-player.csproj +++ b/music-player/music-player.csproj @@ -19,7 +19,7 @@ - + Runtime diff --git a/packaging/org.tizen.MusicPlayer-1.0.0.tpk b/packaging/org.tizen.MusicPlayer-1.0.0.tpk index c1781b3..39280c9 100755 Binary files a/packaging/org.tizen.MusicPlayer-1.0.0.tpk and b/packaging/org.tizen.MusicPlayer-1.0.0.tpk differ