Add custom monitor number selection combobox

This commit is contained in:
Vic 2023-03-20 17:50:53 +08:00
parent 278f0eba30
commit 115d3a58f4
4 changed files with 21 additions and 6 deletions

View file

@ -245,7 +245,7 @@ namespace Flow.Launcher.Infrastructure.UserSettings
[JsonConverter(typeof(JsonStringEnumConverter))]
public SearchWindowAligns SearchWindowAlign { get; set; } = SearchWindowAligns.Center;
public string CustomScreenDeviceName { get; set; } = string.Empty;
public int CustomScreenNumber { get; set; } = 1;
public bool IgnoreHotkeysOnFullscreen { get; set; }

View file

@ -550,7 +550,10 @@ namespace Flow.Launcher
screen = Screen.FromHandle(foregroundWindowHandle);
break;
case SearchWindowScreens.Custom:
screen = Screen.AllScreens.FirstOrDefault(s => s.DeviceName == _settings.CustomScreenDeviceName);
if (_settings.CustomScreenNumber <= Screen.AllScreens.Length)
screen = Screen.AllScreens[_settings.CustomScreenNumber - 1];
else
screen = Screen.AllScreens[0];
break;
default:
screen = Screen.AllScreens[0];

View file

@ -719,11 +719,9 @@
MinWidth="160"
Margin="0,0,18,0"
VerticalAlignment="Center"
DisplayMemberPath="Display"
FontSize="14"
ItemsSource="{Binding SearchWindowAligns}"
SelectedValue="{Binding Settings.SearchWindowAlign}"
SelectedValuePath="Value">
ItemsSource="{Binding ScreenNumbers}"
SelectedValue="{Binding Settings.CustomScreenNumber}">
<ComboBox.Style>
<Style BasedOn="{StaticResource DefaultComboBoxStyle}" TargetType="ComboBox">
<Setter Property="Visibility" Value="Collapsed" />

View file

@ -517,6 +517,20 @@ namespace Flow.Launcher.ViewModel
}
}
public List<int> ScreenNumbers
{
get
{
var screens = System.Windows.Forms.Screen.AllScreens;
var screenNumbers = new List<int>();
for (int i = 1; i <= screens.Length; i++)
{
screenNumbers.Add(i);
}
return screenNumbers;
}
}
public List<string> TimeFormatList { get; } = new()
{
"h:mm",