Пример #1
0
        public static async void HandleCommand(string text)
        {
            string play = Helper.Localize("Play");

            if (text.StartsWith(play))
            {
                string keyword = text.Substring(play.Length);
                var    result  = await SearchHelper.Search(keyword);

                if (result.Result == null)
                {
                    Helper.ShowNotification("NoResults");
                    return;
                }
                switch (result.SearchType)
                {
                case SearchType.Artists:
                    Playlist artist = result.Result as Playlist;
                    MediaHelper.ShuffleAndPlay(artist.Songs);
                    Helper.ShowNotificationWithoutLocalization(Helper.LocalizeMessage("SearchResultArtist", artist.Name), 5000);
                    break;

                case SearchType.Albums:
                    AlbumView album = result.Result as AlbumView;
                    MediaHelper.ShuffleAndPlay(album.Songs);
                    Helper.ShowNotificationWithoutLocalization(Helper.LocalizeMessage("SearchResultAlbum", album.Name), 5000);
                    break;

                case SearchType.Playlists:
                    AlbumView playlist = result.Result as AlbumView;
                    MediaHelper.ShuffleAndPlay(playlist.Songs);
                    Helper.ShowNotificationWithoutLocalization(Helper.LocalizeMessage("SearchResultPlaylist", playlist.Name), 5000);
                    break;

                case SearchType.Folders:
                    GridFolderView folder = result.Result as GridFolderView;
                    MediaHelper.ShuffleAndPlay(folder.Songs);
                    Helper.ShowNotificationWithoutLocalization(Helper.LocalizeMessage("SearchResultFolder", folder.Name), 5000);
                    break;

                case SearchType.Songs:
                    Music music = result.Result as Music;
                    MediaHelper.SetMusicAndPlay(music);
                    Helper.ShowNotificationWithoutLocalization(Helper.LocalizeMessage("SearchResultMusic", music.Name), 5000);
                    break;
                }
            }
        }
Пример #2
0
        public static int EvaluateFolder(GridFolderView item, string keyword)
        {
            if (item == null)
            {
                return(0);
            }
            if (item.Name == keyword)
            {
                return(97);
            }
            if (item.Name.Contains(keyword))
            {
                return(87);
            }

            return(0);
        }
Пример #3
0
        public static async Task <SearchResult> Search(string keyword)
        {
            List <SearchResult> results = new List <SearchResult>();

            Playlist artist = (await Task.Run(() => SearchArtists(MusicLibraryPage.AllSongs, keyword, SortBy.Artist)))?.FirstOrDefault();

            results.Add(new SearchResult(SearchType.Artists, artist, EvaluateArtist(artist, keyword)));
            Music music = (await Task.Run(() => SearchSongs(MusicLibraryPage.AllSongs, keyword, SortBy.Artist)))?.FirstOrDefault();

            results.Add(new SearchResult(SearchType.Artists, artist, EvaluateMusic(music, keyword)));
            AlbumView album = (await Task.Run(() => SearchAlbums(MusicLibraryPage.AllSongs, keyword, SortBy.Artist)))?.FirstOrDefault();

            results.Add(new SearchResult(SearchType.Artists, album, EvaluateAlbum(album, keyword)));
            GridFolderView folder = (await Task.Run(() => SearchFolders(Settings.settings.Tree, keyword, SortBy.Artist)))?.FirstOrDefault();

            results.Add(new SearchResult(SearchType.Folders, folder, EvaluateFolder(folder, keyword)));
            AlbumView playlist = (await Task.Run(() => SearchPlaylists(Settings.settings.Playlists, keyword, SortBy.Artist)))?.FirstOrDefault();

            results.Add(new SearchResult(SearchType.Playlists, playlist, EvaluatePlaylist(playlist, keyword)));

            results.Sort((r1, r2) => r2.Score - r1.Score);
            return(results[0]);
        }