Skip to content

Commit e39a7ed

Browse files
authored
Merge branch 'dev' into 240514ResizableWindow
2 parents 218685d + 3d1434f commit e39a7ed

File tree

14 files changed

+160
-87
lines changed

14 files changed

+160
-87
lines changed

Flow.Launcher.Core/Plugin/JsonRPCPluginV2.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,11 +139,20 @@ public virtual Task ReloadDataAsync()
139139
return Task.CompletedTask;
140140
}
141141

142-
public virtual ValueTask DisposeAsync()
142+
public virtual async ValueTask DisposeAsync()
143143
{
144-
RPC?.Dispose();
145-
ErrorStream?.Dispose();
146-
return ValueTask.CompletedTask;
144+
try
145+
{
146+
await RPC.InvokeAsync("close");
147+
}
148+
catch (RemoteMethodNotFoundException e)
149+
{
150+
}
151+
finally
152+
{
153+
RPC?.Dispose();
154+
ErrorStream?.Dispose();
155+
}
147156
}
148157
}
149158
}

Flow.Launcher.Infrastructure/UserSettings/Settings.cs

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -188,32 +188,16 @@ public CustomBrowserViewModel CustomBrowser
188188
public bool AlwaysPreview { get; set; } = false;
189189
public bool AlwaysStartEn { get; set; } = false;
190190

191+
private SearchPrecisionScore _querySearchPrecision = SearchPrecisionScore.Regular;
191192
[JsonInclude, JsonConverter(typeof(JsonStringEnumConverter))]
192-
public SearchPrecisionScore QuerySearchPrecision { get; private set; } = SearchPrecisionScore.Regular;
193-
194-
[JsonIgnore]
195-
public string QuerySearchPrecisionString
193+
public SearchPrecisionScore QuerySearchPrecision
196194
{
197-
get { return QuerySearchPrecision.ToString(); }
195+
get => _querySearchPrecision;
198196
set
199197
{
200-
try
201-
{
202-
var precisionScore = (SearchPrecisionScore)Enum
203-
.Parse(typeof(SearchPrecisionScore), value);
204-
205-
QuerySearchPrecision = precisionScore;
206-
StringMatcher.Instance.UserSettingSearchPrecision = precisionScore;
207-
}
208-
catch (ArgumentException e)
209-
{
210-
Logger.Log.Exception(nameof(Settings), "Failed to load QuerySearchPrecisionString value from Settings file", e);
211-
212-
QuerySearchPrecision = SearchPrecisionScore.Regular;
213-
StringMatcher.Instance.UserSettingSearchPrecision = SearchPrecisionScore.Regular;
214-
215-
throw;
216-
}
198+
_querySearchPrecision = value;
199+
if (StringMatcher.Instance != null)
200+
StringMatcher.Instance.UserSettingSearchPrecision = value;
217201
}
218202
}
219203

Flow.Launcher/Languages/en.xaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@
7979
<system:String x:Key="hideNotifyIconToolTip">When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window.</system:String>
8080
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
8181
<system:String x:Key="querySearchPrecisionToolTip">Changes minimum match score required for results.</system:String>
82+
<system:String x:Key="SearchPrecisionNone">None</system:String>
83+
<system:String x:Key="SearchPrecisionLow">Low</system:String>
84+
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
8285
<system:String x:Key="ShouldUsePinyin">Search with Pinyin</system:String>
8386
<system:String x:Key="ShouldUsePinyinToolTip">Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese.</system:String>
8487
<system:String x:Key="AlwaysPreview">Always Preview</system:String>

Flow.Launcher/Languages/ru.xaml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
<?xml version="1.0"?>
2-
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib">
1+
<?xml version="1.0" ?>
2+
<ResourceDictionary
3+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5+
xmlns:system="clr-namespace:System;assembly=mscorlib">
36
<!-- MainWindow -->
47
<system:String x:Key="registerHotkeyFailed">Не удалось зарегистрировать сочетание клавиш &quot;{0}&quot;. Возможно, оно используется другой программой. Измените сочетание клавиш или закройте другую программу.</system:String>
58
<system:String x:Key="MessageBoxTitle">Flow Launcher</system:String>
@@ -75,6 +78,9 @@
7578
<system:String x:Key="hideNotifyIconToolTip">Когда значок скрыт в трее, меню настройки можно открыть, щёлкнув правой кнопкой мыши на окне поиска.</system:String>
7679
<system:String x:Key="querySearchPrecision">Точность поиска запросов</system:String>
7780
<system:String x:Key="querySearchPrecisionToolTip">Изменение минимального количества совпадений при поиске, необходимого для получения результатов.</system:String>
81+
<system:String x:Key="SearchPrecisionNone">Нет</system:String>
82+
<system:String x:Key="SearchPrecisionLow">Низкая</system:String>
83+
<system:String x:Key="SearchPrecisionRegular">Обычная</system:String>
7884
<system:String x:Key="ShouldUsePinyin">Поиск с использованием пиньинь</system:String>
7985
<system:String x:Key="ShouldUsePinyinToolTip">Позволяет использовать пиньинь для поиска. Пиньинь - это стандартная система латинизированной орфографии для перевода китайского языка.</system:String>
8086
<system:String x:Key="AlwaysPreview">Всегда предпросмотр</system:String>

Flow.Launcher/SettingPages/ViewModels/DropdownDataGeneric.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ namespace Flow.Launcher.SettingPages.ViewModels;
88
public class DropdownDataGeneric<TValue> : BaseModel where TValue : Enum
99
{
1010
public string Display { get; set; }
11-
public TValue Value { get; set; }
11+
public TValue Value { get; private init; }
12+
private string LocalizationKey { get; init; }
1213

1314
public static List<TR> GetValues<TR>(string keyPrefix) where TR : DropdownDataGeneric<TValue>, new()
1415
{
@@ -19,9 +20,17 @@ public class DropdownDataGeneric<TValue> : BaseModel where TValue : Enum
1920
{
2021
var key = keyPrefix + value;
2122
var display = InternationalizationManager.Instance.GetTranslation(key);
22-
data.Add(new TR { Display = display, Value = value });
23+
data.Add(new TR { Display = display, Value = value, LocalizationKey = key });
2324
}
2425

2526
return data;
2627
}
28+
29+
public static void UpdateLabels<TR>(List<TR> options) where TR : DropdownDataGeneric<TValue>
30+
{
31+
foreach (var item in options)
32+
{
33+
item.Display = InternationalizationManager.Instance.GetTranslation(item.LocalizationKey);
34+
}
35+
}
2736
}

Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs

Lines changed: 20 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ public SettingsPaneGeneralViewModel(Settings settings, Updater updater, IPortabl
2424
Settings = settings;
2525
_updater = updater;
2626
_portable = portable;
27-
UpdateLastQueryModeDisplay();
27+
UpdateEnumDropdownLocalizations();
2828
}
2929

30-
public class SearchWindowScreen : DropdownDataGeneric<SearchWindowScreens> { }
31-
public class SearchWindowAlign : DropdownDataGeneric<SearchWindowAligns> { }
32-
// todo a better name?
33-
public class LastQueryMode : DropdownDataGeneric<Infrastructure.UserSettings.LastQueryMode> { }
30+
public class SearchWindowScreenData : DropdownDataGeneric<SearchWindowScreens> { }
31+
public class SearchWindowAlignData : DropdownDataGeneric<SearchWindowAligns> { }
32+
public class SearchPrecisionData : DropdownDataGeneric<SearchPrecisionScore> { }
33+
public class LastQueryModeData : DropdownDataGeneric<LastQueryMode> { }
3434

3535
public bool StartFlowLauncherOnSystemStartup
3636
{
@@ -55,11 +55,14 @@ public bool StartFlowLauncherOnSystemStartup
5555
}
5656

5757

58-
public List<SearchWindowScreen> SearchWindowScreens =>
59-
DropdownDataGeneric<SearchWindowScreens>.GetValues<SearchWindowScreen>("SearchWindowScreen");
58+
public List<SearchWindowScreenData> SearchWindowScreens { get; } =
59+
DropdownDataGeneric<SearchWindowScreens>.GetValues<SearchWindowScreenData>("SearchWindowScreen");
6060

61-
public List<SearchWindowAlign> SearchWindowAligns =>
62-
DropdownDataGeneric<SearchWindowAligns>.GetValues<SearchWindowAlign>("SearchWindowAlign");
61+
public List<SearchWindowAlignData> SearchWindowAligns { get; } =
62+
DropdownDataGeneric<SearchWindowAligns>.GetValues<SearchWindowAlignData>("SearchWindowAlign");
63+
64+
public List<SearchPrecisionData> SearchPrecisionScores { get; } =
65+
DropdownDataGeneric<SearchPrecisionScore>.GetValues<SearchPrecisionData>("SearchPrecision");
6366

6467
public List<int> ScreenNumbers
6568
{
@@ -98,29 +101,15 @@ public bool PortableMode
98101
}
99102
}
100103

101-
private List<LastQueryMode> _lastQueryModes = new();
104+
public List<LastQueryModeData> LastQueryModes { get; } =
105+
DropdownDataGeneric<LastQueryMode>.GetValues<LastQueryModeData>("LastQuery");
102106

103-
public List<LastQueryMode> LastQueryModes
107+
private void UpdateEnumDropdownLocalizations()
104108
{
105-
get
106-
{
107-
if (_lastQueryModes.Count == 0)
108-
{
109-
_lastQueryModes =
110-
DropdownDataGeneric<Infrastructure.UserSettings.LastQueryMode>
111-
.GetValues<LastQueryMode>("LastQuery");
112-
}
113-
114-
return _lastQueryModes;
115-
}
116-
}
117-
118-
private void UpdateLastQueryModeDisplay()
119-
{
120-
foreach (var item in LastQueryModes)
121-
{
122-
item.Display = InternationalizationManager.Instance.GetTranslation($"LastQuery{item.Value}");
123-
}
109+
DropdownDataGeneric<SearchWindowScreens>.UpdateLabels(SearchWindowScreens);
110+
DropdownDataGeneric<SearchWindowAligns>.UpdateLabels(SearchWindowAligns);
111+
DropdownDataGeneric<SearchPrecisionScore>.UpdateLabels(SearchPrecisionScores);
112+
DropdownDataGeneric<LastQueryMode>.UpdateLabels(LastQueryModes);
124113
}
125114

126115
public string Language
@@ -133,7 +122,7 @@ public string Language
133122
if (InternationalizationManager.Instance.PromptShouldUsePinyin(value))
134123
ShouldUsePinyin = true;
135124

136-
UpdateLastQueryModeDisplay();
125+
UpdateEnumDropdownLocalizations();
137126
}
138127
}
139128

@@ -143,12 +132,6 @@ public bool ShouldUsePinyin
143132
set => Settings.ShouldUsePinyin = value;
144133
}
145134

146-
public List<string> QuerySearchPrecisionStrings => Enum
147-
.GetValues(typeof(SearchPrecisionScore))
148-
.Cast<SearchPrecisionScore>()
149-
.Select(v => v.ToString())
150-
.ToList();
151-
152135
public List<Language> Languages => InternationalizationManager.Instance.LoadAvailableLanguages();
153136

154137
public string AlwaysPreviewToolTip => string.Format(

Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml

Lines changed: 46 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,31 @@
3030
TextAlignment="left" />
3131

3232
<cc:Card Title="{DynamicResource startFlowLauncherOnSystemStartup}" Icon="&#xe8fc;">
33-
<ui:ToggleSwitch IsOn="{Binding StartFlowLauncherOnSystemStartup}" />
33+
<ui:ToggleSwitch
34+
IsOn="{Binding StartFlowLauncherOnSystemStartup}"
35+
OffContent="{DynamicResource disable}"
36+
OnContent="{DynamicResource enable}" />
3437
</cc:Card>
3538

3639
<cc:Card Title="{DynamicResource hideOnStartup}" Icon="&#xed1a;">
37-
<ui:ToggleSwitch IsOn="{Binding Settings.HideOnStartup}" />
40+
<ui:ToggleSwitch
41+
IsOn="{Binding Settings.HideOnStartup}"
42+
OffContent="{DynamicResource disable}"
43+
OnContent="{DynamicResource enable}" />
3844
</cc:Card>
3945

4046
<cc:Card Title="{DynamicResource hideFlowLauncherWhenLoseFocus}" Margin="0 30 0 0">
41-
<ui:ToggleSwitch IsOn="{Binding Settings.HideWhenDeactivated}" />
47+
<ui:ToggleSwitch
48+
IsOn="{Binding Settings.HideWhenDeactivated}"
49+
OffContent="{DynamicResource disable}"
50+
OnContent="{DynamicResource enable}" />
4251
</cc:Card>
4352

4453
<cc:Card Title="{DynamicResource hideNotifyIcon}" Sub="{DynamicResource hideNotifyIconToolTip}">
45-
<ui:ToggleSwitch IsOn="{Binding Settings.HideNotifyIcon}" />
54+
<ui:ToggleSwitch
55+
IsOn="{Binding Settings.HideNotifyIcon}"
56+
OffContent="{DynamicResource disable}"
57+
OnContent="{DynamicResource enable}" />
4658
</cc:Card>
4759

4860
<cc:CardGroup Margin="0 30 0 0">
@@ -111,37 +123,52 @@
111123
Title="{DynamicResource ignoreHotkeysOnFullscreen}"
112124
Icon="&#xe7fc;"
113125
Sub="{DynamicResource ignoreHotkeysOnFullscreenToolTip}">
114-
<ui:ToggleSwitch IsOn="{Binding Settings.IgnoreHotkeysOnFullscreen}" />
126+
<ui:ToggleSwitch
127+
IsOn="{Binding Settings.IgnoreHotkeysOnFullscreen}"
128+
OffContent="{DynamicResource disable}"
129+
OnContent="{DynamicResource enable}" />
115130
</cc:Card>
116131

117132
<cc:Card
118133
Title="{DynamicResource AlwaysPreview}"
119134
Margin="0 30 0 0"
120135
Icon="&#xe8a1;"
121136
Sub="{DynamicResource AlwaysPreviewToolTip}">
122-
<ui:ToggleSwitch IsOn="{Binding Settings.AlwaysPreview}" ToolTip="{Binding AlwaysPreviewToolTip}" />
137+
<ui:ToggleSwitch
138+
IsOn="{Binding Settings.AlwaysPreview}"
139+
OffContent="{DynamicResource disable}"
140+
OnContent="{DynamicResource enable}"
141+
ToolTip="{Binding AlwaysPreviewToolTip}" />
123142
</cc:Card>
124143

125144
<cc:Card
126145
Title="{DynamicResource autoUpdates}"
127146
Margin="0 30 0 0"
128147
Icon="&#xecc5;">
129-
<ui:ToggleSwitch IsOn="{Binding AutoUpdates}" />
148+
<ui:ToggleSwitch
149+
IsOn="{Binding AutoUpdates}"
150+
OffContent="{DynamicResource disable}"
151+
OnContent="{DynamicResource enable}" />
130152
</cc:Card>
131153

132154
<cc:Card
133155
Title="{DynamicResource portableMode}"
134156
Icon="&#xe88e;"
135157
Sub="{DynamicResource portableModeToolTIp}">
136-
<ui:ToggleSwitch IsOn="{Binding PortableMode}" />
158+
<ui:ToggleSwitch
159+
IsOn="{Binding PortableMode}"
160+
OffContent="{DynamicResource disable}"
161+
OnContent="{DynamicResource enable}" />
137162
</cc:Card>
138163

139164
<cc:CardGroup Margin="0 30 0 0">
140165
<cc:Card Title="{DynamicResource querySearchPrecision}" Sub="{DynamicResource querySearchPrecisionToolTip}">
141166
<ComboBox
142167
MaxWidth="200"
143-
ItemsSource="{Binding QuerySearchPrecisionStrings}"
144-
SelectedItem="{Binding Settings.QuerySearchPrecisionString}" />
168+
DisplayMemberPath="Display"
169+
ItemsSource="{Binding SearchPrecisionScores}"
170+
SelectedValue="{Binding Settings.QuerySearchPrecision}"
171+
SelectedValuePath="Value" />
145172
</cc:Card>
146173

147174
<cc:Card Title="{DynamicResource lastQueryMode}" Sub="{DynamicResource lastQueryModeToolTip}">
@@ -211,14 +238,21 @@
211238
Margin="0 30 0 0"
212239
Icon="&#xe8d3;"
213240
Sub="{DynamicResource typingStartEnTooltip}">
214-
<ui:ToggleSwitch IsOn="{Binding Settings.AlwaysStartEn}" />
241+
<ui:ToggleSwitch
242+
IsOn="{Binding Settings.AlwaysStartEn}"
243+
OffContent="{DynamicResource disable}"
244+
OnContent="{DynamicResource enable}" />
215245
</cc:Card>
216246

217247
<cc:Card
218248
Title="{DynamicResource ShouldUsePinyin}"
219249
Icon="&#xe98a;"
220250
Sub="{DynamicResource ShouldUsePinyinToolTip}">
221-
<ui:ToggleSwitch IsOn="{Binding Settings.ShouldUsePinyin}" ToolTip="{DynamicResource ShouldUsePinyinToolTip}" />
251+
<ui:ToggleSwitch
252+
IsOn="{Binding Settings.ShouldUsePinyin}"
253+
OffContent="{DynamicResource disable}"
254+
OnContent="{DynamicResource enable}"
255+
ToolTip="{DynamicResource ShouldUsePinyinToolTip}" />
222256
</cc:Card>
223257

224258
<cc:Card

Flow.Launcher/SettingPages/Views/SettingsPaneHotkey.xaml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,11 @@
6363
SelectedValue="{Binding Settings.OpenResultModifiers}" />
6464
</cc:Card>
6565

66-
<cc:Card
67-
Title="{DynamicResource showOpenResultHotkey}"
68-
Sub="{DynamicResource showOpenResultHotkeyToolTip}">
69-
<ui:ToggleSwitch IsOn="{Binding Settings.ShowOpenResultHotkey}" />
66+
<cc:Card Title="{DynamicResource showOpenResultHotkey}" Sub="{DynamicResource showOpenResultHotkeyToolTip}">
67+
<ui:ToggleSwitch
68+
IsOn="{Binding Settings.ShowOpenResultHotkey}"
69+
OffContent="{DynamicResource disable}"
70+
OnContent="{DynamicResource enable}" />
7071
</cc:Card>
7172
</cc:CardGroup>
7273

Flow.Launcher/SettingPages/Views/SettingsPaneProxy.xaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@
3333

3434
<cc:CardGroup>
3535
<cc:Card Title="{DynamicResource enableProxy}">
36-
<ui:ToggleSwitch IsOn="{Binding Settings.Proxy.Enabled}" />
36+
<ui:ToggleSwitch
37+
IsOn="{Binding Settings.Proxy.Enabled}"
38+
OffContent="{DynamicResource disable}"
39+
OnContent="{DynamicResource enable}" />
3740
</cc:Card>
3841

3942
<cc:Card Title="{DynamicResource server}">

Plugins/Flow.Launcher.Plugin.Program/Languages/en.xaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
<system:String x:Key="flowlauncher_plugin_program_index_PATH_tooltip">When enabled, Flow will load programs from the PATH environment variable</system:String>
3333
<system:String x:Key="flowlauncher_plugin_program_enable_hidelnkpath">Hide app path</system:String>
3434
<system:String x:Key="flowlauncher_plugin_program_enable_hidelnkpath_tooltip">For executable files such as UWP or lnk, hide the file path from being visible</system:String>
35+
<system:String x:Key="flowlauncher_plugin_program_enable_hideuninstallers">Hide uninstallers</system:String>
36+
<system:String x:Key="flowlauncher_plugin_program_enable_hideuninstallers_tooltip">Hides programs with common uninstaller names, such as unins000.exe</system:String>
3537
<system:String x:Key="flowlauncher_plugin_program_enable_description">Search in Program Description</system:String>
3638
<system:String x:Key="flowlauncher_plugin_program_enable_description_tooltip">Flow will search program's description</system:String>
3739
<system:String x:Key="flowlauncher_plugin_program_suffixes_header">Suffixes</system:String>
@@ -92,4 +94,4 @@
9294
<system:String x:Key="flowlauncher_plugin_program_run_as_administrator_not_supported_message">This app is not intended to be run as administrator</system:String>
9395
<system:String x:Key="flowlauncher_plugin_program_run_failed">Unable to run {0}</system:String>
9496

95-
</ResourceDictionary>
97+
</ResourceDictionary>

0 commit comments

Comments
 (0)