Recent manager init moved from mainform

This commit is contained in:
Jaex 2016-02-27 08:57:40 +02:00
parent 225b7fe3a7
commit d1b2de27ff
3 changed files with 70 additions and 66 deletions

View file

@ -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;

View file

@ -53,7 +53,7 @@ public int MaxCount
Tasks.Dequeue();
}
UpdateRecentMenu();
UpdateTrayMenu();
}
}
}
@ -67,6 +67,22 @@ public RecentTaskManager()
Tasks = new Queue<RecentTask>();
}
public void InitItems()
{
lock (itemsLock)
{
MaxCount = Program.Settings.RecentTasksMaxCount;
if (Program.Settings.RecentTasks != null)
{
Tasks = new Queue<RecentTask>(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<RecentTask>(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();
}
}
}

View file

@ -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);
}
}
}
}