コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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 = "";
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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");
        }
コード例 #6
0
        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");
        }
コード例 #7
0
        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;
        }
コード例 #8
0
 public ByCategory()
 {
     this.service = new PlaylistsService();
 }
コード例 #9
0
 public Create()
 {
     this.service           = new PlaylistsService();
     this.categoriesService = new CategoriesService();
 }
コード例 #10
0
ファイル: Private.aspx.cs プロジェクト: ekov1/Telerik-Academy
 public Private()
 {
     this.userService     = new UsersService();
     this.playlistService = new PlaylistsService();
 }
コード例 #11
0
ファイル: Details.aspx.cs プロジェクト: ekov1/Telerik-Academy
 public Details()
 {
     this.service       = new PlaylistsService();
     this.videosService = new VideosService();
 }
コード例 #12
0
 public _Default()
 {
     this.service = new PlaylistsService();
 }
コード例 #13
0
 public Browse()
 {
     this.service = new PlaylistsService();
 }
コード例 #14
0
 public PlaylistsController()
 {
     unitOfWork = new UnitOfWork();
     pService   = new PlaylistsService(unitOfWork);
     sService   = new SongsService(unitOfWork);
 }
コード例 #15
0
ファイル: Search.aspx.cs プロジェクト: ekov1/Telerik-Academy
 public Search()
 {
     this.service = new PlaylistsService();
 }
コード例 #16
0
        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);
        }