Beispiel #1
0
        /// <summary>
        /// Call lyric provider to check lyric
        /// </summary>
        public void SetLyricSynchronously()
        {
            if (!LyricWindow.IsVisible)
            {
                return;
            }

            Task.Run(async() =>
            {
                if (_searchLyricTask?.IsTaskBusy() == true)
                {
                    await Task.WhenAny(_searchLyricTask);
                }

                _searchLyricTask = Task.Run(async() =>
                {
                    if (!_controller.IsPlayerReady)
                    {
                        return;
                    }

                    var lyricInst         = Service.Get <LyricsInst>();
                    var meta              = _controller.PlayList.CurrentInfo.OsuFile.Metadata;
                    MetaString metaArtist = meta.ArtistMeta;
                    MetaString metaTitle  = meta.TitleMeta;
                    var lyric             = await lyricInst.LyricProvider.GetLyricAsync(metaArtist.ToUnicodeString(),
                                                                                        metaTitle.ToUnicodeString(), (int)_controller.Player.Duration.TotalMilliseconds);
                    LyricWindow.SetNewLyric(lyric, metaArtist, metaTitle);
                    LyricWindow.StartWork();
                });
            });
        }
Beispiel #2
0
 private void ItemSearchTitle_Click(object sender, System.Windows.RoutedEventArgs e)
 {
     var map = GetSelectedDefault();
     if (map == null)
         return;
     ParentWindow.MainFrame.Navigate(new SearchPage(ParentWindow,
         MetaString.GetUnicode(map.Title, map.TitleUnicode)));
 }
Beispiel #3
0
        public void SetNewLyric(Lyrics lyric, MetaString metaArtist, MetaString metaTitle)
        {
            StopWork();

            _lyricList = lyric?.LyricSentencs ?? new List <Sentence>();
            _lyricList.Insert(0,
                              new Sentence($"{metaArtist.ToUnicodeString()} - {metaTitle.ToUnicodeString()}", 0));
        }
Beispiel #4
0
        private void ItemSearchTitle_Click(object sender, RoutedEventArgs e)
        {
            var map = GetSelected();

            if (map == null)
            {
                return;
            }
            _mainWindow.MainFrame.Navigate(new SearchPage(_mainWindow,
                                                          MetaString.GetUnicode(map.Title, map.TitleUnicode)));
        }
Beispiel #5
0
        public new void Show()
        {
            var        meta       = _controller.PlayList.CurrentInfo?.OsuFile?.Metadata;
            MetaString metaArtist = meta?.ArtistMeta ?? default;
            MetaString metaTitle  = meta?.TitleMeta ?? default;

            SetNewLyric(null, metaArtist, metaTitle);
            AppSettings.Default.Lyric.EnableLyric = true;
            AppSettings.SaveDefault();
            ViewModel.IsLyricWindowShown = true;
            _mainWindow.SetLyricSynchronously();
            base.Show();
        }
        public static IEnumerable <Beatmap> SortBy(IEnumerable <Beatmap> list, SortMode sortMode)
        {
            switch (sortMode)
            {
            case SortMode.Artist:
            default:
                return(list.OrderBy(k => MetaString.GetUnicode(k.Artist, k.ArtistUnicode),
                                    StringComparer.InvariantCulture));

            case SortMode.Title:
                return(list.OrderBy(k => MetaString.GetUnicode(k.Title, k.TitleUnicode),
                                    StringComparer.InvariantCulture));
            }
        }