2121using System . Threading . Channels ;
2222using ISavable = Flow . Launcher . Plugin . ISavable ;
2323using System . Windows . Threading ;
24+ using NHotkey ;
25+
2426
2527namespace Flow . Launcher . ViewModel
2628{
@@ -108,7 +110,9 @@ async Task updateAction()
108110 }
109111
110112 Log . Error ( "MainViewModel" , "Unexpected ResultViewUpdate ends" ) ;
111- } ;
113+ }
114+
115+ ;
112116
113117 void continueAction ( Task t )
114118 {
@@ -145,6 +149,24 @@ private void RegisterResultsUpdatedEvent()
145149 }
146150 }
147151
152+ private void UpdateLastQUeryMode ( )
153+ {
154+ switch ( _settings . LastQueryMode )
155+ {
156+ case LastQueryMode . Empty :
157+ ChangeQueryText ( string . Empty ) ;
158+ break ;
159+ case LastQueryMode . Preserved :
160+ LastQuerySelected = true ;
161+ break ;
162+ case LastQueryMode . Selected :
163+ LastQuerySelected = false ;
164+ break ;
165+ default :
166+ throw new ArgumentException ( $ "wrong LastQueryMode: <{ _settings . LastQueryMode } >") ;
167+
168+ }
169+ }
148170
149171 private void InitializeKeyCommands ( )
150172 {
@@ -156,7 +178,18 @@ private void InitializeKeyCommands()
156178 }
157179 else
158180 {
159- MainWindowVisibility = Visibility . Collapsed ;
181+ Hide ( ) ;
182+ }
183+ } ) ;
184+
185+ ClearQueryCommand = new RelayCommand ( _ =>
186+ {
187+ if ( ! string . IsNullOrEmpty ( QueryText ) )
188+ {
189+ ChangeQueryText ( string . Empty ) ;
190+
191+ // Push Event to UI SystemQuery has changed
192+ //OnPropertyChanged(nameof(SystemQueryText));
160193 }
161194 } ) ;
162195
@@ -194,7 +227,7 @@ private void InitializeKeyCommands()
194227
195228 if ( hideWindow )
196229 {
197- MainWindowVisibility = Visibility . Collapsed ;
230+ Hide ( ) ;
198231 }
199232
200233 if ( SelectedIsFromQueryResults ( ) )
@@ -244,7 +277,7 @@ private void InitializeKeyCommands()
244277 Owner = Application . Current . MainWindow
245278 } ;
246279
247- MainWindowVisibility = Visibility . Collapsed ;
280+ Hide ( ) ;
248281
249282 PluginManager
250283 . ReloadData ( )
@@ -343,7 +376,6 @@ private ResultsViewModel SelectedResults
343376 }
344377
345378 public Visibility ProgressBarVisibility { get ; set ; }
346-
347379 public Visibility MainWindowVisibility { get ; set ; }
348380
349381 public ICommand EscCommand { get ; set ; }
@@ -357,6 +389,7 @@ private ResultsViewModel SelectedResults
357389 public ICommand LoadHistoryCommand { get ; set ; }
358390 public ICommand OpenResultCommand { get ; set ; }
359391 public ICommand ReloadPluginDataCommand { get ; set ; }
392+ public ICommand ClearQueryCommand { get ; private set ; }
360393
361394 public string OpenResultCommandModifiers { get ; private set ; }
362395
@@ -668,20 +701,56 @@ private void SetOpenResultModifiers()
668701 OpenResultCommandModifiers = _settings . OpenResultModifiers ?? DefaultOpenResultModifiers ;
669702 }
670703
671- internal void ToggleFlowLauncher ( )
704+ public async void ToggleFlowLauncher ( )
672705 {
673706 if ( MainWindowVisibility != Visibility . Visible )
674707 {
675708 MainWindowVisibility = Visibility . Visible ;
676709 }
677710 else
678711 {
712+ switch ( _settings . LastQueryMode )
713+ {
714+ case LastQueryMode . Empty :
715+ ChangeQueryText ( string . Empty ) ;
716+ Application . Current . MainWindow . Opacity = 0 ; // Trick for no delay
717+ await Task . Delay ( 100 ) ;
718+ Application . Current . MainWindow . Opacity = 1 ;
719+ break ;
720+ case LastQueryMode . Preserved :
721+ LastQuerySelected = true ;
722+ break ;
723+ case LastQueryMode . Selected :
724+ LastQuerySelected = false ;
725+ break ;
726+ default :
727+ throw new ArgumentException ( $ "wrong LastQueryMode: <{ _settings . LastQueryMode } >") ;
728+ }
679729 MainWindowVisibility = Visibility . Collapsed ;
680730 }
681731 }
682732
733+ public void Hide ( )
734+ {
735+ if ( MainWindowVisibility != Visibility . Collapsed )
736+ {
737+ ToggleFlowLauncher ( ) ;
738+ }
739+ }
740+
683741 #endregion
684742
743+
744+ /// <summary>
745+ /// Checks if Flow Launcher should ignore any hotkeys
746+ /// </summary>
747+ public bool ShouldIgnoreHotkeys ( )
748+ {
749+ return _settings . IgnoreHotkeysOnFullscreen && WindowsInteropHelper . IsWindowFullscreen ( ) ;
750+ }
751+
752+
753+
685754 #region Public Methods
686755
687756 public void Save ( )
0 commit comments