diff --git a/ShareX/Properties/Resources.Designer.cs b/ShareX/Properties/Resources.Designer.cs index 23d037034..5337cee51 100644 --- a/ShareX/Properties/Resources.Designer.cs +++ b/ShareX/Properties/Resources.Designer.cs @@ -1383,6 +1383,106 @@ public class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter { + get { + object obj = ResourceManager.GetObject("notification_counter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_00 { + get { + object obj = ResourceManager.GetObject("notification_counter_00", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_02 { + get { + object obj = ResourceManager.GetObject("notification_counter_02", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_03 { + get { + object obj = ResourceManager.GetObject("notification_counter_03", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_04 { + get { + object obj = ResourceManager.GetObject("notification_counter_04", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_05 { + get { + object obj = ResourceManager.GetObject("notification_counter_05", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_06 { + get { + object obj = ResourceManager.GetObject("notification_counter_06", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_07 { + get { + object obj = ResourceManager.GetObject("notification_counter_07", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_08 { + get { + object obj = ResourceManager.GetObject("notification_counter_08", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_09 { + get { + object obj = ResourceManager.GetObject("notification_counter_09", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/ShareX/Properties/Resources.resx b/ShareX/Properties/Resources.resx index 44b0a6b6f..1ae98c407 100644 --- a/ShareX/Properties/Resources.resx +++ b/ShareX/Properties/Resources.resx @@ -814,4 +814,34 @@ Would you like to restart ShareX? ..\Resources\layout-select.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\notification-counter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-00.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-02.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-03.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-04.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-05.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-06.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-07.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-08.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-09.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/ShareX/QuickTaskMenu.cs b/ShareX/QuickTaskMenu.cs index 7cc2a6c85..9effe9d39 100644 --- a/ShareX/QuickTaskMenu.cs +++ b/ShareX/QuickTaskMenu.cs @@ -24,6 +24,9 @@ #endregion License Information (GPL v3) using ShareX.HelpersLib; +using ShareX.Properties; +using System; +using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; @@ -34,29 +37,39 @@ public class QuickTaskMenu public delegate void TaskInfoSelectedEventHandler(QuickTaskInfo taskInfo); public TaskInfoSelectedEventHandler TaskInfoSelected; + private ContextMenuStrip cms; + private List quickTaskInfoList; + public void ShowMenu() { - ContextMenuStrip cms = new ContextMenuStrip + quickTaskInfoList = new List(); + + cms = new ContextMenuStrip() { - Font = new Font("Arial", 10f), - AutoClose = false, - ShowImageMargin = false + Font = new Font("Arial", 10f) }; + cms.KeyUp += Cms_KeyUp; + cms.Closed += (sender, e) => cms = null; + if (Program.Settings != null && Program.Settings.QuickTaskPresets != null && Program.Settings.QuickTaskPresets.Count > 0) { + int index = 0; + foreach (QuickTaskInfo taskInfo in Program.Settings.QuickTaskPresets) { if (taskInfo.IsValid) { ToolStripMenuItem tsmi = new ToolStripMenuItem { Text = taskInfo.ToString().Replace("&", "&&"), Tag = taskInfo }; + tsmi.Image = GetNumberImage(index); tsmi.Click += (sender, e) => { QuickTaskInfo selectedTaskInfo = ((ToolStripMenuItem)sender).Tag as QuickTaskInfo; - cms.Close(); OnTaskInfoSelected(selectedTaskInfo); }; cms.Items.Add(tsmi); + quickTaskInfoList.Add(taskInfo); + index++; } else { @@ -71,6 +84,7 @@ public void ShowMenu() // Translate ToolStripMenuItem tsmiEdit = new ToolStripMenuItem("Edit this menu..."); + tsmiEdit.Image = Resources.gear; tsmiEdit.Click += (sender, e) => { cms.Close(); @@ -81,6 +95,7 @@ public void ShowMenu() cms.Items.Add(new ToolStripSeparator()); ToolStripMenuItem tsmiCancel = new ToolStripMenuItem("Cancel"); + tsmiCancel.Image = Resources.cross; tsmiCancel.Click += (sender, e) => cms.Close(); cms.Items.Add(tsmiCancel); @@ -89,10 +104,59 @@ public void ShowMenu() cms.Show(cursorPosition); } + private void Cms_KeyUp(object sender, KeyEventArgs e) + { + switch (e.KeyCode) + { + case Keys.D1: case Keys.NumPad1: ExecuteTaskAt(0); break; + case Keys.D2: case Keys.NumPad2: ExecuteTaskAt(1); break; + case Keys.D3: case Keys.NumPad3: ExecuteTaskAt(2); break; + case Keys.D4: case Keys.NumPad4: ExecuteTaskAt(3); break; + case Keys.D5: case Keys.NumPad5: ExecuteTaskAt(4); break; + case Keys.D6: case Keys.NumPad6: ExecuteTaskAt(5); break; + case Keys.D7: case Keys.NumPad7: ExecuteTaskAt(6); break; + case Keys.D8: case Keys.NumPad8: ExecuteTaskAt(7); break; + case Keys.D9: case Keys.NumPad9: ExecuteTaskAt(8); break; + case Keys.D0: case Keys.NumPad0: ExecuteTaskAt(9); break; + } + } + + private Image GetNumberImage(int index) + { + switch (index) + { + case 0: return Resources.notification_counter; + case 1: return Resources.notification_counter_02; + case 2: return Resources.notification_counter_03; + case 3: return Resources.notification_counter_04; + case 4: return Resources.notification_counter_05; + case 5: return Resources.notification_counter_06; + case 6: return Resources.notification_counter_07; + case 7: return Resources.notification_counter_08; + case 8: return Resources.notification_counter_09; + case 9: return Resources.notification_counter_00; + } + + return null; + } + + private void ExecuteTaskAt(int index) + { + if (quickTaskInfoList != null && quickTaskInfoList.Count > 0 && quickTaskInfoList.Count > index) + { + OnTaskInfoSelected(quickTaskInfoList[index]); + } + } + protected void OnTaskInfoSelected(QuickTaskInfo taskInfo) { if (TaskInfoSelected != null) { + if (cms != null && !cms.IsDisposed) + { + cms.Close(); + } + TaskInfoSelected(taskInfo); } } diff --git a/ShareX/Resources/notification-counter-00.png b/ShareX/Resources/notification-counter-00.png new file mode 100644 index 000000000..f77ff8020 Binary files /dev/null and b/ShareX/Resources/notification-counter-00.png differ diff --git a/ShareX/Resources/notification-counter-02.png b/ShareX/Resources/notification-counter-02.png new file mode 100644 index 000000000..d942c80ee Binary files /dev/null and b/ShareX/Resources/notification-counter-02.png differ diff --git a/ShareX/Resources/notification-counter-03.png b/ShareX/Resources/notification-counter-03.png new file mode 100644 index 000000000..9f5973804 Binary files /dev/null and b/ShareX/Resources/notification-counter-03.png differ diff --git a/ShareX/Resources/notification-counter-04.png b/ShareX/Resources/notification-counter-04.png new file mode 100644 index 000000000..4966b37db Binary files /dev/null and b/ShareX/Resources/notification-counter-04.png differ diff --git a/ShareX/Resources/notification-counter-05.png b/ShareX/Resources/notification-counter-05.png new file mode 100644 index 000000000..e566b3f5b Binary files /dev/null and b/ShareX/Resources/notification-counter-05.png differ diff --git a/ShareX/Resources/notification-counter-06.png b/ShareX/Resources/notification-counter-06.png new file mode 100644 index 000000000..04dc250cb Binary files /dev/null and b/ShareX/Resources/notification-counter-06.png differ diff --git a/ShareX/Resources/notification-counter-07.png b/ShareX/Resources/notification-counter-07.png new file mode 100644 index 000000000..19e2a1078 Binary files /dev/null and b/ShareX/Resources/notification-counter-07.png differ diff --git a/ShareX/Resources/notification-counter-08.png b/ShareX/Resources/notification-counter-08.png new file mode 100644 index 000000000..f3a650601 Binary files /dev/null and b/ShareX/Resources/notification-counter-08.png differ diff --git a/ShareX/Resources/notification-counter-09.png b/ShareX/Resources/notification-counter-09.png new file mode 100644 index 000000000..3d52f252a Binary files /dev/null and b/ShareX/Resources/notification-counter-09.png differ diff --git a/ShareX/Resources/notification-counter.png b/ShareX/Resources/notification-counter.png new file mode 100644 index 000000000..b7119e340 Binary files /dev/null and b/ShareX/Resources/notification-counter.png differ diff --git a/ShareX/ShareX.csproj b/ShareX/ShareX.csproj index 398c2d89c..b47f8e877 100644 --- a/ShareX/ShareX.csproj +++ b/ShareX/ShareX.csproj @@ -1266,6 +1266,16 @@ + + + + + + + + + +