Esempio n. 1
0
        /// <summary>
        /// Retrieves songs from the data source.
        /// </summary>
        public async void LoadSongs()
        {
            await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
            {
                Songs.Clear();
                Artists.Clear();
                Albums.Clear();
            });

            var songs   = App.Repository.GetAll();
            var artists = App.Repository.GetArtists();
            var albums  = App.Repository.GetAlbums();

            await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
            {
                foreach (var song in songs)
                {
                    Songs.Add(song);
                }

                foreach (var artist in artists)
                {
                    Artists.Add(artist);
                }

                foreach (var album in albums)
                {
                    Albums.Add(album);
                }
            });
        }
Esempio n. 2
0
        public async Task SearchExecute()
        {
            try
            {
                if (string.IsNullOrWhiteSpace(SearchQuery))
                {
                    await ClearExecute();

                    return;
                }

                await ExecuteBusyAction(async() =>
                {
                    Songs.Clear();
                    var songs = await YoutubeSearchService.SearchVideo($"{SearchQuery} karaoke", 1);
                    foreach (var song in songs)
                    {
                        Songs.Add(song);
                    }
                });
            }
            catch (System.Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }
Esempio n. 3
0
        private void RefreshSongs()
        {
            Songs.Clear();
            MusicFolders = DataService.GetSavedSearchFolders();

            if (MusicFolders.Count == 0)
            {
                ErrorString      = "Add Folders Where You Store Your Music To Get Started!";
                SelectedMenuItem = "Settings";
            }
            else
            {
                ErrorString = string.Empty;
            }

            foreach (string folder in MusicFolders)
            {
                Songs = DataService.GetSongs(folder);
            }

            // Load ID3 Tags And Fill Albums
            Task.Run(() =>
            {
                LoadSongID3Tags();
                Songs.OrderBy(s => s.Artist.StartsWith("A ", StringComparison.OrdinalIgnoreCase) || s.Artist.StartsWith("The ", StringComparison.OrdinalIgnoreCase) ? s.Artist.Substring(s.Artist.IndexOf(" ") + 1) : s.Artist);

                RefreshAlbums();
            });
        }
        public async Task ViewLoadedAsync()
        {
            if (DataIsLoaded)
            {
                return;
            }

            var caller = $"{nameof(AlbumViewModel)}({_instanceId:N}).{nameof(ViewLoadedAsync)}";

            try
            {
                BusyStatus = "Getting data ...";
                IsBusy     = true;
                Songs.Clear();
                Personnel.Clear();
                var album = await Services.DataService.GetAlbumAsync(Id);

                IsBusy = false;
                (album as BaseResponse)?.To(this as BaseViewModel);
                album?.Data?.Album?.To(this);

                DataIsLoaded = true;
            }
            catch (Exception ex)
            {
                var errorId = Invariant($"{DateTime.Now:yyyyMMdd_HHmmss}");
                Logger.Log.Error(ex, "Failed to load band by id.", caller, errorId);
                IsBusy = false;
                MessageBoxService.ShowMessage($"Failed to get album details.{Environment.NewLine}{ex.Message}{Environment.NewLine}See log for more info. Error id is {errorId}.", WindowTitle, MessageButton.OK, MessageIcon.Error);
            }
        }
Esempio n. 5
0
        public void NewPlaylist()
        {
            Songs.Clear();
            MediaMetadata.Clear();
            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Filter      = "All Media Files|*.wav;*.aac;*.wma;*.wmv;*.avi;*.mpg;*.mpeg;*.m1v;*.mp2;*.mp3;*.mpa;*.mpe;*.m3u;*.mp4;*.mov;*.3g2;*.3gp2;*.3gp;*.3gpp;*.m4a;*.cda;*.aif;*.aifc;*.aiff;*.mid;*.midi;*.rmi;*.mkv;*.WAV;*.AAC;*.WMA;*.WMV;*.AVI;*.MPG;*.MPEG;*.M1V;*.MP2;*.MP3;*.MPA;*.MPE;*.M3U;*.MP4;*.MOV;*.3G2;*.3GP2;*.3GP;*.3GPP;*.M4A;*.CDA;*.AIF;*.AIFC;*.AIFF;*.MID;*.MIDI;*.RMI;*.MKV";
            dlg.Multiselect = true;
            DialogResult dialogResult = dlg.ShowDialog();

            if (dialogResult == System.Windows.Forms.DialogResult.OK)
            {
                foreach (String file in dlg.FileNames)
                {
                    Songs.Add(file);
                    _element = new TagLibMetadata(file);
                    if (_element.MetaDataTL.Tag.Title == null)
                    {
                        _element.MetaDataTL.Tag.Title = "Unknown";
                    }
                    //if (element.MetaDataTL.Tag.Performers.Length < 0)
                    //{
                    //    element.MetaDataTL.Tag.Performers = new string[1] { "Unknown" };
                    //    element.MetaDataTL.Save();
                    //}
                    //element.MetaDataTL.Tag.Performers[0] = "Unknown";
                    MediaMetadata.Add(_element);
                }
                IndexList = new int[Songs.Count];
                for (int i = 0; i < Songs.Count; i++)
                {
                    IndexList[i] = i;
                }
            }
        }
Esempio n. 6
0
        public Task UpdateMusicLibraryAsync()
        {
            return(Task.Run(() =>
            {
                App.Current.Dispatcher.Invoke(() =>
                {
                    Songs.Clear();

                    if (Properties.Settings.Default.MusicFolderPath != null)
                    {
                        foreach (string path in Properties.Settings.Default.MusicFolderPath)
                        {
                            foreach (var item in Directory.GetFiles(path, "*.mp3*", SearchOption.AllDirectories))
                            {
                                Song song = new Song(item);
                                if (!Songs.Contains(song))
                                {
                                    Songs.Add(song);
                                }
                            }
                        }
                    }
                });
            }));
        }
        public void SortByTitle()
        {
            List <string> names  = new List <string>();
            List <Song>   sorted = new List <Song>();

            foreach (var song in Songs)
            {
                names.Add(song.Title);
            }

            names.Sort();

            foreach (var name in names)
            {
                foreach (var song in Songs)
                {
                    if (song.Title == name)
                    {
                        sorted.Add(song);
                        continue;
                    }
                }
            }

            Songs.Clear();
            Songs.AddRange(sorted);
        }
 public void Dispose()
 {
     PlaylistArt  = null;
     TotalSongs   = "0";
     TotalMinutes = "0";
     Songs.Clear();
 }
Esempio n. 9
0
 public void Reset()
 {
     PlaylistArt  = null;
     TotalSongs   = "0";
     TotalMinutes = "0";
     Songs.Clear();
 }
Esempio n. 10
0
        // 重新读取本地歌曲信息
        public async void ReloadSongs()
        {
            // 清空数据
            ObservableCollection <Song> tempSongs = new ObservableCollection <Song>(Songs);

            Songs.Clear();
            DBManager.ClearSongs("_Songs_");


            try {
                foreach (Song s in tempSongs)
                {
                    try
                    {
                        var t = await StorageFile.GetFileFromPathAsync(s.FilePath);
                    }
                    catch (Exception ex)
                    {
                        tempSongs.Remove(s);
                    }
                }
            }
            catch (Exception ex)
            {
            }
            Songs = tempSongs;
            DBManager.AddSongs(Songs, "_Songs_");
            Songs.CollectionChanged += Songs_CollectionChanged;
        }
Esempio n. 11
0
 /// <summary>
 /// Removes all songs from the playlist.
 /// </summary>
 public void Clear()
 {
     if (Songs.Count == 0)
     {
         return;
     }
     Songs.Clear();
     IsDirty = true;
 }
Esempio n. 12
0
 protected virtual void PlayerDisconnected(string user)
 {
     if (session.Username == user)
     {
         Songs.Clear();
         SyncPlaylist(Songs);
         Delete(fileName);
     }
 }
Esempio n. 13
0
        public async Task LoadAsync()
        {
            var lookup = await _songLookupService.GetSongLookupAsync();

            Songs.Clear();
            foreach (var item in lookup)
            {
                Songs.Add(new NavigationItemViewModel(item.Id, item.DisplayMember, _eventAggregator));
            }
        }
Esempio n. 14
0
        // Add list of songs in collection that fill list in view
        private void FillSongList(string path)
        {
            var songs = fileService.Open(path);

            Songs.Clear();
            foreach (var song in songs)
            {
                Songs.Add(song);
            }
        }
Esempio n. 15
0
 protected override void Dispose(bool disposing)
 {
     Songs.Clear();
     Originals.Clear();
     Covers.Clear();
     Aliases.Clear();
     Songs     = null;
     Originals = null;
     Covers    = null;
     Aliases   = null;
     base.Dispose(disposing);
 }
Esempio n. 16
0
        public override async Task SetPlaylist(MusicItem song)
        {
            if (await CanModifyPlaylist())
            {
                Songs.Clear();
                await OnUiThread(() => player.NowPlaying = song);

                // updates local playlist first; assumes upload is successful
                await Add(song);
                await Stream(song, "/stream");
            }
        }
Esempio n. 17
0
        //-------------------------- ▶ EventHandlers
        async void OpenButton_Click(object sender, RoutedEventArgs e)
        {
            FolderPicker folderPicker = new FolderPicker()
            {
                ViewMode = PickerViewMode.Thumbnail,
                SuggestedStartLocation = PickerLocationId.MusicLibrary,
                CommitButtonText       = "선택",
            };

            folderPicker.FileTypeFilter.Add(".mp3");
            folderPicker.FileTypeFilter.Add(".wmv");
            StorageFolder storageFolder = await folderPicker.PickSingleFolderAsync();

            if (storageFolder == null)
            {
                return;
            }

            IReadOnlyList <StorageFile> allItems = await storageFolder.GetFilesAsync();

            if (allItems.Count < 0)
            {
                return;
            }


            var onlyMusics = allItems.Where(c => c.ContentType == "audio/mpeg");

            if (onlyMusics.Count() <= 0)
            {
                return;
            }

            if (Songs == null)
            {
                Songs = new ObservableCollection <Song>();
            }
            else
            {
                Songs.Clear();
            }

            foreach (var music in onlyMusics)
            {
                Song song = new Song()
                {
                    StorageFile     = music,
                    MusicProperties = await music.Properties.GetMusicPropertiesAsync()
                };

                Songs.Add(song);
            }
        }
Esempio n. 18
0
        private void RefreshData()
        {
            int selection = SelectedSong;

            Songs.Clear();

            foreach (var item in Repository.LoadAll())
            {
                Songs.Add(item);
            }

            SelectedSong = selection;
        }
        public override void Cleanup()
        {
            _artistsLoaded = _albumsLoaded = _songsLoaded = _genresLoaded = false;
            _parentId      = null;

            Genres.Clear();
            Songs.Clear();
            Artists.Clear();
            Albums.Clear();
            SelectedTracks.Clear();

            base.Cleanup();
        }
        private async Task LoadSongs()
        {
            if (Songs != null && Songs.Count > 0)
            {
                Songs.Clear();
            }
            var songs = await songRepository.GetAllSongAsync();

            foreach (var song in songs)
            {
                Songs.Add(new SongViewModel(song));
            }
            AllSongsCopy = Songs;
        }
Esempio n. 21
0
        internal async Task <List <Song> > GetSongsAsync()
        {
            if (IsOnline && Songs != null && Songs.Count > 0)
            {
                return(Songs);
            }
            if (Songs.Count == SongsID.Length)
            {
                return(Songs);
            }
            Songs.Clear();
            var opr = SQLOperator.Current();
            var s   = await opr.GetSongsAsync(SongsID);

            var s1 = s.OrderBy(x => x.Track);

            s1 = s1.OrderBy(x => x.Disc);
            Songs.AddRange(s1);

            var t = ThreadPool.RunAsync(async work =>
            {
                SongsID = s.Select(x => x.ID).ToArray();
                if (SongsID.IsNullorEmpty())
                {
                    await SQLOperator.Current().RemoveAlbumAsync(ID);
                }
                else
                {
                    await SQLOperator.Current().UpdateAlbumAsync(new Album(ID)
                    {
                        Songs               = SongsID,
                        Name                = Name ?? string.Empty,
                        Genres              = Genres ?? new string[] { },
                        Year                = Year,
                        AlbumSort           = AlbumSort ?? string.Empty,
                        TrackCount          = TrackCount,
                        DiscCount           = DiscCount,
                        AlbumArtists        = AlbumArtists ?? new string[] { },
                        AlbumArtistsSort    = AlbumArtistsSort ?? new string[] { },
                        ReplayGainAlbumGain = ReplayGainAlbumGain,
                        ReplayGainAlbumPeak = ReplayGainAlbumPeak,
                        PicturePath         = ArtworkUri == null ? string.Empty : ArtworkUri.AbsolutePath ?? string.Empty,
                    });
                }
            });

            return(s1.ToList());
        }
Esempio n. 22
0
 public void LoadSongs(string file)
 {
     // empty songs list
     Songs.Clear();
     string[] rows = File.ReadAllLines(file);
     foreach (string row in rows)
     {
         // row = "song name;length"
         string[] parts = row.Split(new char[] { ';' }); // käytetään csv. parsintaan tiedostossa käytettyä merkkiä
         // parts[0] = "song name", parts[1] = length
         Song song = new Song();
         song.Name   = parts[0];
         song.Length = int.Parse(parts[1]);
         Songs.Add(song);
     }
 }
Esempio n. 23
0
        public async Task ClearAllAsync()
        {
            var message = $"Are you sure you want to delete all songs in the album " +
                          $"'{Album.Name}' " +
                          $"by '{Album.Performer.Name}'?";

            if (MessageBox.Show(message, "Confirmation", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            {
                foreach (var song in Songs.Where(song => song.Id != -1))
                {
                    await _songService.RemoveSongAsync(song.Id);
                }

                Songs.Clear();
            }
        }
Esempio n. 24
0
        /// <summary>
        /// UnloadContent will be called once per game and is the place to unload
        /// all content.
        /// </summary>
        protected override void UnloadContent()
        {
            Textures.Clear();
            Fonts.Clear();
            SoundEffects.Clear();
            Songs.Clear();

            ContentManager.Unload();
#if DEBUG
            SpartaDebug.DebugFont = null;
#endif
            backgroundImage = null;

            base.UnloadContent();

            GC.Collect();
        }
Esempio n. 25
0
        public async void FilterSongsByAlbum(string albumName)
        {
            if (string.IsNullOrEmpty(albumName))
            {
                return;
            }

            var songs         = App.Repository.GetAll();
            var filteredSongs = songs.Where(x => x.Album.Name.Equals(albumName));
            await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
            {
                Songs.Clear();
                foreach (var song in filteredSongs)
                {
                    Songs.Add(song);
                }
            });
        }
        public void Shuffle()
        {
            List <Song> suffledSongs = new List <Song>();
            int         step         = 3;

            for (int i = 0; i < step; i++)
            {
                int index = i;

                while (index < Songs.Count)
                {
                    suffledSongs.Add(Songs[index]);
                    index += step;
                }
            }

            Songs.Clear();
            Songs.AddRange(suffledSongs);
        }
Esempio n. 27
0
        public async void FilterSongsByName(string songName)
        {
            if (string.IsNullOrEmpty(songName))
            {
                return;
            }

            var songs         = App.Repository.GetAll();
            var filteredSongs = songs.Where(x => x.Title.Contains(songName, StringComparison.OrdinalIgnoreCase));

            await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
            {
                Songs.Clear();
                foreach (var song in filteredSongs)
                {
                    Songs.Add(song);
                }
            });
        }
Esempio n. 28
0
        private async void SearchSongs(string query)
        {
            Songs.Clear();

            List <int> foundSongs = await SearchManagerModel.SearchSongs(query);

            foreach (int songId in foundSongs)
            {
                SongViewModel foundSong = LibraryViewModel.Current.LookupSongById(songId);
                if (foundSong != null)
                {
                    Songs.Add(foundSong);
                }
            }

            songSearchInProgress = false;
            NotifyPropertyChanged(Properties.SearchInProgress);
            NotifyPropertyChanged(Properties.ContentInfoSongs);
        }
Esempio n. 29
0
        public void ClearCollection()
        {
            Artists.Clear();
            Genres.Clear();
            Directories.Clear();
            Songs.Clear();

            m_AlbumLookup.Clear();
            m_GenreFilteredAlbumLookup.Clear();

            m_ArtistExpansion             = new SortedDictionary <LibraryItem, ISet <Album> >();
            m_AlbumExpansion              = new SortedDictionary <LibraryItem, ISet <Song> >();
            m_GenreExpansion              = new SortedDictionary <LibraryItem, ISet <GenreFilteredAlbum> >();
            m_GenreFilteredAlbumExpansion = new SortedDictionary <LibraryItem, ISet <Song> >();
            m_DirectoryExpansion          = new SortedDictionary <LibraryItem, ISet <LibraryItem> >();

            m_ArtistExpansion.Clear();
            m_AlbumExpansion.Clear();
            m_GenreExpansion.Clear();
            m_GenreFilteredAlbumExpansion.Clear();

            NotifyPropertyChanged("Database");
        }
Esempio n. 30
0
        public void Dispose()
        {
            foreach (var song in Songs)
            {
                if (song.Artist?.Albums != null)
                {
                    foreach (var artistAlbum in song.Artist.Albums)
                    {
                        artistAlbum.Songs?.Clear();
                        artistAlbum.Artist = null;
                    }
                }

                song.Artist?.Albums?.Clear();
                song.Album  = null;
                song.Artist = null;
            }

            Songs?.Clear();
            _db?.Dispose();
            _db         = null;
            Initialized = false;
        }