protected async override void OnNavigatedTo(NavigationEventArgs e) { if (e.Parameter == null) { return; } var playlist = (PlaylistFile)e.Parameter; if (playlist.IsLocal) { if (((PlaylistFile)e.Parameter).Id != 1000) { PlaylistViewModel.Playlist = await PlaylistsService.GetById(((PlaylistFile)e.Parameter).Id); } else { PlaylistViewModel.Playlist = (PlaylistFile)e.Parameter; } } else { PlaylistViewModel.Playlist = playlist; } if (playlist.OnRequest) { PlaylistViewModel.LoadingTracks(); } }
public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position) { RecommendationsViewHolder v = holder as RecommendationsViewHolder; v.ShowMoreButton.Click += (sender, e) => { if (Blocks[position].Playlists?.Count > 0) { //TODO: GOTO PLAYLISTS FRAGMENT (//TODO CREATE PLAYLISTS GRID FRAGMENT) var frag = new RecommendationPlaylistsFragment(); frag.playlists = PlaylistsService.CovertToPlaylistFiles(this.Blocks[position].Playlists); Parent.Activity.FindViewById <TextView>(Resource.Id.titlebar_title).Text = Blocks[position].Title; Parent.FragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, frag).Commit(); } else { var frag = new RecommendationTracksFragment(); frag.tracks = MusicService.ConvertToAudioFile(this.Blocks[position].Tracks); Parent.Activity.FindViewById <TextView>(Resource.Id.titlebar_title).Text = Blocks[position].Title; Parent.FragmentManager.BeginTransaction().Replace(Resource.Id.content_frame, frag).Commit(); } Toast.MakeText(Application.Context, $"Произошел кликинг по {this.Blocks[position].Title}", ToastLength.Long).Show(); }; //Установка заголовка согласно нужной рекомендации v.Caption.Text = this.Blocks[position].Title; v.SetItemClickListener(this); //вот прям тут да между этими комментами int counter = 0; if (this.Blocks[position].Playlists?.Count > 0) { var plistsInBlock = PlaylistsService.CovertToPlaylistFiles(this.Blocks[position].Playlists.Take(2).ToList()); var adapter = new PlaylistAdapter(plistsInBlock); adapter.ItemClick += AdapterOnPlaylistClick; v.List.SetAdapter(adapter); v.List.SetLayoutManager(new LinearLayoutManager(Application.Context, LinearLayoutManager.Horizontal, false)); v.List.Clickable = true; } else { List <AudioFile> tracksInBlock = new List <AudioFile>(); var tracks_nonvk = MusicService.ConvertToAudioFile(this.Blocks[position].Tracks); foreach (var track in tracks_nonvk) { if (counter > 1) { break; } tracksInBlock.Add(track); counter++; } var adapter = new TrackAdapter(tracksInBlock, this.Blocks[position].Title); adapter.ItemInBlockClick += AdapterOnItemClick; v.List.SetAdapter(adapter); v.List.SetLayoutManager(new LinearLayoutManager(Application.Context, LinearLayoutManager.Vertical, false)); v.List.Clickable = true; } this.ViewHolds.Add(v); }
private async void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args) { Playlist.Name = NamePlaylistBox.Text; StaticContent.Playlists.Remove(StaticContent.Playlists.Single(p => p.Id == Playlist.Id)); StaticContent.Playlists.Add(Playlist); await PlaylistsService.SavePlaylist(Playlist); NamePlaylistBox.Text = ""; }
protected async override void OnNavigatedTo(NavigationEventArgs ee) { if (HomeViewModel.Playlists.Count == 0) { await PlaylistsService.SetPlaylistLocal(); } if (HomeViewModel.Music.Count == 0) { await MusicFilesService.GetMusicLocal(); HomeViewModel.CountMusic(); } HomeViewModel.OnNavigate(); }
public async Task StartLoading(string blockId) { IsLoading = true; Changed("IsLoading"); var albumsVk = await MusicX.Core.VKontakte.Music.Artists.GetAlbums(blockId); var albums = new List <PlaylistFile>(); foreach (var album in albumsVk) { Albums.Add(await PlaylistsService.ConvertToPlaylistFile(album)); } IsLoading = false; Changed("Albums"); Changed("IsLoading"); }
public async Task StartLoading() { IsLoading = true; Changed("IsLoading"); var recc = await Fooxboy.MusicX.Core.VKontakte.Music.Recommendations.New(); var blocks = recc.Blocks; var listBlocks = new List <Block>(); foreach (var blockA in blocks) { var block = BlockService.ConvertToBlock(blockA); if (block.Tracks != null) { var tracks = await MusicService.ConvertToAudioFile(block.Tracks); block.TrackFiles = tracks; } if (block.Playlists != null) { var playlists = new List <PlaylistFile>(); foreach (var blockPlaylist in block.Playlists) { var plist = await PlaylistsService.ConvertToPlaylistFile(blockPlaylist); playlists.Add(plist); } block.PlaylistsFiles = playlists; } listBlocks.Add(block); } Blocks = listBlocks; Changed("Blocks"); IsLoading = false; Changed("IsLoading"); }
private CreatePlaylistViewModel() { CreatePlaylist = new RelayCommand(async() => { if (StaticContent.Playlists.Count >= 15 && StaticContent.IsPro == false) { await new MessageDialog("У Вас уже есть 15 плейлистов. Для того, чтобы создать больше 15 плейлистов, необходимо купить MusicX Pro", "Купите MusicX Pro").ShowAsync(); } else { try { var playlist = new PlaylistFile() { Artist = "Music X", Cover = ImagePlaylist, Id = new Random().Next(10, 1234), Name = NamePlaylist, TracksFiles = new List <AudioFile>(), IsLocal = true }; await PlaylistsService.SavePlaylist(playlist); StaticContent.Playlists.Add(playlist); VisibilityGridCreate = Visibility.Collapsed; VisibilityGridDone = Visibility.Visible; NamePlaylist = ""; Changed("NamePlaylist"); } catch (Exception e) { await ContentDialogService.Show(new ExceptionDialog("Невозможно создать плейлист", "Возможно, такой плейлист уже существует. Попробуйте ещё раз.", e)); } } }); SelectCover = new RelayCommand(async() => { try { var picker = new Windows.Storage.Pickers.FileOpenPicker(); picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail; picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary; picker.FileTypeFilter.Add(".jpg"); picker.FileTypeFilter.Add(".png"); Windows.Storage.StorageFile file = await picker.PickSingleFileAsync(); if (file != null) { StorageFile cover; try { cover = await file.CopyAsync(StaticContent.CoversFolder); } catch { cover = await StaticContent.CoversFolder.GetFileAsync(file.Name); await file.CopyAndReplaceAsync(cover); } ImagePlaylist = cover.Path; } else { } }catch (Exception e) { await ContentDialogService.Show(new ExceptionDialog("Ошибка при выборе файла", "Неизвестная ошибка", e)); } }); visibilityGridCreate = Visibility.Visible; visibilityGridDone = Visibility.Collapsed; }
public ByCategory() { this.service = new PlaylistsService(); }
public Create() { this.service = new PlaylistsService(); this.categoriesService = new CategoriesService(); }
public Private() { this.userService = new UsersService(); this.playlistService = new PlaylistsService(); }
public Details() { this.service = new PlaylistsService(); this.videosService = new VideosService(); }
public _Default() { this.service = new PlaylistsService(); }
public Browse() { this.service = new PlaylistsService(); }
public PlaylistsController() { unitOfWork = new UnitOfWork(); pService = new PlaylistsService(unitOfWork); sService = new SongsService(unitOfWork); }
public Search() { this.service = new PlaylistsService(); }
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { var view = inflater.Inflate(Resource.Layout.activity_tracks, container, false); List <AudioFile> tracks = new List <AudioFile>(); Tracks = tracks; adapter = new TrackAdapter(tracks); List <PlaylistFile> plists = new List <PlaylistFile>(); Playlists = plists; pAdapter = new PlaylistAdapter(plists); var tracksView = view.FindViewById <RecyclerView>(Resource.Id.list_tracks); var progressBar = view.FindViewById <ProgressBar>(Resource.Id.progressBar_tracks); var playlistsView = view.FindViewById <RecyclerView>(Resource.Id.list_plists); var playlistsProgressBar = view.FindViewById <ProgressBar>(Resource.Id.progressBar_library_plists); Handler handler = new Handler(Looper.MainLooper); adapter.ItemClick += AdapterOnItemClick; pAdapter.ItemClick += PlaylistOnItemClick; tracksView.SetAdapter(adapter); tracksView.SetLayoutManager(new LinearLayoutManager(Application.Context, LinearLayoutManager.Vertical, false)); RegisterForContextMenu(tracksView); tracksView.Clickable = true; playlistsView.SetAdapter(pAdapter); playlistsView.SetLayoutManager(new LinearLayoutManager(Application.Context, LinearLayoutManager.Horizontal, false)); playlistsView.Clickable = true; var scrollListener = new Listeners.OnScrollToBottomListener(() => { //if (!HasLoading) return; var task = Task.Run(() => { handler.Post(new Runnable(() => { progressBar.Visibility = ViewStates.Visible; })); try { tracks = MusicService.GetMusicLibrary(15, adapter.ItemCount); var i = 1 + 1; //Без этого нихуя не работает. Fooxboy.MusicX.Core.Log.Debug(i.ToString()); } catch (Exception e) { Toast.MakeText(Application.Context, $"Произошла ошибка: {e.ToString()}", ToastLength.Long).Show(); } }); bool end = false; task.ContinueWith((t) => { while (tracks.Count == 0) { System.Threading.Thread.Sleep(300); } HasLoading = !(tracks.Count < 15); handler.Post(new Runnable(() => { var count = adapter.ItemCount; adapter.AddItems(tracks); TracksInLibrary.AddRange(tracks); adapter.NotifyItemRangeChanged(count, tracks.Count); progressBar.Visibility = ViewStates.Invisible; end = true; })); }); var a = task.ConfigureAwait(false); while (!end) { System.Threading.Thread.Sleep(300); } }); tracksView.AddOnScrollListener(scrollListener); var plistsScrollListener = new Listeners.OnScrollToBottomListener(() => { if (!HasLoading) { return; } var task = Task.Run(() => { handler.Post(new Runnable(() => { playlistsProgressBar.Visibility = ViewStates.Visible; })); try { //tracks = MusicService.GetMusicLibrary(15, adapter.ItemCount); var vkplists = Core.VKontakte.Music.Library.PlaylistsSync(15, pAdapter.ItemCount); plists = PlaylistsService.CovertToPlaylistFiles(vkplists); var i = 1 + 1; //Без этого нихуя не работает. Fooxboy.MusicX.Core.Log.Debug(i.ToString()); } catch (Exception e) { Toast.MakeText(Application.Context, $"Произошла ошибка: {e.ToString()}", ToastLength.Long).Show(); } }); bool end = false; task.ContinueWith((t) => { while (plists.Count == 0) { System.Threading.Thread.Sleep(300); } HasLoading = !(plists.Count < 15); handler.Post(new Runnable(() => { var count = pAdapter.ItemCount; pAdapter.AddItems(plists); PlaylistsInLibrary.AddRange(plists); pAdapter.NotifyItemRangeChanged(count, plists.Count); playlistsProgressBar.Visibility = ViewStates.Invisible; end = true; })); }); var a = task.ConfigureAwait(false); while (!end) { System.Threading.Thread.Sleep(300); } }); playlistsView.AddOnScrollListener(plistsScrollListener); if (pAdapter.ItemCount == 0) { plistsScrollListener.InvokeCallback(); } if (adapter.ItemCount == 0) { scrollListener.InvokeCallback(); } return(view); }