mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-21 03:51:15 +12:00
Added auto complete support to history & image history window search box
This commit is contained in:
parent
1fd1c46148
commit
e9116fafd0
5 changed files with 290 additions and 84 deletions
2
ShareX.HistoryLib/Forms/HistoryForm.Designer.cs
generated
2
ShareX.HistoryLib/Forms/HistoryForm.Designer.cs
generated
|
@ -159,6 +159,8 @@ private void InitializeComponent()
|
|||
//
|
||||
// tstbSearch
|
||||
//
|
||||
this.tstbSearch.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
|
||||
this.tstbSearch.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
|
||||
this.tstbSearch.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
resources.ApplyResources(this.tstbSearch, "tstbSearch");
|
||||
this.tstbSearch.Name = "tstbSearch";
|
||||
|
|
|
@ -122,18 +122,20 @@ private async Task RefreshHistoryItems(bool mockData = false)
|
|||
{
|
||||
allHistoryItems = await GetHistoryItems(mockData);
|
||||
|
||||
ApplyFilterSimple();
|
||||
|
||||
cbTypeFilterSelection.Items.Clear();
|
||||
cbHostFilterSelection.Items.Clear();
|
||||
tstbSearch.AutoCompleteCustomSource.Clear();
|
||||
|
||||
if (allHistoryItems.Length > 0)
|
||||
{
|
||||
allTypeNames = allHistoryItems.Select(x => x.Type).Distinct().Where(x => !string.IsNullOrEmpty(x)).ToArray();
|
||||
allTypeNames = allHistoryItems.Select(x => x.Type).Where(x => !string.IsNullOrWhiteSpace(x)).Distinct().ToArray();
|
||||
cbTypeFilterSelection.Items.AddRange(allTypeNames.Select(x => typeNamesLocaleLookup.TryGetValue(x, out string value) ? value : x).ToArray());
|
||||
cbHostFilterSelection.Items.AddRange(allHistoryItems.Select(x => x.Host).Distinct().Where(x => !string.IsNullOrEmpty(x)).ToArray());
|
||||
cbHostFilterSelection.Items.AddRange(allHistoryItems.Select(x => x.Host).Where(x => !string.IsNullOrWhiteSpace(x)).Distinct().ToArray());
|
||||
tstbSearch.AutoCompleteCustomSource.AddRange(allHistoryItems.Select(x => x.TagsProcessName).Where(x => !string.IsNullOrWhiteSpace(x)).Distinct().ToArray());
|
||||
}
|
||||
|
||||
ApplyFilterSimple();
|
||||
|
||||
ResetFilters();
|
||||
}
|
||||
|
||||
|
|
|
@ -129,31 +129,6 @@
|
|||
<data name=">>tscHistory.BottomToolStripPanel.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="chIcon.Text" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="chIcon.Width" type="System.Int32, mscorlib">
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name="chDateTime.Text" xml:space="preserve">
|
||||
<value>Date</value>
|
||||
</data>
|
||||
<data name="chDateTime.Width" type="System.Int32, mscorlib">
|
||||
<value>115</value>
|
||||
</data>
|
||||
<data name="chFilename.Text" xml:space="preserve">
|
||||
<value>Filename</value>
|
||||
</data>
|
||||
<data name="chFilename.Width" type="System.Int32, mscorlib">
|
||||
<value>170</value>
|
||||
</data>
|
||||
<data name="chURL.Text" xml:space="preserve">
|
||||
<value>URL</value>
|
||||
</data>
|
||||
<data name="chURL.Width" type="System.Int32, mscorlib">
|
||||
<value>230</value>
|
||||
</data>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="lvHistory.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
|
@ -165,6 +140,7 @@
|
|||
<data name="lvHistory.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>550, 636</value>
|
||||
</data>
|
||||
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="lvHistory.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
</data>
|
||||
|
@ -172,7 +148,7 @@
|
|||
<value>lvHistory</value>
|
||||
</data>
|
||||
<data name=">>lvHistory.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=15.0.2.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>lvHistory.Parent" xml:space="preserve">
|
||||
<value>tscHistory.ContentPanel</value>
|
||||
|
@ -345,6 +321,237 @@
|
|||
<data name=">>tscHistory.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="chIcon.Text" xml:space="preserve">
|
||||
<value />
|
||||
</data>
|
||||
<data name="chIcon.Width" type="System.Int32, mscorlib">
|
||||
<value>24</value>
|
||||
</data>
|
||||
<data name="chDateTime.Text" xml:space="preserve">
|
||||
<value>Date</value>
|
||||
</data>
|
||||
<data name="chDateTime.Width" type="System.Int32, mscorlib">
|
||||
<value>115</value>
|
||||
</data>
|
||||
<data name="chFilename.Text" xml:space="preserve">
|
||||
<value>Filename</value>
|
||||
</data>
|
||||
<data name="chFilename.Width" type="System.Int32, mscorlib">
|
||||
<value>170</value>
|
||||
</data>
|
||||
<data name="chURL.Text" xml:space="preserve">
|
||||
<value>URL</value>
|
||||
</data>
|
||||
<data name="chURL.Width" type="System.Int32, mscorlib">
|
||||
<value>230</value>
|
||||
</data>
|
||||
<data name=">>btnAdvancedSearchClose.Name" xml:space="preserve">
|
||||
<value>btnAdvancedSearchClose</value>
|
||||
</data>
|
||||
<data name=">>btnAdvancedSearchClose.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>btnAdvancedSearchClose.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>btnAdvancedSearchClose.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name=">>btnAdvancedSearchReset.Name" xml:space="preserve">
|
||||
<value>btnAdvancedSearchReset</value>
|
||||
</data>
|
||||
<data name=">>btnAdvancedSearchReset.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>btnAdvancedSearchReset.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>btnAdvancedSearchReset.ZOrder" xml:space="preserve">
|
||||
<value>1</value>
|
||||
</data>
|
||||
<data name=">>lblURLFilter.Name" xml:space="preserve">
|
||||
<value>lblURLFilter</value>
|
||||
</data>
|
||||
<data name=">>lblURLFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>lblURLFilter.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>lblURLFilter.ZOrder" xml:space="preserve">
|
||||
<value>2</value>
|
||||
</data>
|
||||
<data name=">>txtURLFilter.Name" xml:space="preserve">
|
||||
<value>txtURLFilter</value>
|
||||
</data>
|
||||
<data name=">>txtURLFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>txtURLFilter.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>txtURLFilter.ZOrder" xml:space="preserve">
|
||||
<value>3</value>
|
||||
</data>
|
||||
<data name=">>lblFilenameFilter.Name" xml:space="preserve">
|
||||
<value>lblFilenameFilter</value>
|
||||
</data>
|
||||
<data name=">>lblFilenameFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>lblFilenameFilter.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>lblFilenameFilter.ZOrder" xml:space="preserve">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name=">>cbHostFilterSelection.Name" xml:space="preserve">
|
||||
<value>cbHostFilterSelection</value>
|
||||
</data>
|
||||
<data name=">>cbHostFilterSelection.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>cbHostFilterSelection.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>cbHostFilterSelection.ZOrder" xml:space="preserve">
|
||||
<value>5</value>
|
||||
</data>
|
||||
<data name=">>cbTypeFilterSelection.Name" xml:space="preserve">
|
||||
<value>cbTypeFilterSelection</value>
|
||||
</data>
|
||||
<data name=">>cbTypeFilterSelection.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>cbTypeFilterSelection.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>cbTypeFilterSelection.ZOrder" xml:space="preserve">
|
||||
<value>6</value>
|
||||
</data>
|
||||
<data name=">>cbHostFilter.Name" xml:space="preserve">
|
||||
<value>cbHostFilter</value>
|
||||
</data>
|
||||
<data name=">>cbHostFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>cbHostFilter.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>cbHostFilter.ZOrder" xml:space="preserve">
|
||||
<value>7</value>
|
||||
</data>
|
||||
<data name=">>cbTypeFilter.Name" xml:space="preserve">
|
||||
<value>cbTypeFilter</value>
|
||||
</data>
|
||||
<data name=">>cbTypeFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>cbTypeFilter.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>cbTypeFilter.ZOrder" xml:space="preserve">
|
||||
<value>8</value>
|
||||
</data>
|
||||
<data name=">>dtpFilterFrom.Name" xml:space="preserve">
|
||||
<value>dtpFilterFrom</value>
|
||||
</data>
|
||||
<data name=">>dtpFilterFrom.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>dtpFilterFrom.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>dtpFilterFrom.ZOrder" xml:space="preserve">
|
||||
<value>9</value>
|
||||
</data>
|
||||
<data name=">>lblFilterFrom.Name" xml:space="preserve">
|
||||
<value>lblFilterFrom</value>
|
||||
</data>
|
||||
<data name=">>lblFilterFrom.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>lblFilterFrom.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>lblFilterFrom.ZOrder" xml:space="preserve">
|
||||
<value>10</value>
|
||||
</data>
|
||||
<data name=">>lblFilterTo.Name" xml:space="preserve">
|
||||
<value>lblFilterTo</value>
|
||||
</data>
|
||||
<data name=">>lblFilterTo.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>lblFilterTo.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>lblFilterTo.ZOrder" xml:space="preserve">
|
||||
<value>11</value>
|
||||
</data>
|
||||
<data name=">>cbDateFilter.Name" xml:space="preserve">
|
||||
<value>cbDateFilter</value>
|
||||
</data>
|
||||
<data name=">>cbDateFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>cbDateFilter.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>cbDateFilter.ZOrder" xml:space="preserve">
|
||||
<value>12</value>
|
||||
</data>
|
||||
<data name=">>dtpFilterTo.Name" xml:space="preserve">
|
||||
<value>dtpFilterTo</value>
|
||||
</data>
|
||||
<data name=">>dtpFilterTo.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.DateTimePicker, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>dtpFilterTo.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>dtpFilterTo.ZOrder" xml:space="preserve">
|
||||
<value>13</value>
|
||||
</data>
|
||||
<data name=">>txtFilenameFilter.Name" xml:space="preserve">
|
||||
<value>txtFilenameFilter</value>
|
||||
</data>
|
||||
<data name=">>txtFilenameFilter.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>txtFilenameFilter.Parent" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>txtFilenameFilter.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>409, 213</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.Text" xml:space="preserve">
|
||||
<value>Advanced search</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>gbAdvancedSearch.Name" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>gbAdvancedSearch.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>gbAdvancedSearch.Parent" xml:space="preserve">
|
||||
<value>scHistoryItemInfo.Panel1</value>
|
||||
</data>
|
||||
<data name=">>gbAdvancedSearch.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="btnAdvancedSearchClose.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>272, 176</value>
|
||||
</data>
|
||||
|
@ -729,33 +936,6 @@
|
|||
<data name=">>txtFilenameFilter.ZOrder" xml:space="preserve">
|
||||
<value>14</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.Location" type="System.Drawing.Point, System.Drawing">
|
||||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>409, 213</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>4</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.Text" xml:space="preserve">
|
||||
<value>Advanced search</value>
|
||||
</data>
|
||||
<data name="gbAdvancedSearch.Visible" type="System.Boolean, mscorlib">
|
||||
<value>False</value>
|
||||
</data>
|
||||
<data name=">>gbAdvancedSearch.Name" xml:space="preserve">
|
||||
<value>gbAdvancedSearch</value>
|
||||
</data>
|
||||
<data name=">>gbAdvancedSearch.Type" xml:space="preserve">
|
||||
<value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
<data name=">>gbAdvancedSearch.Parent" xml:space="preserve">
|
||||
<value>scHistoryItemInfo.Panel1</value>
|
||||
</data>
|
||||
<data name=">>gbAdvancedSearch.ZOrder" xml:space="preserve">
|
||||
<value>0</value>
|
||||
</data>
|
||||
<data name="scMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
|
@ -796,7 +976,7 @@
|
|||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="pbThumbnail.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>627, 421</value>
|
||||
<value>627, 415</value>
|
||||
</data>
|
||||
<data name="pbThumbnail.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>3</value>
|
||||
|
@ -805,7 +985,7 @@
|
|||
<value>pbThumbnail</value>
|
||||
</data>
|
||||
<data name=">>pbThumbnail.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.MyPictureBox, ShareX.HelpersLib, Version=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.MyPictureBox, ShareX.HelpersLib, Version=15.0.2.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>pbThumbnail.Parent" xml:space="preserve">
|
||||
<value>scHistoryItemInfo.Panel1</value>
|
||||
|
@ -835,7 +1015,7 @@
|
|||
<value>0, 0</value>
|
||||
</data>
|
||||
<data name="pgHistoryItemInfo.Size" type="System.Drawing.Size, System.Drawing">
|
||||
<value>627, 233</value>
|
||||
<value>627, 239</value>
|
||||
</data>
|
||||
<data name="pgHistoryItemInfo.TabIndex" type="System.Int32, mscorlib">
|
||||
<value>0</value>
|
||||
|
@ -868,7 +1048,7 @@
|
|||
<value>627, 661</value>
|
||||
</data>
|
||||
<data name="scHistoryItemInfo.SplitterDistance" type="System.Int32, mscorlib">
|
||||
<value>421</value>
|
||||
<value>415</value>
|
||||
</data>
|
||||
<data name="scHistoryItemInfo.SplitterWidth" type="System.Int32, mscorlib">
|
||||
<value>7</value>
|
||||
|
@ -880,7 +1060,7 @@
|
|||
<value>scHistoryItemInfo</value>
|
||||
</data>
|
||||
<data name=">>scHistoryItemInfo.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.SplitContainerCustomSplitter, ShareX.HelpersLib, Version=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.SplitContainerCustomSplitter, ShareX.HelpersLib, Version=15.0.2.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>scHistoryItemInfo.Parent" xml:space="preserve">
|
||||
<value>scMain.Panel2</value>
|
||||
|
@ -919,7 +1099,7 @@
|
|||
<value>scMain</value>
|
||||
</data>
|
||||
<data name=">>scMain.Type" xml:space="preserve">
|
||||
<value>ShareX.HelpersLib.SplitContainerCustomSplitter, ShareX.HelpersLib, Version=15.0.1.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
<value>ShareX.HelpersLib.SplitContainerCustomSplitter, ShareX.HelpersLib, Version=15.0.2.0, Culture=neutral, PublicKeyToken=null</value>
|
||||
</data>
|
||||
<data name=">>scMain.Parent" xml:space="preserve">
|
||||
<value>$this</value>
|
||||
|
|
|
@ -122,6 +122,8 @@ private void InitializeComponent()
|
|||
//
|
||||
// tstbSearch
|
||||
//
|
||||
this.tstbSearch.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest;
|
||||
this.tstbSearch.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
|
||||
this.tstbSearch.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
resources.ApplyResources(this.tstbSearch, "tstbSearch");
|
||||
this.tstbSearch.Name = "tstbSearch";
|
||||
|
|
|
@ -31,6 +31,7 @@ You should have received a copy of the GNU General Public License
|
|||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace ShareX.HistoryLib
|
||||
|
@ -44,6 +45,7 @@ public partial class ImageHistoryForm : Form
|
|||
|
||||
private HistoryItemManager him;
|
||||
private string defaultTitle;
|
||||
private List<HistoryItem> allHistoryItems;
|
||||
|
||||
public ImageHistoryForm(string historyPath, ImageHistorySettings settings, Action<string> uploadFile = null, Action<string> editImage = null, Action<string> pinToScreen = null)
|
||||
{
|
||||
|
@ -87,13 +89,18 @@ private void UpdateTitle(int total, int filtered)
|
|||
Text = $"{defaultTitle} ({Resources.Total}: {total:N0} - {Resources.Filtered}: {filtered:N0})";
|
||||
}
|
||||
|
||||
private void RefreshHistoryItems(bool mockData = false)
|
||||
private async Task RefreshHistoryItems(bool mockData = false)
|
||||
{
|
||||
UpdateSearchText();
|
||||
ilvImages.Items.Clear();
|
||||
IEnumerable<HistoryItem> historyItems = GetHistoryItems(mockData);
|
||||
ImageListViewItem[] ilvItems = historyItems.Select(hi => new ImageListViewItem(hi.FilePath) { Tag = hi }).ToArray();
|
||||
ilvImages.Items.AddRange(ilvItems);
|
||||
allHistoryItems = await GetHistoryItems(mockData);
|
||||
|
||||
tstbSearch.AutoCompleteCustomSource.Clear();
|
||||
|
||||
if (allHistoryItems.Count > 0)
|
||||
{
|
||||
tstbSearch.AutoCompleteCustomSource.AddRange(allHistoryItems.Select(x => x.TagsProcessName).Where(x => !string.IsNullOrWhiteSpace(x)).Distinct().ToArray());
|
||||
}
|
||||
|
||||
ApplyFilter();
|
||||
}
|
||||
|
||||
private void UpdateSearchText()
|
||||
|
@ -110,7 +117,7 @@ private void UpdateSearchText()
|
|||
}
|
||||
}
|
||||
|
||||
private IEnumerable<HistoryItem> GetHistoryItems(bool mockData = false)
|
||||
private async Task<List<HistoryItem>> GetHistoryItems(bool mockData = false)
|
||||
{
|
||||
HistoryManager history;
|
||||
|
||||
|
@ -123,7 +130,17 @@ private IEnumerable<HistoryItem> GetHistoryItems(bool mockData = false)
|
|||
history = new HistoryManagerJSON(HistoryPath);
|
||||
}
|
||||
|
||||
List<HistoryItem> historyItems = history.GetHistoryItems();
|
||||
List<HistoryItem> historyItems = await history.GetHistoryItemsAsync();
|
||||
historyItems.Reverse();
|
||||
return historyItems;
|
||||
}
|
||||
|
||||
private void ApplyFilter()
|
||||
{
|
||||
UpdateSearchText();
|
||||
|
||||
ilvImages.Items.Clear();
|
||||
|
||||
List<HistoryItem> filteredHistoryItems = new List<HistoryItem>();
|
||||
|
||||
Regex regex = null;
|
||||
|
@ -134,9 +151,9 @@ private IEnumerable<HistoryItem> GetHistoryItems(bool mockData = false)
|
|||
regex = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
|
||||
}
|
||||
|
||||
for (int i = historyItems.Count - 1; i >= 0; i--)
|
||||
for (int i = 0; i < allHistoryItems.Count; i++)
|
||||
{
|
||||
HistoryItem hi = historyItems[i];
|
||||
HistoryItem hi = allHistoryItems[i];
|
||||
|
||||
if (!string.IsNullOrEmpty(hi.FilePath) && FileHelpers.IsImageFile(hi.FilePath) &&
|
||||
(regex == null || regex.IsMatch(hi.FileName) || (SearchInTags && hi.Tags != null && hi.Tags.Any(tag => regex.IsMatch(tag.Value)))) &&
|
||||
|
@ -151,9 +168,10 @@ private IEnumerable<HistoryItem> GetHistoryItems(bool mockData = false)
|
|||
}
|
||||
}
|
||||
|
||||
UpdateTitle(historyItems.Count, filteredHistoryItems.Count);
|
||||
UpdateTitle(allHistoryItems.Count, filteredHistoryItems.Count);
|
||||
|
||||
return filteredHistoryItems;
|
||||
ImageListViewItem[] ilvItems = filteredHistoryItems.Select(hi => new ImageListViewItem(hi.FilePath) { Tag = hi }).ToArray();
|
||||
ilvImages.Items.AddRange(ilvItems);
|
||||
}
|
||||
|
||||
private HistoryItem[] him_GetHistoryItems()
|
||||
|
@ -163,12 +181,12 @@ private HistoryItem[] him_GetHistoryItems()
|
|||
|
||||
#region Form events
|
||||
|
||||
private void ImageHistoryForm_Shown(object sender, EventArgs e)
|
||||
private async void ImageHistoryForm_Shown(object sender, EventArgs e)
|
||||
{
|
||||
tstbSearch.Focus();
|
||||
Application.DoEvents();
|
||||
this.ForceActivate();
|
||||
RefreshHistoryItems();
|
||||
|
||||
await RefreshHistoryItems();
|
||||
}
|
||||
|
||||
private void ImageHistoryForm_FormClosing(object sender, FormClosingEventArgs e)
|
||||
|
@ -179,16 +197,16 @@ private void ImageHistoryForm_FormClosing(object sender, FormClosingEventArgs e)
|
|||
}
|
||||
}
|
||||
|
||||
private void ImageHistoryForm_KeyDown(object sender, KeyEventArgs e)
|
||||
private async void ImageHistoryForm_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
switch (e.KeyData)
|
||||
{
|
||||
case Keys.F5:
|
||||
RefreshHistoryItems();
|
||||
await RefreshHistoryItems();
|
||||
e.SuppressKeyPress = true;
|
||||
break;
|
||||
case Keys.Control | Keys.F5 when HelpersOptions.DevMode:
|
||||
RefreshHistoryItems(true);
|
||||
await RefreshHistoryItems(true);
|
||||
e.SuppressKeyPress = true;
|
||||
break;
|
||||
}
|
||||
|
@ -228,14 +246,15 @@ private void tstbSearch_KeyDown(object sender, KeyEventArgs e)
|
|||
{
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
{
|
||||
RefreshHistoryItems();
|
||||
ApplyFilter();
|
||||
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbSearch_Click(object sender, EventArgs e)
|
||||
{
|
||||
RefreshHistoryItems();
|
||||
ApplyFilter();
|
||||
}
|
||||
|
||||
private void tsbSettings_Click(object sender, EventArgs e)
|
||||
|
@ -246,7 +265,8 @@ private void tsbSettings_Click(object sender, EventArgs e)
|
|||
}
|
||||
|
||||
ilvImages.ThumbnailSize = Settings.ThumbnailSize;
|
||||
RefreshHistoryItems();
|
||||
|
||||
ApplyFilter();
|
||||
}
|
||||
|
||||
private void ilvImages_KeyDown(object sender, KeyEventArgs e)
|
||||
|
|
Loading…
Reference in a new issue