Added UI to configure uploader filters

This commit is contained in:
Jaex 2016-10-28 14:52:06 +03:00
parent 3e9c561c0d
commit 4dd247c1fc
5 changed files with 917 additions and 419 deletions

View file

@ -37,7 +37,7 @@ public abstract class UploaderService<T> : IUploaderService
// Unique identifier
public string ServiceIdentifier => EnumValue.ToString();
public string ServiceName => ((Enum)(object)EnumValue).GetDescription();
public string ServiceName => ((Enum)(object)EnumValue).GetLocalizedDescription();
public virtual Icon ServiceIcon { get; }
@ -49,5 +49,10 @@ public virtual TabPage GetUploadersConfigTabPage(UploadersConfigForm form)
{
return null;
}
public override string ToString()
{
return ServiceName;
}
}
}

View file

@ -37,6 +37,10 @@ public class UploaderFilter
public List<string> Extensions { get; set; } = new List<string>();
//public long Size { get; set; }
public UploaderFilter()
{
}
public UploaderFilter(string uploader, params string[] extensions)
{
Uploader = uploader;
@ -55,6 +59,23 @@ public IGenericUploaderService GetUploaderService()
return UploaderFactory.AllGenericUploaderServices.Where(x => x.ServiceIdentifier.Equals(Uploader, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
}
public void SetExtensions(string extensions)
{
if (!string.IsNullOrEmpty(extensions))
{
Extensions = extensions.Split(',').Select(x => x.Trim()).Where(x => !string.IsNullOrEmpty(x)).ToList();
}
else
{
Extensions = new List<string>();
}
}
public string GetExtensions()
{
return string.Join(", ", Extensions);
}
public override string ToString()
{
return Uploader;

View file

@ -228,6 +228,18 @@ private void InitializeComponent()
this.pgTaskSettings = new System.Windows.Forms.PropertyGrid();
this.chkUseDefaultAdvancedSettings = new System.Windows.Forms.CheckBox();
this.tttvMain = new ShareX.HelpersLib.TabToTreeView();
this.tpUploaderFilters = new System.Windows.Forms.TabPage();
this.txtUploaderFiltersExtensions = new System.Windows.Forms.TextBox();
this.lblUploaderFiltersExtensions = new System.Windows.Forms.Label();
this.lblUploaderFiltersExtensionsExample = new System.Windows.Forms.Label();
this.cbUploaderFiltersDestination = new System.Windows.Forms.ComboBox();
this.lblUploaderFiltersDestination = new System.Windows.Forms.Label();
this.btnUploaderFiltersAdd = new System.Windows.Forms.Button();
this.btnUploaderFiltersUpdate = new System.Windows.Forms.Button();
this.btnUploaderFiltersRemove = new System.Windows.Forms.Button();
this.lvUploaderFiltersList = new ShareX.HelpersLib.MyListView();
this.chUploaderFiltersName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.chUploaderFiltersExtension = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.tcTaskSettings.SuspendLayout();
this.tpTask.SuspendLayout();
this.cmsDestinations.SuspendLayout();
@ -278,6 +290,7 @@ private void InitializeComponent()
this.tpTools.SuspendLayout();
this.pTools.SuspendLayout();
this.tpAdvanced.SuspendLayout();
this.tpUploaderFilters.SuspendLayout();
this.SuspendLayout();
//
// cmsAfterCapture
@ -1592,6 +1605,7 @@ private void InitializeComponent()
this.tcUpload.Controls.Add(this.tpUploadMain);
this.tcUpload.Controls.Add(this.tpFileNaming);
this.tcUpload.Controls.Add(this.tpUploadClipboard);
this.tcUpload.Controls.Add(this.tpUploaderFilters);
resources.ApplyResources(this.tcUpload, "tcUpload");
this.tcUpload.Name = "tcUpload";
this.tcUpload.SelectedIndex = 0;
@ -1958,6 +1972,91 @@ private void InitializeComponent()
this.tttvMain.TreeViewSize = 190;
this.tttvMain.TabChanged += new ShareX.HelpersLib.TabToTreeView.TabChangedEventHandler(this.tttvMain_TabChanged);
//
// tpUploaderFilters
//
this.tpUploaderFilters.Controls.Add(this.lvUploaderFiltersList);
this.tpUploaderFilters.Controls.Add(this.btnUploaderFiltersRemove);
this.tpUploaderFilters.Controls.Add(this.btnUploaderFiltersUpdate);
this.tpUploaderFilters.Controls.Add(this.btnUploaderFiltersAdd);
this.tpUploaderFilters.Controls.Add(this.lblUploaderFiltersDestination);
this.tpUploaderFilters.Controls.Add(this.cbUploaderFiltersDestination);
this.tpUploaderFilters.Controls.Add(this.lblUploaderFiltersExtensionsExample);
this.tpUploaderFilters.Controls.Add(this.lblUploaderFiltersExtensions);
this.tpUploaderFilters.Controls.Add(this.txtUploaderFiltersExtensions);
resources.ApplyResources(this.tpUploaderFilters, "tpUploaderFilters");
this.tpUploaderFilters.Name = "tpUploaderFilters";
this.tpUploaderFilters.UseVisualStyleBackColor = true;
//
// txtUploaderFiltersExtensions
//
resources.ApplyResources(this.txtUploaderFiltersExtensions, "txtUploaderFiltersExtensions");
this.txtUploaderFiltersExtensions.Name = "txtUploaderFiltersExtensions";
//
// lblUploaderFiltersExtensions
//
resources.ApplyResources(this.lblUploaderFiltersExtensions, "lblUploaderFiltersExtensions");
this.lblUploaderFiltersExtensions.Name = "lblUploaderFiltersExtensions";
//
// lblUploaderFiltersExtensionsExample
//
resources.ApplyResources(this.lblUploaderFiltersExtensionsExample, "lblUploaderFiltersExtensionsExample");
this.lblUploaderFiltersExtensionsExample.Name = "lblUploaderFiltersExtensionsExample";
//
// cbUploaderFiltersDestination
//
this.cbUploaderFiltersDestination.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cbUploaderFiltersDestination.FormattingEnabled = true;
resources.ApplyResources(this.cbUploaderFiltersDestination, "cbUploaderFiltersDestination");
this.cbUploaderFiltersDestination.Name = "cbUploaderFiltersDestination";
//
// lblUploaderFiltersDestination
//
resources.ApplyResources(this.lblUploaderFiltersDestination, "lblUploaderFiltersDestination");
this.lblUploaderFiltersDestination.Name = "lblUploaderFiltersDestination";
//
// btnUploaderFiltersAdd
//
resources.ApplyResources(this.btnUploaderFiltersAdd, "btnUploaderFiltersAdd");
this.btnUploaderFiltersAdd.Name = "btnUploaderFiltersAdd";
this.btnUploaderFiltersAdd.UseVisualStyleBackColor = true;
this.btnUploaderFiltersAdd.Click += new System.EventHandler(this.btnUploaderFiltersAdd_Click);
//
// btnUploaderFiltersUpdate
//
resources.ApplyResources(this.btnUploaderFiltersUpdate, "btnUploaderFiltersUpdate");
this.btnUploaderFiltersUpdate.Name = "btnUploaderFiltersUpdate";
this.btnUploaderFiltersUpdate.UseVisualStyleBackColor = true;
this.btnUploaderFiltersUpdate.Click += new System.EventHandler(this.btnUploaderFiltersUpdate_Click);
//
// btnUploaderFiltersRemove
//
resources.ApplyResources(this.btnUploaderFiltersRemove, "btnUploaderFiltersRemove");
this.btnUploaderFiltersRemove.Name = "btnUploaderFiltersRemove";
this.btnUploaderFiltersRemove.UseVisualStyleBackColor = true;
this.btnUploaderFiltersRemove.Click += new System.EventHandler(this.btnUploaderFiltersRemove_Click);
//
// lvUploaderFiltersList
//
resources.ApplyResources(this.lvUploaderFiltersList, "lvUploaderFiltersList");
this.lvUploaderFiltersList.AutoFillColumn = true;
this.lvUploaderFiltersList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.chUploaderFiltersName,
this.chUploaderFiltersExtension});
this.lvUploaderFiltersList.FullRowSelect = true;
this.lvUploaderFiltersList.HideSelection = false;
this.lvUploaderFiltersList.Name = "lvUploaderFiltersList";
this.lvUploaderFiltersList.UseCompatibleStateImageBehavior = false;
this.lvUploaderFiltersList.View = System.Windows.Forms.View.Details;
this.lvUploaderFiltersList.SelectedIndexChanged += new System.EventHandler(this.lvUploaderFiltersList_SelectedIndexChanged);
//
// chUploaderFiltersName
//
resources.ApplyResources(this.chUploaderFiltersName, "chUploaderFiltersName");
//
// chUploaderFiltersExtension
//
resources.ApplyResources(this.chUploaderFiltersExtension, "chUploaderFiltersExtension");
//
// TaskSettingsForm
//
resources.ApplyResources(this, "$this");
@ -2039,6 +2138,8 @@ private void InitializeComponent()
this.pTools.PerformLayout();
this.tpAdvanced.ResumeLayout(false);
this.tpAdvanced.PerformLayout();
this.tpUploaderFilters.ResumeLayout(false);
this.tpUploaderFilters.PerformLayout();
this.ResumeLayout(false);
}
@ -2243,5 +2344,17 @@ private void InitializeComponent()
private System.Windows.Forms.Panel pTools;
private System.Windows.Forms.TextBox txtToolsScreenColorPickerFormat;
private System.Windows.Forms.Label lblToolsScreenColorPickerFormat;
private System.Windows.Forms.TabPage tpUploaderFilters;
private HelpersLib.MyListView lvUploaderFiltersList;
private System.Windows.Forms.ColumnHeader chUploaderFiltersName;
private System.Windows.Forms.ColumnHeader chUploaderFiltersExtension;
private System.Windows.Forms.Button btnUploaderFiltersRemove;
private System.Windows.Forms.Button btnUploaderFiltersUpdate;
private System.Windows.Forms.Button btnUploaderFiltersAdd;
private System.Windows.Forms.Label lblUploaderFiltersDestination;
private System.Windows.Forms.ComboBox cbUploaderFiltersDestination;
private System.Windows.Forms.Label lblUploaderFiltersExtensionsExample;
private System.Windows.Forms.Label lblUploaderFiltersExtensions;
private System.Windows.Forms.TextBox txtUploaderFiltersExtensions;
}
}

View file

@ -323,6 +323,19 @@ public TaskSettingsForm(TaskSettings hotkeySetting, bool isDefault = false)
#endregion Clipboard upload
#region Uploader filters
cbUploaderFiltersDestination.Items.AddRange(UploaderFactory.AllGenericUploaderServices.OrderBy(x => x.ServiceName).ToArray());
if (TaskSettings.UploadSettings.UploaderFilters == null) TaskSettings.UploadSettings.UploaderFilters = new List<UploaderFilter>();
foreach (UploaderFilter filter in TaskSettings.UploadSettings.UploaderFilters)
{
AddUploaderFilterToList(filter);
}
#endregion Uploader filters
#endregion Upload
#region Actions
@ -1226,6 +1239,82 @@ private void cbClipboardUploadAutoIndexFolder_CheckedChanged(object sender, Even
TaskSettings.UploadSettings.ClipboardUploadAutoIndexFolder = cbClipboardUploadAutoIndexFolder.Checked;
}
private void AddUploaderFilterToList(UploaderFilter filter)
{
if (filter != null)
{
ListViewItem lvi = new ListViewItem(filter.Uploader);
lvi.SubItems.Add(filter.GetExtensions());
lvi.Tag = filter;
lvUploaderFiltersList.Items.Add(lvi);
}
}
private void UpdateUploaderFilterFields(UploaderFilter filter)
{
if (filter == null)
{
filter = new UploaderFilter();
}
for (int i = 0; i < cbUploaderFiltersDestination.Items.Count; i++)
{
if (cbUploaderFiltersDestination.Items[i].ToString().Equals(filter.Uploader, StringComparison.InvariantCultureIgnoreCase))
{
cbUploaderFiltersDestination.SelectedIndex = i;
break;
}
}
txtUploaderFiltersExtensions.Text = filter.GetExtensions();
}
private void btnUploaderFiltersAdd_Click(object sender, EventArgs e)
{
IGenericUploaderService service = cbUploaderFiltersDestination.SelectedItem as IGenericUploaderService;
if (service != null)
{
UploaderFilter filter = new UploaderFilter();
filter.Uploader = service.ServiceIdentifier;
filter.SetExtensions(txtUploaderFiltersExtensions.Text);
TaskSettings.UploadSettings.UploaderFilters.Add(filter);
AddUploaderFilterToList(filter);
lvUploaderFiltersList.SelectedIndex = lvUploaderFiltersList.Items.Count - 1;
}
}
private void btnUploaderFiltersUpdate_Click(object sender, EventArgs e)
{
}
private void btnUploaderFiltersRemove_Click(object sender, EventArgs e)
{
int index = lvUploaderFiltersList.SelectedIndex;
if (index > -1)
{
TaskSettings.UploadSettings.UploaderFilters.RemoveAt(index);
lvUploaderFiltersList.Items.RemoveAt(index);
}
}
private void lvUploaderFiltersList_SelectedIndexChanged(object sender, EventArgs e)
{
UploaderFilter filter = null;
if (lvUploaderFiltersList.SelectedItems.Count > 0)
{
filter = lvUploaderFiltersList.SelectedItems[0].Tag as UploaderFilter;
}
UpdateUploaderFilterFields(filter);
}
#endregion Upload
#region Actions

File diff suppressed because it is too large Load diff