public MainViewModel(Settings settings) { _hotkeyManager = new HotkeyManager(); _saved = false; _queryTextBeforeLeaveResults = ""; _lastQuery = new Query(); _disposed = false; _settings = settings; _historyItemsStorage = new WoxJsonStorage <History>(); _userSelectedRecordStorage = new WoxJsonStorage <UserSelectedRecord>(); _topMostRecordStorage = new WoxJsonStorage <TopMostRecord>(); _history = _historyItemsStorage.Load(); _userSelectedRecord = _userSelectedRecordStorage.Load(); _topMostRecord = _topMostRecordStorage.Load(); ContextMenu = new ResultsViewModel(_settings); Results = new ResultsViewModel(_settings); History = new ResultsViewModel(_settings); _selectedResults = Results; InitializeKeyCommands(); RegisterResultsUpdatedEvent(); _settings.PropertyChanged += (s, e) => { if (e.PropertyName == nameof(Settings.Hotkey)) { Application.Current.Dispatcher.Invoke(() => { if (_settings.PreviousHotkey != "") { _hotkeyManager.UnregisterHotkey(_hotkeyHandle); } if (_settings.Hotkey != "") { SetHotkey(_settings.Hotkey, OnHotkey); } }); } }; SetHotkey(_settings.Hotkey, OnHotkey); SetCustomPluginHotkey(); }
private void InitializeContextMenu() { ContextMenu = new ResultsViewModel(_settings); ContextMenuVisibility = Visibility.Collapsed; }
private void InitializeResultListBox() { Results = new ResultsViewModel(_settings); ResultListBoxVisibility = Visibility.Collapsed; }
private void InitializeKeyCommands() { EscCommand = new RelayCommand(_ => { if (!ResultsSelected()) { SelectedResults = Results; MainWindowVisibility = Visibility.Collapsed; } else { MainWindowVisibility = Visibility.Collapsed; } }); SelectNextItemCommand = new RelayCommand(_ => { SelectedResults.SelectNextResult(); }); SelectPrevItemCommand = new RelayCommand(_ => { SelectedResults.SelectPrevResult(); }); SelectNextPageCommand = new RelayCommand(_ => { SelectedResults.SelectNextPage(); }); SelectPrevPageCommand = new RelayCommand(_ => { SelectedResults.SelectPrevPage(); }); StartHelpCommand = new RelayCommand(_ => { Process.Start("http://doc.wox.one/"); }); OpenResultCommand = new RelayCommand(index => { ResultsViewModel results = SelectedResults; if (index != null) { results.SelectedIndex = int.Parse(index.ToString()); } Result result = results.SelectedItem?.Result; if (result != null) // SelectedItem returns null if selection is empty. { bool hideWindow = result.Action != null && result.Action(new ActionContext { SpecialKeyState = GlobalHotkey.Instance.CheckModifiers() }); if (hideWindow) { MainWindowVisibility = Visibility.Collapsed; } if (ResultsSelected()) { _userSelectedRecord.Add(result); _history.Add(result.OriginQuery.RawQuery); if (result.historySave != null) { addSearchHistory(result.PluginID, result.historySave); } } } }); LoadContextMenuCommand = new RelayCommand(_ => { if (ResultsSelected()) { SelectedResults = ContextMenu; } else { SelectedResults = Results; } }); LoadHistoryCommand = new RelayCommand(_ => { if (ResultsSelected()) { SelectedResults = History; History.SelectedIndex = _history.Items.Count - 1; } else { SelectedResults = Results; } }); }