Skip to content

Commit 81c816b

Browse files
authored
Merge branch 'dev' into fix-english-only-hotkey-registration-message
2 parents b232100 + 3d1434f commit 81c816b

File tree

8 files changed

+103
-81
lines changed

8 files changed

+103
-81
lines changed

Flow.Launcher.Infrastructure/UserSettings/Settings.cs

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

180+
private SearchPrecisionScore _querySearchPrecision = SearchPrecisionScore.Regular;
180181
[JsonInclude, JsonConverter(typeof(JsonStringEnumConverter))]
181-
public SearchPrecisionScore QuerySearchPrecision { get; private set; } = SearchPrecisionScore.Regular;
182-
183-
[JsonIgnore]
184-
public string QuerySearchPrecisionString
182+
public SearchPrecisionScore QuerySearchPrecision
185183
{
186-
get { return QuerySearchPrecision.ToString(); }
184+
get => _querySearchPrecision;
187185
set
188186
{
189-
try
190-
{
191-
var precisionScore = (SearchPrecisionScore)Enum
192-
.Parse(typeof(SearchPrecisionScore), value);
193-
194-
QuerySearchPrecision = precisionScore;
195-
StringMatcher.Instance.UserSettingSearchPrecision = precisionScore;
196-
}
197-
catch (ArgumentException e)
198-
{
199-
Logger.Log.Exception(nameof(Settings), "Failed to load QuerySearchPrecisionString value from Settings file", e);
200-
201-
QuerySearchPrecision = SearchPrecisionScore.Regular;
202-
StringMatcher.Instance.UserSettingSearchPrecision = SearchPrecisionScore.Regular;
203-
204-
throw;
205-
}
187+
_querySearchPrecision = value;
188+
if (StringMatcher.Instance != null)
189+
StringMatcher.Instance.UserSettingSearchPrecision = value;
206190
}
207191
}
208192

Flow.Launcher/Languages/en.xaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@
7777
<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>
7878
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
7979
<system:String x:Key="querySearchPrecisionToolTip">Changes minimum match score required for results.</system:String>
80+
<system:String x:Key="SearchPrecisionNone">None</system:String>
81+
<system:String x:Key="SearchPrecisionLow">Low</system:String>
82+
<system:String x:Key="SearchPrecisionRegular">Regular</system:String>
8083
<system:String x:Key="ShouldUsePinyin">Search with Pinyin</system:String>
8184
<system:String x:Key="ShouldUsePinyinToolTip">Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese.</system:String>
8285
<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
public IEnumerable<int> MaxResultsRange => Enumerable.Range(2, 16);
154137

Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml

Lines changed: 46 additions & 13 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">
@@ -107,38 +119,53 @@
107119
Title="{DynamicResource ignoreHotkeysOnFullscreen}"
108120
Icon="&#xe7fc;"
109121
Sub="{DynamicResource ignoreHotkeysOnFullscreenToolTip}">
110-
<ui:ToggleSwitch IsOn="{Binding Settings.IgnoreHotkeysOnFullscreen}" />
122+
<ui:ToggleSwitch
123+
IsOn="{Binding Settings.IgnoreHotkeysOnFullscreen}"
124+
OffContent="{DynamicResource disable}"
125+
OnContent="{DynamicResource enable}" />
111126
</cc:Card>
112127

113128
<cc:Card
114129
Title="{DynamicResource AlwaysPreview}"
115130
Margin="0 30 0 0"
116131
Icon="&#xe8a1;"
117132
Sub="{DynamicResource AlwaysPreviewToolTip}">
118-
<ui:ToggleSwitch IsOn="{Binding Settings.AlwaysPreview}" ToolTip="{Binding AlwaysPreviewToolTip}" />
133+
<ui:ToggleSwitch
134+
IsOn="{Binding Settings.AlwaysPreview}"
135+
OffContent="{DynamicResource disable}"
136+
OnContent="{DynamicResource enable}"
137+
ToolTip="{Binding AlwaysPreviewToolTip}" />
119138
</cc:Card>
120139

121140
<cc:Card
122141
Title="{DynamicResource autoUpdates}"
123142
Margin="0 30 0 0"
124143
Icon="&#xecc5;">
125-
<ui:ToggleSwitch IsOn="{Binding AutoUpdates}" />
144+
<ui:ToggleSwitch
145+
IsOn="{Binding AutoUpdates}"
146+
OffContent="{DynamicResource disable}"
147+
OnContent="{DynamicResource enable}" />
126148
</cc:Card>
127149

128150
<cc:Card
129151
Title="{DynamicResource portableMode}"
130152
Icon="&#xe88e;"
131153
Sub="{DynamicResource portableModeToolTIp}">
132-
<ui:ToggleSwitch IsOn="{Binding PortableMode}" />
154+
<ui:ToggleSwitch
155+
IsOn="{Binding PortableMode}"
156+
OffContent="{DynamicResource disable}"
157+
OnContent="{DynamicResource enable}" />
133158
</cc:Card>
134159

135160
<cc:CardGroup Margin="0 30 0 0">
136161
<cc:Card Title="{DynamicResource querySearchPrecision}"
137162
Sub="{DynamicResource querySearchPrecisionToolTip}">
138163
<ComboBox
139164
MaxWidth="200"
140-
ItemsSource="{Binding QuerySearchPrecisionStrings}"
141-
SelectedItem="{Binding Settings.QuerySearchPrecisionString}" />
165+
DisplayMemberPath="Display"
166+
ItemsSource="{Binding SearchPrecisionScores}"
167+
SelectedValue="{Binding Settings.QuerySearchPrecision}"
168+
SelectedValuePath="Value" />
142169
</cc:Card>
143170

144171
<cc:Card Title="{DynamicResource lastQueryMode}" Sub="{DynamicResource lastQueryModeToolTip}">
@@ -216,15 +243,21 @@
216243
Margin="0 30 0 0"
217244
Icon="&#xe8d3;"
218245
Sub="{DynamicResource typingStartEnTooltip}">
219-
<ui:ToggleSwitch IsOn="{Binding Settings.AlwaysStartEn}" />
246+
<ui:ToggleSwitch
247+
IsOn="{Binding Settings.AlwaysStartEn}"
248+
OffContent="{DynamicResource disable}"
249+
OnContent="{DynamicResource enable}" />
220250
</cc:Card>
221251

222252
<cc:Card
223253
Title="{DynamicResource ShouldUsePinyin}"
224254
Icon="&#xe98a;"
225255
Sub="{DynamicResource ShouldUsePinyinToolTip}">
226-
<ui:ToggleSwitch IsOn="{Binding Settings.ShouldUsePinyin}"
227-
ToolTip="{DynamicResource ShouldUsePinyinToolTip}" />
256+
<ui:ToggleSwitch
257+
IsOn="{Binding Settings.ShouldUsePinyin}"
258+
OffContent="{DynamicResource disable}"
259+
OnContent="{DynamicResource enable}"
260+
ToolTip="{DynamicResource ShouldUsePinyinToolTip}" />
228261
</cc:Card>
229262

230263
<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}">

0 commit comments

Comments
 (0)