Populate type and host filters dynamically from current history items

This commit is contained in:
Jaex 2016-03-01 15:05:53 +02:00
parent a5e04243da
commit 2d1fc1e0b6
27 changed files with 54 additions and 216 deletions

View file

@ -40,7 +40,6 @@ private void InitializeComponent()
this.pbThumbnail = new ShareX.HelpersLib.MyPictureBox();
this.gbFilters = new System.Windows.Forms.GroupBox();
this.btnRemoveFilters = new System.Windows.Forms.Button();
this.txtHostFilter = new System.Windows.Forms.TextBox();
this.cbTypeFilterSelection = new System.Windows.Forms.ComboBox();
this.cbHostFilter = new System.Windows.Forms.CheckBox();
this.cbTypeFilter = new System.Windows.Forms.CheckBox();
@ -52,6 +51,7 @@ 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.cbHostFilterSelection = new System.Windows.Forms.ComboBox();
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
this.scMain.Panel1.SuspendLayout();
this.scMain.Panel2.SuspendLayout();
@ -132,9 +132,9 @@ private void InitializeComponent()
// gbFilters
//
resources.ApplyResources(this.gbFilters, "gbFilters");
this.gbFilters.Controls.Add(this.cbHostFilterSelection);
this.gbFilters.Controls.Add(this.btnRemoveFilters);
this.gbFilters.Controls.Add(this.btnApplyFilters);
this.gbFilters.Controls.Add(this.txtHostFilter);
this.gbFilters.Controls.Add(this.cbTypeFilterSelection);
this.gbFilters.Controls.Add(this.cbHostFilter);
this.gbFilters.Controls.Add(this.cbTypeFilter);
@ -156,20 +156,10 @@ private void InitializeComponent()
this.btnRemoveFilters.UseVisualStyleBackColor = true;
this.btnRemoveFilters.Click += new System.EventHandler(this.btnRemoveFilters_Click);
//
// txtHostFilter
//
resources.ApplyResources(this.txtHostFilter, "txtHostFilter");
this.txtHostFilter.Name = "txtHostFilter";
//
// cbTypeFilterSelection
//
this.cbTypeFilterSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbTypeFilterSelection.FormattingEnabled = true;
this.cbTypeFilterSelection.Items.AddRange(new object[] {
resources.GetString("cbTypeFilterSelection.Items"),
resources.GetString("cbTypeFilterSelection.Items1"),
resources.GetString("cbTypeFilterSelection.Items2"),
resources.GetString("cbTypeFilterSelection.Items3")});
resources.ApplyResources(this.cbTypeFilterSelection, "cbTypeFilterSelection");
this.cbTypeFilterSelection.Name = "cbTypeFilterSelection";
//
@ -235,6 +225,12 @@ private void InitializeComponent()
resources.ApplyResources(this.cbFilenameFilterMethod, "cbFilenameFilterMethod");
this.cbFilenameFilterMethod.Name = "cbFilenameFilterMethod";
//
// cbHostFilterSelection
//
this.cbHostFilterSelection.FormattingEnabled = true;
resources.ApplyResources(this.cbHostFilterSelection, "cbHostFilterSelection");
this.cbHostFilterSelection.Name = "cbHostFilterSelection";
//
// HistoryForm
//
this.AcceptButton = this.btnApplyFilters;
@ -277,8 +273,8 @@ private void InitializeComponent()
private System.Windows.Forms.ComboBox cbTypeFilterSelection;
private System.Windows.Forms.CheckBox cbHostFilter;
private System.Windows.Forms.CheckBox cbTypeFilter;
private System.Windows.Forms.TextBox txtHostFilter;
private System.Windows.Forms.ColumnHeader chIcon;
private ShareX.HelpersLib.SplitContainerCustomSplitter scMain;
private System.Windows.Forms.ComboBox cbHostFilterSelection;
}
}

View file

@ -67,7 +67,6 @@ public HistoryForm(string historyPath, int splitterDistance = 0, int maxItemCoun
pbThumbnail.Reset();
cbFilenameFilterMethod.SelectedIndex = 0; // Contains
cbTypeFilterSelection.SelectedIndex = 0; // Image
lvHistory.FillLastColumn();
if (splitterDistance > 0)
@ -128,31 +127,17 @@ private HistoryItem[] ApplyFilters(HistoryItem[] historyItems)
if (cbTypeFilter.Checked)
{
string type;
string type = cbTypeFilterSelection.Text;
switch (cbTypeFilterSelection.SelectedIndex)
if (!string.IsNullOrEmpty(type))
{
case 0:
type = "Image";
break;
case 1:
type = "Text";
break;
case 2:
type = "File";
break;
default:
case 3:
type = "URL";
break;
result = result.Where(x => !string.IsNullOrEmpty(x.Type) && x.Type.Equals(type, StringComparison.InvariantCultureIgnoreCase));
}
result = result.Where(x => !string.IsNullOrEmpty(x.Type) && x.Type.Equals(type, StringComparison.InvariantCultureIgnoreCase));
}
if (cbHostFilter.Checked)
{
string host = txtHostFilter.Text;
string host = cbHostFilterSelection.Text;
if (!string.IsNullOrEmpty(host))
{
@ -241,13 +226,14 @@ private void AddHistoryItems(HistoryItem[] historyItems)
private void UpdateTitle(HistoryItem[] historyItems = null)
{
string title = "ShareX - " + string.Format(Resources.HistoryForm_HistoryForm_History_, HistoryPath);
// TODO: Translate
string title = "ShareX - History";
if (historyItems != null)
{
StringBuilder status = new StringBuilder();
status.Append(" - ");
status.Append(" (");
status.AppendFormat(Resources.HistoryForm_UpdateItemCount_Total___0_, allHistoryItems.Length.ToString("N0"));
if (allHistoryItems.Length > historyItems.Length)
@ -259,7 +245,6 @@ private void UpdateTitle(HistoryItem[] historyItems = null)
group hi by hi.Type
into t
let count = t.Count()
orderby t.Key
select string.Format(" - {0}: {1:N0}", t.Key, count);
foreach (string type in types)
@ -267,6 +252,7 @@ orderby t.Key
status.Append(type);
}
status.Append(")");
title += status.ToString();
}
@ -316,11 +302,23 @@ protected void OnSplitterDistanceChanged(int splitterDistance)
private void HistoryForm_Shown(object sender, EventArgs e)
{
Refresh();
RefreshHistoryItems();
if (lvHistory.Items.Count > 0)
{
lvHistory.Items[0].Selected = true;
cbTypeFilterSelection.Items.Clear();
cbTypeFilterSelection.Items.AddRange(allHistoryItems.Select(x => x.Type).Distinct().Where(x => !string.IsNullOrEmpty(x)).ToArray());
if (cbTypeFilterSelection.Items.Count > 0)
{
cbTypeFilterSelection.SelectedIndex = 0;
}
cbHostFilterSelection.Items.Clear();
cbHostFilterSelection.Items.AddRange(allHistoryItems.Select(x => x.Host).Distinct().Where(x => !string.IsNullOrEmpty(x)).ToArray());
}
this.ShowActivate();

View file

@ -150,15 +150,6 @@
<data name="cbTypeFilter.Text" xml:space="preserve">
<value>Dateitypfilter:</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Bild</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Datei</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Text</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>Datum &amp; Uhrzeit</value>
</data>

View file

@ -135,15 +135,6 @@
<data name="cbFilenameFilterMethod.Items2" xml:space="preserve">
<value>Termina con</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Imagen</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Archivo</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Texto</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>Fecha y hora</value>
</data>

View file

@ -135,9 +135,6 @@
<data name="cbFilenameFilterMethod.Items3" xml:space="preserve">
<value>Correspondance exacte</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Fichier</value>
</data>
<data name="cbTypeFilter.Text" xml:space="preserve">
<value>Filtre du type de fichier:</value>
</data>
@ -159,9 +156,6 @@
<data name="cbHostFilter.Text" xml:space="preserve">
<value>Filtre d'hôte:</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Image</value>
</data>
<data name="btnRemoveFilters.Text" xml:space="preserve">
<value>Supprimer les filtres</value>
</data>
@ -171,7 +165,4 @@
<data name="lblFilterTo.Text" xml:space="preserve">
<value>À:</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Texte</value>
</data>
</root>

View file

@ -150,15 +150,6 @@
<data name="cbTypeFilter.Text" xml:space="preserve">
<value>Fájltípus szűrő:</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Kép</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Fájl</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Szöveg</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>Dátum &amp; idő</value>
</data>

View file

@ -159,15 +159,6 @@
<data name="cbTypeFilter.Text" xml:space="preserve">
<value>파일 종류 필터:</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>이미지</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>파일</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>텍스트</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>날짜 및 시각</value>
</data>

View file

@ -150,15 +150,6 @@
<data name="cbTypeFilter.Text" xml:space="preserve">
<value>Bestandstype filter:</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Afbeelding</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Bestand</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Tekst</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>Datum &amp; tijd</value>
</data>

View file

@ -150,15 +150,6 @@
<data name="cbTypeFilter.Text" xml:space="preserve">
<value>Filtro de tipo de arquivo:</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Imagem</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Arquivo</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Texto</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>Data e hora</value>
</data>

View file

@ -145,7 +145,7 @@
<value>gbFilters</value>
</data>
<data name="&gt;&gt;btnApplyFilters.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="scMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@ -199,7 +199,7 @@
<value>8, 8</value>
</data>
<data name="pbThumbnail.Size" type="System.Drawing.Size, System.Drawing">
<value>414, 368</value>
<value>412, 368</value>
</data>
<data name="pbThumbnail.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@ -219,6 +219,27 @@
<data name="gbFilters.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Bottom, Left, Right</value>
</data>
<data name="cbHostFilterSelection.Location" type="System.Drawing.Point, System.Drawing">
<value>168, 176</value>
</data>
<data name="cbHostFilterSelection.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 21</value>
</data>
<data name="cbHostFilterSelection.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="&gt;&gt;cbHostFilterSelection.Name" xml:space="preserve">
<value>cbHostFilterSelection</value>
</data>
<data name="&gt;&gt;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="&gt;&gt;cbHostFilterSelection.Parent" xml:space="preserve">
<value>gbFilters</value>
</data>
<data name="&gt;&gt;cbHostFilterSelection.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="btnRemoveFilters.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
@ -244,41 +265,8 @@
<value>gbFilters</value>
</data>
<data name="&gt;&gt;btnRemoveFilters.ZOrder" xml:space="preserve">
<value>0</value>
<value>1</value>
</data>
<data name="txtHostFilter.Location" type="System.Drawing.Point, System.Drawing">
<value>168, 177</value>
</data>
<data name="txtHostFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 20</value>
</data>
<data name="txtHostFilter.TabIndex" type="System.Int32, mscorlib">
<value>13</value>
</data>
<data name="&gt;&gt;txtHostFilter.Name" xml:space="preserve">
<value>txtHostFilter</value>
</data>
<data name="&gt;&gt;txtHostFilter.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="&gt;&gt;txtHostFilter.Parent" xml:space="preserve">
<value>gbFilters</value>
</data>
<data name="&gt;&gt;txtHostFilter.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Image</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Text</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>File</value>
</data>
<data name="cbTypeFilterSelection.Items3" xml:space="preserve">
<value>URL</value>
<comment>@Invariant</comment></data>
<data name="cbTypeFilterSelection.Location" type="System.Drawing.Point, System.Drawing">
<value>168, 150</value>
</data>
@ -580,7 +568,7 @@
<value>8, 384</value>
</data>
<data name="gbFilters.Size" type="System.Drawing.Size, System.Drawing">
<value>414, 250</value>
<value>412, 250</value>
</data>
<data name="gbFilters.TabIndex" type="System.Int32, mscorlib">
<value>2</value>

View file

@ -150,15 +150,6 @@
<data name="cbTypeFilter.Text" xml:space="preserve">
<value>По типу файла:</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Картинка</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Файл</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Текст</value>
</data>
<data name="cbHostFilter.Text" xml:space="preserve">
<value>По хосту:</value>
</data>

View file

@ -166,15 +166,6 @@
<data name="btnRemoveFilters.Text" xml:space="preserve">
<value>Filtreleri kaldır</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Resim</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Dosya</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Yazı</value>
</data>
<data name="cbHostFilter.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 17</value>
</data>

View file

@ -132,12 +132,6 @@
<data name="lblFilterTo.Text" xml:space="preserve">
<value>Tới:</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>Ảnh</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>Tệp</value>
</data>
<data name="chFilename.Text" xml:space="preserve">
<value>Tên tệp</value>
</data>
@ -153,9 +147,6 @@
<data name="$this.Text" xml:space="preserve">
<value>Lịch sử</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>Văn bản</value>
</data>
<data name="cbFilenameFilterMethod.Items2" xml:space="preserve">
<value>Kết thúc với</value>
</data>

View file

@ -150,15 +150,6 @@
<data name="cbTypeFilter.Text" xml:space="preserve">
<value>文件类型过滤器:</value>
</data>
<data name="cbTypeFilterSelection.Items" xml:space="preserve">
<value>图像</value>
</data>
<data name="cbTypeFilterSelection.Items1" xml:space="preserve">
<value>文件</value>
</data>
<data name="cbTypeFilterSelection.Items2" xml:space="preserve">
<value>文本</value>
</data>
<data name="chDateTime.Text" xml:space="preserve">
<value>日期时间</value>
</data>

View file

@ -80,15 +80,6 @@ internal class Resources {
}
}
/// <summary>
/// Looks up a localized string similar to History: {0}.
/// </summary>
internal static string HistoryForm_HistoryForm_History_ {
get {
return ResourceManager.GetString("HistoryForm_HistoryForm_History_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Filtered: {0}.
/// </summary>

View file

@ -117,9 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>Chronik: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount___Filtered___0_" xml:space="preserve">
<value>Gefiltert: {0}</value>
</data>

View file

@ -117,9 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>Historial: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount_Total___0_" xml:space="preserve">
<value>Total: {0}</value>
</data>

View file

@ -156,9 +156,6 @@
<data name="HistoryItemManager_InitializeComponent_Forum__BBCode__linked_image" xml:space="preserve">
<value>Image liée pour forum (BBCode)</value>
</data>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>Historique: {0}</value>
</data>
<data name="HistoryItemManager_InitializeComponent_HTML_image" xml:space="preserve">
<value>Image HTML</value>
</data>

View file

@ -117,9 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>Előzmények: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount___Filtered___0_" xml:space="preserve">
<value>Szűrve: {0}</value>
</data>

View file

@ -201,9 +201,6 @@
<data name="ObjectListView_ObjectListView_Value" xml:space="preserve">
<value>값</value>
</data>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>히스토리: {0}</value>
</data>
<data name="HistoryItemManager_UpdateTexts_HTML_link___0__" xml:space="preserve">
<value>HTML 링크 ({0})</value>
</data>

View file

@ -117,9 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>Geschiedenis: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount___Filtered___0_" xml:space="preserve">
<value>Gefilterd: {0}</value>
</data>

View file

@ -117,9 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>Histórico: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount___Filtered___0_" xml:space="preserve">
<value>Filtrados: {0}</value>
</data>

View file

@ -129,9 +129,6 @@
<data name="ObjectListView_ObjectListView_Copy_value" xml:space="preserve">
<value>Copy value</value>
</data>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>History: {0}</value>
</data>
<data name="HistoryItemManager_InitializeComponent_Open" xml:space="preserve">
<value>Open</value>
</data>

View file

@ -117,9 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>История: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount___Filtered___0_" xml:space="preserve">
<value>Отфильтровано: {0}</value>
</data>

View file

@ -120,9 +120,6 @@
<data name="HistoryItemManager_InitializeComponent_Show" xml:space="preserve">
<value>Göster</value>
</data>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>Geçmiş: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount___Filtered___0_" xml:space="preserve">
<value>Filtrelenmiş: {0}</value>
</data>

View file

@ -162,9 +162,6 @@
<data name="HistoryItemManager_InitializeComponent_Forum__BBCode__linked_image" xml:space="preserve">
<value>Ảnh kèm đường dẫn cho Forum (BBCode)</value>
</data>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>Lịch sử: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount___Filtered___0_" xml:space="preserve">
<value>Đã lọc: {0}</value>
</data>

View file

@ -117,9 +117,6 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="HistoryForm_HistoryForm_History_" xml:space="preserve">
<value>历史: {0}</value>
</data>
<data name="HistoryForm_UpdateItemCount___Filtered___0_" xml:space="preserve">
<value>过滤: {0}</value>
</data>