public const string DarkPlatformThemeId = "org.tizen.default-dark-theme";
public const string FavouritePlaylist = "Favourite";
public const string RecentlyAddedPlaylist = "Recently Added";
+
+ /// <summary>
+ /// Maxcount 102 is including User playlist and System Playlist [Favourite, Recently Added].
+ /// User can create maximum 100 playlists.
+ /// </summary>
+ public const int MaxPlaylistCount = 102;
}
}
{
Added,
Cancelled,
+ PlaylistCreationFailed,
+ MemberCountExceeded,
+ Failed,
};
public class PlayerEventArgs : EventArgs
{
class PlaylistSelectorViewModel : PropertyNotifier
{
+ private const int MaxPlaylistTrackCount = 1000;
+ private const int SystemPlaylistCount = 2;
private List<string> addingTrackList;
public PlaylistSelectorViewModel(List<string> trackList)
{
{
listViewModel.CreateData(dataList);
}
+ // Total playlist count is user playlist count + system playlist count [favourite, recently added]
+ UpdateCreatePlaylistState(dataList.Count + SystemPlaylistCount);
int count = 0;
string newName = "My playlist 000";
set => SetProperty(ref playlistSelectedItem, value);
}
+ private bool canCreatePlaylist;
+
+ public bool CanCreatePlaylist
+ {
+ get => canCreatePlaylist;
+ set => SetProperty(ref canCreatePlaylist, value);
+ }
+
public bool CreatePlaylist(string playlistName)
{
Playlist playlist = PlaylistManager.Instance.GetPlaylist(playlistName);
return false;
}
- public bool AddTracksToPlaylist(object selectedItemData)
+ public PlaylistMemberAddStatus AddTracksToPlaylist(object selectedItemData)
{
PlaylistModel playlistModel = (PlaylistModel)selectedItemData;
if(addingTrackList == null || addingTrackList.Count <= 0)
{
- return false;
+ return PlaylistMemberAddStatus.PlaylistCreationFailed;
}
- return PlaylistManager.Instance.AddTracks(playlistModel.PlaylistId, addingTrackList);
+ int memberCount = PlaylistManager.Instance.PlaylistTrackCount(playlistModel.PlaylistId);
+ if(memberCount + addingTrackList.Count > MaxPlaylistTrackCount)
+ {
+ return PlaylistMemberAddStatus.MemberCountExceeded;
+ }
+ bool result = PlaylistManager.Instance.AddTracks(playlistModel.PlaylistId, addingTrackList);
+ return result ? PlaylistMemberAddStatus.Added : PlaylistMemberAddStatus.Failed;
}
public bool IsPlaylistExists(string playlistName)
}
return length;
}
+
+ private void UpdateCreatePlaylistState(int playlistCount)
+ {
+ if (playlistCount >= AppConstants.MaxPlaylistCount)
+ {
+ CanCreatePlaylist = false;
+ }
+ else
+ {
+ CanCreatePlaylist = true;
+ }
+ }
}
}
listViewModel = new ListViewModel<PlaylistModel>();
UpdatePlaylistData();
PlaylistCount = listViewModel.Count.ToString();
+ UpdateCreatePlaylistState(ListViewModel.Count);
ListViewModel.CollectionChanged += OnCollectionChanged;
}
}
}
+ private bool canCreatePlaylist;
+
+ public bool CanCreatePlaylist
+ {
+ get => canCreatePlaylist;
+ set => SetProperty(ref canCreatePlaylist, value);
+ }
+
private Playlist CreateDefaultPlaylist(string name, string thumbPath)
{
Playlist playlist = PlaylistManager.Instance.GetPlaylist(name);
private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
PlaylistCount = ListViewModel.Count.ToString();
+ UpdateCreatePlaylistState(ListViewModel.Count);
}
private ListViewModel<PlaylistModel> CreateUserPlayListViewModel()
return userListViewModel;
}
+ private void UpdateCreatePlaylistState(int playlistCount)
+ {
+ if(playlistCount >= AppConstants.MaxPlaylistCount)
+ {
+ CanCreatePlaylist = false;
+ }
+ else
+ {
+ CanCreatePlaylist = true;
+ }
+ }
}
}
HeightSpecification = 108,
TextAlignment = HorizontalAlignment.Begin,
Padding = new Extents(64, 64, 0, 0),
- IsEnabled = true,
IsSelectable = false,
ItemAlignment = LinearLayout.Alignment.CenterVertical,
};
+ createNewPlaylistButton.BindingContext = viewModel;
+ createNewPlaylistButton.SetBinding(Button.IsEnabledProperty, "CanCreatePlaylist");
selectPlaylistContentArea.Add(createNewPlaylistButton);
View itemSeperator = new View()
{
Tizen.Log.Error(AppConstants.LogTag, "Selected item is null");
return;
}
- bool isAdded = viewModel.AddTracksToPlaylist(item);
- if(isAdded == false)
+ PlaylistMemberAddStatus status = viewModel.AddTracksToPlaylist(item);
+ if(status == PlaylistMemberAddStatus.MemberCountExceeded)
+ {
+ ShowInfoMessage("Can't add more than 1000 tracks to a playlist");
+ collectionView.SelectedItem = null;
+ return;
+ }
+ else
{
Tizen.Log.Error(AppConstants.LogTag, "Failed to add track to playlist");
}
private void ShowInfoMessage(string message)
{
- Notification.MakeToast(message, Notification.ToastCenter).Post(Notification.ToastShort);
+ Notification.MakeToast(message, Notification.ToastBottom).Post(Notification.ToastShort);
}
private void CreatePlaylistCreateButtonClicked(object sender, ClickedEventArgs e)
ThemeChangeSensitive = true,
Margin = new Extents(40, 0, 0, 0),
};
+ playlistCreateButton.BindingContext = viewModel;
+ playlistCreateButton.SetBinding(Button.IsEnabledProperty, "CanCreatePlaylist");
titleView.Add(playlistCreateButton);
RelativeLayout.SetLeftRelativeOffset(playlistCreateButton, 1.0f);
RelativeLayout.SetRightRelativeOffset(playlistCreateButton, 1.0f);