public void ExecuteBuildSearchIndex(ICommandContext context) { using (var bif = new BuildIndexForm(context)) bif.ShowDialog( context .GetRequiredService<IUIShell>() .GetMainWindowParent()); }
public void ExecuteBuildSearchIndex(ICommandContext context) { using (var bif = new BuildIndexForm(context)) bif.ShowDialog( context .GetRequiredService <IUIShell>() .GetMainWindowParent()); }
private void BtnSearchClick(object sender, EventArgs e) { var searchText = comboSearchEntry.Text.Trim(); #region Проверка пустой строки поиска if (searchText.Trim().Length == 0 && !Config.Instance.AdvancedSearch) { var text = SR.Search.NoParams; _serviceManager.LogInfo(text); MessageBox.Show(text, SR.Search.Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } #endregion #region Проверка строки поиска //TODO валится при вводе ]test[ // нужно бы еще эту ситуацию доработать var cntLeftSquare = 0; var cntRightSquare = 0; foreach (var t in searchText) { switch (t) { case '[': cntLeftSquare++; break; case ']': cntRightSquare++; break; } } if (cntLeftSquare != cntRightSquare) { var text = SR.Search.EntryContainsBadCode; _serviceManager.LogInfo(text); MessageBox.Show(text, SR.Search.Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); comboSearchEntry.Focus(); return; } #endregion Config.Instance.SearchText = searchText; // Чтобы последняя срока поиска была вверху и не дублировалась if (comboSearchEntry.Items.Contains(searchText)) { comboSearchEntry.Items.Remove(searchText); } comboSearchEntry.Items.Insert(0, searchText); comboSearchEntry.Text = searchText; // Защита от переполнения списка, он не безразмерный while (comboSearchEntry.Items.Count > comboSearchEntry.MaxDropDownItems) { comboSearchEntry.Items.RemoveAt(comboSearchEntry.Items.Count - 1); } // Сохраним список сразу в конфиг Config.Instance.SearchList = new string[comboSearchEntry.Items.Count]; comboSearchEntry.Items.CopyTo(Config.Instance.SearchList, 0); var searchFromValue = searchFromDate.Checked ? searchFromDate.Value : new DateTime(0); var searchToValue = searchToDate.Checked ? searchToDate.Value : new DateTime(0); List <MsgBase> msgs = null; ProgressWorker.Run(_serviceManager, false, pi => { pi.SetProgressText(SR.Search.Searching); try { msgs = SearchHelper .SearchMessagesByLucene( _serviceManager, Config.Instance.AdvancedSearch ? Config.Instance.SearchForumId : -1, Config.Instance.SearchText, Config.Instance.SearchInText, Config.Instance.SearchInSubject, Config.Instance.SearchAuthor, Config.Instance.SearchInMarked, Config.Instance.SearchInMyMessages, Config.Instance.SearchAnyWord, Config.Instance.SearchInQuestions, searchFromValue, searchToValue); } catch (FileNotFoundException) { _asyncOperation.Post( () => { if (MessageBox.Show( this, Search.Search.NoSearchIndexQuestion, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { using (var bif = new BuildIndexForm(_serviceManager)) bif.ShowDialog(this); } }); msgs = new List <MsgBase>(); } if (searchInOverquoting.Checked) { FilterOverquoting(msgs); } _serviceManager .LogInfo( msgs.Count > 0 ? string.Format(SR.Search.LogFound, msgs.Count) : SR.Search.LogNotFound); pi.SetProgressText(SR.Search.OutResults); }, () => FillGrid(msgs)); }
private void BtnSearchClick(object sender, EventArgs e) { var searchText = comboSearchEntry.Text.Trim(); #region Проверка пустой строки поиска if (searchText.Trim().Length == 0 && !Config.Instance.AdvancedSearch) { var text = SR.Search.NoParams; _serviceManager.LogInfo(text); MessageBox.Show(text, SR.Search.Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } #endregion #region Проверка строки поиска //TODO валится при вводе ]test[ // нужно бы еще эту ситуацию доработать var cntLeftSquare = 0; var cntRightSquare = 0; foreach (var t in searchText) switch (t) { case '[': cntLeftSquare++; break; case ']': cntRightSquare++; break; } if (cntLeftSquare != cntRightSquare) { var text = SR.Search.EntryContainsBadCode; _serviceManager.LogInfo(text); MessageBox.Show(text, SR.Search.Title, MessageBoxButtons.OK, MessageBoxIcon.Warning); comboSearchEntry.Focus(); return; } #endregion Config.Instance.SearchText = searchText; // Чтобы последняя срока поиска была вверху и не дублировалась if (comboSearchEntry.Items.Contains(searchText)) comboSearchEntry.Items.Remove(searchText); comboSearchEntry.Items.Insert(0, searchText); comboSearchEntry.Text = searchText; // Защита от переполнения списка, он не безразмерный while (comboSearchEntry.Items.Count > comboSearchEntry.MaxDropDownItems) comboSearchEntry.Items.RemoveAt(comboSearchEntry.Items.Count - 1); // Сохраним список сразу в конфиг Config.Instance.SearchList = new string[comboSearchEntry.Items.Count]; comboSearchEntry.Items.CopyTo(Config.Instance.SearchList, 0); var searchFromValue = searchFromDate.Checked ? searchFromDate.Value : new DateTime(0); var searchToValue = searchToDate.Checked ? searchToDate.Value : new DateTime(0); List<MsgBase> msgs = null; ProgressWorker.Run(_serviceManager, false, pi => { pi.SetProgressText(SR.Search.Searching); try { msgs = SearchHelper .SearchMessagesByLucene( _serviceManager, Config.Instance.AdvancedSearch ? Config.Instance.SearchForumId : -1, Config.Instance.SearchText, Config.Instance.SearchInText, Config.Instance.SearchInSubject, Config.Instance.SearchAuthor, Config.Instance.SearchInMarked, Config.Instance.SearchInMyMessages, Config.Instance.SearchAnyWord, Config.Instance.SearchInQuestions, searchFromValue, searchToValue); } catch (FileNotFoundException) { _asyncOperation.Post( () => { if (MessageBox.Show( this, Search.Search.NoSearchIndexQuestion, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) using (var bif = new BuildIndexForm(_serviceManager)) bif.ShowDialog(this); }); msgs = new List<MsgBase>(); } if (searchInOverquoting.Checked) FilterOverquoting(msgs); _serviceManager .LogInfo( msgs.Count > 0 ? string.Format(SR.Search.LogFound, msgs.Count) : SR.Search.LogNotFound); pi.SetProgressText(SR.Search.OutResults); }, () => FillGrid(msgs)); }