Support context menu in task view

This commit is contained in:
Jaex 2019-05-11 23:36:00 +03:00
parent e53ecd40ab
commit e1f0dd5bc6
8 changed files with 132 additions and 38 deletions

View file

@ -72,7 +72,7 @@ public RoundedCornerPanel()
{
BackColor = Color.Transparent;
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.ResizeRedraw | ControlStyles.OptimizedDoubleBuffer | ControlStyles.SupportsTransparentBackColor, true);
}
protected override void OnPaint(PaintEventArgs e)

View file

@ -96,6 +96,46 @@ public bool ProgressVisible
private bool progressVisible;
public new event MouseEventHandler MouseDown
{
add
{
base.MouseDown += value;
lblFilename.MouseDown += value;
pThumbnail.MouseDown += value;
pbThumbnail.MouseDown += value;
pbProgress.MouseDown += value;
}
remove
{
base.MouseDown -= value;
lblFilename.MouseDown -= value;
pThumbnail.MouseDown -= value;
pbThumbnail.MouseDown -= value;
pbProgress.MouseDown -= value;
}
}
public new event MouseEventHandler MouseUp
{
add
{
base.MouseUp += value;
lblFilename.MouseUp += value;
pThumbnail.MouseUp += value;
pbThumbnail.MouseUp += value;
pbProgress.MouseUp += value;
}
remove
{
base.MouseUp -= value;
lblFilename.MouseUp -= value;
pThumbnail.MouseUp -= value;
pbThumbnail.MouseUp -= value;
pbProgress.MouseUp -= value;
}
}
public TaskPanel(WorkerTask task)
{
InitializeComponent();

View file

@ -40,6 +40,7 @@ private void InitializeComponent()
this.flpMain.Padding = new System.Windows.Forms.Padding(5, 3, 5, 5);
this.flpMain.Size = new System.Drawing.Size(242, 8);
this.flpMain.TabIndex = 0;
this.flpMain.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Panel_MouseUp);
//
// TaskView
//

View file

@ -40,6 +40,10 @@ public partial class TaskView : UserControl
{
public List<TaskPanel> TaskPanels { get; private set; }
public Size ThumbnailSize { get; set; } = new Size(200, 150);
public WorkerTask SelectedTask { get; private set; }
public delegate void TaskViewMouseEventHandler(object sender, MouseEventArgs e, WorkerTask task);
public event TaskViewMouseEventHandler ContextMenuRequested;
public TaskView()
{
@ -71,11 +75,29 @@ public void AddTaskPanel(WorkerTask task)
{
TaskPanel panel = new TaskPanel(task);
panel.ChangeThumbnailSize(ThumbnailSize);
panel.MouseDown += (sender, e) => SelectedTask = panel.Task;
panel.MouseUp += Panel_MouseUp;
TaskPanels.Add(panel);
flpMain.Controls.Add(panel);
flpMain.Controls.SetChildIndex(panel, 0);
}
protected void OnContextMenuRequested(object sender, MouseEventArgs e, WorkerTask task)
{
if (ContextMenuRequested != null)
{
ContextMenuRequested(sender, e, task);
}
}
private void Panel_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
OnContextMenuRequested(sender, e, SelectedTask);
}
}
public void UpdateFilename(WorkerTask task)
{
FindPanel(task)?.UpdateFilename();

View file

@ -272,11 +272,11 @@ private void InitializeComponent()
this.pbDiscordHide = new System.Windows.Forms.PictureBox();
this.pNews = new System.Windows.Forms.Panel();
this.btnCloseNews = new System.Windows.Forms.Button();
this.ucNews = new ShareX.NewsListControl();
this.flpCommunity = new System.Windows.Forms.FlowLayoutPanel();
this.flpDiscord = new System.Windows.Forms.FlowLayoutPanel();
this.pThumbnailView = new System.Windows.Forms.Panel();
this.ucTaskView = new ShareX.TaskView();
this.ucNews = new ShareX.NewsListControl();
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
this.scMain.Panel1.SuspendLayout();
this.scMain.Panel2.SuspendLayout();
@ -2148,12 +2148,6 @@ private void InitializeComponent()
this.btnCloseNews.UseVisualStyleBackColor = true;
this.btnCloseNews.Click += new System.EventHandler(this.btnCloseNews_Click);
//
// ucNews
//
this.ucNews.BackColor = System.Drawing.SystemColors.Window;
resources.ApplyResources(this.ucNews, "ucNews");
this.ucNews.Name = "ucNews";
//
// flpCommunity
//
resources.ApplyResources(this.flpCommunity, "flpCommunity");
@ -2177,10 +2171,17 @@ private void InitializeComponent()
//
// ucTaskView
//
this.ucTaskView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(47)))), ((int)(((byte)(56)))));
resources.ApplyResources(this.ucTaskView, "ucTaskView");
this.ucTaskView.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(42)))), ((int)(((byte)(47)))), ((int)(((byte)(56)))));
this.ucTaskView.Name = "ucTaskView";
this.ucTaskView.ThumbnailSize = new System.Drawing.Size(200, 150);
this.ucTaskView.ContextMenuRequested += new ShareX.TaskView.TaskViewMouseEventHandler(this.UcTaskView_ContextMenuRequested);
//
// ucNews
//
this.ucNews.BackColor = System.Drawing.SystemColors.Window;
resources.ApplyResources(this.ucNews, "ucNews");
this.ucNews.Name = "ucNews";
//
// MainForm
//

View file

@ -590,7 +590,7 @@ private void EnableDisableToolStripMenuItems<T>(params ToolStripDropDownItem[] p
}
}
private void UpdateContextMenu()
private void UpdateContextMenu(WorkerTask task = null)
{
cmsTaskInfo.SuspendLayout();
@ -598,30 +598,38 @@ private void UpdateContextMenu()
tsmiShowQRCode.Visible = tsmiOCRImage.Visible = tsmiCombineImages.Visible = tsmiUploadSelectedFile.Visible = tsmiDownloadSelectedURL.Visible =
tsmiEditSelectedFile.Visible = tsmiDeleteSelectedItem.Visible = tsmiDeleteSelectedFile.Visible = tsmiShortenSelectedURL.Visible =
tsmiShareSelectedURL.Visible = tsmiClearList.Visible = tssUploadInfo1.Visible = false;
pbPreview.Reset();
uim.RefreshSelectedItems();
switch (Program.Settings.ImagePreview)
if (task == null)
{
case ImagePreviewVisibility.Show:
scMain.Panel2Collapsed = false;
break;
case ImagePreviewVisibility.Hide:
scMain.Panel2Collapsed = true;
break;
case ImagePreviewVisibility.Automatic:
scMain.Panel2Collapsed = !uim.IsItemSelected || (!uim.SelectedItem.IsImageFile && !uim.SelectedItem.IsImageURL);
break;
pbPreview.Reset();
uim.RefreshSelectedItems();
switch (Program.Settings.ImagePreview)
{
case ImagePreviewVisibility.Show:
scMain.Panel2Collapsed = false;
break;
case ImagePreviewVisibility.Hide:
scMain.Panel2Collapsed = true;
break;
case ImagePreviewVisibility.Automatic:
scMain.Panel2Collapsed = !uim.IsItemSelected || (!uim.SelectedItem.IsImageFile && !uim.SelectedItem.IsImageURL);
break;
}
switch (Program.Settings.ImagePreviewLocation)
{
case ImagePreviewLocation.Side:
scMain.Orientation = Orientation.Vertical;
break;
case ImagePreviewLocation.Bottom:
scMain.Orientation = Orientation.Horizontal;
break;
}
}
switch (Program.Settings.ImagePreviewLocation)
else
{
case ImagePreviewLocation.Side:
scMain.Orientation = Orientation.Vertical;
break;
case ImagePreviewLocation.Bottom:
scMain.Orientation = Orientation.Horizontal;
break;
uim.SelectItem(task);
}
if (uim.IsItemSelected)
@ -638,7 +646,9 @@ private void UpdateContextMenu()
tsmiOpenFolder.Enabled = uim.SelectedItem.IsFileExist;
tsmiOpenThumbnailFile.Enabled = uim.SelectedItem.IsThumbnailFileExist;
if (GetCurrentTasks().Any(x => x.IsWorking))
WorkerTask[] tasks = GetCurrentTasks();
if (tasks != null && tasks.Any(x => x.IsWorking))
{
tsmiStopUpload.Visible = true;
}
@ -707,15 +717,18 @@ private void UpdateContextMenu()
tsmiShowResponse.Visible = !string.IsNullOrEmpty(uim.SelectedItem.Info.Result.Response);
}
if (!scMain.Panel2Collapsed)
if (task == null)
{
if (uim.SelectedItem.IsImageFile)
if (!scMain.Panel2Collapsed)
{
pbPreview.LoadImageFromFileAsync(uim.SelectedItem.Info.FilePath);
}
else if (uim.SelectedItem.IsImageURL)
{
pbPreview.LoadImageFromURLAsync(uim.SelectedItem.Info.Result.URL);
if (uim.SelectedItem.IsImageFile)
{
pbPreview.LoadImageFromFileAsync(uim.SelectedItem.Info.FilePath);
}
else if (uim.SelectedItem.IsImageURL)
{
pbPreview.LoadImageFromURLAsync(uim.SelectedItem.Info.Result.URL);
}
}
}
}
@ -1344,6 +1357,12 @@ private void lvUploads_KeyDown(object sender, KeyEventArgs e)
e.Handled = e.SuppressKeyPress = true;
}
private void UcTaskView_ContextMenuRequested(object sender, MouseEventArgs e, WorkerTask task)
{
UpdateContextMenu(task);
cmsTaskInfo.Show(sender as Control, e.X + 1, e.Y + 1);
}
private void cmsTaskInfo_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
if (e.CloseReason == ToolStripDropDownCloseReason.Keyboard)

View file

@ -2090,6 +2090,9 @@
<data name="&gt;&gt;flpCommunity.ZOrder" xml:space="preserve">
<value>4</value>
</data>
<data name="ucTaskView.AutoScroll" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="ucTaskView.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
</data>

View file

@ -96,6 +96,14 @@ public void RefreshSelectedItems()
}
}
public void SelectItem(WorkerTask task)
{
if (task != null && task.Info != null)
{
SelectedItems = new UploadInfoStatus[] { new UploadInfoStatus(task.Info) };
}
}
#region Open
public void OpenURL()