[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 clear_input_on_launch { get; set; }
public PowerLauncherProperties()
{
open_powerlauncher = new HotkeySettings();
@ -35,6 +37,7 @@ namespace Microsoft.PowerToys.Settings.UI.Lib
search_result_preference = "most_recently_used";
search_type_preference = "application_name";
ignore_hotkeys_in_fullscreen = false;
clear_input_on_launch = false;
}
}
}

View File

@ -253,6 +253,9 @@
<data name="PowerLauncher_IgnoreHotkeysInFullScreen.Content" xml:space="preserve">
<value>Ignore hotkeys in fullscreen mode</value>
</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">
<value>To:</value>
<comment>Keyboard Manager mapping keys view right header</comment>

View File

@ -236,21 +236,38 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
}
}
public bool IgnoreHotkeysInFullScreen
{
get
{
return settings.properties.ignore_hotkeys_in_fullscreen;
}
set
{
if (settings.properties.ignore_hotkeys_in_fullscreen != value)
{
settings.properties.ignore_hotkeys_in_fullscreen = value;
UpdateSettings();
}
}
public bool IgnoreHotkeysInFullScreen
{
get
{
return settings.properties.ignore_hotkeys_in_fullscreen;
}
set
{
if (settings.properties.ignore_hotkeys_in_fullscreen != value)
{
settings.properties.ignore_hotkeys_in_fullscreen = value;
UpdateSettings();
}
}
}
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}"
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
x:Name="SidePanel"

View File

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

View File

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

View File

@ -151,9 +151,17 @@ namespace PowerLauncher
_settings.WindowLeft = Left;
}
private void OnActivated(object sender, EventArgs e)
{
if (_settings.ClearInputOnLaunch)
{
_viewModel.ClearQueryCommand.Execute(null);
}
}
private void OnDeactivated(object sender, EventArgs e)
{
if (_settings.HideWhenDeactivated)
if (_settings.HideWhenDeactivated)
{
//(this.FindResource("OutroStoryboard") as Storyboard).Begin();
Hide();

View File

@ -65,6 +65,11 @@ namespace PowerLauncher
{
_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.
// 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 HideWhenDeactivated { get; set; } = true;
public bool ClearInputOnLaunch { get; set; } = false;
public bool RememberLastLaunchLocation { get; set; }
public bool IgnoreHotkeysOnFullscreen { get; set; }

View File

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