diff --git a/QobuzDownloaderX/Form1.Designer.cs b/QobuzDownloaderX/Form1.Designer.cs
index c0ef47b..f1157f2 100644
--- a/QobuzDownloaderX/Form1.Designer.cs
+++ b/QobuzDownloaderX/Form1.Designer.cs
@@ -84,6 +84,16 @@
this.flacMidCheckbox = new System.Windows.Forms.CheckBox();
this.flacHighCheckbox = new System.Windows.Forms.CheckBox();
this.mp3WarnLabel = new System.Windows.Forms.Label();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.exitLabel = new System.Windows.Forms.Label();
+ this.minimizeLabel = new System.Windows.Forms.Label();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.panel3 = new System.Windows.Forms.Panel();
+ this.panel4 = new System.Windows.Forms.Panel();
+ this.panel5 = new System.Windows.Forms.Panel();
+ this.panel6 = new System.Windows.Forms.Panel();
+ this.panel7 = new System.Windows.Forms.Panel();
+ this.panel8 = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
@@ -101,17 +111,23 @@
//
// selectFolder
//
+ this.selectFolder.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
+ this.selectFolder.FlatAppearance.BorderSize = 0;
+ this.selectFolder.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.selectFolder.ForeColor = System.Drawing.Color.White;
this.selectFolder.Location = new System.Drawing.Point(13, 115);
this.selectFolder.Name = "selectFolder";
this.selectFolder.Size = new System.Drawing.Size(349, 23);
this.selectFolder.TabIndex = 2;
this.selectFolder.Text = "Choose Folder";
- this.selectFolder.UseVisualStyleBackColor = true;
+ this.selectFolder.UseVisualStyleBackColor = false;
this.selectFolder.Click += new System.EventHandler(this.selectFolder_Click);
//
// output
//
this.output.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33)))));
+ this.output.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.output.Cursor = System.Windows.Forms.Cursors.IBeam;
this.output.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.output.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
this.output.Location = new System.Drawing.Point(12, 144);
@@ -125,29 +141,41 @@
//
// openFolderButton
//
+ this.openFolderButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
+ this.openFolderButton.FlatAppearance.BorderSize = 0;
+ this.openFolderButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.openFolderButton.ForeColor = System.Drawing.Color.White;
this.openFolderButton.Location = new System.Drawing.Point(368, 115);
this.openFolderButton.Name = "openFolderButton";
this.openFolderButton.Size = new System.Drawing.Size(349, 23);
this.openFolderButton.TabIndex = 13;
this.openFolderButton.Text = "Open Folder";
- this.openFolderButton.UseVisualStyleBackColor = true;
+ this.openFolderButton.UseVisualStyleBackColor = false;
this.openFolderButton.Click += new System.EventHandler(this.openFolderButton_Click);
//
// downloadButton
//
+ this.downloadButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
+ this.downloadButton.FlatAppearance.BorderSize = 0;
+ this.downloadButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.downloadButton.ForeColor = System.Drawing.Color.White;
this.downloadButton.Location = new System.Drawing.Point(597, 86);
this.downloadButton.Name = "downloadButton";
this.downloadButton.Size = new System.Drawing.Size(120, 23);
this.downloadButton.TabIndex = 17;
this.downloadButton.Text = "Download";
- this.downloadButton.UseVisualStyleBackColor = true;
+ this.downloadButton.UseVisualStyleBackColor = false;
this.downloadButton.Click += new System.EventHandler(this.downloadButton_Click);
//
// albumUrl
//
+ this.albumUrl.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.albumUrl.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.albumUrl.ForeColor = System.Drawing.Color.White;
this.albumUrl.Location = new System.Drawing.Point(15, 88);
+ this.albumUrl.Multiline = true;
this.albumUrl.Name = "albumUrl";
- this.albumUrl.Size = new System.Drawing.Size(579, 20);
+ this.albumUrl.Size = new System.Drawing.Size(576, 20);
this.albumUrl.TabIndex = 16;
this.albumUrl.WordWrap = false;
this.albumUrl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.albumUrl_KeyDown);
@@ -165,6 +193,7 @@
//
// verNumLabel
//
+ this.verNumLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.verNumLabel.Location = new System.Drawing.Point(159, 55);
this.verNumLabel.Name = "verNumLabel";
this.verNumLabel.Size = new System.Drawing.Size(63, 13);
@@ -175,6 +204,7 @@
// label1
//
this.label1.AutoSize = true;
+ this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label1.Location = new System.Drawing.Point(801, 213);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(51, 13);
@@ -184,6 +214,7 @@
// label2
//
this.label2.AutoSize = true;
+ this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label2.Location = new System.Drawing.Point(751, 236);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(62, 13);
@@ -192,7 +223,11 @@
//
// albumArtistTextBox
//
+ this.albumArtistTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.albumArtistTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.albumArtistTextBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.albumArtistTextBox.Location = new System.Drawing.Point(754, 252);
+ this.albumArtistTextBox.Multiline = true;
this.albumArtistTextBox.Name = "albumArtistTextBox";
this.albumArtistTextBox.ReadOnly = true;
this.albumArtistTextBox.Size = new System.Drawing.Size(150, 20);
@@ -201,7 +236,11 @@
//
// albumTextBox
//
+ this.albumTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.albumTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.albumTextBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.albumTextBox.Location = new System.Drawing.Point(754, 294);
+ this.albumTextBox.Multiline = true;
this.albumTextBox.Name = "albumTextBox";
this.albumTextBox.ReadOnly = true;
this.albumTextBox.Size = new System.Drawing.Size(150, 20);
@@ -211,6 +250,7 @@
// label3
//
this.label3.AutoSize = true;
+ this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label3.Location = new System.Drawing.Point(751, 278);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(36, 13);
@@ -219,7 +259,11 @@
//
// releaseDateTextBox
//
+ this.releaseDateTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.releaseDateTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.releaseDateTextBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.releaseDateTextBox.Location = new System.Drawing.Point(754, 463);
+ this.releaseDateTextBox.Multiline = true;
this.releaseDateTextBox.Name = "releaseDateTextBox";
this.releaseDateTextBox.ReadOnly = true;
this.releaseDateTextBox.Size = new System.Drawing.Size(150, 20);
@@ -229,6 +273,7 @@
// label4
//
this.label4.AutoSize = true;
+ this.label4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label4.Location = new System.Drawing.Point(751, 447);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(72, 13);
@@ -237,7 +282,11 @@
//
// upcTextBox
//
+ this.upcTextBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.upcTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.upcTextBox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.upcTextBox.Location = new System.Drawing.Point(754, 420);
+ this.upcTextBox.Multiline = true;
this.upcTextBox.Name = "upcTextBox";
this.upcTextBox.ReadOnly = true;
this.upcTextBox.Size = new System.Drawing.Size(150, 20);
@@ -247,6 +296,7 @@
// label5
//
this.label5.AutoSize = true;
+ this.label5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label5.Location = new System.Drawing.Point(751, 404);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(29, 13);
@@ -265,17 +315,19 @@
//
// pictureBox1
//
- this.pictureBox1.Image = global::QobuzDownloaderX.Properties.Resources.qbdlx;
+ this.pictureBox1.Image = global::QobuzDownloaderX.Properties.Resources.qbdlx_white;
this.pictureBox1.Location = new System.Drawing.Point(12, 12);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(207, 52);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox1.TabIndex = 36;
this.pictureBox1.TabStop = false;
+ this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
//
// label6
//
this.label6.AutoSize = true;
+ this.label6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.label6.Location = new System.Drawing.Point(12, 70);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(132, 13);
@@ -284,7 +336,11 @@
//
// totalTracksTextbox
//
+ this.totalTracksTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.totalTracksTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.totalTracksTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.totalTracksTextbox.Location = new System.Drawing.Point(754, 378);
+ this.totalTracksTextbox.Multiline = true;
this.totalTracksTextbox.Name = "totalTracksTextbox";
this.totalTracksTextbox.ReadOnly = true;
this.totalTracksTextbox.Size = new System.Drawing.Size(150, 20);
@@ -294,6 +350,7 @@
// totalTracksLabel
//
this.totalTracksLabel.AutoSize = true;
+ this.totalTracksLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.totalTracksLabel.Location = new System.Drawing.Point(751, 362);
this.totalTracksLabel.Name = "totalTracksLabel";
this.totalTracksLabel.Size = new System.Drawing.Size(67, 13);
@@ -318,7 +375,11 @@
//
// qualityTextbox
//
+ this.qualityTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.qualityTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.qualityTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.qualityTextbox.Location = new System.Drawing.Point(754, 336);
+ this.qualityTextbox.Multiline = true;
this.qualityTextbox.Name = "qualityTextbox";
this.qualityTextbox.ReadOnly = true;
this.qualityTextbox.Size = new System.Drawing.Size(150, 20);
@@ -328,6 +389,7 @@
// qualityLabel
//
this.qualityLabel.AutoSize = true;
+ this.qualityLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.qualityLabel.Location = new System.Drawing.Point(751, 320);
this.qualityLabel.Name = "qualityLabel";
this.qualityLabel.Size = new System.Drawing.Size(71, 13);
@@ -336,21 +398,26 @@
//
// openSearch
//
+ this.openSearch.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
+ this.openSearch.FlatAppearance.BorderSize = 0;
+ this.openSearch.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.openSearch.ForeColor = System.Drawing.Color.White;
this.openSearch.Location = new System.Drawing.Point(597, 57);
this.openSearch.Name = "openSearch";
this.openSearch.Size = new System.Drawing.Size(120, 23);
this.openSearch.TabIndex = 60;
this.openSearch.Text = "Open Search";
- this.openSearch.UseVisualStyleBackColor = true;
+ this.openSearch.UseVisualStyleBackColor = false;
this.openSearch.Click += new System.EventHandler(this.openSearch_Click);
//
// tagsLabel
//
+ this.tagsLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.tagsLabel.Location = new System.Drawing.Point(12, 501);
this.tagsLabel.Name = "tagsLabel";
this.tagsLabel.Size = new System.Drawing.Size(914, 23);
this.tagsLabel.TabIndex = 61;
- this.tagsLabel.Text = "๐ Choose which tags to save ๐ ";
+ this.tagsLabel.Text = "๐ Choose which tags to save (click me) ๐ ";
this.tagsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.tagsLabel.Click += new System.EventHandler(this.tagsLabel_Click);
//
@@ -359,6 +426,8 @@
this.albumArtistCheckbox.AutoSize = true;
this.albumArtistCheckbox.Checked = true;
this.albumArtistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.albumArtistCheckbox.FlatAppearance.BorderSize = 0;
+ this.albumArtistCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.albumArtistCheckbox.Location = new System.Drawing.Point(325, 563);
this.albumArtistCheckbox.Name = "albumArtistCheckbox";
this.albumArtistCheckbox.Size = new System.Drawing.Size(81, 17);
@@ -372,6 +441,8 @@
this.artistCheckbox.AutoSize = true;
this.artistCheckbox.Checked = true;
this.artistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.artistCheckbox.FlatAppearance.BorderSize = 0;
+ this.artistCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.artistCheckbox.Location = new System.Drawing.Point(325, 609);
this.artistCheckbox.Name = "artistCheckbox";
this.artistCheckbox.Size = new System.Drawing.Size(80, 17);
@@ -385,6 +456,8 @@
this.trackTitleCheckbox.AutoSize = true;
this.trackTitleCheckbox.Checked = true;
this.trackTitleCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.trackTitleCheckbox.FlatAppearance.BorderSize = 0;
+ this.trackTitleCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.trackTitleCheckbox.Location = new System.Drawing.Point(325, 586);
this.trackTitleCheckbox.Name = "trackTitleCheckbox";
this.trackTitleCheckbox.Size = new System.Drawing.Size(77, 17);
@@ -398,6 +471,8 @@
this.trackNumberCheckbox.AutoSize = true;
this.trackNumberCheckbox.Checked = true;
this.trackNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.trackNumberCheckbox.FlatAppearance.BorderSize = 0;
+ this.trackNumberCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.trackNumberCheckbox.Location = new System.Drawing.Point(325, 632);
this.trackNumberCheckbox.Name = "trackNumberCheckbox";
this.trackNumberCheckbox.Size = new System.Drawing.Size(94, 17);
@@ -411,6 +486,8 @@
this.trackTotalCheckbox.AutoSize = true;
this.trackTotalCheckbox.Checked = true;
this.trackTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.trackTotalCheckbox.FlatAppearance.BorderSize = 0;
+ this.trackTotalCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.trackTotalCheckbox.Location = new System.Drawing.Point(325, 655);
this.trackTotalCheckbox.Name = "trackTotalCheckbox";
this.trackTotalCheckbox.Size = new System.Drawing.Size(86, 17);
@@ -424,6 +501,8 @@
this.discNumberCheckbox.AutoSize = true;
this.discNumberCheckbox.Checked = true;
this.discNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.discNumberCheckbox.FlatAppearance.BorderSize = 0;
+ this.discNumberCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.discNumberCheckbox.Location = new System.Drawing.Point(325, 676);
this.discNumberCheckbox.Name = "discNumberCheckbox";
this.discNumberCheckbox.Size = new System.Drawing.Size(87, 17);
@@ -437,6 +516,8 @@
this.discTotalCheckbox.AutoSize = true;
this.discTotalCheckbox.Checked = true;
this.discTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.discTotalCheckbox.FlatAppearance.BorderSize = 0;
+ this.discTotalCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.discTotalCheckbox.Location = new System.Drawing.Point(325, 699);
this.discTotalCheckbox.Name = "discTotalCheckbox";
this.discTotalCheckbox.Size = new System.Drawing.Size(79, 17);
@@ -450,6 +531,8 @@
this.albumCheckbox.AutoSize = true;
this.albumCheckbox.Checked = true;
this.albumCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.albumCheckbox.FlatAppearance.BorderSize = 0;
+ this.albumCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.albumCheckbox.Location = new System.Drawing.Point(325, 540);
this.albumCheckbox.Name = "albumCheckbox";
this.albumCheckbox.Size = new System.Drawing.Size(78, 17);
@@ -463,6 +546,8 @@
this.explicitCheckbox.AutoSize = true;
this.explicitCheckbox.Checked = true;
this.explicitCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.explicitCheckbox.FlatAppearance.BorderSize = 0;
+ this.explicitCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.explicitCheckbox.Location = new System.Drawing.Point(425, 678);
this.explicitCheckbox.Name = "explicitCheckbox";
this.explicitCheckbox.Size = new System.Drawing.Size(106, 17);
@@ -476,6 +561,8 @@
this.upcCheckbox.AutoSize = true;
this.upcCheckbox.Checked = true;
this.upcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.upcCheckbox.FlatAppearance.BorderSize = 0;
+ this.upcCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.upcCheckbox.Location = new System.Drawing.Point(425, 655);
this.upcCheckbox.Name = "upcCheckbox";
this.upcCheckbox.Size = new System.Drawing.Size(52, 17);
@@ -489,6 +576,8 @@
this.isrcCheckbox.AutoSize = true;
this.isrcCheckbox.Checked = true;
this.isrcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.isrcCheckbox.FlatAppearance.BorderSize = 0;
+ this.isrcCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.isrcCheckbox.Location = new System.Drawing.Point(425, 632);
this.isrcCheckbox.Name = "isrcCheckbox";
this.isrcCheckbox.Size = new System.Drawing.Size(51, 17);
@@ -502,6 +591,8 @@
this.copyrightCheckbox.AutoSize = true;
this.copyrightCheckbox.Checked = true;
this.copyrightCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.copyrightCheckbox.FlatAppearance.BorderSize = 0;
+ this.copyrightCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.copyrightCheckbox.Location = new System.Drawing.Point(425, 609);
this.copyrightCheckbox.Name = "copyrightCheckbox";
this.copyrightCheckbox.Size = new System.Drawing.Size(70, 17);
@@ -515,6 +606,8 @@
this.composerCheckbox.AutoSize = true;
this.composerCheckbox.Checked = true;
this.composerCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.composerCheckbox.FlatAppearance.BorderSize = 0;
+ this.composerCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.composerCheckbox.Location = new System.Drawing.Point(425, 586);
this.composerCheckbox.Name = "composerCheckbox";
this.composerCheckbox.Size = new System.Drawing.Size(73, 17);
@@ -528,6 +621,8 @@
this.genreCheckbox.AutoSize = true;
this.genreCheckbox.Checked = true;
this.genreCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.genreCheckbox.FlatAppearance.BorderSize = 0;
+ this.genreCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.genreCheckbox.Location = new System.Drawing.Point(425, 563);
this.genreCheckbox.Name = "genreCheckbox";
this.genreCheckbox.Size = new System.Drawing.Size(55, 17);
@@ -541,6 +636,8 @@
this.releaseCheckbox.AutoSize = true;
this.releaseCheckbox.Checked = true;
this.releaseCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.releaseCheckbox.FlatAppearance.BorderSize = 0;
+ this.releaseCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.releaseCheckbox.Location = new System.Drawing.Point(425, 540);
this.releaseCheckbox.Name = "releaseCheckbox";
this.releaseCheckbox.Size = new System.Drawing.Size(91, 17);
@@ -552,6 +649,8 @@
// commentCheckbox
//
this.commentCheckbox.AutoSize = true;
+ this.commentCheckbox.FlatAppearance.BorderSize = 0;
+ this.commentCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.commentCheckbox.Location = new System.Drawing.Point(533, 699);
this.commentCheckbox.Name = "commentCheckbox";
this.commentCheckbox.Size = new System.Drawing.Size(70, 17);
@@ -562,9 +661,13 @@
//
// commentTextbox
//
+ this.commentTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.commentTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.commentTextbox.ForeColor = System.Drawing.Color.White;
this.commentTextbox.Location = new System.Drawing.Point(609, 697);
+ this.commentTextbox.Multiline = true;
this.commentTextbox.Name = "commentTextbox";
- this.commentTextbox.Size = new System.Drawing.Size(112, 20);
+ this.commentTextbox.Size = new System.Drawing.Size(112, 17);
this.commentTextbox.TabIndex = 79;
this.commentTextbox.TextChanged += new System.EventHandler(this.commentTextbox_TextChanged);
//
@@ -573,6 +676,8 @@
this.imageCheckbox.AutoSize = true;
this.imageCheckbox.Checked = true;
this.imageCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.imageCheckbox.FlatAppearance.BorderSize = 0;
+ this.imageCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.imageCheckbox.Location = new System.Drawing.Point(425, 699);
this.imageCheckbox.Name = "imageCheckbox";
this.imageCheckbox.Size = new System.Drawing.Size(70, 17);
@@ -584,6 +689,7 @@
// mp3Checkbox
//
this.mp3Checkbox.AutoSize = true;
+ this.mp3Checkbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.mp3Checkbox.Location = new System.Drawing.Point(243, 61);
this.mp3Checkbox.Name = "mp3Checkbox";
this.mp3Checkbox.Size = new System.Drawing.Size(69, 17);
@@ -595,6 +701,7 @@
// flacLowCheckbox
//
this.flacLowCheckbox.AutoSize = true;
+ this.flacLowCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.flacLowCheckbox.Location = new System.Drawing.Point(318, 61);
this.flacLowCheckbox.Name = "flacLowCheckbox";
this.flacLowCheckbox.Size = new System.Drawing.Size(93, 17);
@@ -606,6 +713,7 @@
// flacMidCheckbox
//
this.flacMidCheckbox.AutoSize = true;
+ this.flacMidCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.flacMidCheckbox.Location = new System.Drawing.Point(417, 61);
this.flacMidCheckbox.Name = "flacMidCheckbox";
this.flacMidCheckbox.Size = new System.Drawing.Size(84, 17);
@@ -619,6 +727,7 @@
this.flacHighCheckbox.AutoSize = true;
this.flacHighCheckbox.Checked = true;
this.flacHighCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.flacHighCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.flacHighCheckbox.Location = new System.Drawing.Point(507, 61);
this.flacHighCheckbox.Name = "flacHighCheckbox";
this.flacHighCheckbox.Size = new System.Drawing.Size(90, 17);
@@ -630,17 +739,125 @@
// mp3WarnLabel
//
this.mp3WarnLabel.AutoSize = true;
+ this.mp3WarnLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
this.mp3WarnLabel.Location = new System.Drawing.Point(744, 711);
this.mp3WarnLabel.Name = "mp3WarnLabel";
this.mp3WarnLabel.Size = new System.Drawing.Size(182, 13);
this.mp3WarnLabel.TabIndex = 85;
this.mp3WarnLabel.Text = "* = Not available on MP3 downloads.";
//
+ // panel1
+ //
+ this.panel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel1.Location = new System.Drawing.Point(15, 107);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(576, 1);
+ this.panel1.TabIndex = 86;
+ //
+ // exitLabel
+ //
+ this.exitLabel.AutoSize = true;
+ this.exitLabel.BackColor = System.Drawing.Color.Transparent;
+ this.exitLabel.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.exitLabel.ForeColor = System.Drawing.Color.White;
+ this.exitLabel.Location = new System.Drawing.Point(911, 8);
+ this.exitLabel.Name = "exitLabel";
+ this.exitLabel.Size = new System.Drawing.Size(20, 23);
+ this.exitLabel.TabIndex = 87;
+ this.exitLabel.Text = "X";
+ this.exitLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.exitLabel.Click += new System.EventHandler(this.exitLabel_Click);
+ this.exitLabel.MouseLeave += new System.EventHandler(this.exitLabel_MouseLeave);
+ this.exitLabel.MouseHover += new System.EventHandler(this.exitLabel_MouseHover);
+ //
+ // minimizeLabel
+ //
+ this.minimizeLabel.AutoSize = true;
+ this.minimizeLabel.BackColor = System.Drawing.Color.Transparent;
+ this.minimizeLabel.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.minimizeLabel.ForeColor = System.Drawing.Color.White;
+ this.minimizeLabel.Location = new System.Drawing.Point(886, 4);
+ this.minimizeLabel.Name = "minimizeLabel";
+ this.minimizeLabel.Size = new System.Drawing.Size(19, 23);
+ this.minimizeLabel.TabIndex = 88;
+ this.minimizeLabel.Text = "_";
+ this.minimizeLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.minimizeLabel.Click += new System.EventHandler(this.minimizeLabel_Click);
+ this.minimizeLabel.MouseLeave += new System.EventHandler(this.minimizeLabel_MouseLeave);
+ this.minimizeLabel.MouseHover += new System.EventHandler(this.minimizeLabel_MouseHover);
+ //
+ // panel2
+ //
+ this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel2.Location = new System.Drawing.Point(754, 271);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(150, 1);
+ this.panel2.TabIndex = 87;
+ //
+ // panel3
+ //
+ this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel3.Location = new System.Drawing.Point(754, 313);
+ this.panel3.Name = "panel3";
+ this.panel3.Size = new System.Drawing.Size(150, 1);
+ this.panel3.TabIndex = 88;
+ //
+ // panel4
+ //
+ this.panel4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel4.Location = new System.Drawing.Point(754, 355);
+ this.panel4.Name = "panel4";
+ this.panel4.Size = new System.Drawing.Size(150, 1);
+ this.panel4.TabIndex = 89;
+ //
+ // panel5
+ //
+ this.panel5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel5.Location = new System.Drawing.Point(754, 397);
+ this.panel5.Name = "panel5";
+ this.panel5.Size = new System.Drawing.Size(150, 1);
+ this.panel5.TabIndex = 89;
+ //
+ // panel6
+ //
+ this.panel6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel6.Location = new System.Drawing.Point(754, 439);
+ this.panel6.Name = "panel6";
+ this.panel6.Size = new System.Drawing.Size(150, 1);
+ this.panel6.TabIndex = 89;
+ //
+ // panel7
+ //
+ this.panel7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel7.Location = new System.Drawing.Point(754, 482);
+ this.panel7.Name = "panel7";
+ this.panel7.Size = new System.Drawing.Size(150, 1);
+ this.panel7.TabIndex = 89;
+ //
+ // panel8
+ //
+ this.panel8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel8.Location = new System.Drawing.Point(609, 716);
+ this.panel8.Name = "panel8";
+ this.panel8.Size = new System.Drawing.Size(112, 1);
+ this.panel8.TabIndex = 90;
+ //
// QobuzDownloaderX
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
this.ClientSize = new System.Drawing.Size(938, 533);
+ this.Controls.Add(this.panel8);
+ this.Controls.Add(this.panel7);
+ this.Controls.Add(this.panel6);
+ this.Controls.Add(this.panel5);
+ this.Controls.Add(this.panel4);
+ this.Controls.Add(this.panel3);
+ this.Controls.Add(this.panel2);
+ this.Controls.Add(this.minimizeLabel);
+ this.Controls.Add(this.exitLabel);
+ this.Controls.Add(this.panel1);
this.Controls.Add(this.mp3WarnLabel);
this.Controls.Add(this.flacHighCheckbox);
this.Controls.Add(this.flacMidCheckbox);
@@ -690,7 +907,7 @@
this.Controls.Add(this.output);
this.Controls.Add(this.selectFolder);
this.Controls.Add(this.testURLBox);
- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.Name = "QobuzDownloaderX";
@@ -698,6 +915,7 @@
this.Text = "QobuzDownloaderX";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.QobuzDownloaderX_FormClosed);
this.Load += new System.EventHandler(this.Form1_Load);
+ this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.QobuzDownloaderX_MouseMove);
((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
@@ -761,6 +979,16 @@
private System.Windows.Forms.CheckBox flacMidCheckbox;
private System.Windows.Forms.CheckBox flacHighCheckbox;
private System.Windows.Forms.Label mp3WarnLabel;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.Label exitLabel;
+ private System.Windows.Forms.Label minimizeLabel;
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.Panel panel3;
+ private System.Windows.Forms.Panel panel4;
+ private System.Windows.Forms.Panel panel5;
+ private System.Windows.Forms.Panel panel6;
+ private System.Windows.Forms.Panel panel7;
+ private System.Windows.Forms.Panel panel8;
}
}
diff --git a/QobuzDownloaderX/Form1.cs b/QobuzDownloaderX/Form1.cs
index c5954f8..6d832bc 100644
--- a/QobuzDownloaderX/Form1.cs
+++ b/QobuzDownloaderX/Form1.cs
@@ -33,6 +33,14 @@ namespace QobuzDownloaderX
InitializeComponent();
}
+ public const int WM_NCLBUTTONDOWN = 0xA1;
+ public const int HT_CAPTION = 0x2;
+
+ [DllImportAttribute("user32.dll")]
+ public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
+ [DllImportAttribute("user32.dll")]
+ public static extern bool ReleaseCapture();
+
public string eMail { get; set; }
public string appid { get; set; }
public string password { get; set; }
@@ -197,21 +205,6 @@ namespace QobuzDownloaderX
}
}
- private void selectFolder_Click(object sender, EventArgs e)
- {
- Thread t = new Thread((ThreadStart)(() => {
- // Open Folder Browser to select path & Save the selection
- folderBrowserDialog.ShowDialog();
- Settings.Default.savedFolder = folderBrowserDialog.SelectedPath;
- Settings.Default.Save();
- }));
-
- // Run your code from a thread that joins the STA Thread
- t.SetApartmentState(ApartmentState.STA);
- t.Start();
- t.Join();
- }
-
private void createURL(object sender, EventArgs e)
{
// Create unix timestamp for "request_ts=" and hashing to make request signature.
@@ -277,6 +270,22 @@ namespace QobuzDownloaderX
}
}
+ #region Choosing / Opening folder
+ private void selectFolder_Click(object sender, EventArgs e)
+ {
+ Thread t = new Thread((ThreadStart)(() => {
+ // Open Folder Browser to select path & Save the selection
+ folderBrowserDialog.ShowDialog();
+ Settings.Default.savedFolder = folderBrowserDialog.SelectedPath;
+ Settings.Default.Save();
+ }));
+
+ // Run your code from a thread that joins the STA Thread
+ t.SetApartmentState(ApartmentState.STA);
+ t.Start();
+ t.Join();
+ }
+
private void openFolderButton_Click(object sender, EventArgs e)
{
// Open selcted folder
@@ -296,6 +305,7 @@ namespace QobuzDownloaderX
Process.Start(@folderBrowserDialog.SelectedPath);
}
}
+ #endregion
#region Getting Type of URL
private void getLinkTypeBG_DoWork(object sender, DoWorkEventArgs e)
@@ -3387,17 +3397,17 @@ namespace QobuzDownloaderX
#region Tagging Options
private void tagsLabel_Click(object sender, EventArgs e)
{
- if (this.Height == 572)
+ if (this.Height == 533)
{
//New Height
- this.Height = 772;
- tagsLabel.Text = "๐ Choose which tags to save ๐ ";
+ this.Height = 733;
+ tagsLabel.Text = "๐ Choose which tags to save (click me) ๐ ";
}
- else if (this.Height == 772)
+ else if (this.Height == 733)
{
//New Height
- this.Height = 572;
- tagsLabel.Text = "๐ Choose which tags to save ๐ ";
+ this.Height = 533;
+ tagsLabel.Text = "๐ Choose which tags to save (click me) ๐ ";
}
}
@@ -3613,9 +3623,59 @@ namespace QobuzDownloaderX
}
#endregion
+ #region Form moving, closing, minimizing, etc.
+ private void exitLabel_Click(object sender, EventArgs e)
+ {
+ Application.Exit();
+ }
+
+ private void minimizeLabel_Click(object sender, EventArgs e)
+ {
+ this.WindowState = FormWindowState.Minimized;
+ }
+
+ private void minimizeLabel_MouseHover(object sender, EventArgs e)
+ {
+ minimizeLabel.ForeColor = Color.FromArgb(0, 112, 239);
+ }
+
+ private void minimizeLabel_MouseLeave(object sender, EventArgs e)
+ {
+ minimizeLabel.ForeColor = Color.White;
+ }
+
+ private void exitLabel_MouseHover(object sender, EventArgs e)
+ {
+ exitLabel.ForeColor = Color.FromArgb(0, 112, 239);
+ }
+
+ private void exitLabel_MouseLeave(object sender, EventArgs e)
+ {
+ exitLabel.ForeColor = Color.White;
+ }
+
+ private void QobuzDownloaderX_MouseMove(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+ ReleaseCapture();
+ SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
+ }
+ }
+
+ private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+ ReleaseCapture();
+ SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
+ }
+ }
+
private void QobuzDownloaderX_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
+ #endregion
}
}
diff --git a/QobuzDownloaderX/LoginForm-v2.Designer.cs b/QobuzDownloaderX/LoginForm-v2.Designer.cs
new file mode 100644
index 0000000..f3751c6
--- /dev/null
+++ b/QobuzDownloaderX/LoginForm-v2.Designer.cs
@@ -0,0 +1,269 @@
+๏ปฟnamespace QobuzDownloaderX
+{
+ partial class LoginFrm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.verNumLabel2 = new System.Windows.Forms.Label();
+ this.exitLabel = new System.Windows.Forms.Label();
+ this.pictureBox1 = new System.Windows.Forms.PictureBox();
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.loginButton = new System.Windows.Forms.Button();
+ this.panel3 = new System.Windows.Forms.Panel();
+ this.panel4 = new System.Windows.Forms.Panel();
+ this.appidTextbox = new System.Windows.Forms.TextBox();
+ this.emailTextbox = new System.Windows.Forms.TextBox();
+ this.passwordTextbox = new System.Windows.Forms.TextBox();
+ this.md5Button = new System.Windows.Forms.Button();
+ this.loginText = new System.Windows.Forms.Label();
+ this.getSecretBG = new System.ComponentModel.BackgroundWorker();
+ this.loginBG = new System.ComponentModel.BackgroundWorker();
+ this.panel1.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+ this.SuspendLayout();
+ //
+ // panel1
+ //
+ this.panel1.BackgroundImage = global::QobuzDownloaderX.Properties.Resources.login_frame;
+ this.panel1.Controls.Add(this.verNumLabel2);
+ this.panel1.Controls.Add(this.exitLabel);
+ this.panel1.Controls.Add(this.pictureBox1);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
+ this.panel1.Location = new System.Drawing.Point(0, 0);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(282, 175);
+ this.panel1.TabIndex = 0;
+ this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
+ //
+ // verNumLabel2
+ //
+ this.verNumLabel2.BackColor = System.Drawing.Color.Transparent;
+ this.verNumLabel2.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.verNumLabel2.ForeColor = System.Drawing.Color.White;
+ this.verNumLabel2.Location = new System.Drawing.Point(194, 157);
+ this.verNumLabel2.Name = "verNumLabel2";
+ this.verNumLabel2.Size = new System.Drawing.Size(85, 18);
+ this.verNumLabel2.TabIndex = 32;
+ this.verNumLabel2.Text = "#.#.#.#";
+ this.verNumLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ this.verNumLabel2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.verNumLabel2_MouseMove);
+ //
+ // exitLabel
+ //
+ this.exitLabel.AutoSize = true;
+ this.exitLabel.BackColor = System.Drawing.Color.Transparent;
+ this.exitLabel.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.exitLabel.ForeColor = System.Drawing.Color.Black;
+ this.exitLabel.Location = new System.Drawing.Point(262, 0);
+ this.exitLabel.Name = "exitLabel";
+ this.exitLabel.Size = new System.Drawing.Size(20, 23);
+ this.exitLabel.TabIndex = 9;
+ this.exitLabel.Text = "X";
+ this.exitLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
+ this.exitLabel.Click += new System.EventHandler(this.exitLabel_Click);
+ //
+ // pictureBox1
+ //
+ this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
+ this.pictureBox1.Image = global::QobuzDownloaderX.Properties.Resources.qbdlx_white;
+ this.pictureBox1.Location = new System.Drawing.Point(12, 52);
+ this.pictureBox1.Name = "pictureBox1";
+ this.pictureBox1.Size = new System.Drawing.Size(258, 64);
+ this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+ this.pictureBox1.TabIndex = 29;
+ this.pictureBox1.TabStop = false;
+ this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
+ //
+ // panel2
+ //
+ this.panel2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel2.Location = new System.Drawing.Point(12, 226);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(258, 1);
+ this.panel2.TabIndex = 1;
+ this.panel2.Click += new System.EventHandler(this.panel2_Click);
+ //
+ // loginButton
+ //
+ this.loginButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
+ this.loginButton.FlatAppearance.BorderSize = 0;
+ this.loginButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.loginButton.Font = new System.Drawing.Font("Trebuchet MS", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.loginButton.ForeColor = System.Drawing.Color.White;
+ this.loginButton.Location = new System.Drawing.Point(12, 359);
+ this.loginButton.Name = "loginButton";
+ this.loginButton.Size = new System.Drawing.Size(258, 30);
+ this.loginButton.TabIndex = 2;
+ this.loginButton.Text = "LOGIN";
+ this.loginButton.UseVisualStyleBackColor = false;
+ this.loginButton.Click += new System.EventHandler(this.loginButton_Click);
+ //
+ // panel3
+ //
+ this.panel3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel3.Location = new System.Drawing.Point(12, 287);
+ this.panel3.Name = "panel3";
+ this.panel3.Size = new System.Drawing.Size(258, 1);
+ this.panel3.TabIndex = 2;
+ this.panel3.Click += new System.EventHandler(this.panel3_Click);
+ //
+ // panel4
+ //
+ this.panel4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.panel4.Location = new System.Drawing.Point(12, 343);
+ this.panel4.Name = "panel4";
+ this.panel4.Size = new System.Drawing.Size(258, 1);
+ this.panel4.TabIndex = 2;
+ this.panel4.Click += new System.EventHandler(this.panel4_Click);
+ //
+ // appidTextbox
+ //
+ this.appidTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.appidTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.appidTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.appidTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.appidTextbox.Location = new System.Drawing.Point(12, 200);
+ this.appidTextbox.Multiline = true;
+ this.appidTextbox.Name = "appidTextbox";
+ this.appidTextbox.Size = new System.Drawing.Size(258, 27);
+ this.appidTextbox.TabIndex = 6;
+ this.appidTextbox.Text = "app_id";
+ this.appidTextbox.Click += new System.EventHandler(this.appIdTextbox_Click);
+ this.appidTextbox.Leave += new System.EventHandler(this.appIdTextbox_Leave);
+ //
+ // emailTextbox
+ //
+ this.emailTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.emailTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.emailTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.emailTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.emailTextbox.Location = new System.Drawing.Point(12, 265);
+ this.emailTextbox.Multiline = true;
+ this.emailTextbox.Name = "emailTextbox";
+ this.emailTextbox.Size = new System.Drawing.Size(258, 23);
+ this.emailTextbox.TabIndex = 7;
+ this.emailTextbox.Text = "Email";
+ this.emailTextbox.Click += new System.EventHandler(this.emailTextbox_Click);
+ this.emailTextbox.Leave += new System.EventHandler(this.emailTextbox_Leave);
+ //
+ // passwordTextbox
+ //
+ this.passwordTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.passwordTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
+ this.passwordTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.passwordTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.passwordTextbox.Location = new System.Drawing.Point(12, 321);
+ this.passwordTextbox.Multiline = true;
+ this.passwordTextbox.Name = "passwordTextbox";
+ this.passwordTextbox.Size = new System.Drawing.Size(209, 23);
+ this.passwordTextbox.TabIndex = 8;
+ this.passwordTextbox.Text = "Password";
+ this.passwordTextbox.Click += new System.EventHandler(this.passwordTextbox_Click);
+ this.passwordTextbox.Leave += new System.EventHandler(this.passwordTextbox_Leave);
+ //
+ // md5Button
+ //
+ this.md5Button.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
+ this.md5Button.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.md5Button.FlatAppearance.BorderSize = 2;
+ this.md5Button.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.md5Button.ForeColor = System.Drawing.Color.White;
+ this.md5Button.Location = new System.Drawing.Point(227, 316);
+ this.md5Button.Name = "md5Button";
+ this.md5Button.Size = new System.Drawing.Size(43, 27);
+ this.md5Button.TabIndex = 9;
+ this.md5Button.Text = "MD5";
+ this.md5Button.UseVisualStyleBackColor = false;
+ this.md5Button.Click += new System.EventHandler(this.md5Button_Click);
+ //
+ // loginText
+ //
+ this.loginText.Font = new System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.loginText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
+ this.loginText.Location = new System.Drawing.Point(12, 399);
+ this.loginText.Name = "loginText";
+ this.loginText.Size = new System.Drawing.Size(258, 23);
+ this.loginText.TabIndex = 30;
+ this.loginText.Text = "Waiting for login...";
+ this.loginText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // getSecretBG
+ //
+ this.getSecretBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.getSecretBG_DoWork);
+ //
+ // loginBG
+ //
+ this.loginBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.loginBG_DoWork);
+ //
+ // LoginFrm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+ this.ClientSize = new System.Drawing.Size(282, 431);
+ this.Controls.Add(this.loginText);
+ this.Controls.Add(this.md5Button);
+ this.Controls.Add(this.panel4);
+ this.Controls.Add(this.panel3);
+ this.Controls.Add(this.panel2);
+ this.Controls.Add(this.passwordTextbox);
+ this.Controls.Add(this.emailTextbox);
+ this.Controls.Add(this.appidTextbox);
+ this.Controls.Add(this.loginButton);
+ this.Controls.Add(this.panel1);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
+ this.Name = "LoginFrm";
+ this.Text = "QobuzDLX | Login";
+ this.Load += new System.EventHandler(this.LoginFrm_Load);
+ this.panel1.ResumeLayout(false);
+ this.panel1.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.PictureBox pictureBox1;
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.Button loginButton;
+ private System.Windows.Forms.Panel panel3;
+ private System.Windows.Forms.Panel panel4;
+ private System.Windows.Forms.TextBox appidTextbox;
+ private System.Windows.Forms.TextBox emailTextbox;
+ private System.Windows.Forms.TextBox passwordTextbox;
+ private System.Windows.Forms.Label exitLabel;
+ private System.Windows.Forms.Button md5Button;
+ private System.Windows.Forms.Label loginText;
+ private System.ComponentModel.BackgroundWorker getSecretBG;
+ private System.ComponentModel.BackgroundWorker loginBG;
+ private System.Windows.Forms.Label verNumLabel2;
+ }
+}
\ No newline at end of file
diff --git a/QobuzDownloaderX/LoginForm-v2.cs b/QobuzDownloaderX/LoginForm-v2.cs
new file mode 100644
index 0000000..8073cf7
--- /dev/null
+++ b/QobuzDownloaderX/LoginForm-v2.cs
@@ -0,0 +1,527 @@
+๏ปฟusing QobuzDownloaderX.Properties;
+using System;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.IO;
+using System.Diagnostics;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Security.Cryptography;
+using System.Reflection;
+using System.Text.RegularExpressions;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Drawing.Imaging;
+using TagLib.Flac;
+using QobuzDownloaderX;
+
+namespace QobuzDownloaderX
+{
+ public partial class LoginFrm : Form
+ {
+ public LoginFrm()
+ {
+ InitializeComponent();
+ }
+
+ public const int WM_NCLBUTTONDOWN = 0xA1;
+ public const int HT_CAPTION = 0x2;
+
+ [DllImportAttribute("user32.dll")]
+ public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
+ [DllImportAttribute("user32.dll")]
+ public static extern bool ReleaseCapture();
+
+ private void QobuzDownloaderX_FormClosing(Object sender, FormClosingEventArgs e)
+ {
+ Application.Exit();
+ }
+
+ QobuzDownloaderX qbdlx = new QobuzDownloaderX();
+
+ public string appSecret { get; set; }
+
+ string errorLog = Path.GetDirectoryName(Application.ExecutablePath) + "\\Latest_Error.log";
+ string dllCheck = Path.GetDirectoryName(Application.ExecutablePath) + "\\taglib-sharp.dll";
+
+ static string GetMd5Hash(MD5 md5Hash, string input)
+ {
+
+ // Convert the input string to a byte array and compute the hash.
+ byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
+
+ // Create a new Stringbuilder to collect the bytes and create a string.
+ StringBuilder sBuilder = new StringBuilder();
+
+ // Loop through each byte of the hashed data and format each one as a hexadecimal string.
+ for (int i = 0; i < data.Length; i++)
+ {
+ sBuilder.Append(data[i].ToString("x2"));
+ }
+
+ // Return the hexadecimal string.
+ return sBuilder.ToString();
+ }
+
+ // Verify a hash against a string.
+ static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)
+ {
+ // Hash the input.
+ string hashOfInput = GetMd5Hash(md5Hash, input);
+
+ // Create a StringComparer an compare the hashes.
+ StringComparer comparer = StringComparer.OrdinalIgnoreCase;
+
+ if (0 == comparer.Compare(hashOfInput, hash))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ private void LoginFrm_Load(object sender, EventArgs e)
+ {
+ try
+ {
+ WebClient versionURLClient = new WebClient();
+ // Run through TLS to allow secure connection.
+ ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
+ string versionHTML = versionURLClient.DownloadString("https://github.com/ImAiiR/QobuzDownloaderX/releases");
+
+ // Grab link to bundle.js
+ var versionLog = Regex.Match(versionHTML, "(?.*?)<\\/span>").Groups;
+ var version = versionLog[1].Value;
+
+ string currentVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
+ string newVersion = version;
+
+ if (currentVersion.Contains(newVersion))
+ {
+ // Do nothing. All is good.
+ }
+ else
+ {
+ DialogResult dialogResult = MessageBox.Show("New version of QBDLX is available!\r\n\r\nInstalled version - " + currentVersion + "\r\nLatest version - "+ newVersion + "\r\n\r\nWould you like to update?", "QBDLX | Update Available", MessageBoxButtons.YesNo);
+ if (dialogResult == DialogResult.Yes)
+ {
+ // If "Yes" is clicked, open GitHub page and close QBDLX.
+ Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
+ Application.Exit();
+ }
+ else if (dialogResult == DialogResult.No)
+ {
+ // Ignore the update until next open.
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ DialogResult dialogResult = MessageBox.Show("Connection to GitHub to check for an update has failed.\r\nWould you like to check for an update manually?\r\n\r\nYour current version is " + Assembly.GetExecutingAssembly().GetName().Version.ToString(), "QBDLX | GitHub Connection Failed", MessageBoxButtons.YesNo);
+ if (dialogResult == DialogResult.Yes)
+ {
+ // If "Yes" is clicked, open GitHub page and close QBDLX.
+ Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
+ Application.Exit();
+ }
+ else if (dialogResult == DialogResult.No)
+ {
+ // Ignore the update until next open.
+ }
+ }
+
+ // Get and display version number.
+ verNumLabel2.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
+
+ // Check for taglib-sharp.dll
+ if (!System.IO.File.Exists(dllCheck))
+ {
+ MessageBox.Show("taglib-sharp.dll missing from folder!\r\nPlease Make sure the DLL is in the same folder as QobuzDownloaderX.exe!", "ERROR",
+ MessageBoxButtons.OK, MessageBoxIcon.Error);
+ Application.Exit();
+ }
+
+ // Bring to center of screen.
+ CenterToScreen();
+
+ if (Properties.Settings.Default.UpgradeRequired)
+ {
+ Properties.Settings.Default.Upgrade();
+ Properties.Settings.Default.UpgradeRequired = false;
+ Properties.Settings.Default.Save();
+ }
+
+ // Set saved settings to correct places.
+ appidTextbox.Text = Settings.Default.savedAppID.ToString();
+ emailTextbox.Text = Settings.Default.savedEmail.ToString();
+ passwordTextbox.Text = Settings.Default.savedPassword.ToString();
+
+ if (appidTextbox.Text != "app_id")
+ {
+ appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
+ }
+
+ if (appidTextbox.Text == null | appidTextbox.Text == "")
+ {
+ appidTextbox.ForeColor = Color.FromArgb(88, 92, 102);
+ appidTextbox.Text = "app_id";
+ }
+
+ if (emailTextbox.Text != "Email")
+ {
+ emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
+ }
+
+ if (emailTextbox.Text == null | emailTextbox.Text == "")
+ {
+ emailTextbox.ForeColor = Color.FromArgb(88, 92, 102);
+ emailTextbox.Text = "Email";
+ }
+
+ if (passwordTextbox.Text != "Password")
+ {
+ passwordTextbox.PasswordChar = '*';
+ passwordTextbox.UseSystemPasswordChar = false;
+ passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
+ }
+
+ if (passwordTextbox.Text == null | passwordTextbox.Text == "")
+ {
+ passwordTextbox.ForeColor = Color.FromArgb(88, 92, 102);
+ passwordTextbox.UseSystemPasswordChar = true;
+ passwordTextbox.Text = "Password";
+ }
+ }
+
+ private void loginButton_Click(object sender, EventArgs e)
+ {
+ if (appidTextbox.Text == "app_id" | appidTextbox.Text == null | appidTextbox.Text == "")
+ {
+ // If there's no app_id typed in.
+ loginText.Invoke(new Action(() => loginText.Text = "No app_id, please input app_id first."));
+ return;
+ }
+ else if (emailTextbox.Text == "Email" | emailTextbox.Text == null | emailTextbox.Text == "")
+ {
+ // If there's no email typed in.
+ loginText.Invoke(new Action(() => loginText.Text = "No email, please input email first."));
+ return;
+ }
+
+ var passMD5CheckLog = Regex.Match(passwordTextbox.Text, "(?^[0-9a-f]{32}$)").Groups;
+ var passMD5Check = passMD5CheckLog[1].Value;
+
+ if (passMD5Check == null | passMD5Check == "")
+ {
+ loginText.Text = "Password not MD5! Hit \"MD5\" before logging in!";
+ return;
+ }
+
+ // Save info locally to be used on next launch.
+ Settings.Default.savedEmail = emailTextbox.Text;
+ Settings.Default.savedAppID = appidTextbox.Text;
+ Settings.Default.savedPassword = passwordTextbox.Text;
+ Settings.Default.Save();
+
+ loginText.Text = "Logging in + obtaining app_secret...";
+ loginBG.RunWorkerAsync();
+ }
+
+ #region Textbox Focous & Text Change
+
+ #region app_id Textbox
+ private void appIdTextbox_Click(object sender, EventArgs e)
+ {
+ if (appidTextbox.Text == "app_id")
+ {
+ appidTextbox.Text = null;
+ appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
+ }
+ }
+
+ private void panel2_Click(object sender, EventArgs e)
+ {
+ appidTextbox.Focus();
+
+ if (appidTextbox.Text == "app_id")
+ {
+ appidTextbox.Text = null;
+ appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
+ }
+ }
+
+ private void appIdTextbox_Leave(object sender, EventArgs e)
+ {
+ if (appidTextbox.Text == null | appidTextbox.Text == "")
+ {
+ appidTextbox.ForeColor = Color.FromArgb(88, 92, 102);
+ appidTextbox.Text = "app_id";
+ }
+ }
+ #endregion
+
+ #region Email Textbox
+ private void emailTextbox_Click(object sender, EventArgs e)
+ {
+ if (emailTextbox.Text == "Email")
+ {
+ emailTextbox.Text = null;
+ emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
+ }
+ }
+
+ private void panel3_Click(object sender, EventArgs e)
+ {
+ emailTextbox.Focus();
+
+ if (emailTextbox.Text == "Email")
+ {
+ emailTextbox.Text = null;
+ emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
+ }
+ }
+
+ private void emailTextbox_Leave(object sender, EventArgs e)
+ {
+ if (emailTextbox.Text == null | emailTextbox.Text == "")
+ {
+ emailTextbox.ForeColor = Color.FromArgb(88, 92, 102);
+ emailTextbox.Text = "Email";
+ }
+ }
+ #endregion
+
+ #region Password Textbox
+ private void passwordTextbox_Click(object sender, EventArgs e)
+ {
+ if (passwordTextbox.Text == "Password")
+ {
+ passwordTextbox.Text = null;
+ passwordTextbox.PasswordChar = '*';
+ passwordTextbox.UseSystemPasswordChar = false;
+ passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
+ }
+ }
+
+ private void panel4_Click(object sender, EventArgs e)
+ {
+ passwordTextbox.Focus();
+
+ if (passwordTextbox.Text == "Password")
+ {
+ passwordTextbox.Text = null;
+ passwordTextbox.PasswordChar = '*';
+ passwordTextbox.UseSystemPasswordChar = false;
+ passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
+ }
+ }
+
+ private void passwordTextbox_Leave(object sender, EventArgs e)
+ {
+ if (passwordTextbox.Text == null | passwordTextbox.Text == "")
+ {
+ passwordTextbox.ForeColor = Color.FromArgb(88, 92, 102);
+ passwordTextbox.UseSystemPasswordChar = true;
+ passwordTextbox.Text = "Password";
+ }
+ }
+
+ #endregion
+
+ #endregion
+
+ private void exitLabel_Click(object sender, EventArgs e)
+ {
+ Application.Exit();
+ }
+
+ private void panel1_MouseMove(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+ ReleaseCapture();
+ SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
+ }
+ }
+
+ private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+ ReleaseCapture();
+ SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
+ }
+ }
+
+ private void verNumLabel2_MouseMove(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+ ReleaseCapture();
+ SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
+ }
+ }
+
+ private void md5Button_Click(object sender, EventArgs e)
+ {
+ if (passwordTextbox.Text == "Password")
+ {
+ // If there's no password typed in.
+ loginText.Invoke(new Action(() => loginText.Text = "No password typed, please input password first."));
+ return;
+ }
+
+ string plainTextPW = passwordTextbox.Text;
+
+ // Generate the MD5 hash using the string created above.
+ using (MD5 md5PassHash = MD5.Create())
+ {
+ string hashedPW = GetMd5Hash(md5PassHash, plainTextPW);
+
+ if (VerifyMd5Hash(md5PassHash, plainTextPW, hashedPW))
+ {
+ // If the MD5 hash is verified, proceed to get the streaming URL.
+ passwordTextbox.Text = hashedPW;
+ }
+ else
+ {
+ // If the hash can't be verified.
+ loginText.Invoke(new Action(() => loginText.Text = "Hashing failed. Please retry."));
+ return;
+ }
+ }
+ }
+
+ private void loginBG_DoWork(object sender, DoWorkEventArgs e)
+ {
+ loginBG.WorkerSupportsCancellation = true;
+
+ // Create WebRequest to login using login information from input textboxes.
+ WebRequest wr = WebRequest.Create("https://www.qobuz.com/api.json/0.2/user/login?email=" + emailTextbox.Text + "&password=" + passwordTextbox.Text + "&app_id=" + appidTextbox.Text);
+
+ try
+ {
+ // Grab info to be displayed and used.
+ WebResponse ws = wr.GetResponse();
+ StreamReader sr = new StreamReader(ws.GetResponseStream());
+
+ string loginRequest = sr.ReadToEnd();
+ string text = loginRequest;
+
+ // Grab display name
+ var displayNameLog = Regex.Match(loginRequest, "\"display_name\":\"(?.*?)\",\\\"").Groups;
+ var displayName = displayNameLog[1].Value;
+ qbdlx.displayName = displayName;
+
+ // Grab account type
+ var accountTypeLog = Regex.Match(loginRequest, "short_label\":\"(?\\w+)").Groups;
+ var accountType = accountTypeLog[1].Value;
+ qbdlx.accountType = accountType;
+
+ // Grab authentication token
+ var userAuth = Regex.Match(loginRequest, "\"user_auth_token\":\"(?.*?)\\\"}").Groups;
+ var userAuthToken = userAuth[1].Value;
+
+ // Set user_auth_token
+ qbdlx.userAuth = userAuthToken;
+ loginText.Invoke(new Action(() => loginText.Text = "Login Successful! Getting app_secret..."));
+ }
+ catch (Exception ex)
+ {
+ // If connection to API fails, show error info.
+ string error = ex.ToString();
+ loginText.Invoke(new Action(() => loginText.Text = "Login Failed. Error Log saved"));
+ System.IO.File.WriteAllText(errorLog, error);
+ wr.Abort();
+ return;
+ }
+
+ wr.Abort();
+ getSecretBG.RunWorkerAsync();
+ loginBG.CancelAsync();
+ }
+
+ private void getSecretBG_DoWork(object sender, DoWorkEventArgs e)
+ {
+ getSecretBG.WorkerSupportsCancellation = true;
+
+ WebClient bundleURLClient = new WebClient();
+ string bundleHTML = bundleURLClient.DownloadString("https://play.qobuz.com/");
+
+ // Grab link to bundle.js
+ var bundleLog = Regex.Match(bundleHTML, "