DownloadHandler.cs 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. using System.Drawing;
  2. using CefSharp;
  3. namespace prBrowser
  4. {
  5. internal class DownloadHandler : IDownloadHandler
  6. {
  7. private readonly MainForm myForm;
  8. public DownloadHandler(MainForm form)
  9. {
  10. myForm = form;
  11. }
  12. public void OnBeforeDownload(IWebBrowser webBrowser, IBrowser browser, DownloadItem item, IBeforeDownloadCallback callback)
  13. {
  14. if (callback.IsDisposed)
  15. {
  16. return;
  17. }
  18. using (callback)
  19. {
  20. myForm.UpdateDownloadItem(item);
  21. myForm.CurTab.Browser.BackColor = Color.White;
  22. string path = myForm.CalcDownloadPath(item);
  23. if (path == null)
  24. {
  25. callback.Continue(path, showDialog: false);
  26. return;
  27. }
  28. myForm.OpenDownloadsTab();
  29. callback.Continue(path, showDialog: true);
  30. }
  31. }
  32. public void OnDownloadUpdated(IWebBrowser webBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
  33. {
  34. myForm.UpdateDownloadItem(downloadItem);
  35. if (downloadItem.IsInProgress && myForm.CancelRequests.Contains(downloadItem.Id))
  36. {
  37. callback.Cancel();
  38. }
  39. }
  40. }
  41. }