Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Screenbox.Core/Services/ISettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,6 @@ public interface ISettingsService
bool UseMultipleInstances { get; set; }
string LivelyActivePath { get; set; }
MediaPlaybackAutoRepeatMode PersistentRepeatMode { get; set; }
bool PlayerAutoFullScreen { get; set; }
}
}
9 changes: 9 additions & 0 deletions Screenbox.Core/Services/SettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Windows.Foundation.Collections;
using Windows.Media;
using Windows.Storage;
using Windows.UI.ViewManagement;

namespace Screenbox.Core.Services
{
Expand Down Expand Up @@ -35,6 +36,7 @@ public sealed class SettingsService : ISettingsService
private const string PersistentRepeatModeKey = "Values/RepeatMode";
private const string PersistentSubtitleLanguageKey = "Values/SubtitleLanguage";
private const string PlayerShowChaptersKey = "Player/ShowChapters";
private const string PlayerAutoFullScreenKey = "Player/AutoFullScreen";

public bool UseIndexer
{
Expand Down Expand Up @@ -162,6 +164,12 @@ public bool PlayerShowChapters
set => SetValue(PlayerShowChaptersKey, value);
}

public bool PlayerAutoFullScreen
{
get => GetValue<bool>(PlayerAutoFullScreenKey);
set => SetValue(PlayerAutoFullScreenKey, value);
}

public SettingsService()
{
SetDefault(PlayerAutoResizeKey, (int)PlayerAutoResizeOption.Never);
Expand All @@ -180,6 +188,7 @@ public SettingsService()
SetDefault(AdvancedMultipleInstancesKey, false);
SetDefault(GlobalArgumentsKey, string.Empty);
SetDefault(PlayerShowChaptersKey, true);
SetDefault(PlayerAutoFullScreenKey, false);

// Device family specific overrides
if (SystemInformation.IsXbox)
Expand Down
8 changes: 8 additions & 0 deletions Screenbox.Core/ViewModels/SettingsPageViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public sealed partial class SettingsPageViewModel : ObservableRecipient
[ObservableProperty] private bool _playerTapGesture;
[ObservableProperty] private bool _playerShowControls;
[ObservableProperty] private bool _playerShowChapters;
[ObservableProperty] private bool _playerAutoFullScreen;
[ObservableProperty] private int _volumeBoost;
[ObservableProperty] private bool _useIndexer;
[ObservableProperty] private bool _showRecent;
Expand Down Expand Up @@ -99,6 +100,7 @@ public SettingsPageViewModel(ISettingsService settingsService, ILibraryService l
_playerTapGesture = _settingsService.PlayerTapGesture;
_playerShowControls = _settingsService.PlayerShowControls;
_playerShowChapters = _settingsService.PlayerShowChapters;
_playerAutoFullScreen = _settingsService.PlayerAutoFullScreen;
_useIndexer = _settingsService.UseIndexer;
_showRecent = _settingsService.ShowRecent;
_theme = ((int)_settingsService.Theme + 2) % 3;
Expand Down Expand Up @@ -187,6 +189,12 @@ partial void OnPlayerShowChaptersChanged(bool value)
Messenger.Send(new SettingsChangedMessage(nameof(PlayerShowChapters), typeof(SettingsPageViewModel)));
}

partial void OnPlayerAutoFullScreenChanged(bool value)
{
_settingsService.PlayerAutoFullScreen = value;
Messenger.Send(new SettingsChangedMessage(nameof(PlayerAutoFullScreen), typeof(SettingsPageViewModel)));
}

partial void OnUseIndexerChanged(bool value)
{
_settingsService.UseIndexer = value;
Expand Down
12 changes: 12 additions & 0 deletions Screenbox/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,18 @@ protected override void OnFileActivated(FileActivatedEventArgs args)
}

Window.Current.Activate();

// Auto enter full screen if setting is enabled and we're not already in a special mode
var settings = CommunityToolkit.Mvvm.DependencyInjection.Ioc.Default.GetRequiredService<ISettingsService>();
if (settings.PlayerAutoFullScreen)
{
var view = Windows.UI.ViewManagement.ApplicationView.GetForCurrentView();
if (!view.IsFullScreenMode && view.ViewMode == Windows.UI.ViewManagement.ApplicationViewMode.Default)
{
view.TryEnterFullScreenMode();
}
}

WeakReferenceMessenger.Default.Send(new PlayFilesMessage(args.Files, args.NeighboringFilesQuery));
}

Expand Down
9 changes: 9 additions & 0 deletions Screenbox/Pages/SettingsPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,15 @@
</ComboBox>
</ctc:SettingsCard>

<ctc:SettingsCard
Margin="{StaticResource SettingsCardMargin}"
Description="{strings:Resources Key=SettingsAutoFullScreenDescription}"
Header="{strings:Resources Key=SettingsAutoFullScreenHeader}"
HeaderIcon="{ui:FontIcon Glyph=&#xE740;}"
Visibility="{x:Bind helpers:DeviceInfoHelper.IsDesktop}">
<ToggleSwitch IsOn="{x:Bind ViewModel.PlayerAutoFullScreen, Mode=TwoWay}" />
</ctc:SettingsCard>

<ctc:SettingsCard
Margin="{StaticResource SettingsCardMargin}"
Description="{strings:Resources Key=SettingsVolumeBoostDescription}"
Expand Down
6 changes: 6 additions & 0 deletions Screenbox/Strings/en-US/Resources.resw
Original file line number Diff line number Diff line change
Expand Up @@ -642,6 +642,12 @@
<data name="SettingsAutoResizeDescription" xml:space="preserve">
<value>Resize the app window to best match a video's native resolution on playback</value>
</data>
<data name="SettingsAutoFullScreenHeader" xml:space="preserve">
<value>Auto full screen</value>
</data>
<data name="SettingsAutoFullScreenDescription" xml:space="preserve">
<value>Automatically enter full screen mode when opening a media file</value>
</data>
<data name="SettingsVolumeBoostHeader" xml:space="preserve">
<value>Volume boost</value>
</data>
Expand Down