Update localization resources and improve Music Gallery functionality

- Added new strings for file information and sorting options in Japanese, Korean, Simplified Chinese, and Traditional Chinese resource files.
- Removed unused property `IsMusicGalleryPageExpanded` from `LyricsWindowViewModel`.
- Enhanced `PlayTrack` method in `MusicGalleryViewModel` to handle null tracks more gracefully.
- Refactored `LyricsWindow` to remove overlay frame and simplify the UI.
- Updated `MusicGalleryPage` to bind new localized strings and improve layout.
- Implemented closing event for `MusicGalleryWindow` to manage resources effectively.
- Revised README files to update feedback group links and improve formatting.
This commit is contained in:
Zhe Fang
2025-07-25 16:12:03 -04:00
parent 11461a615b
commit 1d6e19a718
13 changed files with 461 additions and 86 deletions

View File

@@ -802,4 +802,82 @@ If you encounter any problems, please go to the Settings page, About tab, and vi
<data name="LibreTranslateFailed" xml:space="preserve">
<value>Requesting translation from LibreTranslate failed, please check the settings or the native LibreTranslate configuration</value>
</data>
<data name="MusicGalleryPageFileInfo.Text" xml:space="preserve">
<value>File info</value>
</data>
<data name="MusicGalleryPageFileInfoTitle.Text" xml:space="preserve">
<value>Title</value>
</data>
<data name="MusicGalleryPageFileArtist.Text" xml:space="preserve">
<value>Artist</value>
</data>
<data name="MusicGalleryPageFileAlbum.Text" xml:space="preserve">
<value>Album</value>
</data>
<data name="MusicGalleryPageFileInfoYear.Text" xml:space="preserve">
<value>Year</value>
</data>
<data name="MusicGalleryPageFileInfoDuration.Text" xml:space="preserve">
<value>Duration</value>
</data>
<data name="MusicGalleryPageFileInfoBitrate.Text" xml:space="preserve">
<value>Bitrate</value>
</data>
<data name="MusicGalleryPageFileInfoSampleRate.Text" xml:space="preserve">
<value>Sample rate</value>
</data>
<data name="MusicGalleryPageFileInfoBitDepth.Text" xml:space="preserve">
<value>Bit depth</value>
</data>
<data name="MusicGalleryPageFileInfoFormat.Text" xml:space="preserve">
<value>Format</value>
</data>
<data name="MusicGalleryPageFileInfoEncoder.Text" xml:space="preserve">
<value>Encoder</value>
</data>
<data name="MusicGalleryPageFileInfoPath.Text" xml:space="preserve">
<value>Path</value>
</data>
<data name="MusicGalleryPageSongSearchBox.PlaceholderText" xml:space="preserve">
<value>Search songs</value>
</data>
<data name="MusicGalleryPageSortType.Text" xml:space="preserve">
<value>Sort type</value>
</data>
<data name="MusicGalleryPageSortByTitle.Content" xml:space="preserve">
<value>Title</value>
</data>
<data name="MusicGalleryPageSortByAlbum.Content" xml:space="preserve">
<value>Album</value>
</data>
<data name="MusicGalleryPageSortByArtist.Content" xml:space="preserve">
<value>Artist</value>
</data>
<data name="MusicGalleryPageFileNotFound.Text" xml:space="preserve">
<value>No songs were found in the media library</value>
</data>
<data name="MusicGalleryPagePlayingQueue.Text" xml:space="preserve">
<value>Playlist</value>
</data>
<data name="MusicGalleryPageEmptyPlayingQueue.Content" xml:space="preserve">
<value>Clear the playlist</value>
</data>
<data name="MusicGalleryPageScrollToPlayingItem.Content" xml:space="preserve">
<value>Positioning to play items</value>
</data>
<data name="MusicGalleryPageQueueLoop.Content" xml:space="preserve">
<value>List loop</value>
</data>
<data name="MusicGalleryPageSingleLoop.Content" xml:space="preserve">
<value>Single Loop</value>
</data>
<data name="MusicGalleryPageQueueRandom.Content" xml:space="preserve">
<value>random</value>
</data>
<data name="MusicGalleryPageRemoveFromPlayingQueue.Text" xml:space="preserve">
<value>Remove from the playlist</value>
</data>
<data name="MusicGalleryPagePlayingQueueEmpty.Text" xml:space="preserve">
<value>Playlist is empty</value>
</data>
</root>

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -802,4 +802,82 @@
<data name="LibreTranslateFailed" xml:space="preserve">
<value>リブレットランスレートからの翻訳のリクエストが失敗しました。設定またはネイティブリブレットランレート構成を確認してください</value>
</data>
<data name="MusicGalleryPageFileInfo.Text" xml:space="preserve">
<value>ファイル情報</value>
</data>
<data name="MusicGalleryPageFileInfoTitle.Text" xml:space="preserve">
<value>タイトル</value>
</data>
<data name="MusicGalleryPageFileArtist.Text" xml:space="preserve">
<value>アーティスト</value>
</data>
<data name="MusicGalleryPageFileAlbum.Text" xml:space="preserve">
<value>アルバム</value>
</data>
<data name="MusicGalleryPageFileInfoYear.Text" xml:space="preserve">
<value>年</value>
</data>
<data name="MusicGalleryPageFileInfoDuration.Text" xml:space="preserve">
<value>間隔</value>
</data>
<data name="MusicGalleryPageFileInfoBitrate.Text" xml:space="preserve">
<value>ビットレート</value>
</data>
<data name="MusicGalleryPageFileInfoSampleRate.Text" xml:space="preserve">
<value>サンプルレート</value>
</data>
<data name="MusicGalleryPageFileInfoBitDepth.Text" xml:space="preserve">
<value>ビットの深さ</value>
</data>
<data name="MusicGalleryPageFileInfoFormat.Text" xml:space="preserve">
<value>形式</value>
</data>
<data name="MusicGalleryPageFileInfoEncoder.Text" xml:space="preserve">
<value>エンコーダー</value>
</data>
<data name="MusicGalleryPageFileInfoPath.Text" xml:space="preserve">
<value>パス</value>
</data>
<data name="MusicGalleryPageSongSearchBox.PlaceholderText" xml:space="preserve">
<value>曲を検索します</value>
</data>
<data name="MusicGalleryPageSortType.Text" xml:space="preserve">
<value>並べ替えタイプ</value>
</data>
<data name="MusicGalleryPageSortByTitle.Content" xml:space="preserve">
<value>タイトル</value>
</data>
<data name="MusicGalleryPageSortByAlbum.Content" xml:space="preserve">
<value>アルバム</value>
</data>
<data name="MusicGalleryPageSortByArtist.Content" xml:space="preserve">
<value>アーティスト</value>
</data>
<data name="MusicGalleryPageFileNotFound.Text" xml:space="preserve">
<value>メディアライブラリには歌が見つかりませんでした</value>
</data>
<data name="MusicGalleryPagePlayingQueue.Text" xml:space="preserve">
<value>プレイリスト</value>
</data>
<data name="MusicGalleryPageEmptyPlayingQueue.Content" xml:space="preserve">
<value>プレイリストをクリアします</value>
</data>
<data name="MusicGalleryPageScrollToPlayingItem.Content" xml:space="preserve">
<value>アイテムを再生するための位置</value>
</data>
<data name="MusicGalleryPageQueueLoop.Content" xml:space="preserve">
<value>ループをリストします</value>
</data>
<data name="MusicGalleryPageSingleLoop.Content" xml:space="preserve">
<value>シングルループ</value>
</data>
<data name="MusicGalleryPageQueueRandom.Content" xml:space="preserve">
<value>ランダム</value>
</data>
<data name="MusicGalleryPageRemoveFromPlayingQueue.Text" xml:space="preserve">
<value>プレイリストから取り外します</value>
</data>
<data name="MusicGalleryPagePlayingQueueEmpty.Text" xml:space="preserve">
<value>プレイリストは空です</value>
</data>
</root>

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -802,4 +802,82 @@
<data name="LibreTranslateFailed" xml:space="preserve">
<value>LibreTranslate에서 번역 요청 실패, 설정 또는 기본 LibreTranslate 구성을 확인하십시오.</value>
</data>
<data name="MusicGalleryPageFileInfo.Text" xml:space="preserve">
<value>파일 정보</value>
</data>
<data name="MusicGalleryPageFileInfoTitle.Text" xml:space="preserve">
<value>제목</value>
</data>
<data name="MusicGalleryPageFileArtist.Text" xml:space="preserve">
<value>아티스트</value>
</data>
<data name="MusicGalleryPageFileAlbum.Text" xml:space="preserve">
<value>앨범</value>
</data>
<data name="MusicGalleryPageFileInfoYear.Text" xml:space="preserve">
<value>년도</value>
</data>
<data name="MusicGalleryPageFileInfoDuration.Text" xml:space="preserve">
<value>지속</value>
</data>
<data name="MusicGalleryPageFileInfoBitrate.Text" xml:space="preserve">
<value>비트 레이트</value>
</data>
<data name="MusicGalleryPageFileInfoSampleRate.Text" xml:space="preserve">
<value>샘플 속도</value>
</data>
<data name="MusicGalleryPageFileInfoBitDepth.Text" xml:space="preserve">
<value>비트 깊이</value>
</data>
<data name="MusicGalleryPageFileInfoFormat.Text" xml:space="preserve">
<value>체재</value>
</data>
<data name="MusicGalleryPageFileInfoEncoder.Text" xml:space="preserve">
<value>인코더</value>
</data>
<data name="MusicGalleryPageFileInfoPath.Text" xml:space="preserve">
<value>길</value>
</data>
<data name="MusicGalleryPageSongSearchBox.PlaceholderText" xml:space="preserve">
<value>노래 검색</value>
</data>
<data name="MusicGalleryPageSortType.Text" xml:space="preserve">
<value>정렬 유형</value>
</data>
<data name="MusicGalleryPageSortByTitle.Content" xml:space="preserve">
<value>제목</value>
</data>
<data name="MusicGalleryPageSortByAlbum.Content" xml:space="preserve">
<value>앨범</value>
</data>
<data name="MusicGalleryPageSortByArtist.Content" xml:space="preserve">
<value>아티스트</value>
</data>
<data name="MusicGalleryPageFileNotFound.Text" xml:space="preserve">
<value>미디어 라이브러리에는 노래가 없습니다</value>
</data>
<data name="MusicGalleryPagePlayingQueue.Text" xml:space="preserve">
<value>재생 목록</value>
</data>
<data name="MusicGalleryPageEmptyPlayingQueue.Content" xml:space="preserve">
<value>재생 목록을 지우십시오</value>
</data>
<data name="MusicGalleryPageScrollToPlayingItem.Content" xml:space="preserve">
<value>아이템을 재생하기위한 포지셔닝</value>
</data>
<data name="MusicGalleryPageQueueLoop.Content" xml:space="preserve">
<value>목록 루프</value>
</data>
<data name="MusicGalleryPageSingleLoop.Content" xml:space="preserve">
<value>단일 루프</value>
</data>
<data name="MusicGalleryPageQueueRandom.Content" xml:space="preserve">
<value>무작위의</value>
</data>
<data name="MusicGalleryPageRemoveFromPlayingQueue.Text" xml:space="preserve">
<value>재생 목록에서 제거하십시오</value>
</data>
<data name="MusicGalleryPagePlayingQueueEmpty.Text" xml:space="preserve">
<value>재생 목록이 비어 있습니다</value>
</data>
</root>

View File

@@ -649,8 +649,8 @@
<data name="LyricsPageSettingsButtonToolTip.Content" xml:space="preserve">
<value>设置</value>
</data>
<data name="LibreTranslateFailed" xml:space="preserve">
<value>向 LibreTranslate 请求翻译失败,请检查设置或本机 LibreTranslate 配置</value>
<data name="TranslateServerNotSet" xml:space="preserve">
<value>未设置Translate服务器,请先在设置中进行配置</value>
</data>
<data name="LyricsPagePositionOffsetHint.Text" xml:space="preserve">
<value>切换歌曲时重置为 0</value>
@@ -793,13 +793,91 @@
<data name="SettingsPageGlobalDrag.Description" xml:space="preserve">
<value>将标题栏扩展至整个页面使得在任意非交互区域均可拖拽窗口</value>
</data>
<data name="MusicGalleryPageTitle" xml:space="preserve">
<value>音乐库</value>
</data>
<data name="SettingsPageBackgroundAcrylicEffectAmount.Header" xml:space="preserve">
<value>仿亚克力效果粗糙度</value>
</data>
<data name="TranslateServerNotSet" xml:space="preserve">
<value>未设置Translate服务器请先在设置中进行配置</value>
<data name="MusicGalleryPageTitle" xml:space="preserve">
<value>音乐库</value>
</data>
<data name="LibreTranslateFailed" xml:space="preserve">
<value>向 LibreTranslate 请求翻译失败,请检查设置或本机 LibreTranslate 配置</value>
</data>
<data name="MusicGalleryPageFileInfo.Text" xml:space="preserve">
<value>文件信息</value>
</data>
<data name="MusicGalleryPageFileInfoTitle.Text" xml:space="preserve">
<value>标题</value>
</data>
<data name="MusicGalleryPageFileArtist.Text" xml:space="preserve">
<value>艺术家</value>
</data>
<data name="MusicGalleryPageFileAlbum.Text" xml:space="preserve">
<value>专辑</value>
</data>
<data name="MusicGalleryPageFileInfoYear.Text" xml:space="preserve">
<value>年</value>
</data>
<data name="MusicGalleryPageFileInfoDuration.Text" xml:space="preserve">
<value>期间</value>
</data>
<data name="MusicGalleryPageFileInfoBitrate.Text" xml:space="preserve">
<value>比特率</value>
</data>
<data name="MusicGalleryPageFileInfoSampleRate.Text" xml:space="preserve">
<value>样本率</value>
</data>
<data name="MusicGalleryPageFileInfoBitDepth.Text" xml:space="preserve">
<value>位深度</value>
</data>
<data name="MusicGalleryPageFileInfoFormat.Text" xml:space="preserve">
<value>格式</value>
</data>
<data name="MusicGalleryPageFileInfoEncoder.Text" xml:space="preserve">
<value>编码器</value>
</data>
<data name="MusicGalleryPageFileInfoPath.Text" xml:space="preserve">
<value>路径</value>
</data>
<data name="MusicGalleryPageSongSearchBox.PlaceholderText" xml:space="preserve">
<value>搜索歌曲</value>
</data>
<data name="MusicGalleryPageSortType.Text" xml:space="preserve">
<value>排序类型</value>
</data>
<data name="MusicGalleryPageSortByTitle.Content" xml:space="preserve">
<value>标题</value>
</data>
<data name="MusicGalleryPageSortByAlbum.Content" xml:space="preserve">
<value>专辑</value>
</data>
<data name="MusicGalleryPageSortByArtist.Content" xml:space="preserve">
<value>艺术家</value>
</data>
<data name="MusicGalleryPageFileNotFound.Text" xml:space="preserve">
<value>未在媒体库内找到任何歌曲</value>
</data>
<data name="MusicGalleryPagePlayingQueue.Text" xml:space="preserve">
<value>播放列表</value>
</data>
<data name="MusicGalleryPageEmptyPlayingQueue.Content" xml:space="preserve">
<value>清空播放列表</value>
</data>
<data name="MusicGalleryPageScrollToPlayingItem.Content" xml:space="preserve">
<value>定位到播放项</value>
</data>
<data name="MusicGalleryPageQueueLoop.Content" xml:space="preserve">
<value>列表循环</value>
</data>
<data name="MusicGalleryPageSingleLoop.Content" xml:space="preserve">
<value>单曲循环</value>
</data>
<data name="MusicGalleryPageQueueRandom.Content" xml:space="preserve">
<value>随机</value>
</data>
<data name="MusicGalleryPageRemoveFromPlayingQueue.Text" xml:space="preserve">
<value>从播放列表移除</value>
</data>
<data name="MusicGalleryPagePlayingQueueEmpty.Text" xml:space="preserve">
<value>播放列表为空</value>
</data>
</root>

View File

@@ -59,7 +59,7 @@
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
@@ -802,4 +802,82 @@
<data name="LibreTranslateFailed" xml:space="preserve">
<value>向 LibreTranslate 請求翻譯失敗,請檢查設置或本機 LibreTranslate 配置</value>
</data>
<data name="MusicGalleryPageFileInfo.Text" xml:space="preserve">
<value>文件信息</value>
</data>
<data name="MusicGalleryPageFileInfoTitle.Text" xml:space="preserve">
<value>標題</value>
</data>
<data name="MusicGalleryPageFileArtist.Text" xml:space="preserve">
<value>藝術家</value>
</data>
<data name="MusicGalleryPageFileAlbum.Text" xml:space="preserve">
<value>專輯</value>
</data>
<data name="MusicGalleryPageFileInfoYear.Text" xml:space="preserve">
<value>年</value>
</data>
<data name="MusicGalleryPageFileInfoDuration.Text" xml:space="preserve">
<value>期間</value>
</data>
<data name="MusicGalleryPageFileInfoBitrate.Text" xml:space="preserve">
<value>比特率</value>
</data>
<data name="MusicGalleryPageFileInfoSampleRate.Text" xml:space="preserve">
<value>樣本率</value>
</data>
<data name="MusicGalleryPageFileInfoBitDepth.Text" xml:space="preserve">
<value>位深度</value>
</data>
<data name="MusicGalleryPageFileInfoFormat.Text" xml:space="preserve">
<value>格式</value>
</data>
<data name="MusicGalleryPageFileInfoEncoder.Text" xml:space="preserve">
<value>編碼器</value>
</data>
<data name="MusicGalleryPageFileInfoPath.Text" xml:space="preserve">
<value>路徑</value>
</data>
<data name="MusicGalleryPageSongSearchBox.PlaceholderText" xml:space="preserve">
<value>搜索歌曲</value>
</data>
<data name="MusicGalleryPageSortType.Text" xml:space="preserve">
<value>排序類型</value>
</data>
<data name="MusicGalleryPageSortByTitle.Content" xml:space="preserve">
<value>標題</value>
</data>
<data name="MusicGalleryPageSortByAlbum.Content" xml:space="preserve">
<value>專輯</value>
</data>
<data name="MusicGalleryPageSortByArtist.Content" xml:space="preserve">
<value>藝術家</value>
</data>
<data name="MusicGalleryPageFileNotFound.Text" xml:space="preserve">
<value>未在媒體庫內找到任何歌曲</value>
</data>
<data name="MusicGalleryPagePlayingQueue.Text" xml:space="preserve">
<value>播放列表</value>
</data>
<data name="MusicGalleryPageEmptyPlayingQueue.Content" xml:space="preserve">
<value>清空播放列表</value>
</data>
<data name="MusicGalleryPageScrollToPlayingItem.Content" xml:space="preserve">
<value>定位到播放項</value>
</data>
<data name="MusicGalleryPageQueueLoop.Content" xml:space="preserve">
<value>列表循環</value>
</data>
<data name="MusicGalleryPageSingleLoop.Content" xml:space="preserve">
<value>單曲循環</value>
</data>
<data name="MusicGalleryPageQueueRandom.Content" xml:space="preserve">
<value>隨機</value>
</data>
<data name="MusicGalleryPageRemoveFromPlayingQueue.Text" xml:space="preserve">
<value>從播放列表移除</value>
</data>
<data name="MusicGalleryPagePlayingQueueEmpty.Text" xml:space="preserve">
<value>播放列表為空</value>
</data>
</root>

View File

@@ -94,9 +94,6 @@ namespace BetterLyrics.WinUI3
[ObservableProperty]
public partial string LockHotKey { get; set; } = "";
[ObservableProperty]
public partial bool IsMusicGalleryPageExpanded { get; set; } = false;
private void AutoHideOrShowWindow()
{
var window = WindowHelper.GetWindowByWindowType<LyricsWindow>();

View File

@@ -91,7 +91,7 @@ namespace BetterLyrics.WinUI3.ViewModels
switch (PlaybackOrder)
{
case PlaybackOrder.RepeatAll:
_dispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low , () =>
_dispatcherQueue.TryEnqueue(DispatcherQueuePriority.Low, () =>
{
if (PlayingSongIndex < TrackPlayingQueue.Count - 1)
{
@@ -259,21 +259,28 @@ namespace BetterLyrics.WinUI3.ViewModels
private void PlayTrack(Track? track)
{
if (track == null) return;
_smtc.IsEnabled = true;
_mediaPlayer.Source = MediaSource.CreateFromUri(new Uri(track.Path));
var updater = _smtc.DisplayUpdater;
updater.AppMediaId = Package.Current.Id.FullName;
updater.Type = MediaPlaybackType.Music;
updater.MusicProperties.Title = track.Title;
updater.MusicProperties.Artist = track.Artist;
updater.MusicProperties.AlbumTitle = track.Album;
if (track.EmbeddedPictures.FirstOrDefault()?.PictureData is byte[] pictureData)
if (track == null)
{
updater.Thumbnail = ImageHelper.ByteArrayToRandomAccessStreamReference(pictureData);
_timelineController.Pause();
_mediaPlayer.Source = null;
_smtc.IsEnabled = false;
}
else
{
_smtc.IsEnabled = true;
_mediaPlayer.Source = MediaSource.CreateFromUri(new Uri(track.Path));
var updater = _smtc.DisplayUpdater;
updater.AppMediaId = Package.Current.Id.FullName;
updater.Type = MediaPlaybackType.Music;
updater.MusicProperties.Title = track.Title;
updater.MusicProperties.Artist = track.Artist;
updater.MusicProperties.AlbumTitle = track.Album;
if (track.EmbeddedPictures.FirstOrDefault()?.PictureData is byte[] pictureData)
{
updater.Thumbnail = ImageHelper.ByteArrayToRandomAccessStreamReference(pictureData);
}
updater.Update();
}
updater.Update();
}
partial void OnSongOrderTypeChanged(SongOrderType value)

View File

@@ -22,15 +22,6 @@
<local:LyricsPage />
<Frame
x:Name="OverlayFrame"
Padding="0,24,0,0"
Background="{ThemeResource AcrylicInAppFillColorBaseBrush}">
<Frame.TranslationTransition>
<Vector3Transition />
</Frame.TranslationTransition>
</Frame>
<!-- Top command -->
<Grid
x:Name="TopCommandGrid"

View File

@@ -332,26 +332,11 @@ namespace BetterLyrics.WinUI3.Views
private void RootGrid_SizeChanged(object sender, SizeChangedEventArgs e)
{
UpdateOverlayFrameTranslation();
}
private void MusicGalleryButton_Click(object sender, RoutedEventArgs e)
{
ViewModel.IsMusicGalleryPageExpanded = !ViewModel.IsMusicGalleryPageExpanded;
UpdateOverlayFrameTranslation();
}
private void UpdateOverlayFrameTranslation()
{
if (ViewModel.IsMusicGalleryPageExpanded)
{
OverlayFrame.Translation = new System.Numerics.Vector3(0, 0, 0);
if (OverlayFrame.Content == null) OverlayFrame.Navigate(typeof(MusicGalleryPage));
}
else
{
OverlayFrame.Translation = new System.Numerics.Vector3(0, (float)RootGrid.ActualHeight, 0);
}
WindowHelper.OpenWindow<MusicGalleryWindow>();
}
}
}

View File

@@ -229,53 +229,53 @@
<StackPanel Orientation="Horizontal" Spacing="6">
<!--<FontIcon FontFamily="{StaticResource IconFontFamily}" Glyph="&#xE946;" />-->
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="文件信息" />
<TextBlock x:Uid="MusicGalleryPageFileInfo" Style="{StaticResource BodyStrongTextBlockStyle}" />
</StackPanel>
<ScrollViewer Width="300" Height="300">
<StackPanel Spacing="12">
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="标题" />
<TextBlock x:Uid="MusicGalleryPageFileInfoTitle" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.Title, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="艺术家" />
<TextBlock x:Uid="MusicGalleryPageFileArtist" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.Artist, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="专辑" />
<TextBlock x:Uid="MusicGalleryPageFileAlbum" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.Album, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="年份" />
<TextBlock x:Uid="MusicGalleryPageFileInfoYear" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.Year, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="时长" />
<TextBlock x:Uid="MusicGalleryPageFileInfoDuration" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.Duration, Converter={StaticResource SecondsToFormattedTimeConverter}, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="比特率" />
<TextBlock x:Uid="MusicGalleryPageFileInfoBitrate" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.Bitrate, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="采样率" />
<TextBlock x:Uid="MusicGalleryPageFileInfoSampleRate" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.SampleRate, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="位深" />
<TextBlock x:Uid="MusicGalleryPageFileInfoBitDepth" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.BitDepth, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="格式" />
<TextBlock x:Uid="MusicGalleryPageFileInfoFormat" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.AudioFormat.Name, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="编码" />
<TextBlock x:Uid="MusicGalleryPageFileInfoEncoder" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<TextBlock Text="{x:Bind ViewModel.TrackRightTapped.Encoder, Mode=OneWay}" />
</StackPanel>
<StackPanel>
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="路径" />
<TextBlock x:Uid="MusicGalleryPageFileInfoPath" Foreground="{ThemeResource TextFillColorSecondaryBrush}" />
<HyperlinkButton
Margin="-12,0,0,0"
Click="SongPathHyperlinkButton_Click"
@@ -303,9 +303,9 @@
</Grid.ColumnDefinitions>
<AutoSuggestBox
x:Name="SongSearchBox"
x:Uid="MusicGalleryPageSongSearchBox"
Grid.Column="0"
HorizontalAlignment="Stretch"
PlaceholderText="搜索歌曲"
QueryIcon="Find"
Text="{x:Bind ViewModel.SongSearchQuery, Mode=TwoWay}" />
<StackPanel
@@ -313,16 +313,16 @@
Orientation="Horizontal"
Spacing="12">
<TextBlock
x:Uid="MusicGalleryPageSortType"
VerticalAlignment="Center"
Style="{StaticResource BodyStrongTextBlockStyle}"
Text="排序方式" />
Style="{StaticResource BodyStrongTextBlockStyle}" />
<controls:Segmented
x:Name="Segmented"
SelectedIndex="{x:Bind ViewModel.SongOrderType, Converter={StaticResource EnumToIntConverter}, Mode=TwoWay}"
SelectionMode="Single">
<controls:SegmentedItem Content="歌曲" Icon="{ui:FontIcon FontFamily={StaticResource IconFontFamily}, Glyph=&#xEC4F;}" />
<controls:SegmentedItem Content="专辑" Icon="{ui:FontIcon FontFamily={StaticResource IconFontFamily}, Glyph=&#xE93C;}" />
<controls:SegmentedItem Content="艺术家" Icon="{ui:FontIcon FontFamily={StaticResource IconFontFamily}, Glyph=&#xEFA9;}" />
<controls:SegmentedItem x:Uid="MusicGalleryPageSortByTitle" Icon="{ui:FontIcon FontFamily={StaticResource IconFontFamily}, Glyph=&#xEC4F;}" />
<controls:SegmentedItem x:Uid="MusicGalleryPageSortByAlbum" Icon="{ui:FontIcon FontFamily={StaticResource IconFontFamily}, Glyph=&#xE93C;}" />
<controls:SegmentedItem x:Uid="MusicGalleryPageSortByArtist" Icon="{ui:FontIcon FontFamily={StaticResource IconFontFamily}, Glyph=&#xEFA9;}" />
</controls:Segmented>
</StackPanel>
</Grid>
@@ -376,7 +376,7 @@
<Grid Margin="0,48,0,0" Visibility="{x:Bind ViewModel.IsLocalMediaNotFound, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Image MaxWidth="200" Source="/Assets/Planet.png" />
<TextBlock HorizontalAlignment="Center" Text="未在媒体库内找到任何歌曲" />
<TextBlock x:Uid="MusicGalleryPageFileNotFound" HorizontalAlignment="Center" />
</StackPanel>
</Grid>
@@ -388,7 +388,7 @@
Margin="0,0,12,0">
<StackPanel Margin="0,10,0,0" Spacing="12">
<Grid Margin="0,6,0,0" VerticalAlignment="Top">
<TextBlock Style="{StaticResource BodyStrongTextBlockStyle}" Text="播放队列" />
<TextBlock x:Uid="MusicGalleryPagePlayingQueue" Style="{StaticResource BodyStrongTextBlockStyle}" />
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal">
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="{x:Bind ViewModel.DisplayedPlayingSongIndex, Mode=OneWay}" />
<TextBlock Foreground="{ThemeResource TextFillColorSecondaryBrush}" Text="/" />
@@ -396,14 +396,14 @@
</StackPanel>
</Grid>
<StackPanel Orientation="Horizontal" Spacing="12">
<Button Click="EmptyPlayingQueueButton_Click" Content="清除全部" />
<Button Click="ScrollToPlayingItemButton_Click" Content="定位到播放项" />
<Button x:Uid="MusicGalleryPageEmptyPlayingQueue" Click="EmptyPlayingQueueButton_Click" />
<Button x:Uid="MusicGalleryPageScrollToPlayingItem" Click="ScrollToPlayingItemButton_Click" />
</StackPanel>
<controls:Segmented HorizontalAlignment="Stretch" SelectedIndex="{x:Bind ViewModel.PlaybackOrder, Converter={StaticResource EnumToIntConverter}, Mode=TwoWay}">
<controls:Segmented.Items>
<controls:SegmentedItem Content="列表循环" />
<controls:SegmentedItem Content="单曲循环" />
<controls:SegmentedItem Content="随机" />
<controls:SegmentedItem x:Uid="MusicGalleryPageQueueLoop" />
<controls:SegmentedItem x:Uid="MusicGalleryPageSingleLoop" />
<controls:SegmentedItem x:Uid="MusicGalleryPageQueueRandom" />
</controls:Segmented.Items>
</controls:Segmented>
</StackPanel>
@@ -431,7 +431,7 @@
Style="{StaticResource GhostButtonStyle}">
<Button.Flyout>
<MenuFlyout>
<MenuFlyoutItem Icon="{ui:FontIcon FontFamily={StaticResource IconFontFamily}, Glyph=&#xE738;}" Text="从播放队列移除" />
<MenuFlyoutItem x:Uid="MusicGalleryPageRemoveFromPlayingQueue" Icon="{ui:FontIcon FontFamily={StaticResource IconFontFamily}, Glyph=&#xE738;}" />
</MenuFlyout>
</Button.Flyout>
</Button>
@@ -457,7 +457,7 @@
</interactivity:Interaction.Behaviors>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<Image MaxWidth="200" Source="/Assets/Planet.png" />
<TextBlock HorizontalAlignment="Center" Text="播放队列为空" />
<TextBlock x:Uid="MusicGalleryPagePlayingQueueEmpty" HorizontalAlignment="Center" />
</StackPanel>
</Grid>
</Grid>

View File

@@ -31,6 +31,13 @@ namespace BetterLyrics.WinUI3.Views
Title = App.ResourceLoader!.GetString("MusicGalleryPageTitle");
AppWindow.TitleBar.PreferredTheme = TitleBarTheme.UseDefaultAppMode;
this.SetIcon(@"Assets/Logo.ico");
AppWindow.Closing += AppWindow_Closing;
}
private void AppWindow_Closing(AppWindow sender, AppWindowClosingEventArgs args)
{
}
}
}

View File

@@ -19,12 +19,11 @@ BetterLyrics
查看文章:[BetterLyrics 专为 Windows 设计的沉浸式流畅歌词显示工具](https://sspai.com/post/101028)
## 反馈交流群
## 🔈 反馈交流群
- [「BetterLyrics」反馈交流群简体中文](https://qun.qq.com/universal-share/share?ac=1&authKey=4Q%2BYTq3wZldYpF5SbS5c19ECFsiYoLZFAIcBNNzYpBUtiEjaZ8sZ%2F%2BnFN0qw3lad&busi_data=eyJncm91cENvZGUiOiIxMDU0NzAwMzg4IiwidG9rZW4iOiJiVnhqemVYN0N5QVc3b1ZkR24wWmZOTUtvUkJoWm1JRWlaWW5iZnlBcXJtZUtGc2FFTHNlUlFZMi9iRm03cWF5IiwidWluIjoiMTM5NTczOTY2MCJ9&data=39UmAihyH_o6CZaOs7nk2mO_lz2ruODoDou6pxxh7utcxP4WF5sbDBDOPvZ_Wqfzeey4441anegsLYQJxkrBAA&svctype=4&tempid=h5_group_info) (1054700388) QQ 群
- [「BetterLyrics」反馈交流群繁体中文/英语)](https://discord.gg/5yAQPnyCKv) Discord 服务器
- [QQ](https://qun.qq.com/universal-share/share?ac=1&authKey=4Q%2BYTq3wZldYpF5SbS5c19ECFsiYoLZFAIcBNNzYpBUtiEjaZ8sZ%2F%2BnFN0qw3lad&busi_data=eyJncm91cENvZGUiOiIxMDU0NzAwMzg4IiwidG9rZW4iOiJiVnhqemVYN0N5QVc3b1ZkR24wWmZOTUtvUkJoWm1JRWlaWW5iZnlBcXJtZUtGc2FFTHNlUlFZMi9iRm03cWF5IiwidWluIjoiMTM5NTczOTY2MCJ9&data=39UmAihyH_o6CZaOs7nk2mO_lz2ruODoDou6pxxh7utcxP4WF5sbDBDOPvZ_Wqfzeey4441anegsLYQJxkrBAA&svctype=4&tempid=h5_group_info) (1054700388) | [Discord](https://discord.gg/5yAQPnyCKv) | [Telegram](https://t.me/+svhSLZ7awPsxNGY1)
🌟 核心亮点功能
## 🌟 核心亮点功能
- 🌠 美观的用户界面
- 流畅的动画与视觉特效,打造赏心悦目的歌词体验

View File

@@ -16,10 +16,9 @@ Your smooth dynamic lyrics display tool built with WinUI 3
## 🎉 This project was featured by SSPAI!
Check out the article: [BetterLyrics An immersive and smooth lyrics display tool designed for Windows](https://sspai.com/post/101028)
## Feedback and chat group
## 🔈 Feedback and chat group
- [「BetterLyrics」反馈交流群简体中文](https://qun.qq.com/universal-share/share?ac=1&authKey=4Q%2BYTq3wZldYpF5SbS5c19ECFsiYoLZFAIcBNNzYpBUtiEjaZ8sZ%2F%2BnFN0qw3lad&busi_data=eyJncm91cENvZGUiOiIxMDU0NzAwMzg4IiwidG9rZW4iOiJiVnhqemVYN0N5QVc3b1ZkR24wWmZOTUtvUkJoWm1JRWlaWW5iZnlBcXJtZUtGc2FFTHNlUlFZMi9iRm03cWF5IiwidWluIjoiMTM5NTczOTY2MCJ9&data=39UmAihyH_o6CZaOs7nk2mO_lz2ruODoDou6pxxh7utcxP4WF5sbDBDOPvZ_Wqfzeey4441anegsLYQJxkrBAA&svctype=4&tempid=h5_group_info) (1054700388) on QQ
- [「BetterLyrics」Feedback Chat Group (Traditional Chinese / English)](https://discord.gg/5yAQPnyCKv) on Discord
- [QQ](https://qun.qq.com/universal-share/share?ac=1&authKey=4Q%2BYTq3wZldYpF5SbS5c19ECFsiYoLZFAIcBNNzYpBUtiEjaZ8sZ%2F%2BnFN0qw3lad&busi_data=eyJncm91cENvZGUiOiIxMDU0NzAwMzg4IiwidG9rZW4iOiJiVnhqemVYN0N5QVc3b1ZkR24wWmZOTUtvUkJoWm1JRWlaWW5iZnlBcXJtZUtGc2FFTHNlUlFZMi9iRm03cWF5IiwidWluIjoiMTM5NTczOTY2MCJ9&data=39UmAihyH_o6CZaOs7nk2mO_lz2ruODoDou6pxxh7utcxP4WF5sbDBDOPvZ_Wqfzeey4441anegsLYQJxkrBAA&svctype=4&tempid=h5_group_info) (1054700388) | [Discord](https://discord.gg/5yAQPnyCKv) | [Telegram](https://t.me/+svhSLZ7awPsxNGY1)
## 🌟 Highlighted features