11 Commits
Author SHA1 Message Date
minster586 b63c8c5926 Tiny little tweak to allow that if there is a live stream it looks at the duration it sees that it is zero and for SMTC it does not show the status that it is paused it merely shows that it is actively playing It also made a tiny change in the GUI for the time it shows the word live which is kind of cool 2026-10-28 19:14:38 -04:00
minster586 30f2c38763 Reworked UI and added SMTC Output (Works with Nutty SMTC bridge) 2026-10-24 21:50:54 -04:00
minster586 3b9437b4cb So there was a small subtle issue with the notifications on Windows toast where the image wouldn't render correctly I changed it to the hero style which shows the album art way better 2026-09-10 17:02:26 -04:00
minster586 e74fa6246a Removed an issue of it flickering that title name and any of the labels also removed scrolling and the marquee function as it wasn't working as originally intended 2026-09-05 20:15:57 -04:00
minster586 0f43ffe5d7 Renamed some of the labels for the input data and fix that also had an issue where sometimes the UI would not show the data but the output was not messed with 2026-09-05 00:48:31 -04:00
minster586 b0c37b815d Fixed issue with About me version not showing correctly for the right version 2026-09-05 00:26:36 -04:00
minster586 f1c4de4523 Moved the UI around in the settings 2026-09-05 00:16:06 -04:00
minster586 94e4c89776 So I also tried to work on the UI again and for some odd reason I can't seem to get it the way that I want where it will show a separating character at the end of the text and only scroll if required it likes to cut it off so my whole thing is oh well but there is that I think everything should be good 2026-09-05 00:15:00 -04:00
minster586 75a378e948 Toas will not show No title or artist flags 2026-09-04 23:44:06 -04:00
minster586 7b67c03270 Added in Windows toast notifications 2026-09-03 00:20:33 -04:00
minster586 34c80bda7b Set Time Clock 2026-07-01 22:37:18 -04:00
13 changed files with 2271 additions and 809 deletions
+126 -80
View File
@@ -43,9 +43,14 @@
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox1 = new System.Windows.Forms.GroupBox();
this.label6 = new System.Windows.Forms.Label(); this.time_data_label = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label(); this.time_label = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label();
this.album_data = new System.Windows.Forms.Label();
this.artist_data = new System.Windows.Forms.Label();
this.title_data = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
@@ -56,8 +61,6 @@
this.profile_drop_box = new System.Windows.Forms.ComboBox(); this.profile_drop_box = new System.Windows.Forms.ComboBox();
this.profile_label = new System.Windows.Forms.Label(); this.profile_label = new System.Windows.Forms.Label();
this.load_profile_button = new System.Windows.Forms.Button(); this.load_profile_button = new System.Windows.Forms.Button();
this.label7 = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label();
this.statusStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout();
this.menuStrip2.SuspendLayout(); this.menuStrip2.SuspendLayout();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
@@ -71,9 +74,9 @@
this.toolStripStatusLabel2, this.toolStripStatusLabel2,
this.toolStripStatusLabel4, this.toolStripStatusLabel4,
this.toolStripStatusLabel3}); this.toolStripStatusLabel3});
this.statusStrip1.Location = new System.Drawing.Point(0, 314); this.statusStrip1.Location = new System.Drawing.Point(0, 309);
this.statusStrip1.Name = "statusStrip1"; this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(612, 25); this.statusStrip1.Size = new System.Drawing.Size(780, 26);
this.statusStrip1.TabIndex = 0; this.statusStrip1.TabIndex = 0;
this.statusStrip1.Text = "statusStrip1"; this.statusStrip1.Text = "statusStrip1";
// //
@@ -81,23 +84,22 @@
// //
this.toolStripStatusLabel1.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.toolStripStatusLabel1.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Size = new System.Drawing.Size(57, 20); this.toolStripStatusLabel1.Size = new System.Drawing.Size(64, 21);
this.toolStripStatusLabel1.Text = "Status:"; this.toolStripStatusLabel1.Text = "Status:";
// //
// toolStripStatusLabel2 // toolStripStatusLabel2
// //
this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
this.toolStripStatusLabel2.Size = new System.Drawing.Size(16, 20);
// Use BackColor only to indicate status. Text is a single space so the label renders as a square.
this.toolStripStatusLabel2.Text = " ";
this.toolStripStatusLabel2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
this.toolStripStatusLabel2.BackColor = System.Drawing.Color.Red; this.toolStripStatusLabel2.BackColor = System.Drawing.Color.Red;
this.toolStripStatusLabel2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
this.toolStripStatusLabel2.Size = new System.Drawing.Size(12, 21);
this.toolStripStatusLabel2.Text = " ";
// //
// toolStripStatusLabel4 // toolStripStatusLabel4
// //
this.toolStripStatusLabel4.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.toolStripStatusLabel4.Font = new System.Drawing.Font("Segoe UI", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.toolStripStatusLabel4.Name = "toolStripStatusLabel4"; this.toolStripStatusLabel4.Name = "toolStripStatusLabel4";
this.toolStripStatusLabel4.Size = new System.Drawing.Size(262, 20); this.toolStripStatusLabel4.Size = new System.Drawing.Size(344, 21);
this.toolStripStatusLabel4.Spring = true; this.toolStripStatusLabel4.Spring = true;
this.toolStripStatusLabel4.Text = "Profile:"; this.toolStripStatusLabel4.Text = "Profile:";
this.toolStripStatusLabel4.Click += new System.EventHandler(this.toolStripStatusLabel4_Click); this.toolStripStatusLabel4.Click += new System.EventHandler(this.toolStripStatusLabel4_Click);
@@ -105,7 +107,7 @@
// toolStripStatusLabel3 // toolStripStatusLabel3
// //
this.toolStripStatusLabel3.Name = "toolStripStatusLabel3"; this.toolStripStatusLabel3.Name = "toolStripStatusLabel3";
this.toolStripStatusLabel3.Size = new System.Drawing.Size(262, 20); this.toolStripStatusLabel3.Size = new System.Drawing.Size(344, 21);
this.toolStripStatusLabel3.Spring = true; this.toolStripStatusLabel3.Spring = true;
this.toolStripStatusLabel3.Text = "Song Changed Updateing"; this.toolStripStatusLabel3.Text = "Song Changed Updateing";
this.toolStripStatusLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; this.toolStripStatusLabel3.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
@@ -117,7 +119,7 @@
this.aboutToolStripMenuItem}); this.aboutToolStripMenuItem});
this.menuStrip2.Location = new System.Drawing.Point(0, 0); this.menuStrip2.Location = new System.Drawing.Point(0, 0);
this.menuStrip2.Name = "menuStrip2"; this.menuStrip2.Name = "menuStrip2";
this.menuStrip2.Size = new System.Drawing.Size(612, 24); this.menuStrip2.Size = new System.Drawing.Size(780, 25);
this.menuStrip2.TabIndex = 2; this.menuStrip2.TabIndex = 2;
this.menuStrip2.Text = "menuStrip2"; this.menuStrip2.Text = "menuStrip2";
// //
@@ -128,7 +130,7 @@
this.loggingToolStripMenuItem, this.loggingToolStripMenuItem,
this.exitToolStripMenuItem}); this.exitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); this.fileToolStripMenuItem.Size = new System.Drawing.Size(41, 21);
this.fileToolStripMenuItem.Text = "File"; this.fileToolStripMenuItem.Text = "File";
// //
// restAPISettingToolStripMenuItem // restAPISettingToolStripMenuItem
@@ -151,13 +153,13 @@
// onToolStripMenuItem // onToolStripMenuItem
// //
this.onToolStripMenuItem.Name = "onToolStripMenuItem"; this.onToolStripMenuItem.Name = "onToolStripMenuItem";
this.onToolStripMenuItem.Size = new System.Drawing.Size(91, 22); this.onToolStripMenuItem.Size = new System.Drawing.Size(98, 22);
this.onToolStripMenuItem.Text = "On"; this.onToolStripMenuItem.Text = "On";
// //
// offToolStripMenuItem // offToolStripMenuItem
// //
this.offToolStripMenuItem.Name = "offToolStripMenuItem"; this.offToolStripMenuItem.Name = "offToolStripMenuItem";
this.offToolStripMenuItem.Size = new System.Drawing.Size(91, 22); this.offToolStripMenuItem.Size = new System.Drawing.Size(98, 22);
this.offToolStripMenuItem.Text = "Off"; this.offToolStripMenuItem.Text = "Off";
// //
// exitToolStripMenuItem // exitToolStripMenuItem
@@ -170,63 +172,123 @@
// aboutToolStripMenuItem // aboutToolStripMenuItem
// //
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 20); this.aboutToolStripMenuItem.Size = new System.Drawing.Size(52, 21);
this.aboutToolStripMenuItem.Text = "About"; this.aboutToolStripMenuItem.Text = "About";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
// //
// groupBox1 // groupBox1
// //
this.groupBox1.Controls.Add(this.time_data_label);
this.groupBox1.Controls.Add(this.label9);
this.groupBox1.Controls.Add(this.time_label);
this.groupBox1.Controls.Add(this.label8); this.groupBox1.Controls.Add(this.label8);
this.groupBox1.Controls.Add(this.label7); this.groupBox1.Controls.Add(this.label7);
this.groupBox1.Controls.Add(this.label6); this.groupBox1.Controls.Add(this.album_data);
this.groupBox1.Controls.Add(this.label5); this.groupBox1.Controls.Add(this.artist_data);
this.groupBox1.Controls.Add(this.label4); this.groupBox1.Controls.Add(this.title_data);
this.groupBox1.Controls.Add(this.label3); this.groupBox1.Controls.Add(this.label3);
this.groupBox1.Controls.Add(this.label2); this.groupBox1.Controls.Add(this.label2);
this.groupBox1.Controls.Add(this.label1); this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.groupBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.groupBox1.Location = new System.Drawing.Point(199, 37); this.groupBox1.Location = new System.Drawing.Point(199, 37);
this.groupBox1.Name = "groupBox1"; this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(390, 173); this.groupBox1.Size = new System.Drawing.Size(569, 205);
this.groupBox1.TabIndex = 4; this.groupBox1.TabIndex = 4;
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
this.groupBox1.Text = "Song Info"; this.groupBox1.Text = "Song Info";
// //
// label6 // time_data_label
// //
this.label6.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.time_data_label.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label6.Location = new System.Drawing.Point(99, 140); this.time_data_label.Location = new System.Drawing.Point(101, 159);
this.label6.Name = "label6"; this.time_data_label.Name = "time_data_label";
this.label6.Size = new System.Drawing.Size(266, 17); this.time_data_label.Size = new System.Drawing.Size(437, 21);
this.label6.TabIndex = 5; this.time_data_label.TabIndex = 10;
this.label6.Text = "No album"; this.time_data_label.Text = "No Data";
this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.time_data_label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
// //
// label5 // label9
// //
this.label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label9.AutoSize = true;
this.label5.Location = new System.Drawing.Point(99, 84); this.label9.Location = new System.Drawing.Point(17, 144);
this.label5.Name = "label5"; this.label9.Name = "label9";
this.label5.Size = new System.Drawing.Size(266, 17); this.label9.Size = new System.Drawing.Size(539, 16);
this.label5.TabIndex = 4; this.label9.TabIndex = 9;
this.label5.Text = "No artist"; this.label9.Text = "――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――";
this.label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.label9.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
// //
// label4 // time_label
// //
this.label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.time_label.AutoSize = true;
this.label4.Location = new System.Drawing.Point(99, 33); this.time_label.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label4.Name = "label4"; this.time_label.Location = new System.Drawing.Point(20, 157);
this.label4.Size = new System.Drawing.Size(266, 16); this.time_label.Name = "time_label";
this.label4.TabIndex = 3; this.time_label.Size = new System.Drawing.Size(63, 24);
this.label4.Text = "No title"; this.time_label.TabIndex = 8;
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.time_label.Text = "Time:";
this.time_label.Click += new System.EventHandler(this.label9_Click);
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(20, 103);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(539, 16);
this.label8.TabIndex = 7;
this.label8.Text = "――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――";
this.label8.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
//
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(19, 61);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(539, 16);
this.label7.TabIndex = 6;
this.label7.Text = "――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――";
this.label7.Click += new System.EventHandler(this.label7_Click_1);
//
// album_data
//
this.album_data.AutoEllipsis = true;
this.album_data.AutoSize = false;
this.album_data.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.album_data.Location = new System.Drawing.Point(100, 119);
this.album_data.Name = "album_data";
this.album_data.Size = new System.Drawing.Size(443, 19);
this.album_data.TabIndex = 5;
this.album_data.Text = "No album";
this.album_data.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// artist_data
//
this.artist_data.AutoEllipsis = true;
this.artist_data.AutoSize = false;
this.artist_data.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.artist_data.Location = new System.Drawing.Point(99, 76);
this.artist_data.Name = "artist_data";
this.artist_data.Size = new System.Drawing.Size(433, 23);
this.artist_data.TabIndex = 4;
this.artist_data.Text = "No artist";
this.artist_data.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// title_data
//
this.title_data.AutoEllipsis = true;
this.title_data.AutoSize = false;
this.title_data.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.title_data.Location = new System.Drawing.Point(97, 33);
this.title_data.Name = "title_data";
this.title_data.Size = new System.Drawing.Size(443, 20);
this.title_data.TabIndex = 3;
this.title_data.Text = "No title";
this.title_data.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
// //
// label3 // label3
// //
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label3.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.Location = new System.Drawing.Point(23, 138); this.label3.Location = new System.Drawing.Point(23, 116);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(76, 24); this.label3.Size = new System.Drawing.Size(76, 24);
this.label3.TabIndex = 2; this.label3.TabIndex = 2;
@@ -236,7 +298,7 @@
// //
this.label2.AutoSize = true; this.label2.AutoSize = true;
this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Underline))), System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.Location = new System.Drawing.Point(23, 82); this.label2.Location = new System.Drawing.Point(23, 75);
this.label2.Name = "label2"; this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(62, 24); this.label2.Size = new System.Drawing.Size(62, 24);
this.label2.TabIndex = 1; this.label2.TabIndex = 1;
@@ -254,7 +316,7 @@
// //
// button1 // button1
// //
this.button1.Location = new System.Drawing.Point(62, 230); this.button1.Location = new System.Drawing.Point(425, 254);
this.button1.Name = "button1"; this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(99, 42); this.button1.Size = new System.Drawing.Size(99, 42);
this.button1.TabIndex = 5; this.button1.TabIndex = 5;
@@ -264,7 +326,7 @@
// //
// button2 // button2
// //
this.button2.Location = new System.Drawing.Point(180, 230); this.button2.Location = new System.Drawing.Point(577, 253);
this.button2.Name = "button2"; this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(99, 42); this.button2.Size = new System.Drawing.Size(99, 42);
this.button2.TabIndex = 6; this.button2.TabIndex = 6;
@@ -275,7 +337,7 @@
// uicolor // uicolor
// //
this.uicolor.Image = global::RadioDJViewer.Properties.Resources.MdiWeatherNight; this.uicolor.Image = global::RadioDJViewer.Properties.Resources.MdiWeatherNight;
this.uicolor.Location = new System.Drawing.Point(572, 276); this.uicolor.Location = new System.Drawing.Point(740, 262);
this.uicolor.Name = "uicolor"; this.uicolor.Name = "uicolor";
this.uicolor.Size = new System.Drawing.Size(28, 23); this.uicolor.Size = new System.Drawing.Size(28, 23);
this.uicolor.TabIndex = 7; this.uicolor.TabIndex = 7;
@@ -283,7 +345,7 @@
// //
// pictureBox1 // pictureBox1
// //
this.pictureBox1.Location = new System.Drawing.Point(13, 37); this.pictureBox1.Location = new System.Drawing.Point(13, 69);
this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(180, 173); this.pictureBox1.Size = new System.Drawing.Size(180, 173);
this.pictureBox1.TabIndex = 3; this.pictureBox1.TabIndex = 3;
@@ -292,7 +354,7 @@
// profile_drop_box // profile_drop_box
// //
this.profile_drop_box.FormattingEnabled = true; this.profile_drop_box.FormattingEnabled = true;
this.profile_drop_box.Location = new System.Drawing.Point(62, 278); this.profile_drop_box.Location = new System.Drawing.Point(62, 268);
this.profile_drop_box.Name = "profile_drop_box"; this.profile_drop_box.Name = "profile_drop_box";
this.profile_drop_box.Size = new System.Drawing.Size(217, 21); this.profile_drop_box.Size = new System.Drawing.Size(217, 21);
this.profile_drop_box.TabIndex = 8; this.profile_drop_box.TabIndex = 8;
@@ -300,7 +362,7 @@
// profile_label // profile_label
// //
this.profile_label.AutoSize = true; this.profile_label.AutoSize = true;
this.profile_label.Location = new System.Drawing.Point(12, 281); this.profile_label.Location = new System.Drawing.Point(12, 272);
this.profile_label.Name = "profile_label"; this.profile_label.Name = "profile_label";
this.profile_label.Size = new System.Drawing.Size(44, 13); this.profile_label.Size = new System.Drawing.Size(44, 13);
this.profile_label.TabIndex = 9; this.profile_label.TabIndex = 9;
@@ -309,37 +371,18 @@
// //
// load_profile_button // load_profile_button
// //
this.load_profile_button.Location = new System.Drawing.Point(285, 276); this.load_profile_button.Location = new System.Drawing.Point(292, 267);
this.load_profile_button.Name = "load_profile_button"; this.load_profile_button.Name = "load_profile_button";
this.load_profile_button.Size = new System.Drawing.Size(75, 23); this.load_profile_button.Size = new System.Drawing.Size(75, 23);
this.load_profile_button.TabIndex = 10; this.load_profile_button.TabIndex = 10;
this.load_profile_button.Text = "Load Profile"; this.load_profile_button.Text = "Load Profile";
this.load_profile_button.UseVisualStyleBackColor = true; this.load_profile_button.UseVisualStyleBackColor = true;
// //
// label7
//
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(19, 61);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(357, 16);
this.label7.TabIndex = 6;
this.label7.Text = "――――――――――――――――――――――――――――――――――――――――――――――――――";
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(24, 118);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(357, 16);
this.label8.TabIndex = 7;
this.label8.Text = "――――――――――――――――――――――――――――――――――――――――――――――――――";
this.label8.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
//
// Main // Main
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(612, 339); this.ClientSize = new System.Drawing.Size(780, 335);
this.Controls.Add(this.load_profile_button); this.Controls.Add(this.load_profile_button);
this.Controls.Add(this.profile_label); this.Controls.Add(this.profile_label);
this.Controls.Add(this.profile_drop_box); this.Controls.Add(this.profile_drop_box);
@@ -379,9 +422,9 @@
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private System.Windows.Forms.PictureBox pictureBox1; private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.Label label6; private System.Windows.Forms.Label album_data;
private System.Windows.Forms.Label label5; private System.Windows.Forms.Label artist_data;
private System.Windows.Forms.Label label4; private System.Windows.Forms.Label title_data;
private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label1;
@@ -396,6 +439,9 @@
private System.Windows.Forms.Button load_profile_button; private System.Windows.Forms.Button load_profile_button;
private System.Windows.Forms.Label label7; private System.Windows.Forms.Label label7;
private System.Windows.Forms.Label label8; private System.Windows.Forms.Label label8;
private System.Windows.Forms.Label time_label;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.Label time_data_label;
} }
} }
+1520 -422
View File
File diff suppressed because it is too large Load Diff
+1 -8
View File
@@ -120,17 +120,10 @@
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value> <value>17, 17</value>
</metadata> </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="toolStripStatusLabel2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAIAAAACABAMAAAAxEHz4AAAABGdBTUEAALGPC/xhBQAAAANQTFRFJn8A
Mx1isQAAAAlwSFlzAAAOvAAADrwBlbxySQAAAB9JREFUaN7twTEBAAAAwqD1T20IX6AAAAAAAAAAAD4D
IIAAAT2Y3yoAAAAASUVORK5CYII=
</value>
</data>
<metadata name="menuStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="menuStrip2.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>247, 17</value> <value>247, 17</value>
</metadata> </metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
AAABAAEAIBgAAAEAIACIDAAAFgAAACgAAAAgAAAAMAAAAAEAIAAAAAAAAAwAAMMOAADDDgAAAAAAAAAA AAABAAEAIBgAAAEAIACIDAAAFgAAACgAAAAgAAAAMAAAAAEAIAAAAAAAAAwAAMMOAADDDgAAAAAAAAAA
+4
View File
@@ -23,6 +23,10 @@ namespace RadioDJViewer
// Web server settings // Web server settings
public bool WebServerEnabled { get; set; } public bool WebServerEnabled { get; set; }
public int WebServerPort { get; set; } public int WebServerPort { get; set; }
// Clock visibility setting
public bool ClockVisibilityEnabled { get; set; }
public bool ToastNotificationsEnabled { get; set; }
public bool SmtcEnabled { get; set; }
} }
public static class ProfileStorage public static class ProfileStorage
+10 -3
View File
@@ -1,19 +1,26 @@
using System; using System;
using System.Collections.Generic; using System.Runtime.InteropServices;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace RadioDJViewer namespace RadioDJViewer
{ {
internal static class Program internal static class Program
{ {
[DllImport("shell32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern int SetCurrentProcessExplicitAppUserModelID(string AppID);
/// <summary> /// <summary>
/// The main entry point for the application. /// The main entry point for the application.
/// </summary> /// </summary>
[STAThread] [STAThread]
static void Main() static void Main()
{ {
try
{
SetCurrentProcessExplicitAppUserModelID("RadioDJViewer.App");
}
catch { }
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Main()); Application.Run(new Main());
+2 -2
View File
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number // Build Number
// Revision // Revision
// //
[assembly: AssemblyVersion("1.9.0")] [assembly: AssemblyVersion("1.15.1")]
[assembly: AssemblyFileVersion("1.9.0")] [assembly: AssemblyFileVersion("1.15.1")]
+78 -1
View File
@@ -21,7 +21,12 @@ namespace RadioDJViewer
// In-memory cache for fast serving // In-memory cache for fast serving
public static string CachedArtist = ""; public static string CachedArtist = "";
public static string CachedTitle = ""; public static string CachedTitle = "";
public static string CachedTime = "No Data";
public static string CachedElapsed = "0";
public static string CachedDuration = "0";
public static bool CachedPaused = true;
public static byte[] CachedImageBytes = null; public static byte[] CachedImageBytes = null;
public static bool CachedClockVisibility = false;
private readonly int port; private readonly int port;
private readonly Func<string> getArtist; private readonly Func<string> getArtist;
@@ -112,14 +117,35 @@ namespace RadioDJViewer
var html = htmlTemplate ?? ""; var html = htmlTemplate ?? "";
// Replace placeholders with in-memory cache values // Replace placeholders with in-memory cache values
html = html.Replace("{{ARTIST}}", WebUtility.HtmlEncode(CachedArtist ?? string.Empty)) html = html.Replace("{{ARTIST}}", WebUtility.HtmlEncode(CachedArtist ?? string.Empty))
.Replace("{{TITLE}}", WebUtility.HtmlEncode(CachedTitle ?? string.Empty)); .Replace("{{TITLE}}", WebUtility.HtmlEncode(CachedTitle ?? string.Empty))
.Replace("{{TIME}}", WebUtility.HtmlEncode(CachedTime ?? string.Empty));
var buf = Encoding.UTF8.GetBytes(html); var buf = Encoding.UTF8.GetBytes(html);
resp.ContentType = "text/html; charset=utf-8"; resp.ContentType = "text/html; charset=utf-8";
resp.ContentLength64 = buf.Length; resp.ContentLength64 = buf.Length;
resp.OutputStream.Write(buf, 0, buf.Length); resp.OutputStream.Write(buf, 0, buf.Length);
} }
else if (path.Equals("/status.json", StringComparison.OrdinalIgnoreCase))
{
var json = "{"
+ $"\"artist\":\"{JsonEscape(CachedArtist ?? string.Empty)}\","
+ $"\"title\":\"{JsonEscape(CachedTitle ?? string.Empty)}\","
+ $"\"time\":\"{JsonEscape(CachedTime ?? "No Data")}\","
+ $"\"elapsed\":\"{JsonEscape(CachedElapsed ?? "0")}\","
+ $"\"duration\":\"{JsonEscape(CachedDuration ?? "0")}\","
+ $"\"paused\":{(CachedPaused ? "true" : "false")},"
+ $"\"clockVisible\":{(CachedClockVisibility ? "true" : "false")}"
+ "}";
var buf = Encoding.UTF8.GetBytes(json);
resp.ContentType = "application/json; charset=utf-8";
resp.Headers["Cache-Control"] = "no-store, no-cache, must-revalidate, max-age=0";
resp.Headers["Pragma"] = "no-cache";
resp.Headers["Expires"] = "0";
resp.ContentLength64 = buf.Length;
resp.OutputStream.Write(buf, 0, buf.Length);
}
else if (path.Equals("/artist.txt", StringComparison.OrdinalIgnoreCase)) else if (path.Equals("/artist.txt", StringComparison.OrdinalIgnoreCase))
{ {
ApplyNoCache(resp);
var buf = Encoding.UTF8.GetBytes(CachedArtist ?? string.Empty); var buf = Encoding.UTF8.GetBytes(CachedArtist ?? string.Empty);
resp.ContentType = "text/plain; charset=utf-8"; resp.ContentType = "text/plain; charset=utf-8";
resp.ContentLength64 = buf.Length; resp.ContentLength64 = buf.Length;
@@ -127,11 +153,44 @@ namespace RadioDJViewer
} }
else if (path.Equals("/title.txt", StringComparison.OrdinalIgnoreCase)) else if (path.Equals("/title.txt", StringComparison.OrdinalIgnoreCase))
{ {
ApplyNoCache(resp);
var buf = Encoding.UTF8.GetBytes(CachedTitle ?? string.Empty); var buf = Encoding.UTF8.GetBytes(CachedTitle ?? string.Empty);
resp.ContentType = "text/plain; charset=utf-8"; resp.ContentType = "text/plain; charset=utf-8";
resp.ContentLength64 = buf.Length; resp.ContentLength64 = buf.Length;
resp.OutputStream.Write(buf, 0, buf.Length); resp.OutputStream.Write(buf, 0, buf.Length);
} }
else if (path.Equals("/time.txt", StringComparison.OrdinalIgnoreCase))
{
ApplyNoCache(resp);
var buf = Encoding.UTF8.GetBytes(CachedTime ?? "No Data");
resp.ContentType = "text/plain; charset=utf-8";
resp.ContentLength64 = buf.Length;
resp.OutputStream.Write(buf, 0, buf.Length);
}
else if (path.Equals("/elapsed", StringComparison.OrdinalIgnoreCase))
{
ApplyNoCache(resp);
var buf = Encoding.UTF8.GetBytes(CachedElapsed ?? "0");
resp.ContentType = "text/plain; charset=utf-8";
resp.ContentLength64 = buf.Length;
resp.OutputStream.Write(buf, 0, buf.Length);
}
else if (path.Equals("/duration", StringComparison.OrdinalIgnoreCase))
{
ApplyNoCache(resp);
var buf = Encoding.UTF8.GetBytes(CachedDuration ?? "0");
resp.ContentType = "text/plain; charset=utf-8";
resp.ContentLength64 = buf.Length;
resp.OutputStream.Write(buf, 0, buf.Length);
}
else if (path.Equals("/clock-visibility", StringComparison.OrdinalIgnoreCase))
{
ApplyNoCache(resp);
var buf = Encoding.UTF8.GetBytes(CachedClockVisibility ? "true" : "false");
resp.ContentType = "text/plain; charset=utf-8";
resp.ContentLength64 = buf.Length;
resp.OutputStream.Write(buf, 0, buf.Length);
}
else if (path.Equals("/style.css", StringComparison.OrdinalIgnoreCase)) else if (path.Equals("/style.css", StringComparison.OrdinalIgnoreCase))
{ {
var buf = Encoding.UTF8.GetBytes(cssText ?? ""); var buf = Encoding.UTF8.GetBytes(cssText ?? "");
@@ -209,6 +268,24 @@ namespace RadioDJViewer
} }
} }
private static void ApplyNoCache(HttpListenerResponse resp)
{
resp.Headers["Cache-Control"] = "no-store, no-cache, must-revalidate, max-age=0";
resp.Headers["Pragma"] = "no-cache";
resp.Headers["Expires"] = "0";
}
private static string JsonEscape(string value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
return value.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\r", "\\r")
.Replace("\n", "\\n");
}
private string GetMimeTypeFromPath(string path) private string GetMimeTypeFromPath(string path)
{ {
var ext = Path.GetExtension(path).ToLowerInvariant(); var ext = Path.GetExtension(path).ToLowerInvariant();
+3 -2
View File
@@ -25,8 +25,9 @@
<!-- Song info (right) --> <!-- Song info (right) -->
<div class="song-info"> <div class="song-info">
<div class="song-title">Loading...</div> <div class="song-title">{{TITLE}}</div>
<div class="song-artist">Loading...</div> <div class="song-artist">{{ARTIST}}</div>
<div class="song-time" id="song-time">{{TIME}}</div>
</div> </div>
</div> </div>
</div> </div>
+302 -158
View File
@@ -54,25 +54,42 @@
this.button6 = new System.Windows.Forms.Button(); this.button6 = new System.Windows.Forms.Button();
this.label6 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label();
this.label7 = new System.Windows.Forms.Label(); this.label7 = new System.Windows.Forms.Label();
this.textBox7 = new System.Windows.Forms.TextBox(); this.polling_rate_textbox = new System.Windows.Forms.TextBox();
this.groupBox2 = new System.Windows.Forms.GroupBox(); this.groupBox2 = new System.Windows.Forms.GroupBox();
this.label13 = new System.Windows.Forms.Label(); this.toast_box_group_box = new System.Windows.Forms.GroupBox();
this.comboBoxScrollSpeed = new System.Windows.Forms.ComboBox(); this.toast_check_box_enable = new System.Windows.Forms.CheckBox();
this.textBoxPauseTime = new System.Windows.Forms.TextBox(); this.toast_label = new System.Windows.Forms.Label();
this.separatingcharacterformatbox = new System.Windows.Forms.TextBox(); this.web_server_settings_groupbox = new System.Windows.Forms.GroupBox();
this.textBox9 = new System.Windows.Forms.TextBox(); this.clock_visibility_checkBox = new System.Windows.Forms.CheckBox();
this.label9 = new System.Windows.Forms.Label(); this.clock_label = new System.Windows.Forms.Label();
this.label8 = new System.Windows.Forms.Label(); this.web_server_port_textbox = new System.Windows.Forms.TextBox();
this.label12 = new System.Windows.Forms.Label(); this.web_server_port_label = new System.Windows.Forms.Label();
this.web_server_label = new System.Windows.Forms.Label(); this.web_server_label = new System.Windows.Forms.Label();
this.web_server_checkbox = new System.Windows.Forms.CheckBox(); this.web_server_checkbox = new System.Windows.Forms.CheckBox();
this.web_server_settings_groupbox = new System.Windows.Forms.GroupBox(); this.label12 = new System.Windows.Forms.Label();
this.web_server_port_label = new System.Windows.Forms.Label(); this.tab_controls = new System.Windows.Forms.TabControl();
this.web_server_port_textbox = new System.Windows.Forms.TextBox(); this.settings_tab_page = new System.Windows.Forms.TabPage();
this.output_settings_tab_page = new System.Windows.Forms.TabPage();
this.connection_settings_box = new System.Windows.Forms.GroupBox();
this.notice_one = new System.Windows.Forms.Label();
this.misc_tab_page = new System.Windows.Forms.TabPage();
this.groupBox4 = new System.Windows.Forms.GroupBox();
this.smtc_enable_label = new System.Windows.Forms.Label();
this.smtc_check_box = new System.Windows.Forms.CheckBox();
this.notice_two = new System.Windows.Forms.Label();
this.loaded_profile_label = new System.Windows.Forms.Label();
this.profile_loaded_data = new System.Windows.Forms.Label();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.groupBox3.SuspendLayout(); this.groupBox3.SuspendLayout();
this.groupBox2.SuspendLayout(); this.groupBox2.SuspendLayout();
this.toast_box_group_box.SuspendLayout();
this.web_server_settings_groupbox.SuspendLayout(); this.web_server_settings_groupbox.SuspendLayout();
this.tab_controls.SuspendLayout();
this.settings_tab_page.SuspendLayout();
this.output_settings_tab_page.SuspendLayout();
this.connection_settings_box.SuspendLayout();
this.misc_tab_page.SuspendLayout();
this.groupBox4.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// groupBox1 // groupBox1
@@ -104,7 +121,7 @@
// //
// ok_button_master // ok_button_master
// //
this.ok_button_master.Location = new System.Drawing.Point(65, 648); this.ok_button_master.Location = new System.Drawing.Point(54, 684);
this.ok_button_master.Name = "ok_button_master"; this.ok_button_master.Name = "ok_button_master";
this.ok_button_master.Size = new System.Drawing.Size(157, 23); this.ok_button_master.Size = new System.Drawing.Size(157, 23);
this.ok_button_master.TabIndex = 1; this.ok_button_master.TabIndex = 1;
@@ -113,7 +130,7 @@
// //
// button2 // button2
// //
this.button2.Location = new System.Drawing.Point(305, 648); this.button2.Location = new System.Drawing.Point(301, 684);
this.button2.Name = "button2"; this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(157, 23); this.button2.Size = new System.Drawing.Size(157, 23);
this.button2.TabIndex = 2; this.button2.TabIndex = 2;
@@ -140,7 +157,7 @@
// label3 // label3
// //
this.label3.AutoSize = true; this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(20, 100); this.label3.Location = new System.Drawing.Point(20, 27);
this.label3.Name = "label3"; this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(57, 13); this.label3.Size = new System.Drawing.Size(57, 13);
this.label3.TabIndex = 2; this.label3.TabIndex = 2;
@@ -148,46 +165,46 @@
// //
// textBox2 // textBox2
// //
this.textBox2.Location = new System.Drawing.Point(120, 97); this.textBox2.Location = new System.Drawing.Point(103, 24);
this.textBox2.Name = "textBox2"; this.textBox2.Name = "textBox2";
this.textBox2.Size = new System.Drawing.Size(290, 20); this.textBox2.Size = new System.Drawing.Size(122, 20);
this.textBox2.TabIndex = 3; this.textBox2.TabIndex = 3;
// //
// label4 // label4
// //
this.label4.AutoSize = true; this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(20, 135); this.label4.Location = new System.Drawing.Point(20, 60);
this.label4.Name = "label4"; this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(26, 13); this.label4.Size = new System.Drawing.Size(29, 13);
this.label4.TabIndex = 4; this.label4.TabIndex = 4;
this.label4.Text = "Port"; this.label4.Text = "Port:";
// //
// textBox3 // textBox3
// //
this.textBox3.Location = new System.Drawing.Point(120, 132); this.textBox3.Location = new System.Drawing.Point(103, 54);
this.textBox3.Name = "textBox3"; this.textBox3.Name = "textBox3";
this.textBox3.Size = new System.Drawing.Size(290, 20); this.textBox3.Size = new System.Drawing.Size(122, 20);
this.textBox3.TabIndex = 5; this.textBox3.TabIndex = 5;
// //
// label5 // label5
// //
this.label5.AutoSize = true; this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(20, 170); this.label5.Location = new System.Drawing.Point(20, 88);
this.label5.Name = "label5"; this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(53, 13); this.label5.Size = new System.Drawing.Size(56, 13);
this.label5.TabIndex = 6; this.label5.TabIndex = 6;
this.label5.Text = "Password"; this.label5.Text = "Password:";
// //
// textBox4 // textBox4
// //
this.textBox4.Location = new System.Drawing.Point(120, 167); this.textBox4.Location = new System.Drawing.Point(103, 83);
this.textBox4.Name = "textBox4"; this.textBox4.Name = "textBox4";
this.textBox4.Size = new System.Drawing.Size(290, 20); this.textBox4.Size = new System.Drawing.Size(122, 20);
this.textBox4.TabIndex = 7; this.textBox4.TabIndex = 7;
// //
// button3 // button3
// //
this.button3.Location = new System.Drawing.Point(71, 491); this.button3.Location = new System.Drawing.Point(66, 537);
this.button3.Name = "button3"; this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(120, 30); this.button3.Size = new System.Drawing.Size(120, 30);
this.button3.TabIndex = 8; this.button3.TabIndex = 8;
@@ -196,7 +213,7 @@
// //
// button4 // button4
// //
this.button4.Location = new System.Drawing.Point(316, 491); this.button4.Location = new System.Drawing.Point(279, 537);
this.button4.Name = "button4"; this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(120, 30); this.button4.Size = new System.Drawing.Size(120, 30);
this.button4.TabIndex = 9; this.button4.TabIndex = 9;
@@ -205,20 +222,21 @@
// //
// groupBox3 // groupBox3
// //
this.groupBox3.Controls.Add(this.notice_one);
this.groupBox3.Controls.Add(this.buttonSelectOutputFolder); this.groupBox3.Controls.Add(this.buttonSelectOutputFolder);
this.groupBox3.Controls.Add(this.labelOutputFolderPath); this.groupBox3.Controls.Add(this.labelOutputFolderPath);
this.groupBox3.Controls.Add(this.textBox5); this.groupBox3.Controls.Add(this.textBox5);
this.groupBox3.Controls.Add(this.label10); this.groupBox3.Controls.Add(this.label10);
this.groupBox3.Location = new System.Drawing.Point(31, 370); this.groupBox3.Location = new System.Drawing.Point(74, 127);
this.groupBox3.Name = "groupBox3"; this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(482, 115); this.groupBox3.Size = new System.Drawing.Size(256, 229);
this.groupBox3.TabIndex = 12; this.groupBox3.TabIndex = 12;
this.groupBox3.TabStop = false; this.groupBox3.TabStop = false;
this.groupBox3.Text = "Output Setting"; this.groupBox3.Text = "Output Setting";
// //
// buttonSelectOutputFolder // buttonSelectOutputFolder
// //
this.buttonSelectOutputFolder.Location = new System.Drawing.Point(20, 36); this.buttonSelectOutputFolder.Location = new System.Drawing.Point(63, 58);
this.buttonSelectOutputFolder.Name = "buttonSelectOutputFolder"; this.buttonSelectOutputFolder.Name = "buttonSelectOutputFolder";
this.buttonSelectOutputFolder.Size = new System.Drawing.Size(140, 23); this.buttonSelectOutputFolder.Size = new System.Drawing.Size(140, 23);
this.buttonSelectOutputFolder.TabIndex = 17; this.buttonSelectOutputFolder.TabIndex = 17;
@@ -228,23 +246,24 @@
// labelOutputFolderPath // labelOutputFolderPath
// //
this.labelOutputFolderPath.AutoSize = true; this.labelOutputFolderPath.AutoSize = true;
this.labelOutputFolderPath.Location = new System.Drawing.Point(166, 41); this.labelOutputFolderPath.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelOutputFolderPath.Location = new System.Drawing.Point(78, 89);
this.labelOutputFolderPath.Name = "labelOutputFolderPath"; this.labelOutputFolderPath.Name = "labelOutputFolderPath";
this.labelOutputFolderPath.Size = new System.Drawing.Size(93, 13); this.labelOutputFolderPath.Size = new System.Drawing.Size(111, 13);
this.labelOutputFolderPath.TabIndex = 16; this.labelOutputFolderPath.TabIndex = 16;
this.labelOutputFolderPath.Text = "No folder selected"; this.labelOutputFolderPath.Text = "No folder selected";
// //
// textBox5 // textBox5
// //
this.textBox5.Location = new System.Drawing.Point(149, 80); this.textBox5.Location = new System.Drawing.Point(159, 29);
this.textBox5.Name = "textBox5"; this.textBox5.Name = "textBox5";
this.textBox5.Size = new System.Drawing.Size(247, 20); this.textBox5.Size = new System.Drawing.Size(83, 20);
this.textBox5.TabIndex = 16; this.textBox5.TabIndex = 16;
// //
// label10 // label10
// //
this.label10.AutoSize = true; this.label10.AutoSize = true;
this.label10.Location = new System.Drawing.Point(17, 83); this.label10.Location = new System.Drawing.Point(19, 32);
this.label10.Name = "label10"; this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(126, 13); this.label10.Size = new System.Drawing.Size(126, 13);
this.label10.TabIndex = 15; this.label10.TabIndex = 15;
@@ -268,17 +287,17 @@
// //
// button6 // button6
// //
this.button6.Location = new System.Drawing.Point(23, 269); this.button6.Location = new System.Drawing.Point(53, 149);
this.button6.Name = "button6"; this.button6.Name = "button6";
this.button6.Size = new System.Drawing.Size(140, 23); this.button6.Size = new System.Drawing.Size(140, 23);
this.button6.TabIndex = 18; this.button6.TabIndex = 18;
this.button6.Text = "Select Main Image Folder"; this.button6.Text = "Main Image Folder";
this.button6.UseVisualStyleBackColor = true; this.button6.UseVisualStyleBackColor = true;
// //
// label6 // label6
// //
this.label6.AutoSize = true; this.label6.AutoSize = true;
this.label6.Location = new System.Drawing.Point(169, 274); this.label6.Location = new System.Drawing.Point(78, 181);
this.label6.Name = "label6"; this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(93, 13); this.label6.Size = new System.Drawing.Size(93, 13);
this.label6.TabIndex = 19; this.label6.TabIndex = 19;
@@ -287,125 +306,116 @@
// label7 // label7
// //
this.label7.AutoSize = true; this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(20, 211); this.label7.Location = new System.Drawing.Point(20, 117);
this.label7.Name = "label7"; this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(124, 13); this.label7.Size = new System.Drawing.Size(127, 13);
this.label7.TabIndex = 20; this.label7.TabIndex = 20;
this.label7.Text = "Polling Rate (in seconds)"; this.label7.Text = "Polling Rate (in seconds):";
// //
// textBox7 // polling_rate_textbox
// //
this.textBox7.Location = new System.Drawing.Point(150, 208); this.polling_rate_textbox.Location = new System.Drawing.Point(176, 114);
this.textBox7.Name = "textBox7"; this.polling_rate_textbox.Name = "polling_rate_textbox";
this.textBox7.Size = new System.Drawing.Size(63, 20); this.polling_rate_textbox.Size = new System.Drawing.Size(49, 20);
this.textBox7.TabIndex = 21; this.polling_rate_textbox.TabIndex = 21;
// //
// groupBox2 // groupBox2
// //
this.groupBox2.Controls.Add(this.web_server_settings_groupbox); this.groupBox2.Controls.Add(this.profile_loaded_data);
this.groupBox2.Controls.Add(this.label13); this.groupBox2.Controls.Add(this.loaded_profile_label);
this.groupBox2.Controls.Add(this.comboBoxScrollSpeed); this.groupBox2.Controls.Add(this.tab_controls);
this.groupBox2.Controls.Add(this.textBoxPauseTime);
this.groupBox2.Controls.Add(this.separatingcharacterformatbox);
this.groupBox2.Controls.Add(this.textBox6); this.groupBox2.Controls.Add(this.textBox6);
this.groupBox2.Controls.Add(this.label11); this.groupBox2.Controls.Add(this.label11);
this.groupBox2.Controls.Add(this.textBox9);
this.groupBox2.Controls.Add(this.label9);
this.groupBox2.Controls.Add(this.label8);
this.groupBox2.Controls.Add(this.textBox7);
this.groupBox2.Controls.Add(this.label7);
this.groupBox2.Controls.Add(this.label6);
this.groupBox2.Controls.Add(this.button6);
this.groupBox2.Controls.Add(this.groupBox3);
this.groupBox2.Controls.Add(this.button4); this.groupBox2.Controls.Add(this.button4);
this.groupBox2.Controls.Add(this.button3); this.groupBox2.Controls.Add(this.button3);
this.groupBox2.Controls.Add(this.textBox4);
this.groupBox2.Controls.Add(this.label5);
this.groupBox2.Controls.Add(this.textBox3);
this.groupBox2.Controls.Add(this.label4);
this.groupBox2.Controls.Add(this.textBox2);
this.groupBox2.Controls.Add(this.label3);
this.groupBox2.Controls.Add(this.label2); this.groupBox2.Controls.Add(this.label2);
this.groupBox2.Controls.Add(this.comboBox1); this.groupBox2.Controls.Add(this.comboBox1);
this.groupBox2.Location = new System.Drawing.Point(12, 100); this.groupBox2.Location = new System.Drawing.Point(12, 100);
this.groupBox2.Name = "groupBox2"; this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(519, 527); this.groupBox2.Size = new System.Drawing.Size(519, 578);
this.groupBox2.TabIndex = 3; this.groupBox2.TabIndex = 3;
this.groupBox2.TabStop = false; this.groupBox2.TabStop = false;
this.groupBox2.Text = "Profiles"; this.groupBox2.Text = "Profiles";
// //
// label13 // toast_box_group_box
// //
this.label13.AutoSize = true; this.toast_box_group_box.Controls.Add(this.toast_check_box_enable);
this.label13.Location = new System.Drawing.Point(20, 240); this.toast_box_group_box.Controls.Add(this.toast_label);
this.label13.Name = "label13"; this.toast_box_group_box.Location = new System.Drawing.Point(20, 22);
this.label13.Size = new System.Drawing.Size(142, 13); this.toast_box_group_box.Name = "toast_box_group_box";
this.label13.TabIndex = 32; this.toast_box_group_box.Size = new System.Drawing.Size(248, 42);
this.label13.Text = "Separating Character Format"; this.toast_box_group_box.TabIndex = 4;
this.toast_box_group_box.TabStop = false;
this.toast_box_group_box.Text = "Windows Toast";
// //
// comboBoxScrollSpeed // toast_check_box_enable
// //
this.comboBoxScrollSpeed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.toast_check_box_enable.AutoSize = true;
this.comboBoxScrollSpeed.FormattingEnabled = true; this.toast_check_box_enable.Location = new System.Drawing.Point(130, 17);
this.comboBoxScrollSpeed.Items.AddRange(new object[] { this.toast_check_box_enable.Name = "toast_check_box_enable";
"Very Slow", this.toast_check_box_enable.Size = new System.Drawing.Size(59, 17);
"Slow", this.toast_check_box_enable.TabIndex = 1;
"Medium", this.toast_check_box_enable.Text = "Enable";
"Fast", this.toast_check_box_enable.UseVisualStyleBackColor = true;
"Very Fast"});
this.comboBoxScrollSpeed.Location = new System.Drawing.Point(382, 207);
this.comboBoxScrollSpeed.Name = "comboBoxScrollSpeed";
this.comboBoxScrollSpeed.Size = new System.Drawing.Size(97, 21);
this.comboBoxScrollSpeed.TabIndex = 29;
// //
// textBoxPauseTime // toast_label
// //
this.textBoxPauseTime.Location = new System.Drawing.Point(382, 237); this.toast_label.AutoSize = true;
this.textBoxPauseTime.Name = "textBoxPauseTime"; this.toast_label.Location = new System.Drawing.Point(40, 20);
this.textBoxPauseTime.Size = new System.Drawing.Size(97, 20); this.toast_label.Name = "toast_label";
this.textBoxPauseTime.TabIndex = 30; this.toast_label.Size = new System.Drawing.Size(73, 13);
this.toast_label.TabIndex = 0;
this.toast_label.Text = "Toast Control:";
// //
// separatingcharacterformatbox // web_server_settings_groupbox
// //
this.separatingcharacterformatbox.Location = new System.Drawing.Point(164, 237); this.web_server_settings_groupbox.Controls.Add(this.clock_visibility_checkBox);
this.separatingcharacterformatbox.Name = "separatingcharacterformatbox"; this.web_server_settings_groupbox.Controls.Add(this.clock_label);
this.separatingcharacterformatbox.Size = new System.Drawing.Size(49, 20); this.web_server_settings_groupbox.Controls.Add(this.web_server_port_textbox);
this.separatingcharacterformatbox.TabIndex = 31; this.web_server_settings_groupbox.Controls.Add(this.web_server_port_label);
this.web_server_settings_groupbox.Controls.Add(this.web_server_label);
this.web_server_settings_groupbox.Controls.Add(this.web_server_checkbox);
this.web_server_settings_groupbox.Location = new System.Drawing.Point(80, 26);
this.web_server_settings_groupbox.Name = "web_server_settings_groupbox";
this.web_server_settings_groupbox.Size = new System.Drawing.Size(236, 95);
this.web_server_settings_groupbox.TabIndex = 35;
this.web_server_settings_groupbox.TabStop = false;
this.web_server_settings_groupbox.Text = "Web Server Settings";
// //
// textBox9 // clock_visibility_checkBox
// //
this.textBox9.Location = new System.Drawing.Point(382, 237); this.clock_visibility_checkBox.AutoSize = true;
this.textBox9.Name = "textBox9"; this.clock_visibility_checkBox.Location = new System.Drawing.Point(156, 67);
this.textBox9.Size = new System.Drawing.Size(97, 20); this.clock_visibility_checkBox.Name = "clock_visibility_checkBox";
this.textBox9.TabIndex = 25; this.clock_visibility_checkBox.Size = new System.Drawing.Size(65, 17);
this.clock_visibility_checkBox.TabIndex = 38;
this.clock_visibility_checkBox.Text = "Enabled";
this.clock_visibility_checkBox.UseVisualStyleBackColor = true;
// //
// label9 // clock_label
// //
this.label9.AutoSize = true; this.clock_label.AutoSize = true;
this.label9.Location = new System.Drawing.Point(239, 240); this.clock_label.Location = new System.Drawing.Point(44, 68);
this.label9.Name = "label9"; this.clock_label.Name = "clock_label";
this.label9.Size = new System.Drawing.Size(119, 13); this.clock_label.Size = new System.Drawing.Size(76, 13);
this.label9.TabIndex = 24; this.clock_label.TabIndex = 37;
this.label9.Text = "Pause time (in seconds)"; this.clock_label.Text = "Clock Visibility:";
// //
// label8 // web_server_port_textbox
// //
this.label8.AutoSize = true; this.web_server_port_textbox.Location = new System.Drawing.Point(139, 42);
this.label8.Location = new System.Drawing.Point(239, 211); this.web_server_port_textbox.Name = "web_server_port_textbox";
this.label8.Name = "label8"; this.web_server_port_textbox.Size = new System.Drawing.Size(77, 20);
this.label8.Size = new System.Drawing.Size(127, 13); this.web_server_port_textbox.TabIndex = 36;
this.label8.TabIndex = 22;
this.label8.Text = "Scroll Speed (in Main UI)";
this.label8.Click += new System.EventHandler(this.label8_Click);
// //
// label12 // web_server_port_label
// //
this.label12.AutoSize = true; this.web_server_port_label.AutoSize = true;
this.label12.Location = new System.Drawing.Point(20, 240); this.web_server_port_label.Location = new System.Drawing.Point(45, 46);
this.label12.Name = "label12"; this.web_server_port_label.Name = "web_server_port_label";
this.label12.Size = new System.Drawing.Size(138, 13); this.web_server_port_label.Size = new System.Drawing.Size(29, 13);
this.label12.TabIndex = 27; this.web_server_port_label.TabIndex = 35;
this.label12.Text = "Separating character format"; this.web_server_port_label.Text = "Port:";
// //
// web_server_label // web_server_label
// //
@@ -419,47 +429,161 @@
// web_server_checkbox // web_server_checkbox
// //
this.web_server_checkbox.AutoSize = true; this.web_server_checkbox.AutoSize = true;
this.web_server_checkbox.Location = new System.Drawing.Point(111, 23); this.web_server_checkbox.Location = new System.Drawing.Point(154, 23);
this.web_server_checkbox.Name = "web_server_checkbox"; this.web_server_checkbox.Name = "web_server_checkbox";
this.web_server_checkbox.Size = new System.Drawing.Size(65, 17); this.web_server_checkbox.Size = new System.Drawing.Size(65, 17);
this.web_server_checkbox.TabIndex = 34; this.web_server_checkbox.TabIndex = 34;
this.web_server_checkbox.Text = "Enabled"; this.web_server_checkbox.Text = "Enabled";
this.web_server_checkbox.UseVisualStyleBackColor = true; this.web_server_checkbox.UseVisualStyleBackColor = true;
// //
// web_server_settings_groupbox // label12
// //
this.web_server_settings_groupbox.Controls.Add(this.web_server_port_textbox); this.label12.AutoSize = true;
this.web_server_settings_groupbox.Controls.Add(this.web_server_port_label); this.label12.Location = new System.Drawing.Point(20, 240);
this.web_server_settings_groupbox.Controls.Add(this.web_server_label); this.label12.Name = "label12";
this.web_server_settings_groupbox.Controls.Add(this.web_server_checkbox); this.label12.Size = new System.Drawing.Size(138, 13);
this.web_server_settings_groupbox.Location = new System.Drawing.Point(31, 298); this.label12.TabIndex = 27;
this.web_server_settings_groupbox.Name = "web_server_settings_groupbox"; this.label12.Text = "Separating character format";
this.web_server_settings_groupbox.Size = new System.Drawing.Size(396, 58);
this.web_server_settings_groupbox.TabIndex = 35;
this.web_server_settings_groupbox.TabStop = false;
this.web_server_settings_groupbox.Text = "Web Server Settings";
// //
// web_server_port_label // tab_controls
// //
this.web_server_port_label.AutoSize = true; this.tab_controls.Controls.Add(this.settings_tab_page);
this.web_server_port_label.Location = new System.Drawing.Point(211, 23); this.tab_controls.Controls.Add(this.output_settings_tab_page);
this.web_server_port_label.Name = "web_server_port_label"; this.tab_controls.Controls.Add(this.misc_tab_page);
this.web_server_port_label.Size = new System.Drawing.Size(29, 13); this.tab_controls.Location = new System.Drawing.Point(42, 133);
this.web_server_port_label.TabIndex = 35; this.tab_controls.Name = "tab_controls";
this.web_server_port_label.Text = "Port:"; this.tab_controls.SelectedIndex = 0;
this.tab_controls.Size = new System.Drawing.Size(423, 398);
this.tab_controls.TabIndex = 22;
// //
// web_server_port_textbox // settings_tab_page
// //
this.web_server_port_textbox.Location = new System.Drawing.Point(246, 19); this.settings_tab_page.Controls.Add(this.connection_settings_box);
this.web_server_port_textbox.Name = "web_server_port_textbox"; this.settings_tab_page.Location = new System.Drawing.Point(4, 22);
this.web_server_port_textbox.Size = new System.Drawing.Size(77, 20); this.settings_tab_page.Name = "settings_tab_page";
this.web_server_port_textbox.TabIndex = 36; this.settings_tab_page.Padding = new System.Windows.Forms.Padding(3);
this.settings_tab_page.Size = new System.Drawing.Size(415, 372);
this.settings_tab_page.TabIndex = 0;
this.settings_tab_page.Text = "Profile Settings";
this.settings_tab_page.UseVisualStyleBackColor = true;
//
// output_settings_tab_page
//
this.output_settings_tab_page.Controls.Add(this.web_server_settings_groupbox);
this.output_settings_tab_page.Controls.Add(this.groupBox3);
this.output_settings_tab_page.Location = new System.Drawing.Point(4, 22);
this.output_settings_tab_page.Name = "output_settings_tab_page";
this.output_settings_tab_page.Padding = new System.Windows.Forms.Padding(3);
this.output_settings_tab_page.Size = new System.Drawing.Size(415, 372);
this.output_settings_tab_page.TabIndex = 1;
this.output_settings_tab_page.Text = "Output Settings";
this.output_settings_tab_page.UseVisualStyleBackColor = true;
//
// connection_settings_box
//
this.connection_settings_box.Controls.Add(this.textBox2);
this.connection_settings_box.Controls.Add(this.label3);
this.connection_settings_box.Controls.Add(this.label4);
this.connection_settings_box.Controls.Add(this.label6);
this.connection_settings_box.Controls.Add(this.polling_rate_textbox);
this.connection_settings_box.Controls.Add(this.button6);
this.connection_settings_box.Controls.Add(this.textBox3);
this.connection_settings_box.Controls.Add(this.label7);
this.connection_settings_box.Controls.Add(this.label5);
this.connection_settings_box.Controls.Add(this.textBox4);
this.connection_settings_box.Location = new System.Drawing.Point(74, 82);
this.connection_settings_box.Name = "connection_settings_box";
this.connection_settings_box.Size = new System.Drawing.Size(248, 215);
this.connection_settings_box.TabIndex = 13;
this.connection_settings_box.TabStop = false;
this.connection_settings_box.Text = "Connection Settings";
//
// notice_one
//
this.notice_one.AutoSize = true;
this.notice_one.Location = new System.Drawing.Point(53, 117);
this.notice_one.Name = "notice_one";
this.notice_one.Size = new System.Drawing.Size(182, 65);
this.notice_one.TabIndex = 18;
this.notice_one.Text = "It is asking for an image file name.\r\nThis is what you would use\r\nto put a name o" +
"f what\r\nthe saved image will be outputted as.\r\nFor example, it might be img.png";
//
// misc_tab_page
//
this.misc_tab_page.Controls.Add(this.groupBox4);
this.misc_tab_page.Controls.Add(this.toast_box_group_box);
this.misc_tab_page.Location = new System.Drawing.Point(4, 22);
this.misc_tab_page.Name = "misc_tab_page";
this.misc_tab_page.Padding = new System.Windows.Forms.Padding(3);
this.misc_tab_page.Size = new System.Drawing.Size(415, 372);
this.misc_tab_page.TabIndex = 2;
this.misc_tab_page.Text = "Misc Settings";
this.misc_tab_page.UseVisualStyleBackColor = true;
//
// groupBox4
//
this.groupBox4.Controls.Add(this.notice_two);
this.groupBox4.Controls.Add(this.smtc_check_box);
this.groupBox4.Controls.Add(this.smtc_enable_label);
this.groupBox4.Location = new System.Drawing.Point(20, 92);
this.groupBox4.Name = "groupBox4";
this.groupBox4.Size = new System.Drawing.Size(370, 155);
this.groupBox4.TabIndex = 4;
this.groupBox4.TabStop = false;
this.groupBox4.Text = "SMTC Control";
//
// smtc_enable_label
//
this.smtc_enable_label.AutoSize = true;
this.smtc_enable_label.Location = new System.Drawing.Point(115, 27);
this.smtc_enable_label.Name = "smtc_enable_label";
this.smtc_enable_label.Size = new System.Drawing.Size(73, 13);
this.smtc_enable_label.TabIndex = 0;
this.smtc_enable_label.Text = "SMTC Enable";
//
// smtc_check_box
//
this.smtc_check_box.AutoSize = true;
this.smtc_check_box.Location = new System.Drawing.Point(194, 27);
this.smtc_check_box.Name = "smtc_check_box";
this.smtc_check_box.Size = new System.Drawing.Size(59, 17);
this.smtc_check_box.TabIndex = 2;
this.smtc_check_box.Text = "Enable";
this.smtc_check_box.UseVisualStyleBackColor = true;
//
// notice_two
//
this.notice_two.AutoSize = true;
this.notice_two.Location = new System.Drawing.Point(52, 62);
this.notice_two.Name = "notice_two";
this.notice_two.Size = new System.Drawing.Size(274, 78);
this.notice_two.TabIndex = 3;
this.notice_two.Text = resources.GetString("notice_two.Text");
//
// loaded_profile_label
//
this.loaded_profile_label.AutoSize = true;
this.loaded_profile_label.Location = new System.Drawing.Point(134, 103);
this.loaded_profile_label.Name = "loaded_profile_label";
this.loaded_profile_label.Size = new System.Drawing.Size(77, 13);
this.loaded_profile_label.TabIndex = 23;
this.loaded_profile_label.Text = "Loaded profile:";
//
// profile_loaded_data
//
this.profile_loaded_data.AutoSize = true;
this.profile_loaded_data.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.profile_loaded_data.Location = new System.Drawing.Point(218, 102);
this.profile_loaded_data.Name = "profile_loaded_data";
this.profile_loaded_data.Size = new System.Drawing.Size(104, 13);
this.profile_loaded_data.TabIndex = 24;
this.profile_loaded_data.Text = "No profile loaded";
// //
// Form1 // Form1
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(572, 695); this.ClientSize = new System.Drawing.Size(542, 716);
this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox2);
this.Controls.Add(this.button2); this.Controls.Add(this.button2);
this.Controls.Add(this.ok_button_master); this.Controls.Add(this.ok_button_master);
@@ -473,8 +597,18 @@
this.groupBox3.PerformLayout(); this.groupBox3.PerformLayout();
this.groupBox2.ResumeLayout(false); this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout(); this.groupBox2.PerformLayout();
this.toast_box_group_box.ResumeLayout(false);
this.toast_box_group_box.PerformLayout();
this.web_server_settings_groupbox.ResumeLayout(false); this.web_server_settings_groupbox.ResumeLayout(false);
this.web_server_settings_groupbox.PerformLayout(); this.web_server_settings_groupbox.PerformLayout();
this.tab_controls.ResumeLayout(false);
this.settings_tab_page.ResumeLayout(false);
this.output_settings_tab_page.ResumeLayout(false);
this.connection_settings_box.ResumeLayout(false);
this.connection_settings_box.PerformLayout();
this.misc_tab_page.ResumeLayout(false);
this.groupBox4.ResumeLayout(false);
this.groupBox4.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@@ -506,22 +640,32 @@
private System.Windows.Forms.Button button6; private System.Windows.Forms.Button button6;
private System.Windows.Forms.Label label6; private System.Windows.Forms.Label label6;
private System.Windows.Forms.Label label7; private System.Windows.Forms.Label label7;
private System.Windows.Forms.TextBox textBox7; private System.Windows.Forms.TextBox polling_rate_textbox;
private System.Windows.Forms.GroupBox groupBox2; private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.TextBox textBox9;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.ComboBox comboBox2; private System.Windows.Forms.ComboBox comboBox2;
private System.Windows.Forms.TextBox textBox8; private System.Windows.Forms.TextBox textBox8;
private System.Windows.Forms.Label label12; private System.Windows.Forms.Label label12;
private System.Windows.Forms.ComboBox comboBoxScrollSpeed;
private System.Windows.Forms.TextBox textBoxPauseTime;
private System.Windows.Forms.TextBox separatingcharacterformatbox;
private System.Windows.Forms.Label label13;
private System.Windows.Forms.GroupBox web_server_settings_groupbox; private System.Windows.Forms.GroupBox web_server_settings_groupbox;
private System.Windows.Forms.Label web_server_label; private System.Windows.Forms.Label web_server_label;
private System.Windows.Forms.CheckBox web_server_checkbox; private System.Windows.Forms.CheckBox web_server_checkbox;
private System.Windows.Forms.TextBox web_server_port_textbox; private System.Windows.Forms.TextBox web_server_port_textbox;
private System.Windows.Forms.Label web_server_port_label; private System.Windows.Forms.Label web_server_port_label;
private System.Windows.Forms.CheckBox clock_visibility_checkBox;
private System.Windows.Forms.Label clock_label;
private System.Windows.Forms.GroupBox toast_box_group_box;
private System.Windows.Forms.CheckBox toast_check_box_enable;
private System.Windows.Forms.Label toast_label;
private System.Windows.Forms.TabControl tab_controls;
private System.Windows.Forms.TabPage settings_tab_page;
private System.Windows.Forms.TabPage output_settings_tab_page;
private System.Windows.Forms.GroupBox connection_settings_box;
private System.Windows.Forms.Label notice_one;
private System.Windows.Forms.TabPage misc_tab_page;
private System.Windows.Forms.GroupBox groupBox4;
private System.Windows.Forms.Label notice_two;
private System.Windows.Forms.CheckBox smtc_check_box;
private System.Windows.Forms.Label smtc_enable_label;
private System.Windows.Forms.Label profile_loaded_data;
private System.Windows.Forms.Label loaded_profile_label;
} }
} }
+26 -19
View File
@@ -20,15 +20,6 @@ namespace RadioDJViewer
{ {
InitializeComponent(); InitializeComponent();
textBox4.UseSystemPasswordChar = true; // Obscure password field textBox4.UseSystemPasswordChar = true; // Obscure password field
comboBoxScrollSpeed.Items.Clear();
comboBoxScrollSpeed.Items.AddRange(new object[] {
"Very Slow",
"Slow",
"Medium",
"Fast",
"Very Fast"
});
comboBoxScrollSpeed.SelectedItem = "Medium";
this.buttonSelectOutputFolder.Click += ButtonSelectOutputFolder_Click; this.buttonSelectOutputFolder.Click += ButtonSelectOutputFolder_Click;
this.button6.Click += ButtonSelectMainImagesFolder_Click; this.button6.Click += ButtonSelectMainImagesFolder_Click;
this.button3.Click += button3_Click; this.button3.Click += button3_Click;
@@ -73,20 +64,25 @@ namespace RadioDJViewer
label6.Text = mainImagesFolderPath; label6.Text = mainImagesFolderPath;
textBox5.Text = profile.OutputImageName; textBox5.Text = profile.OutputImageName;
textBox1.Text = profile.UrlFormat; textBox1.Text = profile.UrlFormat;
profile_loaded_data.Text = profile.Name;
// Default polling rate to 3 if missing or zero // Default polling rate to 3 if missing or zero
textBox7.Text = (profile.PollingRateSeconds > 0 ? profile.PollingRateSeconds : 3).ToString(); polling_rate_textbox.Text = (profile.PollingRateSeconds > 0 ? profile.PollingRateSeconds : 3).ToString();
comboBoxScrollSpeed.SelectedItem = profile.MarqueeScrollSpeed ?? "Medium";
textBoxPauseTime.Text = profile.MarqueePauseTime > 0 ? profile.MarqueePauseTime.ToString() : "6";
separatingcharacterformatbox.Text = profile.MarqueeSeparator ?? " | ";
// Web server settings // Web server settings
try try
{ {
web_server_checkbox.Checked = profile.WebServerEnabled; web_server_checkbox.Checked = profile.WebServerEnabled;
web_server_port_textbox.Text = (profile.WebServerPort > 0 ? profile.WebServerPort : 8080).ToString(); web_server_port_textbox.Text = (profile.WebServerPort > 0 ? profile.WebServerPort : 8080).ToString();
// Clock visibility setting
clock_visibility_checkBox.Checked = profile.ClockVisibilityEnabled;
toast_check_box_enable.Checked = profile.ToastNotificationsEnabled;
smtc_check_box.Checked = profile.SmtcEnabled;
} }
catch { } catch { }
return;
} }
} }
profile_loaded_data.Text = "No profile loaded";
} }
private void ButtonSelectOutputFolder_Click(object sender, EventArgs e) private void ButtonSelectOutputFolder_Click(object sender, EventArgs e)
@@ -122,7 +118,7 @@ namespace RadioDJViewer
return; return;
} }
int pollingRate = 3; int pollingRate = 3;
int.TryParse(textBox7.Text, out pollingRate); int.TryParse(polling_rate_textbox.Text, out pollingRate);
var profile = new Profile var profile = new Profile
{ {
Name = textBox6.Text, Name = textBox6.Text,
@@ -134,18 +130,24 @@ namespace RadioDJViewer
OutputImageName = textBox5.Text, OutputImageName = textBox5.Text,
UrlFormat = textBox1.Text, UrlFormat = textBox1.Text,
PollingRateSeconds = pollingRate, PollingRateSeconds = pollingRate,
MarqueeScrollSpeed = comboBoxScrollSpeed.SelectedItem?.ToString() ?? "Medium", MarqueeScrollSpeed = "Medium",
MarqueePauseTime = int.TryParse(textBoxPauseTime.Text, out int pt) ? pt : 6, MarqueePauseTime = 6,
MarqueeSeparator = separatingcharacterformatbox.Text, MarqueeSeparator = " | ",
// Web server settings // Web server settings
WebServerEnabled = web_server_checkbox.Checked, WebServerEnabled = web_server_checkbox.Checked,
WebServerPort = int.TryParse(web_server_port_textbox.Text, out int wp) ? wp : 8080 WebServerPort = int.TryParse(web_server_port_textbox.Text, out int wp) ? wp : 8080,
// Clock visibility setting
ClockVisibilityEnabled = clock_visibility_checkBox.Checked,
ToastNotificationsEnabled = toast_check_box_enable.Checked,
SmtcEnabled = smtc_check_box.Checked
}; };
ProfileStorage.SaveProfile(profile); ProfileStorage.SaveProfile(profile);
// Refresh profile list // Refresh profile list
comboBox1.Items.Clear(); comboBox1.Items.Clear();
var names = ProfileStorage.GetProfileNames(); var names = ProfileStorage.GetProfileNames();
comboBox1.Items.AddRange(names.ToArray()); comboBox1.Items.AddRange(names.ToArray());
comboBox1.SelectedItem = profile.Name;
profile_loaded_data.Text = profile.Name;
MessageBox.Show("Profile saved successfully.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); MessageBox.Show("Profile saved successfully.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
} }
@@ -154,10 +156,15 @@ namespace RadioDJViewer
// Remove Profile (Remove Profile button) // Remove Profile (Remove Profile button)
if (comboBox1.SelectedItem != null) if (comboBox1.SelectedItem != null)
{ {
ProfileStorage.DeleteProfile(comboBox1.SelectedItem.ToString()); string removed = comboBox1.SelectedItem.ToString();
ProfileStorage.DeleteProfile(removed);
comboBox1.Items.Clear(); comboBox1.Items.Clear();
var names = ProfileStorage.GetProfileNames(); var names = ProfileStorage.GetProfileNames();
comboBox1.Items.AddRange(names.ToArray()); comboBox1.Items.AddRange(names.ToArray());
if (comboBox1.Items.Count > 0)
comboBox1.SelectedIndex = 0;
else
profile_loaded_data.Text = "No profile loaded";
} }
} }
@@ -117,6 +117,14 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="notice_two.Text" xml:space="preserve">
<value>With this option, it will enable the output
to Simple Media Transport Control Protocol (AKA SMTC).
You will not be able to control Radio DJ,
but you will get push notifications
or it will be pushed out to the SMTC protocol
with the ability to use it with other applications.</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
+157 -114
View File
@@ -1,128 +1,171 @@
/////////////// (function () {
// PARAMETERS // var IMAGE_FILENAME = "Album-Art.png";
/////////////// var DEFAULT_REFRESH_RATE_MS = 1000;
var DEFAULT_TIME_REFRESH_RATE_MS = 100;
var currentArtist = getTextContent(".song-artist");
var currentTitle = getTextContent(".song-title");
var currentTime = getTextContent(".song-time");
var refreshInterval = null;
var timeRefreshInterval = null;
var latestTimeRequestId = 0;
var refreshRateMs = getRefreshRateMs();
var timeRefreshRateMs = DEFAULT_TIME_REFRESH_RATE_MS;
const queryString = window.location.search; function getTextContent(selector) {
const urlParams = new URLSearchParams(queryString); var element = document.querySelector(selector);
const refreshRate = parseInt(urlParams.get("refreshrate")) || 6; // Default 6 seconds if (!element || typeof element.textContent !== "string") {
return "";
// Image filename - update this if the backend changes the image path
const IMAGE_FILENAME = "Album-Art.png";
//////////////////
// GLOBAL STATE //
//////////////////
let currentArtist = "";
let currentTitle = "";
let refreshInterval = null;
//////////////////
// REFRESH LOGIC //
//////////////////
/**
* Fetches the artist and title from text files
*/
async function fetchSongData() {
try {
const artistResponse = await fetch("artist.txt");
const titleResponse = await fetch("title.txt");
if (!artistResponse.ok || !titleResponse.ok) {
console.error("Failed to fetch song data");
return null;
} }
return trimText(element.textContent);
const artist = (await artistResponse.text()).trim();
const title = (await titleResponse.text()).trim();
return { artist, title };
} catch (error) {
console.error("Error fetching song data:", error);
return null;
}
}
/**
* Updates the DOM elements if the song data has changed
*/
function updateSongDisplay(artist, title) {
const titleElement = document.querySelector(".song-title");
const artistElement = document.querySelector(".song-artist");
let trackChanged = false;
// Only update if data has actually changed
if (title !== currentTitle) {
currentTitle = title;
titleElement.classList.add("updating");
titleElement.textContent = title || "Unknown Title";
trackChanged = true;
setTimeout(() => {
titleElement.classList.remove("updating");
}, 400);
} }
if (artist !== currentArtist) { function trimText(value) {
currentArtist = artist; return String(value || "").replace(/^\s+|\s+$/g, "");
artistElement.classList.add("updating");
artistElement.textContent = artist || "Unknown Artist";
trackChanged = true;
setTimeout(() => {
artistElement.classList.remove("updating");
}, 400);
} }
// Return whether track changed (to trigger image update) function getRefreshRateMs() {
return trackChanged; var match = /(?:\?|&)refreshrate=([^&]+)/i.exec(window.location.search || "");
} var seconds = match ? parseFloat(decodeURIComponent(match[1])) : 1;
if (!isFinite(seconds) || seconds <= 0) {
seconds = 1;
}
var interval = Math.round(seconds * 1000);
if (interval < 250) {
interval = 250;
}
return interval;
}
/** function fetchText(path, fallbackValue, callback) {
* Updates both the album art and background image with cache-busting timestamp var xhr = new XMLHttpRequest();
* Only called when track actually changes xhr.open("GET", path + "?v=" + new Date().getTime(), true);
*/ xhr.setRequestHeader("Cache-Control", "no-cache");
function updateAlbumArt() { xhr.onreadystatechange = function () {
const albumArt = document.querySelector(".album-art"); if (xhr.readyState !== 4) {
const backgroundImage = document.querySelector(".background-image"); return;
const timestamp = new Date().getTime(); }
const imageUrl = `${IMAGE_FILENAME}?v=${timestamp}`; if (xhr.status >= 200 && xhr.status < 300) {
callback(trimText(xhr.responseText));
albumArt.src = imageUrl; return;
backgroundImage.src = imageUrl; }
} callback(fallbackValue);
};
/** xhr.onerror = function () {
* Main refresh function - fetches data and updates if changed callback(fallbackValue);
*/ };
async function refresh() { try {
const data = await fetchSongData(); xhr.send(null);
if (data) { } catch (e) {
const trackChanged = updateSongDisplay(data.artist, data.title); callback(fallbackValue);
// Only update images when track actually changes
if (trackChanged) {
updateAlbumArt();
} }
} }
}
/////////////// function updateSongDisplay(data) {
// INITIALIZE // var titleElement = document.querySelector(".song-title");
/////////////// var artistElement = document.querySelector(".song-artist");
var trackChanged = false;
var nextTitle;
var nextArtist;
function init() { if (!titleElement || !artistElement || !data) {
// Load initial data immediately return false;
refresh(); }
// Set up refresh interval based on URL parameter or default nextTitle = trimText(data.title || "");
refreshInterval = setInterval(refresh, refreshRate * 1000); nextArtist = trimText(data.artist || "");
console.log(`Radio DJ widget initialized - refreshing every ${refreshRate}s`); if (nextTitle !== currentTitle) {
} currentTitle = nextTitle;
titleElement.classList.add("updating");
titleElement.textContent = currentTitle || "Unknown Title";
trackChanged = true;
setTimeout(function () {
titleElement.classList.remove("updating");
}, 400);
}
// Start when DOM is ready if (nextArtist !== currentArtist) {
if (document.readyState === "loading") { currentArtist = nextArtist;
document.addEventListener("DOMContentLoaded", init); artistElement.classList.add("updating");
} else { artistElement.textContent = currentArtist || "Unknown Artist";
init(); trackChanged = true;
} setTimeout(function () {
artistElement.classList.remove("updating");
}, 400);
}
return trackChanged;
}
function updateTimeDisplay(nextTime) {
var timeElement = document.querySelector(".song-time");
var normalizedTime = trimText(nextTime || "No Data") || "No Data";
if (!timeElement) {
return;
}
if (normalizedTime !== currentTime) {
currentTime = normalizedTime;
timeElement.textContent = currentTime;
}
}
function updateAlbumArt() {
var albumArt = document.querySelector(".album-art");
var backgroundImage = document.querySelector(".background-image");
var imageUrl = IMAGE_FILENAME + "?v=" + new Date().getTime();
if (!albumArt || !backgroundImage) {
return;
}
albumArt.src = imageUrl;
backgroundImage.src = imageUrl;
}
function setClockVisibility(visible) {
var timeElement = document.querySelector(".song-time");
if (!timeElement) {
return;
}
timeElement.style.display = visible ? "" : "none";
}
function refreshMetadata() {
fetchText("artist.txt", currentArtist || "", function (artist) {
fetchText("title.txt", currentTitle || "", function (title) {
fetchText("clock-visibility", "true", function (clockVisible) {
var trackChanged = updateSongDisplay({
artist: artist,
title: title
});
setClockVisibility(String(clockVisible || "false").toLowerCase() === "true");
if (trackChanged) {
updateAlbumArt();
}
});
});
});
}
function refreshTime() {
var requestId = latestTimeRequestId + 1;
latestTimeRequestId = requestId;
fetchText("time.txt", currentTime || "No Data", function (nextTime) {
if (requestId !== latestTimeRequestId) {
return;
}
updateTimeDisplay(nextTime);
});
}
function init() {
refreshMetadata();
refreshTime();
refreshInterval = window.setInterval(refreshMetadata, refreshRateMs);
timeRefreshInterval = window.setInterval(refreshTime, timeRefreshRateMs);
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", init);
} else {
init();
}
})();
+34
View File
@@ -127,6 +127,21 @@ body {
opacity: 1; opacity: 1;
} }
/* Song time display (underneath artist) */
.song-time {
font-size: 14px;
font-weight: 400;
color: #cccccc;
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.9);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
letter-spacing: 0px;
line-height: 1.1;
opacity: 0.9;
margin-top: 4px;
}
/* Smooth fade animation for updates */ /* Smooth fade animation for updates */
@keyframes fadeIn { @keyframes fadeIn {
from { from {
@@ -141,3 +156,22 @@ body {
.song-artist.updating { .song-artist.updating {
animation: fadeIn 0.4s ease-in-out; animation: fadeIn 0.4s ease-in-out;
} }
/* Clock section - positioned at bottom of page */
.clock-section {
width: 100%;
margin-top: 20px;
padding: 20px;
display: flex;
justify-content: center;
align-items: center;
}
.digital-clock {
font-size: 48px;
font-weight: 300;
color: #ffffff;
text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.9);
font-family: 'Courier New', monospace;
letter-spacing: 2px;
}