Skip to content

Commit 702f17b

Browse files
authored
全屏时显示关闭窗口按钮 (#273)
1 parent 2cbc833 commit 702f17b

File tree

7 files changed

+77
-5
lines changed

7 files changed

+77
-5
lines changed

src/App/Controls/Base/BiliPlayerOverlay/BiliPlayerOverlay.Handlers.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -469,9 +469,10 @@ private void OnDetailButtonClick(object sender, RoutedEventArgs e)
469469
=> _rootSplitView.IsPaneOpen = !_rootSplitView.IsPaneOpen;
470470

471471
private void OnBackButtonClick(object sender, RoutedEventArgs e)
472-
{
473-
ViewModel.BackCommand.Execute(default);
474-
}
472+
=> ViewModel.BackCommand.Execute(default);
473+
474+
private void OnCloseButtonClick(object sender, RoutedEventArgs e)
475+
=> ViewModel.AttachedWindow?.Close();
475476

476477
private void OnRootSplitViewPaneChanged(SplitView sender, object args)
477478
{

src/App/Controls/Base/BiliPlayerOverlay/BiliPlayerOverlay.cs

+3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public sealed partial class BiliPlayerOverlay : ReactiveControl<PlayerDetailView
2525
private Button _refreshButton;
2626
private Button _openInBrowserButton;
2727
private Button _backButton;
28+
private Button _closeButton;
2829
private Button _detailButton;
2930
private ButtonBase _backButton2;
3031
private SplitView _rootSplitView;
@@ -105,6 +106,7 @@ protected override void OnApplyTemplate()
105106
_openInBrowserButton = GetTemplateChild("OpenInBrowserButton") as Button;
106107
_backButton = GetTemplateChild("BackButton") as Button;
107108
_detailButton = GetTemplateChild("DetailButton") as Button;
109+
_closeButton = GetTemplateChild("CloseButton") as Button;
108110
_backButton2 = GetTemplateChild("BackButton2") as HyperlinkButton;
109111
_rootSplitView = GetTemplateChild("RootSplitView") as SplitView;
110112
var sectionView = GetTemplateChild("SectionNavigationView") as NavigationView;
@@ -133,6 +135,7 @@ protected override void OnApplyTemplate()
133135
_openInBrowserButton.Click += OnOpenInBrowserButtonClick;
134136
_backButton.Click += OnBackButtonClick;
135137
_backButton2.Click += OnBackButtonClick;
138+
_closeButton.Click += OnCloseButtonClick;
136139
_detailButton.Click += OnDetailButtonClick;
137140
_rootSplitView.PaneOpened += OnRootSplitViewPaneChanged;
138141
_rootSplitView.PaneClosed += OnRootSplitViewPaneChanged;

src/App/Controls/Base/BiliPlayerOverlay/BiliPlayerOverlay.xaml

+53-2
Original file line numberDiff line numberDiff line change
@@ -341,12 +341,13 @@
341341
</Grid>
342342
<Grid
343343
Margin="28"
344-
HorizontalAlignment="Left"
344+
HorizontalAlignment="Stretch"
345345
VerticalAlignment="Top"
346346
Visibility="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.IsShowMediaTransport}">
347347
<Grid.ColumnDefinitions>
348348
<ColumnDefinition Width="Auto" />
349349
<ColumnDefinition />
350+
<ColumnDefinition Width="Auto" />
350351
</Grid.ColumnDefinitions>
351352
<Button
352353
x:Name="BackButton"
@@ -364,6 +365,7 @@
364365
<Border
365366
Grid.Column="1"
366367
Padding="8,4"
368+
HorizontalAlignment="Left"
367369
VerticalAlignment="Center"
368370
Background="#CF000000"
369371
CornerRadius="{StaticResource ControlCornerRadius}">
@@ -374,6 +376,20 @@
374376
Text="{TemplateBinding Title}"
375377
TextWrapping="Wrap" />
376378
</Border>
379+
<Button
380+
x:Name="CloseButton"
381+
Grid.Column="2"
382+
Width="36"
383+
Height="36"
384+
Margin="24,0,0,0"
385+
Padding="0"
386+
HorizontalContentAlignment="Center"
387+
VerticalContentAlignment="Center"
388+
Style="{StaticResource AccentButtonStyle}"
389+
ToolTipService.ToolTip="{ext:Locale Name=Close}"
390+
Visibility="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.IsFullScreen}">
391+
<local:FluentIcon FontSize="16" Symbol="Dismiss" />
392+
</Button>
377393
</Grid>
378394

379395
<Grid
@@ -423,6 +439,15 @@
423439
</Button>
424440
</StackPanel>
425441
</Grid>
442+
<ProgressBar
443+
Height="3"
444+
HorizontalAlignment="Stretch"
445+
VerticalAlignment="Bottom"
446+
Background="Transparent"
447+
Maximum="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.DurationSeconds}"
448+
Opacity="0.7"
449+
Visibility="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.IsShowMediaTransport, Converter={StaticResource BoolToVisibilityReverseConverter}}"
450+
Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.ProgressSeconds}" />
426451
</Grid>
427452
<Grid
428453
x:Name="PlayErrorContainer"
@@ -792,12 +817,13 @@
792817
</Grid>
793818
<Grid
794819
Margin="28"
795-
HorizontalAlignment="Left"
820+
HorizontalAlignment="Stretch"
796821
VerticalAlignment="Top"
797822
Visibility="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.IsShowMediaTransport}">
798823
<Grid.ColumnDefinitions>
799824
<ColumnDefinition Width="Auto" />
800825
<ColumnDefinition />
826+
<ColumnDefinition Width="Auto" />
801827
</Grid.ColumnDefinitions>
802828
<Button
803829
x:Name="BackButton"
@@ -815,6 +841,7 @@
815841
<Border
816842
Grid.Column="1"
817843
Padding="8,4"
844+
HorizontalAlignment="Left"
818845
VerticalAlignment="Center"
819846
Background="#CF000000"
820847
CornerRadius="{StaticResource ControlCornerRadius}">
@@ -825,6 +852,20 @@
825852
Text="{TemplateBinding Title}"
826853
TextWrapping="Wrap" />
827854
</Border>
855+
<Button
856+
x:Name="CloseButton"
857+
Grid.Column="2"
858+
Width="36"
859+
Height="36"
860+
Margin="24,0,0,0"
861+
Padding="0"
862+
HorizontalContentAlignment="Center"
863+
VerticalContentAlignment="Center"
864+
Style="{StaticResource AccentButtonStyle}"
865+
ToolTipService.ToolTip="{ext:Locale Name=Close}"
866+
Visibility="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.IsFullScreen}">
867+
<local:FluentIcon FontSize="16" Symbol="Dismiss" />
868+
</Button>
828869
</Grid>
829870
<Grid
830871
Margin="20,12,0,0"
@@ -872,6 +913,16 @@
872913
</Button>
873914
</StackPanel>
874915
</Grid>
916+
917+
<ProgressBar
918+
Height="3"
919+
HorizontalAlignment="Stretch"
920+
VerticalAlignment="Bottom"
921+
Background="Transparent"
922+
Maximum="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.DurationSeconds}"
923+
Opacity="0.7"
924+
Visibility="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.IsShowMediaTransport, Converter={StaticResource BoolToVisibilityReverseConverter}}"
925+
Value="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=ViewModel.ProgressSeconds}" />
875926
</Grid>
876927
<Grid
877928
x:Name="PlayErrorContainer"

src/App/Forms/MainWindow.xaml.cs

+6
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,12 @@ private void OnClosed(object sender, WindowEventArgs args)
401401
}
402402
}
403403

404+
if (AppWindow.Presenter.Kind == AppWindowPresenterKind.FullScreen
405+
|| AppWindow.Presenter.Kind == AppWindowPresenterKind.CompactOverlay)
406+
{
407+
AppWindow.SetPresenter(AppWindowPresenterKind.Overlapped);
408+
}
409+
404410
var willHide = SettingsToolkit.ReadLocalSetting(SettingNames.HideWhenCloseWindow, false);
405411
if (_appViewModel.IsPlayerShown && PlayerFrame.Content is not null && willHide)
406412
{

src/App/Forms/PlayerWindow.xaml.cs

+6
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,12 @@ private async void OnClosedAsync(object sender, WindowEventArgs args)
109109
if (!_isClosed)
110110
{
111111
args.Handled = true;
112+
if (AppWindow.Presenter.Kind == AppWindowPresenterKind.FullScreen
113+
|| AppWindow.Presenter.Kind == AppWindowPresenterKind.CompactOverlay)
114+
{
115+
AppWindow.SetPresenter(AppWindowPresenterKind.Overlapped);
116+
}
117+
112118
SaveCurrentWindowStats();
113119
this.Hide();
114120
_ = MainFrame.Navigate(typeof(Page));

src/ViewModels/Components/PlayerDetailViewModel/PlayerDetailViewModel.Method.cs

+2
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ private void InitializeDisplayModeText()
170170
CompactOverlayText = DisplayMode == PlayerDisplayMode.CompactOverlay
171171
? ResourceToolkit.GetLocalizedString(StringNames.ExitCompactOverlay)
172172
: ResourceToolkit.GetLocalizedString(StringNames.EnterCompactOverlay);
173+
174+
IsFullScreen = DisplayMode == PlayerDisplayMode.FullScreen;
173175
}
174176

175177
[RelayCommand]

src/ViewModels/Components/PlayerDetailViewModel/PlayerDetailViewModel.Properties.cs

+3
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ public sealed partial class PlayerDetailViewModel
104104
[ObservableProperty]
105105
private string _fullScreenText;
106106

107+
[ObservableProperty]
108+
private bool _isFullScreen;
109+
107110
[ObservableProperty]
108111
private string _compactOverlayText;
109112

0 commit comments

Comments
 (0)