using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace UplauncherDofus
{
public partial class MainWindow : Window
{
private WebClient m_client;
private Uri m_uri = null;
public static readonly DependencyProperty ProgressDependencyProperty = DependencyProperty.Register("ProgressProperty", typeof(string), typeof(MainWindow), new PropertyMetadata("0 %"));
public static readonly DependencyProperty BtnDownloadToggleDependencyProperty = DependencyProperty.Register("BtnDownloadToggle", typeof(bool), typeof(MainWindow), new PropertyMetadata(false));
public string ProgressProperty
{
get => this.GetValue(ProgressDependencyProperty).ToString();
set => this.SetValue(ProgressDependencyProperty, value);
}
public bool BtnDownloadToggle
{
get => (bool)this.GetValue(BtnDownloadToggleDependencyProperty);
set => this.SetValue(BtnDownloadToggleDependencyProperty, value);
}
public MainWindow()
{
InitializeComponent();
}
#region Gestionnaire events
private void TxtBoxUri_TextChanged(object sender, TextChangedEventArgs e)
{
if (this.TxtBoxUri.Text == string.Empty || this.TxtBoxUri.Text.Trim() == string.Empty)
this.BtnDownloadToggle = false;
else
this.BtnDownloadToggle = true;
}
private void BtnDownload_Click(object sender, RoutedEventArgs e)
{
this.m_uri = new Uri(this.TxtBoxUri.Text);
this.m_client.DownloadFileAsync(this.m_uri, System.IO.Path.GetFileName($"{Environment.CurrentDirectory}/{this.m_uri.AbsolutePath}"));
}
private void Uplauncher_Loaded(object sender, RoutedEventArgs e)
{
this.m_client = new WebClient();
this.m_client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(this.ClientDownloadProgressChanged);
this.m_client.DownloadFileCompleted += new AsyncCompletedEventHandler(this.DownloadFileCompleted);
}
private void DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
MessageBox.Show("Download complete !", "Informations", MessageBoxButton.OK, MessageBoxImage.Information);
}
private void ClientDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
double receieve = (double)e.BytesReceived;
double total = (double)e.TotalBytesToReceive;
int percentage = (int)(Math.Truncate(receieve / total) * 100);
this.ProgressBar.Value = percentage;
}
#endregion Gestionnaire events
}
}