Example #1
0
        //load me
        public async Task LoadTabForm()
        {
            Profile profile = Globals.DataStore.SelectedProfile;

            lblDisplayName.Text = profile.display_name;

            try
            {
                picProfile.LoadAsync(profile.images.FirstOrDefault().url.ToString());
            }
            catch (Exception exce)
            {
                picProfile.Image = null;
            }

            PlaylistList myPlaylists = Globals.DataStore.PlaylistList;

            lblNumFollowers.Text = $"{profile.followers.total.ToString(),3} followers";
            lblNumPlaylists.Text = $"{myPlaylists.total,3} playlists";

            dgvRecentlyPlayed.Rows.Clear();

            if (profile.id == Globals.DataStore.MyId)
            {
                foreach (Item item in Globals.DataStore.SelectedRecentlyPlayed.items)
                {
                    dgvRecentlyPlayed.Rows.Add($"{item.track.name}", $"{item.track.artists.FirstOrDefault().name}", "Load track", item.track.id);
                }
            }
        }
Example #2
0
        public async Task GetPlaylist(string playlistId)
        {
            //sets selected playlist
            string playlistJson = await Globals.Requester.GetAsync($"https://api.spotify.com/v1/playlists/{playlistId}?limit=999");

            Playlist playlist = JsonConvert.DeserializeObject <Playlist>(playlistJson);

            SelectedPlaylist = playlist;


            //gets playlist items
            string playlistTracksJson = await Globals.Requester.GetAsync($"https://api.spotify.com/v1/playlists/{playlistId}/tracks?limit=99");

            PlaylistTracks playlistTracks = JsonConvert.DeserializeObject <PlaylistTracks>(playlistTracksJson);

            if (playlistTracks.total > 99)
            {
                int numLoops = (int)Math.Ceiling(Convert.ToDouble(playlistTracks.total) / 99.0);

                for (int i = 1; i < numLoops; i++)
                {
                    playlistTracksJson = await Globals.Requester.GetAsync($"https://api.spotify.com/v1/playlists/{playlistId}/tracks?limit=99&offset={99*i}");

                    PlaylistList playlistTracksOffset = JsonConvert.DeserializeObject <PlaylistList>(playlistTracksJson);


                    playlistTracks.items.AddRange(playlistTracksOffset.items.ToArray());
                }
            }

            SelectedPlaylistTracks = playlistTracks;
        }
Example #3
0
 /// <summary>
 /// Clears the search results objects to purge them from memory
 /// </summary>
 private void ClearResults()
 {
     while (Results.Items.Count > 0)
     {
         object listItem = Results.Items.ElementAt(0);
         if (listItem is PlaylistList)
         {
             PlaylistList playlistList = listItem as PlaylistList;
             playlistList.Unload();
             Results.Items.Remove(playlistList);
         }
         else if (listItem is TrackList)
         {
             TrackList trackList = listItem as TrackList;
             trackList.Unload();
             Results.Items.Remove(trackList);
         }
         else if (listItem is AlbumList)
         {
             AlbumList albumList = listItem as AlbumList;
             albumList.Unload();
             Results.Items.Remove(albumList);
         }
     }
 }
Example #4
0
        /// <summary>
        /// Used when freeing memory
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public async void Page_Unloaded(object sender, RoutedEventArgs e)
        {
            if (App.isInBackgroundMode)
            {
                playlistsOffset = 0;
                await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    Bindings.StopTracking();

                    PlaylistsView.ItemClick -= PlaylistsView_ItemClick;
                    ClearPlaylists();

                    LogIn.Click            -= LogIn_Click;
                    PlaylistsRefresh.Click -= PlaylistsRefresh_Click;
                    PlaylistsMore.Click    -= PlaylistsMore_Click;

                    while (preEmptiveLoadPlaylists.Count > 0)
                    {
                        PlaylistList playlistList = preEmptiveLoadPlaylists.ElementAt(0) as PlaylistList;
                        playlistList.Unload();
                        preEmptiveLoadPlaylists.Remove(playlistList);
                    }
                });
            }
        }
Example #5
0
        public PlaylistList GetPlaylists(String userId)
        {
            PlaylistInfoList playlistInfoList = GetPagedRequest <PlaylistInfoList>(Endpoints.GetPlaylists(userId), true);

            PlaylistList playlistList = new PlaylistList(playlistInfoList);

            return(playlistList);
        }
Example #6
0
        public Task <Library.Models.Pagination.PagedResult <PlaylistList> > List(PagedRequest request, User roadieUser = null)
        {
            var sw = new Stopwatch();

            sw.Start();

            int[] playlistWithArtistTrackIds = new int[0];
            if (request.FilterToArtistId.HasValue)
            {
                playlistWithArtistTrackIds = (from pl in this.DbContext.Playlists
                                              join pltr in this.DbContext.PlaylistTracks on pl.Id equals pltr.PlayListId
                                              join t in this.DbContext.Tracks on pltr.TrackId equals t.Id
                                              join rm in this.DbContext.ReleaseMedias on t.ReleaseMediaId equals rm.Id
                                              join r in this.DbContext.Releases on rm.ReleaseId equals r.Id
                                              join a in this.DbContext.Artists on r.ArtistId equals a.Id
                                              where a.RoadieId == request.FilterToArtistId
                                              select pl.Id
                                              ).ToArray();
            }
            int[] playlistReleaseTrackIds = new int[0];
            if (request.FilterToReleaseId.HasValue)
            {
                playlistReleaseTrackIds = (from pl in this.DbContext.Playlists
                                           join pltr in this.DbContext.PlaylistTracks on pl.Id equals pltr.PlayListId
                                           join t in this.DbContext.Tracks on pltr.TrackId equals t.Id
                                           join rm in this.DbContext.ReleaseMedias on t.ReleaseMediaId equals rm.Id
                                           join r in this.DbContext.Releases on rm.ReleaseId equals r.Id
                                           where r.RoadieId == request.FilterToReleaseId
                                           select pl.Id
                                           ).ToArray();
            }

            var result = (from pl in this.DbContext.Playlists
                          join u in this.DbContext.Users on pl.UserId equals u.Id
                          where (request.FilterToPlaylistId == null || pl.RoadieId == request.FilterToPlaylistId)
                          where (request.FilterToArtistId == null || playlistWithArtistTrackIds.Contains(pl.Id))
                          where (request.FilterToReleaseId == null || playlistReleaseTrackIds.Contains(pl.Id))
                          where ((roadieUser == null && pl.IsPublic) || (roadieUser != null && u.RoadieId == roadieUser.UserId || pl.IsPublic))
                          where (request.FilterValue.Length == 0 || (request.FilterValue.Length > 0 && (pl.Name != null && pl.Name.Contains(request.FilterValue))))
                          select PlaylistList.FromDataPlaylist(pl, u, this.MakePlaylistThumbnailImage(pl.RoadieId), this.MakeUserThumbnailImage(u.RoadieId)));
            var sortBy = string.IsNullOrEmpty(request.Sort) ? request.OrderValue(new Dictionary <string, string> {
                { "Playlist.Text", "ASC" }
            }) : request.OrderValue(null);
            var rowCount = result.Count();
            var rows     = result.OrderBy(sortBy).Skip(request.SkipValue).Take(request.LimitValue).ToArray();

            sw.Stop();
            return(Task.FromResult(new Library.Models.Pagination.PagedResult <PlaylistList>
            {
                TotalCount = rowCount,
                CurrentPage = request.PageValue,
                TotalPages = (int)Math.Ceiling((double)rowCount / request.LimitValue),
                OperationTime = sw.ElapsedMilliseconds,
                Rows = rows
            }));
        }
Example #7
0
 void getPlaylists()
 {
     lsbPlaylist.Items.Clear();
     playlists = iPod.Playlists;
     for (int i = 0; i < playlists.Count; i++)
     {
         lsbPlaylist.Items.Add(playlists[i].Name.ToString());
     }
     lblPlaylist.Text = "Playlists : " + playlists.Count;
 }
Example #8
0
 /// <summary>
 /// Clears UI playlists
 /// </summary>
 public void ClearPlaylists()
 {
     playlistsOffset = 0;
     while (PlaylistsView.Items.Count > 0)
     {
         PlaylistList playlistList = PlaylistsView.Items.ElementAt(0) as PlaylistList;
         playlistList.Unload();
         PlaylistsView.Items.Remove(playlistList);
     }
 }
        private void PopulatePlaylistList()
        {
            PlaylistList.Clear();
            List <Playlist> temp = QueryManager.GetPlaylists("");

            for (int i = 0; i < temp.Count; i++)
            {
                PlaylistList.Add(temp[i]);
            }
        }
Example #10
0
        public JsonSerializationContent(string serializationFolder, UploadList uploadList, TemplateList templateList, PlaylistList playlistList)
        {
            this.playlistListFilePath = Path.Combine(serializationFolder, "playlistlist.json");
            this.uploadListFilePath   = Path.Combine(serializationFolder, "uploadlist.json");
            this.templateListFilePath = Path.Combine(serializationFolder, "templatelist.json");
            this.allUploadsFilePath   = Path.Combine(serializationFolder, "uploads.json");

            this.uploadList   = uploadList;
            this.templateList = templateList;
            this.playlistList = playlistList;
        }
Example #11
0
        private void Form1_Load(object sender, EventArgs e)
        {
            XmlImportExport <PlaylistList> xmlImport = new XmlImportExport <PlaylistList>();

            playlistList = xmlImport.DeserializeXml("playlists.xml", "PlaylistList");
            var form = new Forms.FormAllPlaylists(playlistList);

            form.playlistEventHandler += OpenPlaylistFromReceivingEvent;
            OpenChildForm(form, null);
            Application.DoEvents();
        }
Example #12
0
        public async Task LoadTabForm()
        {
            PlaylistList myPlayListList = Globals.DataStore.PlaylistList;

            cmbPlaylistSelect.Items.Clear();

            foreach (Item i in Globals.DataStore.PlaylistList.items)
            {
                cmbPlaylistSelect.Items.Add(i.name);
            }
        }
        public PlaylistViewModel()
        {
            _playlist = null;
            _client   = SpotifyClientService.Client;

            _showTutorialInfo = true;
            _playlists        = _client.GetPlaylists(SpotifyClientService.User.Id);

            _displayPlaylists = _playlists.Playlists;
            _displayPlaylists.Insert(0, new Playlist("New Playlist"));
        }
Example #14
0
        /// <summary>
        /// 初期化する
        /// </summary>
        internal async Task Initialize()
        {
            // プレイリスト一覧を空にする
            PlaylistList.Clear();

            var playlists = await m_YouTubeService.GetMyPlaylists();

            foreach (var playlist in playlists)
            {
                PlaylistList.Add(new PlaylistViewModel(playlist, m_WebClientService));
            }
        }
Example #15
0
        private void BtnFavouritePlaylists_Click(object sender, EventArgs e)
        {
            PlaylistList temp = new PlaylistList();

            foreach (var playlist in playlistList.playlistList)
            {
                if (playlist.isFavourite)
                {
                    temp.playlistList.Add(playlist);
                }
            }
            OpenChildForm(new FormAllPlaylists(temp), sender);
        }
Example #16
0
        public async Task <PlaylistList> GetLibraryPlaylists(string continuation = null)
        {
            string url = GetYTMUrl("browse", continuation);

            var data = JObject.FromObject(new
            {
                browseId = "FEmusic_liked_playlists"
            });

            var response = await Post <BrowseResponse>(url, data, authRequired : true);

            return(PlaylistList.FromBrowseResponse(response));
        }
Example #17
0
        /// <summary>
        /// Sets the playlists without updating the UI
        /// </summary>
        /// <returns></returns>
        public static async Task SetPlaylists()
        {
            UriBuilder playlistsBuilder = new UriBuilder(playlistsHref);
            List <KeyValuePair <string, string> > queryParams = new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("limit", playlistLimit.ToString()),
                new KeyValuePair <string, string>("offset", playlistsOffset.ToString())
            };

            playlistsBuilder.Query = RequestHandler.ConvertToQueryString(queryParams);
            string playlistsString = await RequestHandler.SendAuthGetRequest(playlistsBuilder.Uri.ToString());

            JsonObject playlistsJson = new JsonObject();

            try
            {
                playlistsJson = JsonObject.Parse(playlistsString);
            }
            catch (COMException)
            {
                return;
            }
            if (playlistsJson.TryGetValue("total", out IJsonValue totalJson) && totalJson.ValueType == JsonValueType.Number)
            {
                playlistsTotal = Convert.ToInt32(totalJson.GetNumber());
            }
            if (playlistsJson.TryGetValue("items", out IJsonValue itemsJson) && itemsJson.ValueType == JsonValueType.Array)
            {
                JsonArray playlistsArray = itemsJson.GetArray();
                playlistsCount = playlistsArray.Count;
                foreach (JsonValue playlistJson in playlistsArray)
                {
                    if (playlistJson.GetObject().TryGetValue("href", out IJsonValue fullHref) && fullHref.ValueType == JsonValueType.String)
                    {
                        string fullPlaylistString = await RequestHandler.SendCliGetRequest(fullHref.GetString());

                        Playlist playlist = new Playlist();
                        await playlist.SetInfo(fullPlaylistString);

                        PlaylistList playlistList = new PlaylistList(playlist);
                        preEmptiveLoadPlaylists.Add(playlistList);
                        if (preEmptiveLoadPlaylists.IndexOf(playlistList) % 2 == 1)
                        {
                            playlistList.TurnOffOpaqueBackground();
                        }
                    }
                }
            }
        }
Example #18
0
        public async Task <bool> RefreshInitialDataStore()
        {
            //todo: async webcalls
            // List<Task> webCalls = new List<Task>();

            //MyProfile:
            string myProfileJson = await Globals.Requester.GetAsync("https://api.spotify.com/v1/me");

            SelectedProfile = JsonConvert.DeserializeObject <Profile>(myProfileJson);

            MyId = SelectedProfile.id;

            //MyPlaylists:
            string myPlaylistsJson = await Globals.Requester.GetAsync("https://api.spotify.com/v1/me/playlists/?limit=49");

            PlaylistList = JsonConvert.DeserializeObject <PlaylistList>(myPlaylistsJson);

            //because max limit is 50, must loop
            if (PlaylistList.total > 49)
            {
                int numLoops = (int)Math.Ceiling(Convert.ToDouble(PlaylistList.total) / 49.0);

                for (int i = 1; i < numLoops; i++)
                {
                    myPlaylistsJson = await Globals.Requester.GetAsync($"https://api.spotify.com/v1/me/playlists/?limit=49&offset={49*i}");

                    PlaylistList playlistOffset = JsonConvert.DeserializeObject <PlaylistList>(myPlaylistsJson);


                    PlaylistList.items.AddRange(playlistOffset.items.ToArray());
                }
            }


            //ProfileRecentlyPlayed:
            string myRecentlyPlayedJson = await Globals.Requester.GetAsync($"https://api.spotify.com/v1/me/player/recently-played?limit=10");

            SelectedRecentlyPlayed = JsonConvert.DeserializeObject <RecentlyPlayed>(myRecentlyPlayedJson);

            //Track
            await GetTrack(SelectedRecentlyPlayed.items.FirstOrDefault().track.id);

            //returns success
            return(true);
        }
Example #19
0
        public async Task GetPlaylistList(string userId)
        {
            //MyPlaylists:
            string myPlaylistsJson = await Globals.Requester.GetAsync($"https://api.spotify.com/v1/users/{userId}/playlists/");

            PlaylistList = JsonConvert.DeserializeObject <PlaylistList>(myPlaylistsJson);

            //because max limit is 50, must loop
            if (PlaylistList.total > 49)
            {
                int numLoops = (int)Math.Ceiling(Convert.ToDouble(PlaylistList.total) / 49.0);

                for (int i = 1; i < numLoops; i++)
                {
                    myPlaylistsJson = await Globals.Requester.GetAsync($"https://api.spotify.com/v1/me/playlists/?limit=49&offset={49 * i}");

                    PlaylistList playlistOffset = JsonConvert.DeserializeObject <PlaylistList>(myPlaylistsJson);


                    PlaylistList.items.AddRange(playlistOffset.items.ToArray());
                }
            }
        }
Example #20
0
        /// <summary>
        /// Refreshes the users playlists
        /// </summary>
        /// <returns></returns>
        public async Task LoadPlaylists()
        {
            PlaylistsHeader.Visibility = Visibility.Collapsed;
            EmptyMessage.Visibility    = Visibility.Collapsed;
            PlaylistsMore.IsEnabled    = false;
            PlaylistsRefresh.IsEnabled = false;
            long loadingKey = DateTime.Now.Ticks;

            MainPage.AddLoadingLock(loadingKey);
            App.mainPage.SetLoadingProgress(PlaybackSource.Spotify, 0, 1, loadingKey);

            UriBuilder playlistsBuilder = new UriBuilder(playlistsHref);
            List <KeyValuePair <string, string> > queryParams = new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("limit", playlistLimit.ToString()),
                new KeyValuePair <string, string>("offset", playlistsOffset.ToString())
            };

            playlistsBuilder.Query = RequestHandler.ConvertToQueryString(queryParams);
            string playlistsString = await RequestHandler.SendAuthGetRequest(playlistsBuilder.Uri.ToString());

            JsonObject playlistsJson = new JsonObject();

            try
            {
                playlistsJson = JsonObject.Parse(playlistsString);
            }
            catch (COMException)
            {
                return;
            }
            if (playlistsJson.TryGetValue("total", out IJsonValue totalJson) && totalJson.ValueType == JsonValueType.Number)
            {
                playlistsTotal = Convert.ToInt32(totalJson.GetNumber());
            }
            if (playlistsJson.TryGetValue("items", out IJsonValue itemsJson) && itemsJson.ValueType == JsonValueType.Array)
            {
                JsonArray playlistsArray = itemsJson.GetArray();
                if (playlistsArray.Count == 0)
                {
                    PlaylistsHeader.Visibility = Visibility.Collapsed;
                    EmptyMessage.Visibility    = Visibility.Visible;
                    App.mainPage.SetLoadingProgress(PlaybackSource.Spotify, 1, 1, loadingKey);
                }
                else
                {
                    PlaylistsHeader.Visibility = Visibility.Visible;
                    foreach (JsonValue playlistJson in playlistsArray)
                    {
                        if (playlistJson.GetObject().TryGetValue("href", out IJsonValue fullHref) && fullHref.ValueType == JsonValueType.String)
                        {
                            string fullPlaylistString = await RequestHandler.SendCliGetRequest(fullHref.GetString());

                            Playlist playlist = new Playlist();
                            await playlist.SetInfo(fullPlaylistString);

                            PlaylistList playlistList = new PlaylistList(playlist);
                            PlaylistsView.Items.Add(playlistList);
                            if (PlaylistsView.Items.IndexOf(playlistList) % 2 == 1)
                            {
                                playlistList.TurnOffOpaqueBackground();
                            }
                            App.mainPage.SetLoadingProgress(PlaybackSource.Spotify, PlaylistsView.Items.Count, playlistsArray.Count, loadingKey);
                        }
                    }
                }
            }
            PlaylistsRefresh.IsEnabled = true;
            if (playlistsOffset + playlistLimit >= playlistsTotal)
            {
                PlaylistsMore.Content   = "No More";
                PlaylistsMore.IsEnabled = false;
            }
            else
            {
                PlaylistsMore.Content   = "More";
                PlaylistsMore.IsEnabled = true;
            }

            MainPage.RemoveLoadingLock(loadingKey);
        }
        public PlaylistChooserViewModel()
        {
            PlaylistList servicePlaylists = SpotifyClientService.Client.GetPlaylists(SpotifyClientService.User.Id);

            _playlists = servicePlaylists.Playlists;
        }
        public NavigationViewModel()
        {
            PlaylistList servicePlaylists = SpotifyClientService.Client.GetPlaylists(SpotifyClientService.User.Id);

            _playlists = servicePlaylists.Playlists;
        }
 public void DeletePlaylist(Playlist playlist)
 {
     QueryManager.DeletePlaylist(playlist);
     PlaylistList.Remove(playlist);
 }
Example #24
0
        /// <summary>
        /// Search for the selected item in Spotify
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void SearchButton_Click(object sender, RoutedEventArgs e)
        {
            string feedbackMessage = "";

            if (Feedback == null)
            {
                return;
            }
            Feedback.Text                     = "";
            feedbackMessage                   = "";
            PlaylistHeader.Visibility         = Visibility.Collapsed;
            TracklistHeader.Visibility        = Visibility.Collapsed;
            AlbumlistHeader.Visibility        = Visibility.Collapsed;
            ResultsHeaderContainer.Visibility = Visibility.Collapsed;
            if (SearchBox.Text == "")
            {
                feedbackMessage = "Please enter text to search for (I can't read your mind...yet)";
            }
            else
            {
                searchSave     = SearchBox.Text;
                searchTypeSave = SearchType.SelectedIndex;
                MainPanel.SetValue(MarginProperty, new Thickness(0, 20, 0, 0));
                RelativePanel.SetAlignTopWithPanel(SearchBox, true);
                ComboBoxItem selected         = SearchType.SelectedValue as ComboBoxItem;
                String       selectedString   = selected.Content.ToString().ToLower();
                UriBuilder   searchUriBuilder = new UriBuilder(SEARCH_URL);
                List <KeyValuePair <string, string> > queryParams = new List <KeyValuePair <string, string> >
                {
                    new KeyValuePair <string, string>("type", selectedString),
                    new KeyValuePair <string, string>("limit", "10"),
                    new KeyValuePair <string, string>("q", SearchBox.Text.Replace(" ", "+"))
                };
                string queryParamsString = RequestHandler.ConvertToQueryString(queryParams);
                searchUriBuilder.Query = queryParamsString;
                string searchResultString = await RequestHandler.SendCliGetRequest(searchUriBuilder.Uri.ToString());

                JsonObject searchResultJson = new JsonObject();
                try
                {
                    searchResultJson = JsonObject.Parse(searchResultString);
                }
                catch (COMException)
                {
                    return;
                }

                ClearResults();
                Results.Visibility = Visibility.Visible;

                // playlists
                if (selectedString == "playlist")
                {
                    if (searchResultJson.TryGetValue("playlists", out IJsonValue playlistsJson) && playlistsJson.ValueType == JsonValueType.Object)
                    {
                        JsonObject playlists = playlistsJson.GetObject();
                        if (playlists.TryGetValue("items", out IJsonValue itemsJson) && itemsJson.ValueType == JsonValueType.Array)
                        {
                            JsonArray playlistsArray = itemsJson.GetArray();
                            if (playlistsArray.Count == 0)
                            {
                                feedbackMessage = "No playlists found.";
                            }
                            else
                            {
                                ResultsHeaderContainer.Visibility = Visibility.Visible;
                                PlaylistHeader.Visibility         = Visibility.Visible;
                                long loadingKey = DateTime.Now.Ticks;
                                MainPage.AddLoadingLock(loadingKey);
                                App.mainPage.SetLoadingProgress(PlaybackSource.Spotify, 0, playlistsArray.Count, loadingKey);
                                foreach (JsonValue playlistJson in playlistsArray)
                                {
                                    if (playlistJson.GetObject().TryGetValue("href", out IJsonValue fullHref) && fullHref.ValueType == JsonValueType.String)
                                    {
                                        string fullPlaylistString = await RequestHandler.SendCliGetRequest(fullHref.GetString());

                                        Playlist playlist = new Playlist();
                                        await playlist.SetInfo(fullPlaylistString);

                                        PlaylistList playlistList = new PlaylistList(playlist);
                                        try
                                        {
                                            if (!App.isInBackgroundMode)
                                            {
                                                Results.Items.Add(playlistList);
                                                if (Results.Items.IndexOf(playlistList) % 2 == 1)
                                                {
                                                    playlistList.TurnOffOpaqueBackground();
                                                }
                                            }
                                        }
                                        catch (COMException) { }
                                        App.mainPage.SetLoadingProgress(PlaybackSource.Spotify, Results.Items.Count, playlistsArray.Count, loadingKey);
                                    }
                                }
                                MainPage.RemoveLoadingLock(loadingKey);
                            }
                        }
                    }
                }

                // track
                else if (selectedString == "track")
                {
                    if (searchResultJson.TryGetValue("tracks", out IJsonValue tracksJson) && tracksJson.ValueType == JsonValueType.Object)
                    {
                        JsonObject tracks = tracksJson.GetObject();
                        if (tracks.TryGetValue("items", out IJsonValue itemsJson) && itemsJson.ValueType == JsonValueType.Array)
                        {
                            JsonArray tracksArray = itemsJson.GetArray();
                            if (tracksArray.Count == 0)
                            {
                                feedbackMessage = "No tracks found.";
                            }
                            else
                            {
                                ResultsHeaderContainer.Visibility = Visibility.Visible;
                                TracklistHeader.Visibility        = Visibility.Visible;
                                long loadingKey = DateTime.Now.Ticks;
                                MainPage.AddLoadingLock(loadingKey);
                                App.mainPage.SetLoadingProgress(PlaybackSource.Spotify, 0, tracksArray.Count, loadingKey);
                                foreach (JsonValue trackJson in tracksArray)
                                {
                                    Track track = new Track();
                                    await track.SetInfoDirect(trackJson.Stringify());

                                    TrackList trackList = new TrackList(track);
                                    try
                                    {
                                        if (!App.isInBackgroundMode)
                                        {
                                            Results.Items.Add(trackList);
                                            if (Results.Items.IndexOf(trackList) % 2 == 1)
                                            {
                                                trackList.TurnOffOpaqueBackground();
                                            }
                                        }
                                    }
                                    catch (COMException) { }
                                    App.mainPage.SetLoadingProgress(PlaybackSource.Spotify, Results.Items.Count, tracksArray.Count, loadingKey);
                                }
                                MainPage.RemoveLoadingLock(loadingKey);
                            }
                        }
                    }
                }

                // album
                else if (selectedString == "album")
                {
                    if (searchResultJson.TryGetValue("albums", out IJsonValue albumsJson) && albumsJson.ValueType == JsonValueType.Object)
                    {
                        JsonObject albums = albumsJson.GetObject();
                        if (albums.TryGetValue("items", out IJsonValue itemsJson) && itemsJson.ValueType == JsonValueType.Array)
                        {
                            JsonArray albumsArray = itemsJson.GetArray();
                            if (albumsArray.Count == 0)
                            {
                                feedbackMessage = "No albums found.";
                            }
                            else
                            {
                                ResultsHeaderContainer.Visibility = Visibility.Visible;
                                AlbumlistHeader.Visibility        = Visibility.Visible;
                                long loadingKey = DateTime.Now.Ticks;
                                MainPage.AddLoadingLock(loadingKey);
                                App.mainPage.SetLoadingProgress(PlaybackSource.Spotify, 0, albumsArray.Count, loadingKey);
                                foreach (JsonValue albumJson in albumsArray)
                                {
                                    Album album = new Album();
                                    await album.SetInfo(albumJson.Stringify());

                                    AlbumList albumList = new AlbumList(album);
                                    try
                                    {
                                        if (!App.isInBackgroundMode)
                                        {
                                            Results.Items.Add(albumList);
                                            if (Results.Items.IndexOf(albumList) % 2 == 1)
                                            {
                                                albumList.TurnOffOpaqueBackground();
                                            }
                                        }
                                    }
                                    catch (COMException) { }
                                    App.mainPage.SetLoadingProgress(PlaybackSource.Spotify, Results.Items.Count, albumsArray.Count, loadingKey);
                                }
                                MainPage.RemoveLoadingLock(loadingKey);
                            }
                        }
                    }
                }
            }
            Feedback.Text = feedbackMessage;
            if (feedbackMessage == "")
            {
                Feedback.Visibility = Visibility.Collapsed;
            }
            else
            {
                Feedback.Visibility = Visibility.Visible;
            }
        }
 public static void ClearRepositories()
 {
     UploadList   = null;
     TemplateList = null;
     PlaylistList = null;
 }
Example #26
0
        public async Task <Library.Models.Pagination.PagedResult <models.BookmarkList> > List(User roadieUser, PagedRequest request, bool?doRandomize = false, BookmarkType?filterType = null)
        {
            var sw = new Stopwatch();

            sw.Start();
            var result = from b in DbContext.Bookmarks
                         join u in DbContext.Users on b.UserId equals u.Id
                         where b.UserId == roadieUser.Id
                         where filterType == null || b.BookmarkType == filterType
                         select new models.BookmarkList
            {
                Comment  = b.Comment,
                Position = b.Position,
                User     = new models.DataToken
                {
                    Text  = u.UserName,
                    Value = u.RoadieId.ToString()
                },
                DatabaseId       = b.Id,
                Id               = b.RoadieId,
                CreatedDate      = b.CreatedDate,
                LastUpdated      = b.LastUpdated,
                Type             = b.BookmarkType,
                BookmarkTargetId = b.BookmarkTargetId
            };

            var sortBy = string.IsNullOrEmpty(request.Sort)
                ? request.OrderValue(new Dictionary <string, string> {
                { "CreatedDate", "DESC" }
            })
                : request.OrderValue();
            var rowCount = result.Count();
            var rows     = result.OrderBy(sortBy).Skip(request.SkipValue).Take(request.LimitValue).ToArray();

            var user = await GetUser(roadieUser.UserId);

            foreach (var row in rows)
            {
                switch (row.Type)
                {
                case BookmarkType.Artist:
                    var artist = DbContext.Artists.FirstOrDefault(x => x.Id == row.BookmarkTargetId);
                    if (artist == null)
                    {
                        continue;
                    }
                    row.Bookmark = new models.DataToken
                    {
                        Text  = artist.Name,
                        Value = artist.RoadieId.ToString()
                    };
                    row.Artist =
                        models.ArtistList.FromDataArtist(artist, ImageHelper.MakeArtistThumbnailImage(Configuration, HttpContext, artist.RoadieId));
                    row.Thumbnail = ImageHelper.MakeArtistThumbnailImage(Configuration, HttpContext, artist.RoadieId);
                    row.SortName  = artist.SortName ?? artist.Name;
                    break;

                case BookmarkType.Release:
                    var release = DbContext.Releases.Include(x => x.Artist)
                                  .FirstOrDefault(x => x.Id == row.BookmarkTargetId);
                    if (release == null)
                    {
                        continue;
                    }
                    row.Bookmark = new models.DataToken
                    {
                        Text  = release.Title,
                        Value = release.RoadieId.ToString()
                    };
                    row.Release = ReleaseList.FromDataRelease(release, release.Artist, HttpContext.BaseUrl,
                                                              ImageHelper.MakeArtistThumbnailImage(Configuration, HttpContext, release.Artist.RoadieId),
                                                              ImageHelper.MakeReleaseThumbnailImage(Configuration, HttpContext, release.RoadieId));
                    row.Thumbnail = ImageHelper.MakeReleaseThumbnailImage(Configuration, HttpContext, release.RoadieId);
                    row.SortName  = release.SortTitleValue;
                    break;

                case BookmarkType.Track:
                    var track = DbContext.Tracks
                                .Include(x => x.ReleaseMedia)
                                .Include(x => x.ReleaseMedia.Release)
                                .Include(x => x.ReleaseMedia.Release.Artist)
                                .Include(x => x.TrackArtist)
                                .FirstOrDefault(x => x.Id == row.BookmarkTargetId);
                    if (track == null)
                    {
                        continue;
                    }
                    row.Bookmark = new models.DataToken
                    {
                        Text  = track.Title,
                        Value = track.RoadieId.ToString()
                    };
                    row.Track = models.TrackList.FromDataTrack(MakeTrackPlayUrl(user, HttpContext.BaseUrl, track.RoadieId),
                                                               track,
                                                               track.ReleaseMedia.MediaNumber,
                                                               track.ReleaseMedia.Release,
                                                               track.ReleaseMedia.Release.Artist,
                                                               track.TrackArtist,
                                                               HttpContext.BaseUrl,
                                                               ImageHelper.MakeTrackThumbnailImage(Configuration, HttpContext, track.RoadieId),
                                                               ImageHelper.MakeReleaseThumbnailImage(Configuration, HttpContext, track.ReleaseMedia.Release.RoadieId),
                                                               ImageHelper.MakeArtistThumbnailImage(Configuration, HttpContext, track.ReleaseMedia.Release.Artist.RoadieId),
                                                               ImageHelper.MakeArtistThumbnailImage(Configuration, HttpContext, track.TrackArtist == null
                                ? null
                                : (Guid?)track.TrackArtist.RoadieId));
                    row.Track.TrackPlayUrl = MakeTrackPlayUrl(user, HttpContext.BaseUrl, track.RoadieId);
                    row.Thumbnail          = ImageHelper.MakeTrackThumbnailImage(Configuration, HttpContext, track.RoadieId);
                    row.SortName           = track.Title;
                    break;

                case BookmarkType.Playlist:
                    var playlist = DbContext.Playlists
                                   .Include(x => x.User)
                                   .FirstOrDefault(x => x.Id == row.BookmarkTargetId);
                    if (playlist == null)
                    {
                        continue;
                    }
                    row.Bookmark = new models.DataToken
                    {
                        Text  = playlist.Name,
                        Value = playlist.RoadieId.ToString()
                    };
                    row.Playlist = PlaylistList.FromDataPlaylist(playlist, playlist.User,
                                                                 ImageHelper.MakePlaylistThumbnailImage(Configuration, HttpContext, playlist.RoadieId),
                                                                 ImageHelper.MakeUserThumbnailImage(Configuration, HttpContext, playlist.User.RoadieId));
                    row.Thumbnail = ImageHelper.MakePlaylistThumbnailImage(Configuration, HttpContext, playlist.RoadieId);
                    row.SortName  = playlist.Name;
                    break;

                case BookmarkType.Collection:
                    var collection = DbContext.Collections.FirstOrDefault(x => x.Id == row.BookmarkTargetId);
                    if (collection == null)
                    {
                        continue;
                    }
                    row.Bookmark = new models.DataToken
                    {
                        Text  = collection.Name,
                        Value = collection.RoadieId.ToString()
                    };
                    row.Collection = CollectionList.FromDataCollection(collection,
                                                                       (from crc in DbContext.CollectionReleases
                                                                        where crc.CollectionId == collection.Id
                                                                        select crc.Id).Count(), ImageHelper.MakeCollectionThumbnailImage(Configuration, HttpContext, collection.RoadieId));
                    row.Thumbnail = ImageHelper.MakeCollectionThumbnailImage(Configuration, HttpContext, collection.RoadieId);
                    row.SortName  = collection.SortName ?? collection.Name;
                    break;

                case BookmarkType.Label:
                    var label = DbContext.Labels.FirstOrDefault(x => x.Id == row.BookmarkTargetId);
                    if (label == null)
                    {
                        continue;
                    }
                    row.Bookmark = new models.DataToken
                    {
                        Text  = label.Name,
                        Value = label.RoadieId.ToString()
                    };
                    row.Label     = models.LabelList.FromDataLabel(label, ImageHelper.MakeLabelThumbnailImage(Configuration, HttpContext, label.RoadieId));
                    row.Thumbnail = ImageHelper.MakeLabelThumbnailImage(Configuration, HttpContext, label.RoadieId);
                    row.SortName  = label.SortName ?? label.Name;
                    break;
                }
            }

            ;
            sw.Stop();
            return(new Library.Models.Pagination.PagedResult <models.BookmarkList>
            {
                TotalCount = rowCount,
                CurrentPage = request.PageValue,
                TotalPages = (int)Math.Ceiling((double)rowCount / request.LimitValue),
                OperationTime = sw.ElapsedMilliseconds,
                Rows = rows
            });
        }
 public void CreatePlaylist(Playlist playlist)
 {
     playlist.PlaylistId = QueryManager.CreatePlaylist(ref playlist);
     PlaylistList.Add(playlist);
 }
Example #28
0
 public FormAllPlaylists(PlaylistList playlistList)
 {
     InitializeComponent();
     this.playlistList = playlistList;
 }
Example #29
0
        void getPlaylists()
        {
            lsbPlaylist.Items.Clear();
            playlists = iPod.Playlists;
            for (int i = 0; i < playlists.Count; i++)
            {

                lsbPlaylist.Items.Add(playlists[i].Name.ToString());
            }
            lblPlaylist.Text = "Playlists : " + playlists.Count;
        }