diff --git a/Flow.Launcher.Infrastructure/KeyConstant.cs b/Flow.Launcher.Infrastructure/KeyConstant.cs
new file mode 100644
index 000000000..317485176
--- /dev/null
+++ b/Flow.Launcher.Infrastructure/KeyConstant.cs
@@ -0,0 +1,9 @@
+namespace Flow.Launcher.Infrastructure
+{
+ public static class KeyConstant
+ {
+ public const string Ctrl = nameof(Ctrl);
+ public const string Alt = nameof(Alt);
+ public const string Space = nameof(Space);
+ }
+}
\ No newline at end of file
diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
index dbb47fd8e..84b0a7990 100644
--- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
+++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs
@@ -9,7 +9,9 @@ namespace Flow.Launcher.Infrastructure.UserSettings
{
public class Settings : BaseModel
{
- public string Hotkey { get; set; } = "Alt + Space";
+ public string Hotkey { get; set; } = $"{KeyConstant.Alt} + {KeyConstant.Space}";
+ public string OpenResultModifiers { get; set; } = KeyConstant.Alt;
+ public bool ShowOpenResultHotkey { get; set; } = true;
public string Language { get; set; } = "en";
public string Theme { get; set; } = "Dark";
public string QueryBoxFont { get; set; } = FontFamily.GenericSansSerif.Name;
diff --git a/Flow.Launcher/Converters/OpenResultHotkeyVisibilityConverter.cs b/Flow.Launcher/Converters/OpenResultHotkeyVisibilityConverter.cs
new file mode 100644
index 000000000..7de5af79a
--- /dev/null
+++ b/Flow.Launcher/Converters/OpenResultHotkeyVisibilityConverter.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+
+namespace Flow.Launcher.Converters
+{
+ [ValueConversion(typeof(bool), typeof(Visibility))]
+ public class OpenResultHotkeyVisibilityConverter : IValueConverter
+ {
+ private const int MaxVisibleHotkeys = 9;
+
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ var hotkeyNumber = int.MaxValue;
+
+ if (value is ListBoxItem listBoxItem)
+ {
+ ListBox listBox = ItemsControl.ItemsControlFromItemContainer(listBoxItem) as ListBox;
+ hotkeyNumber = listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1;
+ }
+
+ return hotkeyNumber <= MaxVisibleHotkeys ? Visibility.Visible : Visibility.Collapsed;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new System.InvalidOperationException();
+ }
+}
diff --git a/Flow.Launcher/Converters/OrdinalConverter.cs b/Flow.Launcher/Converters/OrdinalConverter.cs
new file mode 100644
index 000000000..970ed183c
--- /dev/null
+++ b/Flow.Launcher/Converters/OrdinalConverter.cs
@@ -0,0 +1,22 @@
+using System.Globalization;
+using System.Windows.Controls;
+using System.Windows.Data;
+
+namespace Flow.Launcher.Converters
+{
+ public class OrdinalConverter : IValueConverter
+ {
+ public object Convert(object value, System.Type targetType, object parameter, CultureInfo culture)
+ {
+ if (value is ListBoxItem listBoxItem)
+ {
+ ListBox listBox = ItemsControl.ItemsControlFromItemContainer(listBoxItem) as ListBox;
+ return listBox.ItemContainerGenerator.IndexFromContainer(listBoxItem) + 1;
+ }
+
+ return 0;
+ }
+
+ public object ConvertBack(object value, System.Type targetType, object parameter, CultureInfo culture) => throw new System.InvalidOperationException();
+ }
+}
diff --git a/Flow.Launcher/Languages/da.xaml b/Flow.Launcher/Languages/da.xaml
index 4c3d4bd85..e8ec05ef9 100644
--- a/Flow.Launcher/Languages/da.xaml
+++ b/Flow.Launcher/Languages/da.xaml
@@ -51,7 +51,9 @@
Genvejstast
Flow Launcher genvejstast
+ Åbn resultatmodifikatorer
Tilpasset søgegenvejstast
+ Vis hotkey
Slet
Rediger
Tilføj
diff --git a/Flow.Launcher/Languages/de.xaml b/Flow.Launcher/Languages/de.xaml
index d1eae3124..c2e77cc47 100644
--- a/Flow.Launcher/Languages/de.xaml
+++ b/Flow.Launcher/Languages/de.xaml
@@ -51,7 +51,9 @@
Tastenkombination
Flow Launcher Tastenkombination
+ Öffnen Sie die Ergebnismodifikatoren
Benutzerdefinierte Abfrage Tastenkombination
+ Hotkey anzeigen
Löschen
Bearbeiten
Hinzufügen
diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml
index 46519f058..c33093cab 100644
--- a/Flow.Launcher/Languages/en.xaml
+++ b/Flow.Launcher/Languages/en.xaml
@@ -60,6 +60,8 @@
Hotkey
Flow Launcher Hotkey
+ Open Result Modifiers
+ Show Hotkey
Custom Query Hotkey
Delete
Edit
diff --git a/Flow.Launcher/Languages/fr.xaml b/Flow.Launcher/Languages/fr.xaml
index 4ceb06249..753ccfdfa 100644
--- a/Flow.Launcher/Languages/fr.xaml
+++ b/Flow.Launcher/Languages/fr.xaml
@@ -55,7 +55,9 @@
Raccourcis
Ouvrir Flow Launcher
+ Modificateurs de résultats ouverts
Requêtes personnalisées
+ Afficher le raccourci clavier
Supprimer
Modifier
Ajouter
diff --git a/Flow.Launcher/Languages/it.xaml b/Flow.Launcher/Languages/it.xaml
index 381864f8a..f01b96bcc 100644
--- a/Flow.Launcher/Languages/it.xaml
+++ b/Flow.Launcher/Languages/it.xaml
@@ -55,7 +55,9 @@
Tasti scelta rapida
Tasto scelta rapida Flow Launcher
+ Apri modificatori di risultato
Tasti scelta rapida per ricerche personalizzate
+ Mostra tasto di scelta rapida
Cancella
Modifica
Aggiungi
diff --git a/Flow.Launcher/Languages/ja.xaml b/Flow.Launcher/Languages/ja.xaml
index 0fd5e3e79..c6cabdce9 100644
--- a/Flow.Launcher/Languages/ja.xaml
+++ b/Flow.Launcher/Languages/ja.xaml
@@ -58,7 +58,9 @@
ホットキー
Flow Launcher ホットキー
+ 結果修飾子を開く
カスタムクエリ ホットキー
+ ホットキーを表示
削除
編集
追加
diff --git a/Flow.Launcher/Languages/ko.xaml b/Flow.Launcher/Languages/ko.xaml
index 2f7d538dc..c52e1cb23 100644
--- a/Flow.Launcher/Languages/ko.xaml
+++ b/Flow.Launcher/Languages/ko.xaml
@@ -55,7 +55,9 @@
핫키
Flow Launcher 핫키
+ 결과 수정 자 열기
사용자지정 쿼리 핫키
+ 단축키 표시
삭제
편집
추가
diff --git a/Flow.Launcher/Languages/nb-NO.xaml b/Flow.Launcher/Languages/nb-NO.xaml
index 035b0cbdf..453203b4d 100644
--- a/Flow.Launcher/Languages/nb-NO.xaml
+++ b/Flow.Launcher/Languages/nb-NO.xaml
@@ -55,7 +55,9 @@
Hurtigtast
Flow Launcher-hurtigtast
+ Åpne resultatmodifiserere
Egendefinerd spørringshurtigtast
+ Vis hurtigtast
Slett
Rediger
Legg til
diff --git a/Flow.Launcher/Languages/nl.xaml b/Flow.Launcher/Languages/nl.xaml
index be18beb9c..492ea5a8c 100644
--- a/Flow.Launcher/Languages/nl.xaml
+++ b/Flow.Launcher/Languages/nl.xaml
@@ -51,7 +51,9 @@
Sneltoets
Flow Launcher Sneltoets
+ Open resultaatmodificatoren
Custom Query Sneltoets
+ Sneltoets weergeven
Verwijder
Bewerken
Toevoegen
diff --git a/Flow.Launcher/Languages/pl.xaml b/Flow.Launcher/Languages/pl.xaml
index 249878ed3..95fa57bd2 100644
--- a/Flow.Launcher/Languages/pl.xaml
+++ b/Flow.Launcher/Languages/pl.xaml
@@ -51,7 +51,9 @@
Skrót klawiszowy
Skrót klawiszowy Flow Launcher
+ Modyfikatory klawiszów otwierających wyniki
Skrót klawiszowy niestandardowych zapytań
+ Pokaż skrót klawiszowy
Usuń
Edytuj
Dodaj
diff --git a/Flow.Launcher/Languages/pt-br.xaml b/Flow.Launcher/Languages/pt-br.xaml
index 2036744e8..d5d2bf76d 100644
--- a/Flow.Launcher/Languages/pt-br.xaml
+++ b/Flow.Launcher/Languages/pt-br.xaml
@@ -55,7 +55,9 @@
Atalho
Atalho do Flow Launcher
+ Modificadores de resultado aberto
Atalho de Consulta Personalizada
+ Mostrar tecla de atalho
Apagar
Editar
Adicionar
diff --git a/Flow.Launcher/Languages/ru.xaml b/Flow.Launcher/Languages/ru.xaml
index 66a463dcb..1855a210c 100644
--- a/Flow.Launcher/Languages/ru.xaml
+++ b/Flow.Launcher/Languages/ru.xaml
@@ -51,7 +51,9 @@
Горячие клавиши
Горячая клавиша Flow Launcher
+ Модификаторы открытого результата
Задаваемые горячие клавиши для запросов
+ Показать Hotkey
Удалить
Изменить
Добавить
diff --git a/Flow.Launcher/Languages/sk.xaml b/Flow.Launcher/Languages/sk.xaml
index 824096c4c..deb79cde4 100644
--- a/Flow.Launcher/Languages/sk.xaml
+++ b/Flow.Launcher/Languages/sk.xaml
@@ -56,7 +56,9 @@
Klávesová skratka
Klávesová skratka pre Flow Launcher
+ Otvorte modifikátory výsledkov
Vlastná klávesová skratka pre dopyt
+ Zobraziť klávesovú skratku
Odstrániť
Upraviť
Pridať
diff --git a/Flow.Launcher/Languages/sr.xaml b/Flow.Launcher/Languages/sr.xaml
index 22aabb37f..1afff3fcf 100644
--- a/Flow.Launcher/Languages/sr.xaml
+++ b/Flow.Launcher/Languages/sr.xaml
@@ -55,6 +55,8 @@
Prečica
Flow Launcher prečica
+ Отворите модификаторе резултата
+ покажи хоткеи
prečica za ručno dodat upit
Obriši
Izmeni
diff --git a/Flow.Launcher/Languages/tr.xaml b/Flow.Launcher/Languages/tr.xaml
index cc287f372..04256d6b0 100644
--- a/Flow.Launcher/Languages/tr.xaml
+++ b/Flow.Launcher/Languages/tr.xaml
@@ -59,7 +59,9 @@
Kısayol Tuşu
Flow Launcher Kısayolu
+ Açık Sonuç Değiştiricileri
Özel Sorgu Kısayolları
+ Kısayol Tuşunu Göster
Sil
Düzenle
Ekle
diff --git a/Flow.Launcher/Languages/uk-UA.xaml b/Flow.Launcher/Languages/uk-UA.xaml
index c7e84c231..af65e0e63 100644
--- a/Flow.Launcher/Languages/uk-UA.xaml
+++ b/Flow.Launcher/Languages/uk-UA.xaml
@@ -51,7 +51,9 @@
Гарячі клавіші
Гаряча клавіша Flow Launcher
+ Відкриті модифікатори результатів
Задані гарячі клавіші для запитів
+ Показати клавішу швидкого доступу
Видалити
Змінити
Додати
diff --git a/Flow.Launcher/Languages/zh-cn.xaml b/Flow.Launcher/Languages/zh-cn.xaml
index 5801b678a..7367de366 100644
--- a/Flow.Launcher/Languages/zh-cn.xaml
+++ b/Flow.Launcher/Languages/zh-cn.xaml
@@ -58,6 +58,8 @@
热键
Flow Launcher激活热键
+ 开放结果修饰符
+ 显示热键
自定义查询热键
删除
编辑
diff --git a/Flow.Launcher/Languages/zh-tw.xaml b/Flow.Launcher/Languages/zh-tw.xaml
index f1df1a6d5..8cd3bbe8c 100644
--- a/Flow.Launcher/Languages/zh-tw.xaml
+++ b/Flow.Launcher/Languages/zh-tw.xaml
@@ -51,7 +51,9 @@
熱鍵
Flow Launcher 執行熱鍵
+ 開放結果修飾符
自定義熱鍵查詢
+ 顯示熱鍵
刪除
編輯
新增
diff --git a/Flow.Launcher/MainWindow.xaml b/Flow.Launcher/MainWindow.xaml
index 74185fcbd..485f58b47 100644
--- a/Flow.Launcher/MainWindow.xaml
+++ b/Flow.Launcher/MainWindow.xaml
@@ -48,15 +48,15 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/Flow.Launcher/ResultListBox.xaml b/Flow.Launcher/ResultListBox.xaml
index c9ca658f2..d21c014d6 100644
--- a/Flow.Launcher/ResultListBox.xaml
+++ b/Flow.Launcher/ResultListBox.xaml
@@ -33,6 +33,8 @@
Cursor="Hand" UseLayoutRounding="False">
+
+
@@ -46,6 +48,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Flow.Launcher/SettingWindow.xaml b/Flow.Launcher/SettingWindow.xaml
index be87e4f52..c8463f59a 100644
--- a/Flow.Launcher/SettingWindow.xaml
+++ b/Flow.Launcher/SettingWindow.xaml
@@ -287,9 +287,10 @@
+
-
+
-
+
+
+
+
+
+
+
+ Margin="0 5 0 0" Grid.Row="3">
@@ -322,7 +333,7 @@
-
diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs
index c677d7c71..c34bbade1 100644
--- a/Flow.Launcher/ViewModel/MainViewModel.cs
+++ b/Flow.Launcher/ViewModel/MainViewModel.cs
@@ -26,6 +26,8 @@ namespace Flow.Launcher.ViewModel
{
#region Private Fields
+ private const string DefaultOpenResultModifiers = "Alt";
+
private bool _isQueryRunning;
private Query _lastQuery;
private string _queryTextBeforeLeaveResults;
@@ -74,6 +76,7 @@ namespace Flow.Launcher.ViewModel
SetHotkey(_settings.Hotkey, OnHotkey);
SetCustomPluginHotkey();
+ SetOpenResultModifiers();
}
private void RegisterResultsUpdatedEvent()
@@ -277,6 +280,8 @@ namespace Flow.Launcher.ViewModel
public ICommand LoadHistoryCommand { get; set; }
public ICommand OpenResultCommand { get; set; }
+ public string OpenResultCommandModifiers { get; private set; }
+
#endregion
public void Query()
@@ -594,6 +599,11 @@ namespace Flow.Launcher.ViewModel
}
}
+ private void SetOpenResultModifiers()
+ {
+ OpenResultCommandModifiers = _settings.OpenResultModifiers ?? DefaultOpenResultModifiers;
+ }
+
private void OnHotkey(object sender, HotkeyEventArgs e)
{
if (!ShouldIgnoreHotkeys())
diff --git a/Flow.Launcher/ViewModel/ResultViewModel.cs b/Flow.Launcher/ViewModel/ResultViewModel.cs
index 69040ee25..0a9731f18 100644
--- a/Flow.Launcher/ViewModel/ResultViewModel.cs
+++ b/Flow.Launcher/ViewModel/ResultViewModel.cs
@@ -1,9 +1,11 @@
using System;
+using System.Windows;
using System.Windows.Media;
using System.Windows.Threading;
using Flow.Launcher.Infrastructure;
using Flow.Launcher.Infrastructure.Image;
using Flow.Launcher.Infrastructure.Logger;
+using Flow.Launcher.Infrastructure.UserSettings;
using Flow.Launcher.Plugin;
@@ -11,14 +13,22 @@ namespace Flow.Launcher.ViewModel
{
public class ResultViewModel : BaseModel
{
- public ResultViewModel(Result result)
+ public ResultViewModel(Result result, Settings settings)
{
if (result != null)
{
Result = result;
}
+
+ Settings = settings;
}
+ public Settings Settings { get; private set; }
+
+ public Visibility ShowOpenResultHotkey => Settings.ShowOpenResultHotkey ? Visibility.Visible : Visibility.Hidden;
+
+ public string OpenResultModifiers => Settings.OpenResultModifiers;
+
public ImageSource Image
{
get
diff --git a/Flow.Launcher/ViewModel/ResultsViewModel.cs b/Flow.Launcher/ViewModel/ResultsViewModel.cs
index 911cd5807..d30854180 100644
--- a/Flow.Launcher/ViewModel/ResultsViewModel.cs
+++ b/Flow.Launcher/ViewModel/ResultsViewModel.cs
@@ -156,7 +156,7 @@ namespace Flow.Launcher.ViewModel
private List NewResults(List newRawResults, string resultId)
{
var results = Results.ToList();
- var newResults = newRawResults.Select(r => new ResultViewModel(r)).ToList();
+ var newResults = newRawResults.Select(r => new ResultViewModel(r, _settings)).ToList();
var oldResults = results.Where(r => r.Result.PluginID == resultId).ToList();
// Find the same results in A (old results) and B (new newResults)
diff --git a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs
index 1a5d91a49..3899e7fbd 100644
--- a/Flow.Launcher/ViewModel/SettingWindowViewModel.cs
+++ b/Flow.Launcher/ViewModel/SettingWindowViewModel.cs
@@ -139,6 +139,7 @@ namespace Flow.Launcher.ViewModel
}
}
+ public List OpenResultModifiersList => new List { KeyConstant.Alt, KeyConstant.Ctrl, $"{KeyConstant.Ctrl}+{KeyConstant.Alt}" };
private Internationalization _translater => InternationalizationManager.Instance;
public List Languages => _translater.LoadAvailableLanguages();
public IEnumerable MaxResultsRange => Enumerable.Range(2, 16);