Added maximum item limit option to history form

This commit is contained in:
Jaex 2020-09-27 15:39:38 +03:00
parent 31337563b7
commit f8bc42085b
4 changed files with 148 additions and 53 deletions

View file

@ -56,12 +56,15 @@ private void InitializeComponent()
this.cbDateFilter = new System.Windows.Forms.CheckBox();
this.dtpFilterTo = new System.Windows.Forms.DateTimePicker();
this.txtFilenameFilter = new System.Windows.Forms.TextBox();
this.lblMaxItemCount = new System.Windows.Forms.Label();
this.nudMaxItemCount = new System.Windows.Forms.NumericUpDown();
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
this.scMain.Panel1.SuspendLayout();
this.scMain.Panel2.SuspendLayout();
this.scMain.SuspendLayout();
this.pStats.SuspendLayout();
this.gbFilters.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudMaxItemCount)).BeginInit();
this.SuspendLayout();
//
// scMain
@ -77,8 +80,10 @@ private void InitializeComponent()
//
// scMain.Panel2
//
this.scMain.Panel2.Controls.Add(this.btnShowStats);
this.scMain.Panel2.Controls.Add(this.nudMaxItemCount);
this.scMain.Panel2.Controls.Add(this.pbThumbnail);
this.scMain.Panel2.Controls.Add(this.btnShowStats);
this.scMain.Panel2.Controls.Add(this.lblMaxItemCount);
this.scMain.Panel2.Controls.Add(this.gbFilters);
this.scMain.SplitterColor = System.Drawing.Color.White;
this.scMain.SplitterLineColor = System.Drawing.Color.FromArgb(((int)(((byte)(189)))), ((int)(((byte)(189)))), ((int)(((byte)(189)))));
@ -257,10 +262,25 @@ private void InitializeComponent()
resources.ApplyResources(this.txtFilenameFilter, "txtFilenameFilter");
this.txtFilenameFilter.Name = "txtFilenameFilter";
//
// lblMaxItemCount
//
resources.ApplyResources(this.lblMaxItemCount, "lblMaxItemCount");
this.lblMaxItemCount.Name = "lblMaxItemCount";
//
// nudMaxItemCount
//
resources.ApplyResources(this.nudMaxItemCount, "nudMaxItemCount");
this.nudMaxItemCount.Maximum = new decimal(new int[] {
10000,
0,
0,
0});
this.nudMaxItemCount.Name = "nudMaxItemCount";
this.nudMaxItemCount.ValueChanged += new System.EventHandler(this.nudMaxItemCount_ValueChanged);
//
// HistoryForm
//
resources.ApplyResources(this, "$this");
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.BackColor = System.Drawing.SystemColors.Window;
this.Controls.Add(this.scMain);
@ -271,11 +291,13 @@ private void InitializeComponent()
this.Resize += new System.EventHandler(this.HistoryForm_Resize);
this.scMain.Panel1.ResumeLayout(false);
this.scMain.Panel2.ResumeLayout(false);
this.scMain.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.scMain)).EndInit();
this.scMain.ResumeLayout(false);
this.pStats.ResumeLayout(false);
this.gbFilters.ResumeLayout(false);
this.gbFilters.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudMaxItemCount)).EndInit();
this.ResumeLayout(false);
}
@ -308,5 +330,7 @@ private void InitializeComponent()
private System.Windows.Forms.Button btnShowStats;
private System.Windows.Forms.RichTextBox rtbStats;
private System.Windows.Forms.Panel pStats;
private System.Windows.Forms.Label lblMaxItemCount;
private System.Windows.Forms.NumericUpDown nudMaxItemCount;
}
}

View file

@ -79,6 +79,8 @@ public HistoryForm(string historyPath, HistorySettings settings, Action<string>
scMain.SplitterDistance = Settings.SplitterDistance;
}
nudMaxItemCount.SetValue(Settings.MaxItemCount);
ShareXResources.ApplyTheme(this);
Settings.WindowState.AutoHandleFormState(this);
@ -157,22 +159,23 @@ private HistoryItem[] GetHistoryItems()
history = new HistoryManagerJSON(HistoryPath);
}
IEnumerable<HistoryItem> tempHistoryItems = history.GetHistoryItems();
tempHistoryItems = tempHistoryItems.Reverse();
if (Settings.MaxItemCount > 0)
{
tempHistoryItems = tempHistoryItems.Take(Settings.MaxItemCount);
}
return tempHistoryItems.ToArray();
List<HistoryItem> historyItems = history.GetHistoryItems();
historyItems.Reverse();
return historyItems.ToArray();
}
private void ApplyFiltersAndAdd()
{
if (allHistoryItems.Length > 0)
if (allHistoryItems != null && allHistoryItems.Length > 0)
{
AddHistoryItems(ApplyFilters(allHistoryItems));
HistoryItem[] historyItems = ApplyFilters(allHistoryItems);
if (Settings.MaxItemCount > 0 && historyItems.Length > Settings.MaxItemCount)
{
historyItems = historyItems.Take(Settings.MaxItemCount).ToArray();
}
AddHistoryItems(historyItems);
}
}
@ -421,6 +424,11 @@ private void BtnShowStats_Click(object sender, EventArgs e)
}
}
private void nudMaxItemCount_ValueChanged(object sender, EventArgs e)
{
Settings.MaxItemCount = (int)nudMaxItemCount.Value;
}
private void lvHistory_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
UpdateControls();

View file

@ -141,6 +141,9 @@
<data name="rtbStats.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="rtbStats.Text" xml:space="preserve">
<value />
</data>
<data name="&gt;&gt;rtbStats.Name" xml:space="preserve">
<value>rtbStats</value>
</data>
@ -183,6 +186,9 @@
<data name="&gt;&gt;pStats.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>
@ -220,7 +226,7 @@
<value>lvHistory</value>
</data>
<data name="&gt;&gt;lvHistory.Type" xml:space="preserve">
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.MyListView, ShareX.HelpersLib, Version=13.2.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;lvHistory.Parent" xml:space="preserve">
<value>scMain.Panel1</value>
@ -243,6 +249,57 @@
<data name="scMain.Panel1MinSize" type="System.Int32, mscorlib">
<value>100</value>
</data>
<data name="nudMaxItemCount.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="nudMaxItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>224, 576</value>
</data>
<data name="nudMaxItemCount.Size" type="System.Drawing.Size, System.Drawing">
<value>80, 20</value>
</data>
<data name="nudMaxItemCount.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<data name="nudMaxItemCount.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Center</value>
</data>
<data name="&gt;&gt;nudMaxItemCount.Name" xml:space="preserve">
<value>nudMaxItemCount</value>
</data>
<data name="&gt;&gt;nudMaxItemCount.Type" xml:space="preserve">
<value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;nudMaxItemCount.Parent" xml:space="preserve">
<value>scMain.Panel2</value>
</data>
<data name="&gt;&gt;nudMaxItemCount.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="pbThumbnail.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
</data>
<data name="pbThumbnail.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 8</value>
</data>
<data name="pbThumbnail.Size" type="System.Drawing.Size, System.Drawing">
<value>404, 352</value>
</data>
<data name="pbThumbnail.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;pbThumbnail.Name" xml:space="preserve">
<value>pbThumbnail</value>
</data>
<data name="&gt;&gt;pbThumbnail.Type" xml:space="preserve">
<value>ShareX.HelpersLib.MyPictureBox, ShareX.HelpersLib, Version=13.2.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;pbThumbnail.Parent" xml:space="preserve">
<value>scMain.Panel2</value>
</data>
<data name="&gt;&gt;pbThumbnail.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="btnShowStats.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
@ -250,7 +307,7 @@
<value>NoControl</value>
</data>
<data name="btnShowStats.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 608</value>
<value>8, 604</value>
</data>
<data name="btnShowStats.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 24</value>
@ -271,34 +328,40 @@
<value>scMain.Panel2</value>
</data>
<data name="&gt;&gt;btnShowStats.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="pbThumbnail.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left, Right</value>
<data name="lblMaxItemCount.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left</value>
</data>
<data name="pbThumbnail.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 8</value>
<data name="lblMaxItemCount.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="pbThumbnail.Size" type="System.Drawing.Size, System.Drawing">
<value>406, 352</value>
<data name="lblMaxItemCount.Location" type="System.Drawing.Point, System.Drawing">
<value>5, 580</value>
</data>
<data name="pbThumbnail.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
<data name="lblMaxItemCount.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 13</value>
</data>
<data name="&gt;&gt;pbThumbnail.Name" xml:space="preserve">
<value>pbThumbnail</value>
<data name="lblMaxItemCount.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</data>
<data name="&gt;&gt;pbThumbnail.Type" xml:space="preserve">
<value>ShareX.HelpersLib.MyPictureBox, ShareX.HelpersLib, Version=13.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<data name="lblMaxItemCount.Text" xml:space="preserve">
<value>Maximum item limit:</value>
</data>
<data name="&gt;&gt;pbThumbnail.Parent" xml:space="preserve">
<data name="&gt;&gt;lblMaxItemCount.Name" xml:space="preserve">
<value>lblMaxItemCount</value>
</data>
<data name="&gt;&gt;lblMaxItemCount.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="&gt;&gt;lblMaxItemCount.Parent" xml:space="preserve">
<value>scMain.Panel2</value>
</data>
<data name="&gt;&gt;pbThumbnail.ZOrder" xml:space="preserve">
<value>1</value>
<data name="&gt;&gt;lblMaxItemCount.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="gbFilters.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
<value>Bottom, Left</value>
</data>
<data name="lblURLFilter.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -334,7 +397,7 @@
<value>96, 44</value>
</data>
<data name="txtURLFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>216, 20</value>
<value>296, 20</value>
</data>
<data name="txtURLFilter.TabIndex" type="System.Int32, mscorlib">
<value>19</value>
@ -382,10 +445,10 @@
<value>2</value>
</data>
<data name="cbHostFilterSelection.Location" type="System.Drawing.Point, System.Drawing">
<value>168, 168</value>
<value>168, 142</value>
</data>
<data name="cbHostFilterSelection.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 21</value>
<value>224, 21</value>
</data>
<data name="cbHostFilterSelection.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
@ -406,7 +469,7 @@
<value>NoControl</value>
</data>
<data name="btnRemoveFilters.Location" type="System.Drawing.Point, System.Drawing">
<value>168, 200</value>
<value>168, 168</value>
</data>
<data name="btnRemoveFilters.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 24</value>
@ -433,7 +496,7 @@
<value>NoControl</value>
</data>
<data name="btnApplyFilters.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 200</value>
<value>16, 168</value>
</data>
<data name="btnApplyFilters.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 24</value>
@ -457,10 +520,10 @@
<value>5</value>
</data>
<data name="cbTypeFilterSelection.Location" type="System.Drawing.Point, System.Drawing">
<value>168, 142</value>
<value>168, 118</value>
</data>
<data name="cbTypeFilterSelection.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 21</value>
<value>224, 21</value>
</data>
<data name="cbTypeFilterSelection.TabIndex" type="System.Int32, mscorlib">
<value>11</value>
@ -484,7 +547,7 @@
<value>NoControl</value>
</data>
<data name="cbHostFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 170</value>
<value>16, 144</value>
</data>
<data name="cbHostFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>51, 17</value>
@ -514,7 +577,7 @@
<value>NoControl</value>
</data>
<data name="cbTypeFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 144</value>
<value>16, 120</value>
</data>
<data name="cbTypeFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>53, 17</value>
@ -538,10 +601,10 @@
<value>8</value>
</data>
<data name="dtpFilterFrom.Location" type="System.Drawing.Point, System.Drawing">
<value>96, 92</value>
<value>168, 70</value>
</data>
<data name="dtpFilterFrom.Size" type="System.Drawing.Size, System.Drawing">
<value>216, 20</value>
<value>224, 20</value>
</data>
<data name="dtpFilterFrom.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@ -565,7 +628,7 @@
<value>NoControl</value>
</data>
<data name="lblFilterFrom.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 96</value>
<value>93, 74</value>
</data>
<data name="lblFilterFrom.Size" type="System.Drawing.Size, System.Drawing">
<value>33, 13</value>
@ -595,7 +658,7 @@
<value>NoControl</value>
</data>
<data name="lblFilterTo.Location" type="System.Drawing.Point, System.Drawing">
<value>13, 120</value>
<value>93, 98</value>
</data>
<data name="lblFilterTo.Size" type="System.Drawing.Size, System.Drawing">
<value>23, 13</value>
@ -649,10 +712,10 @@
<value>12</value>
</data>
<data name="dtpFilterTo.Location" type="System.Drawing.Point, System.Drawing">
<value>96, 116</value>
<value>168, 94</value>
</data>
<data name="dtpFilterTo.Size" type="System.Drawing.Size, System.Drawing">
<value>216, 20</value>
<value>224, 20</value>
</data>
<data name="dtpFilterTo.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
@ -673,7 +736,7 @@
<value>96, 20</value>
</data>
<data name="txtFilenameFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>216, 20</value>
<value>296, 20</value>
</data>
<data name="txtFilenameFilter.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
@ -694,7 +757,7 @@
<value>8, 368</value>
</data>
<data name="gbFilters.Size" type="System.Drawing.Size, System.Drawing">
<value>406, 234</value>
<value>404, 200</value>
</data>
<data name="gbFilters.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
@ -712,7 +775,7 @@
<value>scMain.Panel2</value>
</data>
<data name="&gt;&gt;gbFilters.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="&gt;&gt;scMain.Panel2.Name" xml:space="preserve">
<value>scMain.Panel2</value>
@ -745,7 +808,7 @@
<value>scMain</value>
</data>
<data name="&gt;&gt;scMain.Type" xml:space="preserve">
<value>ShareX.HelpersLib.SplitContainerCustomSplitter, ShareX.HelpersLib, Version=13.0.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HelpersLib.SplitContainerCustomSplitter, ShareX.HelpersLib, Version=13.2.2.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;scMain.Parent" xml:space="preserve">
<value>$this</value>
@ -757,7 +820,7 @@
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
<value>96, 96</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>981, 641</value>

View file

@ -30,7 +30,7 @@ namespace ShareX.HistoryLib
public class HistorySettings
{
public WindowState WindowState { get; set; } = new WindowState();
public int MaxItemCount { get; set; } = 0;
public int SplitterDistance { get; set; } = 550;
public int MaxItemCount { get; set; } = 0;
}
}