Add project
This commit is contained in:
commit
7fcb279842
961 changed files with 370491 additions and 0 deletions
WebBrowser
94
WebBrowser/DownloadHandler.cs
Normal file
94
WebBrowser/DownloadHandler.cs
Normal file
|
@ -0,0 +1,94 @@
|
|||
// Copyright © 2013 The CefSharp Authors. All rights reserved.
|
||||
//
|
||||
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using WebBrowser;
|
||||
using CefSharp;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Linq.Expressions;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace DiamondCreeperBrowser
|
||||
{
|
||||
public class DownloadHandler : IDownloadHandler
|
||||
{
|
||||
public event EventHandler<DownloadItem> OnBeforeDownloadFired;
|
||||
|
||||
public event EventHandler<DownloadItem> OnDownloadUpdatedFired;
|
||||
|
||||
public frmBrowser frmref;
|
||||
public DownloadHandler(frmBrowser frm)
|
||||
{
|
||||
frmref = frm;
|
||||
}
|
||||
|
||||
public DownloadProgress downloadProgress = new DownloadProgress();
|
||||
public DownloadItem downloadItem;
|
||||
public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
|
||||
{
|
||||
OnBeforeDownloadFired?.Invoke(this, downloadItem);
|
||||
|
||||
this.downloadItem = downloadItem;
|
||||
|
||||
try
|
||||
{
|
||||
frmref.Invoke((Action)delegate
|
||||
{
|
||||
downloadProgress.Show();
|
||||
downloadProgress.FormClosing += DownloadProgress_FormClosing;
|
||||
});
|
||||
}
|
||||
catch (ObjectDisposedException){};
|
||||
|
||||
|
||||
if (!callback.IsDisposed)
|
||||
{
|
||||
using (callback)
|
||||
{
|
||||
callback.Continue(downloadItem.SuggestedFileName, showDialog: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void DownloadProgress_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
|
||||
{
|
||||
downloadItem.IsCancelled = true;
|
||||
}
|
||||
|
||||
public Timer fivesecondtimer;
|
||||
public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
|
||||
{
|
||||
OnDownloadUpdatedFired?.Invoke(this, downloadItem);
|
||||
|
||||
|
||||
if (downloadItem.IsComplete)
|
||||
{
|
||||
fivesecondtimer = new Timer(new TimerCallback(tcallback), null, 1000 * 5, 1000 * 5);
|
||||
}
|
||||
|
||||
|
||||
frmref.Invoke((Action)delegate {
|
||||
downloadProgress.ProgressBar1.Value = downloadItem.PercentComplete;
|
||||
downloadProgress.ProgressPrecentage.Text = downloadItem.PercentComplete.ToString() + "% " + (downloadItem.ReceivedBytes / 0x100000).ToString() + "MB / " + (downloadItem.TotalBytes / 0x100000).ToString() + "MB";
|
||||
downloadProgress.ProgressFileName.Text = Path.GetFileName(downloadItem.FullPath);
|
||||
downloadProgress.Update();
|
||||
try { } catch (InvalidAsynchronousStateException){};
|
||||
});
|
||||
}
|
||||
|
||||
private void tcallback(object state)
|
||||
{
|
||||
try {
|
||||
frmref.Invoke((Action)delegate
|
||||
{
|
||||
downloadProgress.Close();
|
||||
});
|
||||
}
|
||||
catch (InvalidOperationException){};
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Reference in a new issue