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, "