From d1b2de27ff6298e4d4e415cd79998e5eb6235cb9 Mon Sep 17 00:00:00 2001 From: Jaex Date: Sat, 27 Feb 2016 08:57:40 +0200 Subject: [PATCH] Recent manager init moved from mainform --- ShareX/Forms/MainForm.cs | 11 +--- ShareX/RecentTaskManager.cs | 116 ++++++++++++++++++++---------------- ShareX/TaskManager.cs | 9 ++- 3 files changed, 70 insertions(+), 66 deletions(-) diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index e72be16fd..7d1ec95d6 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -178,16 +178,7 @@ public void UpdateControls() niTray.Visible = Program.Settings.ShowTray; - if (Program.Settings.RecentTasksSave) - { - TaskManager.RecentManager.MaxCount = Program.Settings.RecentTasksMaxCount; - TaskManager.RecentManager.UpdateItems(Program.Settings.RecentTasks); - - if (Program.Settings.RecentTasksShowInMainWindow && lvUploads.Items.Count == 0) - { - TaskManager.AddRecentTasksToMainWindow(); - } - } + TaskManager.RecentManager.InitItems(); bool isPositionChanged = false; diff --git a/ShareX/RecentTaskManager.cs b/ShareX/RecentTaskManager.cs index 7c560275f..f7425a6bc 100644 --- a/ShareX/RecentTaskManager.cs +++ b/ShareX/RecentTaskManager.cs @@ -53,7 +53,7 @@ public int MaxCount Tasks.Dequeue(); } - UpdateRecentMenu(); + UpdateTrayMenu(); } } } @@ -67,6 +67,22 @@ public RecentTaskManager() Tasks = new Queue(); } + public void InitItems() + { + lock (itemsLock) + { + MaxCount = Program.Settings.RecentTasksMaxCount; + + if (Program.Settings.RecentTasks != null) + { + Tasks = new Queue(Program.Settings.RecentTasks.Take(MaxCount)); + } + + UpdateTrayMenu(); + UpdateMainWindowList(); + } + } + public void Add(WorkerTask task) { string info = task.Info.ToString(); @@ -97,69 +113,63 @@ public void Add(RecentTask task) Tasks.Enqueue(task); - UpdateRecentMenu(); + UpdateTrayMenu(); } } - public void UpdateItems(RecentTask[] tasks) + private void UpdateTrayMenu() { - if (tasks != null) - { - lock (itemsLock) - { - Tasks = new Queue(tasks.Take(MaxCount)); - - UpdateRecentMenu(); - } - } - } - - private void UpdateRecentMenu() - { - if (!Program.Settings.RecentTasksShowInTrayMenu || Program.MainForm == null || Program.MainForm.tsmiTrayRecentItems == null || Tasks.Count == 0) - { - return; - } - ToolStripMenuItem tsmi = Program.MainForm.tsmiTrayRecentItems; - if (!tsmi.Visible) + if (Program.Settings.RecentTasksSave && Program.Settings.RecentTasksShowInTrayMenu && Tasks.Count > 0) { tsmi.Visible = true; + + tsmi.DropDownItems.Clear(); + ToolStripMenuItem tsmiTip = new ToolStripMenuItem(Resources.RecentManager_UpdateRecentMenu_Left_click_to_copy_URL_to_clipboard__Right_click_to_open_URL_); + tsmiTip.Enabled = false; + tsmi.DropDownItems.Add(tsmiTip); + tsmi.DropDownItems.Add(new ToolStripSeparator()); + + foreach (RecentTask task in Tasks) + { + ToolStripMenuItem tsmiLink = new ToolStripMenuItem(); + tsmiLink.Text = task.TrayMenuText; + string link = task.ToString(); + tsmiLink.ToolTipText = link; + tsmiLink.MouseUp += (sender, e) => + { + if (e.Button == MouseButtons.Left) + { + ClipboardHelpers.CopyText(link); + } + else if (e.Button == MouseButtons.Right) + { + URLHelpers.OpenURL(link); + } + }; + + if (Program.Settings.RecentTasksTrayMenuMostRecentFirst) + { + tsmi.DropDownItems.Insert(2, tsmiLink); + } + else + { + tsmi.DropDownItems.Add(tsmiLink); + } + } } - - tsmi.DropDownItems.Clear(); - ToolStripMenuItem tsmiTip = new ToolStripMenuItem(Resources.RecentManager_UpdateRecentMenu_Left_click_to_copy_URL_to_clipboard__Right_click_to_open_URL_); - tsmiTip.Enabled = false; - tsmi.DropDownItems.Add(tsmiTip); - tsmi.DropDownItems.Add(new ToolStripSeparator()); - - foreach (RecentTask task in Tasks) + else { - ToolStripMenuItem tsmiLink = new ToolStripMenuItem(); - tsmiLink.Text = task.TrayMenuText; - string link = task.ToString(); - tsmiLink.ToolTipText = link; - tsmiLink.MouseUp += (sender, e) => - { - if (e.Button == MouseButtons.Left) - { - ClipboardHelpers.CopyText(link); - } - else if (e.Button == MouseButtons.Right) - { - URLHelpers.OpenURL(link); - } - }; + tsmi.Visible = false; + } + } - if (Program.Settings.RecentTasksTrayMenuMostRecentFirst) - { - tsmi.DropDownItems.Insert(2, tsmiLink); - } - else - { - tsmi.DropDownItems.Add(tsmiLink); - } + private void UpdateMainWindowList() + { + if (Program.Settings.RecentTasksSave && Program.Settings.RecentTasksShowInMainWindow && Tasks.Count > 0) + { + TaskManager.AddRecentTasksToMainWindow(); } } } diff --git a/ShareX/TaskManager.cs b/ShareX/TaskManager.cs index f395a7ab2..e3405fe2f 100644 --- a/ShareX/TaskManager.cs +++ b/ShareX/TaskManager.cs @@ -505,10 +505,13 @@ public static void UpdateTrayIcon(int progress = -1) public static void AddRecentTasksToMainWindow() { - foreach (RecentTask recentTask in RecentManager.Tasks) + if (ListViewControl.Items.Count == 0) { - WorkerTask task = WorkerTask.CreateHistoryTask(recentTask); - Start(task); + foreach (RecentTask recentTask in RecentManager.Tasks) + { + WorkerTask task = WorkerTask.CreateHistoryTask(recentTask); + Start(task); + } } } }