Merge remote-tracking branch 'refs/remotes/ShareX/master'

This commit is contained in:
lithium_ 2016-05-30 05:59:09 -07:00
commit 2910628926
4 changed files with 53 additions and 7 deletions

View file

@ -1758,7 +1758,7 @@ private void InitHotkeys()
private void HandleHotkeys(HotkeySettings hotkeySetting) private void HandleHotkeys(HotkeySettings hotkeySetting)
{ {
DebugHelper.WriteLine("Hotkey triggered: " + hotkeySetting); DebugHelper.WriteLine("Hotkey triggered. " + hotkeySetting);
if (hotkeySetting.TaskSettings.Job != HotkeyType.None) if (hotkeySetting.TaskSettings.Job != HotkeyType.None)
{ {

View file

@ -138,6 +138,8 @@ public TimeSpan TaskDuration
} }
} }
public Stopwatch UploadDuration { get; set; }
public UploadResult Result { get; set; } public UploadResult Result { get; set; }
public TaskInfo(TaskSettings taskSettings) public TaskInfo(TaskSettings taskSettings)

View file

@ -65,6 +65,7 @@ public static void Start(WorkerTask task)
task.StatusChanged += task_StatusChanged; task.StatusChanged += task_StatusChanged;
task.UploadStarted += task_UploadStarted; task.UploadStarted += task_UploadStarted;
task.UploadProgressChanged += task_UploadProgressChanged; task.UploadProgressChanged += task_UploadProgressChanged;
task.UploadCompleted += task_UploadCompleted;
task.TaskCompleted += task_TaskCompleted; task.TaskCompleted += task_TaskCompleted;
task.UploadersConfigWindowRequested += Task_UploadersConfigWindowRequested; task.UploadersConfigWindowRequested += Task_UploadersConfigWindowRequested;
} }
@ -272,6 +273,28 @@ private static void task_UploadProgressChanged(WorkerTask task)
} }
} }
private static void task_UploadCompleted(WorkerTask task)
{
TaskInfo info = task.Info;
if (info != null && info.Result != null && !info.Result.IsError)
{
string url = info.Result.ToString();
if (!string.IsNullOrEmpty(url))
{
string text = $"Upload completed. URL: {url}";
if (info.UploadDuration != null)
{
text += $", Duration: {info.UploadDuration.ElapsedMilliseconds} ms";
}
DebugHelper.WriteLine(text);
}
}
}
private static void task_TaskCompleted(WorkerTask task) private static void task_TaskCompleted(WorkerTask task)
{ {
try try
@ -318,7 +341,7 @@ private static void task_TaskCompleted(WorkerTask task)
} }
else else
{ {
DebugHelper.WriteLine($"Task completed. Filename: {info.FileName}, URL: {info.Result}, Duration: {info.TaskDuration.TotalMilliseconds:d} ms"); DebugHelper.WriteLine($"Task completed. Filename: {info.FileName}, Duration: {(long)info.TaskDuration.TotalMilliseconds} ms");
string result = info.Result.ToString(); string result = info.Result.ToString();

View file

@ -28,6 +28,7 @@ You should have received a copy of the GNU General Public License
using ShareX.UploadersLib; using ShareX.UploadersLib;
using ShareX.UploadersLib.OtherServices; using ShareX.UploadersLib.OtherServices;
using System; using System;
using System.Diagnostics;
using System.Drawing; using System.Drawing;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@ -46,6 +47,7 @@ public class WorkerTask : IDisposable
public event TaskEventHandler StatusChanged; public event TaskEventHandler StatusChanged;
public event TaskEventHandler UploadStarted; public event TaskEventHandler UploadStarted;
public event TaskEventHandler UploadProgressChanged; public event TaskEventHandler UploadProgressChanged;
public event TaskEventHandler UploadCompleted;
public event TaskEventHandler TaskCompleted; public event TaskEventHandler TaskCompleted;
public event UploaderServiceEventHandler UploadersConfigWindowRequested; public event UploaderServiceEventHandler UploadersConfigWindowRequested;
@ -253,6 +255,8 @@ public void Start()
{ {
if (Status == TaskStatus.InQueue && !StopRequested) if (Status == TaskStatus.InQueue && !StopRequested)
{ {
Info.TaskStartTime = DateTime.UtcNow;
threadWorker = new ThreadWorker(); threadWorker = new ThreadWorker();
Prepare(); Prepare();
threadWorker.DoWork += ThreadDoWork; threadWorker.DoWork += ThreadDoWork;
@ -302,8 +306,6 @@ public void Stop()
private void ThreadDoWork() private void ThreadDoWork()
{ {
Info.TaskStartTime = DateTime.UtcNow;
CreateTaskReferenceHelper(); CreateTaskReferenceHelper();
try try
@ -343,8 +345,6 @@ private void ThreadDoWork()
DoAfterUploadJobs(); DoAfterUploadJobs();
} }
} }
Info.TaskEndTime = DateTime.UtcNow;
} }
private void CreateTaskReferenceHelper() private void CreateTaskReferenceHelper()
@ -425,6 +425,11 @@ private void DoUploadJob()
isError = DoUpload(retry); isError = DoUpload(retry);
} }
} }
if (!isError)
{
OnUploadCompleted();
}
} }
else else
{ {
@ -851,7 +856,13 @@ public UploadResult UploadData(IGenericUploaderService service, Stream stream, s
uploader.EarlyURLCopyRequested += url => ClipboardHelpers.CopyText(url); uploader.EarlyURLCopyRequested += url => ClipboardHelpers.CopyText(url);
} }
return uploader.Upload(stream, fileName); Info.UploadDuration = Stopwatch.StartNew();
UploadResult result = uploader.Upload(stream, fileName);
Info.UploadDuration.Stop();
return result;
} }
return null; return null;
@ -1023,6 +1034,14 @@ private void OnUploadStarted()
} }
} }
private void OnUploadCompleted()
{
if (UploadCompleted != null)
{
threadWorker.InvokeAsync(() => UploadCompleted(this));
}
}
private void OnUploadProgressChanged() private void OnUploadProgressChanged()
{ {
if (UploadProgressChanged != null) if (UploadProgressChanged != null)
@ -1033,6 +1052,8 @@ private void OnUploadProgressChanged()
private void OnTaskCompleted() private void OnTaskCompleted()
{ {
Info.TaskEndTime = DateTime.UtcNow;
Status = TaskStatus.Completed; Status = TaskStatus.Completed;
if (StopRequested) if (StopRequested)