[PowerToys Run] Implemented Setting to Clear Search Query when PowerToys Run is Launched (#4995)

* Implemented Clear Input On Launch

* Move logic to seperate command on viewmodel

* Added Settings Sync
Moved logic from OnDeactivated to OnActivated

* Complete after testing

Co-authored-by: Roy <royvou@hotmailcom>
This commit is contained in:
Roy 2020-07-15 02:54:21 +02:00 committed by GitHub
parent f59abe23c3
commit 78946c11ea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 75 additions and 16 deletions

View File

@ -26,6 +26,8 @@ namespace Microsoft.PowerToys.Settings.UI.Lib
public bool ignore_hotkeys_in_fullscreen { get; set; } public bool ignore_hotkeys_in_fullscreen { get; set; }
public bool clear_input_on_launch { get; set; }
public PowerLauncherProperties() public PowerLauncherProperties()
{ {
open_powerlauncher = new HotkeySettings(); open_powerlauncher = new HotkeySettings();
@ -35,6 +37,7 @@ namespace Microsoft.PowerToys.Settings.UI.Lib
search_result_preference = "most_recently_used"; search_result_preference = "most_recently_used";
search_type_preference = "application_name"; search_type_preference = "application_name";
ignore_hotkeys_in_fullscreen = false; ignore_hotkeys_in_fullscreen = false;
clear_input_on_launch = false;
} }
} }
} }

View File

@ -253,6 +253,9 @@
<data name="PowerLauncher_IgnoreHotkeysInFullScreen.Content" xml:space="preserve"> <data name="PowerLauncher_IgnoreHotkeysInFullScreen.Content" xml:space="preserve">
<value>Ignore hotkeys in fullscreen mode</value> <value>Ignore hotkeys in fullscreen mode</value>
</data> </data>
<data name="PowerLauncher_ClearInputOnLaunch.Content" xml:space="preserve">
<value>Clear the previous query on launch</value>
</data>
<data name="KeyboardManager_KeysMappingLayoutRightHeader.Text" xml:space="preserve"> <data name="KeyboardManager_KeysMappingLayoutRightHeader.Text" xml:space="preserve">
<value>To:</value> <value>To:</value>
<comment>Keyboard Manager mapping keys view right header</comment> <comment>Keyboard Manager mapping keys view right header</comment>

View File

@ -252,5 +252,22 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
} }
} }
} }
public bool ClearInputOnLaunch
{
get
{
return settings.properties.clear_input_on_launch;
}
set
{
if (settings.properties.clear_input_on_launch != value)
{
settings.properties.clear_input_on_launch = value;
UpdateSettings();
}
}
}
} }
} }

View File

@ -134,6 +134,12 @@
IsChecked="{x:Bind Mode=TwoWay, Path=ViewModel.IgnoreHotkeysInFullScreen}" IsChecked="{x:Bind Mode=TwoWay, Path=ViewModel.IgnoreHotkeysInFullScreen}"
IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}" IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"
/> />
<CheckBox x:Uid="PowerLauncher_ClearInputOnLaunch"
Margin="{StaticResource SmallTopMargin}"
IsChecked="{x:Bind Mode=TwoWay, Path=ViewModel.ClearInputOnLaunch}"
IsEnabled="{x:Bind Mode=OneWay, Path=ViewModel.EnablePowerLauncher}"
/>
</StackPanel> </StackPanel>
<StackPanel <StackPanel
x:Name="SidePanel" x:Name="SidePanel"

View File

@ -131,5 +131,7 @@ namespace ViewModelTests
Assert.IsTrue(mockSettings.properties.override_win_r_key); Assert.IsTrue(mockSettings.properties.override_win_r_key);
Assert.IsFalse(mockSettings.properties.override_win_s_key); Assert.IsFalse(mockSettings.properties.override_win_s_key);
} }
} }
} }

View File

@ -20,6 +20,7 @@
Closing="OnClosing" Closing="OnClosing"
Background="Transparent" Background="Transparent"
LocationChanged="OnLocationChanged" LocationChanged="OnLocationChanged"
Activated="OnActivated"
Deactivated="OnDeactivated" Deactivated="OnDeactivated"
IsVisibleChanged="OnVisibilityChanged" IsVisibleChanged="OnVisibilityChanged"
Visibility="{Binding MainWindowVisibility, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Visibility="{Binding MainWindowVisibility, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

View File

@ -151,6 +151,14 @@ namespace PowerLauncher
_settings.WindowLeft = Left; _settings.WindowLeft = Left;
} }
private void OnActivated(object sender, EventArgs e)
{
if (_settings.ClearInputOnLaunch)
{
_viewModel.ClearQueryCommand.Execute(null);
}
}
private void OnDeactivated(object sender, EventArgs e) private void OnDeactivated(object sender, EventArgs e)
{ {
if (_settings.HideWhenDeactivated) if (_settings.HideWhenDeactivated)

View File

@ -65,6 +65,11 @@ namespace PowerLauncher
{ {
_settings.IgnoreHotkeysOnFullscreen = overloadSettings.properties.ignore_hotkeys_in_fullscreen; _settings.IgnoreHotkeysOnFullscreen = overloadSettings.properties.ignore_hotkeys_in_fullscreen;
} }
if (_settings.ClearInputOnLaunch != overloadSettings.properties.clear_input_on_launch)
{
_settings.ClearInputOnLaunch = overloadSettings.properties.clear_input_on_launch;
}
} }
// the settings application can hold a lock on the settings.json file which will result in a IOException. // the settings application can hold a lock on the settings.json file which will result in a IOException.
// This should be changed to properly synch with the settings app instead of retrying. // This should be changed to properly synch with the settings app instead of retrying.

View File

@ -129,6 +129,8 @@ namespace Wox.Infrastructure.UserSettings
} }
public bool LeaveCmdOpen { get; set; } public bool LeaveCmdOpen { get; set; }
public bool HideWhenDeactivated { get; set; } = true; public bool HideWhenDeactivated { get; set; } = true;
public bool ClearInputOnLaunch { get; set; } = false;
public bool RememberLastLaunchLocation { get; set; } public bool RememberLastLaunchLocation { get; set; }
public bool IgnoreHotkeysOnFullscreen { get; set; } public bool IgnoreHotkeysOnFullscreen { get; set; }

View File

@ -234,6 +234,16 @@ namespace Wox.ViewModel
SelectedResults = Results; SelectedResults = Results;
} }
}); });
ClearQueryCommand = new RelayCommand(_ =>
{
if(!string.IsNullOrEmpty(QueryText))
{
ChangeQueryText(string.Empty,true);
//Push Event to UI SystemQuery has changed
OnPropertyChanged(nameof(SystemQueryText));
}
});
} }
#endregion #endregion
@ -342,6 +352,8 @@ namespace Wox.ViewModel
public ICommand LoadContextMenuCommand { get; set; } public ICommand LoadContextMenuCommand { get; set; }
public ICommand LoadHistoryCommand { get; set; } public ICommand LoadHistoryCommand { get; set; }
public ICommand OpenResultCommand { get; set; } public ICommand OpenResultCommand { get; set; }
public ICommand ClearQueryCommand { get; set; }
#endregion #endregion