mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-29 17:02:05 +13:00
Support context menu in task view
This commit is contained in:
parent
e53ecd40ab
commit
e1f0dd5bc6
8 changed files with 132 additions and 38 deletions
|
@ -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)
|
||||
|
|
|
@ -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();
|
||||
|
|
1
ShareX/Controls/TaskView.Designer.cs
generated
1
ShareX/Controls/TaskView.Designer.cs
generated
|
@ -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
|
||||
//
|
||||
|
|
|
@ -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();
|
||||
|
|
17
ShareX/Forms/MainForm.Designer.cs
generated
17
ShareX/Forms/MainForm.Designer.cs
generated
|
@ -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
|
||||
//
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -2090,6 +2090,9 @@
|
|||
<data name=">>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>
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in a new issue