using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace ytdlp_gui { public partial class Main : Form { public Main() { ytdlp = new YTdlp(); downloads = new List(); InitializeComponent(); } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } private void btnDownload_Click(object sender, EventArgs e) { // Get user download folder on Windows string user = Environment.GetEnvironmentVariable("USERNAME"); string workdir = @"C:\Users\" + user + @"\Downloads\"; if (checkDownloadPlaylist.Checked && checkPlaylistFolder.Checked) { workdir = Path.Combine(workdir, textPlaylistFolder.Text); if (!Directory.Exists(workdir)) System.IO.Directory.CreateDirectory(workdir); } YTdlpProcess process = ytdlp.Download( textUrl.Text, checkAudioOnly.Checked, checkDownloadPlaylist.Checked, workdir ); Download download = new Download( process, workdir, checkConvert.Checked ? comboConvertFormat.Text : null ); download.Show(); downloads.Add(download); download.FormClosed += (_sender, _e) => { downloads.Remove(download); }; } private void Main_FormClosing(object sender, FormClosingEventArgs e) { if (downloads.Count == 0) return; var window = MessageBox.Show( "Close the window?\nClosing current window will cancel current downloads!", "Are you sure?", MessageBoxButtons.YesNo ); e.Cancel = (window == DialogResult.No); } private void checkAudioOnly_CheckedChanged(object sender, EventArgs e) { if (checkAudioOnly.Checked) comboConvertFormat.Text = "mp3"; else comboConvertFormat.Text = "mp4"; } private void checkConvert_CheckedChanged(object sender, EventArgs e) { comboConvertFormat.Enabled = checkConvert.Checked; } private void checkDownloadPlaylist_CheckedChanged(object sender, EventArgs e) { groupPlaylist.Enabled = checkDownloadPlaylist.Checked; } private void checkPlaylistFolder_CheckedChanged(object sender, EventArgs e) { textPlaylistFolder.Enabled = checkPlaylistFolder.Checked; lblPlaylistFolder.Enabled = checkPlaylistFolder.Checked; } protected List downloads; protected YTdlp ytdlp; } }