diff --git a/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml b/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml index 461ccd1970b..b0172cfd44d 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml +++ b/Plugins/Flow.Launcher.Plugin.Url/Languages/en.xaml @@ -15,4 +15,6 @@ Please set your browser path: Choose Application(*.exe)|*.exe|All files|*.* + + Prefer https over http \ No newline at end of file diff --git a/Plugins/Flow.Launcher.Plugin.Url/Main.cs b/Plugins/Flow.Launcher.Plugin.Url/Main.cs index db7cecbdebb..ec02f8dd298 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Url/Main.cs @@ -1,10 +1,11 @@ using System; using System.Collections.Generic; using System.Text.RegularExpressions; +using System.Windows.Controls; namespace Flow.Launcher.Plugin.Url { - public class Main : IPlugin, IPluginI18n + public class Main : IPlugin, IPluginI18n, ISettingProvider { //based on https://gist.github.com/dperini/729294 private const string urlPattern = "^" + @@ -58,13 +59,13 @@ public List Query(Query query) Score = 8, Action = _ => { - if (!raw.ToLower().StartsWith("http")) + if (!raw.StartsWith("http://", StringComparison.OrdinalIgnoreCase) && !raw.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) { - raw = "http://" + raw; + raw = GetHttpPreference() + "://" + raw; } try { - Context.API.OpenUrl(raw); + Context.API.OpenUrl(raw); return true; } @@ -80,6 +81,11 @@ public List Query(Query query) return new List(0); } + private string GetHttpPreference() + { + return _settings.AlwaysOpenWithHttps ? "https" : "http"; + } + public bool IsURL(string raw) { raw = raw.ToLower(); @@ -113,5 +119,10 @@ public string GetTranslatedPluginDescription() { return Localize.flowlauncher_plugin_url_plugin_description(); } + + public Control CreateSettingPanel() + { + return new URLSettings(_settings); + } } } diff --git a/Plugins/Flow.Launcher.Plugin.Url/Settings.cs b/Plugins/Flow.Launcher.Plugin.Url/Settings.cs index a8d89e27f33..05e657d2e77 100644 --- a/Plugins/Flow.Launcher.Plugin.Url/Settings.cs +++ b/Plugins/Flow.Launcher.Plugin.Url/Settings.cs @@ -5,5 +5,6 @@ public class Settings public string BrowserPath { get; set; } public bool OpenInNewBrowserWindow { get; set; } = true; + public bool AlwaysOpenWithHttps { get; set; } = false; } } diff --git a/Plugins/Flow.Launcher.Plugin.Url/SettingsViewModel.cs b/Plugins/Flow.Launcher.Plugin.Url/SettingsViewModel.cs new file mode 100644 index 00000000000..6e229775274 --- /dev/null +++ b/Plugins/Flow.Launcher.Plugin.Url/SettingsViewModel.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; +using System.Linq; + +namespace Flow.Launcher.Plugin.Url; + +public class SettingsViewModel(Settings settings) : BaseModel +{ + public Settings Settings { get; } = settings; +} diff --git a/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml b/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml new file mode 100644 index 00000000000..8394dba5ef0 --- /dev/null +++ b/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + diff --git a/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml.cs b/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml.cs new file mode 100644 index 00000000000..e0e22fb7381 --- /dev/null +++ b/Plugins/Flow.Launcher.Plugin.Url/URLSettings.xaml.cs @@ -0,0 +1,15 @@ +using System.Windows.Controls; + +namespace Flow.Launcher.Plugin.Url; + +public partial class URLSettings : UserControl +{ + private readonly SettingsViewModel _viewModel; + + public URLSettings(Settings settings) + { + _viewModel = new SettingsViewModel(settings); + DataContext = _viewModel; + InitializeComponent(); + } +}