0.9.9.5 (UI Change Update)
This commit is contained in:
AiiR 2019-12-09 23:56:59 -05:00
parent 2b0ec2b90d
commit 2446643d99
12 changed files with 1284 additions and 33 deletions

View File

@ -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;
}
}

View File

@ -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
}
}

269
QobuzDownloaderX/LoginForm-v2.Designer.cs generated Normal file
View File

@ -0,0 +1,269 @@
namespace QobuzDownloaderX
{
partial class LoginFrm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
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;
}
}

View File

@ -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 class=\"css-truncate-target\" style=\"max-width: 125px\">(?<latestVersion>.*?)<\\/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, "(?<md5Test>^[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\":\"(?<displayName>.*?)\",\\\"").Groups;
var displayName = displayNameLog[1].Value;
qbdlx.displayName = displayName;
// Grab account type
var accountTypeLog = Regex.Match(loginRequest, "short_label\":\"(?<accountType>\\w+)").Groups;
var accountType = accountTypeLog[1].Value;
qbdlx.accountType = accountType;
// Grab authentication token
var userAuth = Regex.Match(loginRequest, "\"user_auth_token\":\"(?<userAuth>.*?)\\\"}").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, "<script src=\"(?<bundleJS>\\/resources\\/\\d+\\.\\d+\\.\\d+-[a-z]\\d{3}\\/bundle\\.js)").Groups;
var bundleSuffix = bundleLog[1].Value;
var bundleURL = "https://play.qobuz.com" + bundleSuffix;
WebRequest bundleWR = WebRequest.Create(bundleURL);
try
{
WebResponse bundleWS = bundleWR.GetResponse();
StreamReader bundleSR = new StreamReader(bundleWS.GetResponseStream());
string getBundleRequest = bundleSR.ReadToEnd();
string text = getBundleRequest;
// Grab "info" and "extras"
var bundleLog1 = Regex.Match(getBundleRequest, "{offset:\"(?<notUsed>.*?)\",name:\"Europe\\/Berlin\",info:\"(?<info>.*?)\",extras:\"(?<extras>.*?)\"}").Groups;
var bundleInfo = bundleLog1[2].Value;
var bundleExtras = bundleLog1[3].Value;
// Grab "seed"
var bundleLog2 = Regex.Match(getBundleRequest, "window.utimezone.paris\\):h.initialSeed\\(\"(?<seed>.*?)\",window.utimezone.berlin\\)").Groups;
var bundleSeed = bundleLog2[1].Value;
// Step 1 of getting the app_secret
string B64step1 = bundleSeed + bundleInfo + bundleExtras;
B64step1 = B64step1.Remove(B64step1.Length - 44, 44);
byte[] step1Bytes = Encoding.UTF8.GetBytes(B64step1);
B64step1 = Convert.ToBase64String(step1Bytes);
// Step 2 of getting the app_secret
byte[] step2Data = Convert.FromBase64String(B64step1);
string B64step2 = Encoding.UTF8.GetString(step2Data);
// Step 3 of getting the app_secret
byte[] step3Data = Convert.FromBase64String(B64step2);
// Set app_secret
appSecret = Encoding.UTF8.GetString(step3Data);
loginText.Invoke(new Action(() => loginText.Text = "app_secret Obtained! Launching QBDLX..."));
System.Threading.Thread.Sleep(1000);
}
catch (Exception bundleEx)
{
// If obtaining bundle.js info fails, show error info.
string bundleError = bundleEx.ToString();
loginText.Invoke(new Action(() => loginText.Text = "Couldn't obtain app_secret. Error Log saved"));
System.IO.File.WriteAllText(errorLog, bundleError);
bundleWR.Abort();
return;
}
bundleWR.Abort();
finishLogin(sender, e);
getSecretBG.CancelAsync();
}
private void finishLogin(object sender, EventArgs e)
{
// If info is legit, go to the main form.
qbdlx.appid = appidTextbox.Text;
qbdlx.eMail = emailTextbox.Text;
qbdlx.password = passwordTextbox.Text;
qbdlx.appSecret = appSecret;
this.Invoke(new Action(() => this.Hide()));
Application.Run(qbdlx);
}
}
}

View File

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="getSecretBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>19, 20</value>
</metadata>
<metadata name="loginBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>138, 20</value>
</metadata>
</root>

View File

@ -16,7 +16,7 @@ namespace QobuzDownloaderX
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LoginForm());
Application.Run(new LoginFrm());
}
}
}

View File

@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.9.9.0")]
[assembly: AssemblyFileVersion("0.9.9.0")]
[assembly: AssemblyVersion("0.9.9.5")]
[assembly: AssemblyFileVersion("0.9.9.5")]

View File

@ -60,6 +60,16 @@ namespace QobuzDownloaderX.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap login_frame {
get {
object obj = ResourceManager.GetObject("login_frame", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@ -79,5 +89,15 @@ namespace QobuzDownloaderX.Properties {
return ((System.Drawing.Icon)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap qbdlx_white {
get {
object obj = ResourceManager.GetObject("qbdlx_white", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -118,10 +118,16 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="login_frame" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\login-frame.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="qbdlx" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\qbdlx.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="qbdlx_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\qbdlx_icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="qbdlx_white" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\qbdlx-white.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -79,6 +79,12 @@
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="LoginForm-v2.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="LoginForm-v2.Designer.cs">
<DependentUpon>LoginForm-v2.cs</DependentUpon>
</Compile>
<Compile Include="searchForm.cs">
<SubType>Form</SubType>
</Compile>
@ -97,6 +103,9 @@
<EmbeddedResource Include="Form1.resx">
<DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="LoginForm-v2.resx">
<DependentUpon>LoginForm-v2.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="searchForm.resx">
<DependentUpon>searchForm.cs</DependentUpon>
</EmbeddedResource>
@ -148,6 +157,12 @@
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="Resources\login-frame.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\qbdlx-white.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB