diff --git a/ShareX.HistoryLib/Forms/HistoryForm.Designer.cs b/ShareX.HistoryLib/Forms/HistoryForm.Designer.cs
index 7b09c0358..bf70bf103 100644
--- a/ShareX.HistoryLib/Forms/HistoryForm.Designer.cs
+++ b/ShareX.HistoryLib/Forms/HistoryForm.Designer.cs
@@ -53,6 +53,8 @@ private void InitializeComponent()
this.dtpFilterTo = new System.Windows.Forms.DateTimePicker();
this.txtFilenameFilter = new System.Windows.Forms.TextBox();
this.cbFilenameFilterMethod = new System.Windows.Forms.ComboBox();
+ this.txtURLFilter = new System.Windows.Forms.TextBox();
+ this.lblURLFilter = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
this.scMain.Panel1.SuspendLayout();
this.scMain.Panel2.SuspendLayout();
@@ -134,6 +136,8 @@ private void InitializeComponent()
// gbFilters
//
resources.ApplyResources(this.gbFilters, "gbFilters");
+ this.gbFilters.Controls.Add(this.lblURLFilter);
+ this.gbFilters.Controls.Add(this.txtURLFilter);
this.gbFilters.Controls.Add(this.lblFilenameFilter);
this.gbFilters.Controls.Add(this.cbHostFilterSelection);
this.gbFilters.Controls.Add(this.btnRemoveFilters);
@@ -238,6 +242,16 @@ private void InitializeComponent()
resources.ApplyResources(this.cbFilenameFilterMethod, "cbFilenameFilterMethod");
this.cbFilenameFilterMethod.Name = "cbFilenameFilterMethod";
//
+ // txtURLFilter
+ //
+ resources.ApplyResources(this.txtURLFilter, "txtURLFilter");
+ this.txtURLFilter.Name = "txtURLFilter";
+ //
+ // lblURLFilter
+ //
+ resources.ApplyResources(this.lblURLFilter, "lblURLFilter");
+ this.lblURLFilter.Name = "lblURLFilter";
+ //
// HistoryForm
//
resources.ApplyResources(this, "$this");
@@ -285,5 +299,7 @@ private void InitializeComponent()
private System.Windows.Forms.TextBox txtFilenameFilter;
private System.Windows.Forms.ComboBox cbFilenameFilterMethod;
private System.Windows.Forms.Label lblFilenameFilter;
+ private System.Windows.Forms.Label lblURLFilter;
+ private System.Windows.Forms.TextBox txtURLFilter;
}
}
\ No newline at end of file
diff --git a/ShareX.HistoryLib/Forms/HistoryForm.cs b/ShareX.HistoryLib/Forms/HistoryForm.cs
index a1ea96264..a8e246be5 100644
--- a/ShareX.HistoryLib/Forms/HistoryForm.cs
+++ b/ShareX.HistoryLib/Forms/HistoryForm.cs
@@ -119,7 +119,7 @@ private void ApplyFiltersAndAdd()
private HistoryItem[] ApplyFilters(HistoryItem[] historyItems)
{
- if (!cbTypeFilter.Checked && !cbHostFilter.Checked && string.IsNullOrEmpty(txtFilenameFilter.Text) && !cbDateFilter.Checked)
+ if (!cbTypeFilter.Checked && !cbHostFilter.Checked && string.IsNullOrEmpty(txtFilenameFilter.Text) && string.IsNullOrEmpty(txtURLFilter.Text) && !cbDateFilter.Checked)
{
return historyItems;
}
@@ -146,33 +146,37 @@ private HistoryItem[] ApplyFilters(HistoryItem[] historyItems)
}
}
- if (!string.IsNullOrEmpty(txtFilenameFilter.Text))
+ string filenameFilter = txtFilenameFilter.Text;
+
+ if (!string.IsNullOrEmpty(filenameFilter))
{
- string filenameFilter = txtFilenameFilter.Text;
+ StringComparison filenameRule = StringComparison.InvariantCultureIgnoreCase;
- if (!string.IsNullOrEmpty(filenameFilter))
+ switch (cbFilenameFilterMethod.SelectedIndex)
{
- StringComparison filenameRule = StringComparison.InvariantCultureIgnoreCase;
-
- switch (cbFilenameFilterMethod.SelectedIndex)
- {
- default:
- case 0: // Contains
- result = result.Where(x => x.Filename.Contains(filenameFilter, filenameRule));
- break;
- case 1: // Starts with
- result = result.Where(x => x.Filename.StartsWith(filenameFilter, filenameRule));
- break;
- case 2: // Ends with
- result = result.Where(x => x.Filename.EndsWith(filenameFilter, filenameRule));
- break;
- case 3: // Exact match
- result = result.Where(x => x.Filename.Equals(filenameFilter, filenameRule));
- break;
- }
+ default:
+ case 0: // Contains
+ result = result.Where(x => x.Filename.Contains(filenameFilter, filenameRule));
+ break;
+ case 1: // Starts with
+ result = result.Where(x => x.Filename.StartsWith(filenameFilter, filenameRule));
+ break;
+ case 2: // Ends with
+ result = result.Where(x => x.Filename.EndsWith(filenameFilter, filenameRule));
+ break;
+ case 3: // Exact match
+ result = result.Where(x => x.Filename.Equals(filenameFilter, filenameRule));
+ break;
}
}
+ string urlFilter = txtURLFilter.Text;
+
+ if (!string.IsNullOrEmpty(urlFilter))
+ {
+ result = result.Where(x => x.URL != null && x.URL.Contains(urlFilter, StringComparison.InvariantCultureIgnoreCase));
+ }
+
if (cbDateFilter.Checked)
{
DateTime fromDate = dtpFilterFrom.Value.Date;
diff --git a/ShareX.HistoryLib/Forms/HistoryForm.resx b/ShareX.HistoryLib/Forms/HistoryForm.resx
index aaa066d42..1d012143f 100644
--- a/ShareX.HistoryLib/Forms/HistoryForm.resx
+++ b/ShareX.HistoryLib/Forms/HistoryForm.resx
@@ -127,7 +127,6 @@
- @Invariant
@@ -197,7 +196,7 @@
8, 8
- 408, 368
+ 408, 352
3
@@ -217,6 +216,54 @@
Bottom, Left, Right
+
+ True
+
+
+ 13, 203
+
+
+ 32, 13
+
+
+ 20
+
+
+ URL:
+
+
+ lblURLFilter
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ gbFilters
+
+
+ 0
+
+
+ 168, 199
+
+
+ 144, 20
+
+
+ 19
+
+
+ txtURLFilter
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ gbFilters
+
+
+ 1
+
True
@@ -242,10 +289,10 @@
gbFilters
- 0
+ 2
- 168, 176
+ 168, 174
144, 21
@@ -263,13 +310,13 @@
gbFilters
- 1
+ 3
NoControl
- 168, 210
+ 168, 232
144, 24
@@ -290,13 +337,13 @@
gbFilters
- 2
+ 4
NoControl
- 16, 210
+ 16, 232
144, 24
@@ -317,7 +364,7 @@
gbFilters
- 3
+ 5
168, 150
@@ -338,7 +385,7 @@
gbFilters
- 4
+ 6
True
@@ -347,7 +394,7 @@
NoControl
- 16, 179
+ 16, 176
51, 17
@@ -368,7 +415,7 @@
gbFilters
- 5
+ 7
True
@@ -398,7 +445,7 @@
gbFilters
- 6
+ 8
88, 94
@@ -419,7 +466,7 @@
gbFilters
- 7
+ 9
True
@@ -449,7 +496,7 @@
gbFilters
- 8
+ 10
True
@@ -479,7 +526,7 @@
gbFilters
- 9
+ 11
True
@@ -509,7 +556,7 @@
gbFilters
- 10
+ 12
88, 118
@@ -530,7 +577,7 @@
gbFilters
- 11
+ 13
16, 46
@@ -551,7 +598,7 @@
gbFilters
- 12
+ 14
Contains
@@ -584,13 +631,13 @@
gbFilters
- 13
+ 15
- 8, 384
+ 8, 368
- 408, 250
+ 408, 266
4