Signed-off-by: mbrucedogs <mbrucedogs@gmail.com>

This commit is contained in:
mbrucedogs 2025-08-04 16:43:06 -05:00
parent f47fb454e8
commit da237479c3
12 changed files with 76 additions and 151 deletions

View File

@ -19,7 +19,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SongCrawler", "SongCrawler\
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Herse.Models", "Herse.Models\Herse.Models.csproj", "{F02EDA00-AA8F-47EF-AC7F-66DC315AA13D}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Herse.Models", "Herse.Models\Herse.Models.csproj", "{F02EDA00-AA8F-47EF-AC7F-66DC315AA13D}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BillboardPlaylistUpdater", "BillboardPlaylistUpdater\BillboardPlaylistUpdater.csproj", "{AE892DF7-C43E-422A-B82E-29B5E6E0341C}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SongListUpdater", "SongListUpdater\SongListUpdater.csproj", "{AE892DF7-C43E-422A-B82E-29B5E6E0341C}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SingsALot", "SingsALot\SingsALot.csproj", "{40954789-DA71-4C0B-8D03-184B19248982}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SingsALot", "SingsALot\SingsALot.csproj", "{40954789-DA71-4C0B-8D03-184B19248982}"
EndProject EndProject

View File

@ -51,13 +51,12 @@
// //
// songTitleLabel // songTitleLabel
// //
this.songTitleLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.songTitleLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.songTitleLabel.BackColor = System.Drawing.Color.Transparent; this.songTitleLabel.BackColor = System.Drawing.Color.Transparent;
this.songTitleLabel.Font = new System.Drawing.Font("Segoe UI", 48F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.songTitleLabel.Font = new System.Drawing.Font("Segoe UI", 48F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.songTitleLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(215)))), ((int)(((byte)(0))))); this.songTitleLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(215)))), ((int)(((byte)(0)))));
this.songTitleLabel.Location = new System.Drawing.Point(50, 450); this.songTitleLabel.Location = new System.Drawing.Point(50, 530);
this.songTitleLabel.Name = "songTitleLabel"; this.songTitleLabel.Name = "songTitleLabel";
this.songTitleLabel.Size = new System.Drawing.Size(1100, 200); this.songTitleLabel.Size = new System.Drawing.Size(1100, 200);
this.songTitleLabel.TabIndex = 3; this.songTitleLabel.TabIndex = 3;
@ -67,13 +66,12 @@
// //
// artistLabel // artistLabel
// //
this.artistLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.artistLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.artistLabel.BackColor = System.Drawing.Color.Transparent; this.artistLabel.BackColor = System.Drawing.Color.Transparent;
this.artistLabel.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.artistLabel.Font = new System.Drawing.Font("Segoe UI", 36F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.artistLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200))))); this.artistLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(200)))), ((int)(((byte)(200)))), ((int)(((byte)(200)))));
this.artistLabel.Location = new System.Drawing.Point(50, 350); this.artistLabel.Location = new System.Drawing.Point(50, 420);
this.artistLabel.Name = "artistLabel"; this.artistLabel.Name = "artistLabel";
this.artistLabel.Size = new System.Drawing.Size(1100, 80); this.artistLabel.Size = new System.Drawing.Size(1100, 80);
this.artistLabel.TabIndex = 2; this.artistLabel.TabIndex = 2;
@ -83,13 +81,12 @@
// //
// singerLabel // singerLabel
// //
this.singerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.singerLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.singerLabel.BackColor = System.Drawing.Color.Transparent; this.singerLabel.BackColor = System.Drawing.Color.Transparent;
this.singerLabel.Font = new System.Drawing.Font("Segoe UI", 42F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.singerLabel.Font = new System.Drawing.Font("Segoe UI", 42F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.singerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255))))); this.singerLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
this.singerLabel.Location = new System.Drawing.Point(50, 200); this.singerLabel.Location = new System.Drawing.Point(50, 270);
this.singerLabel.Name = "singerLabel"; this.singerLabel.Name = "singerLabel";
this.singerLabel.Size = new System.Drawing.Size(1100, 120); this.singerLabel.Size = new System.Drawing.Size(1100, 120);
this.singerLabel.TabIndex = 1; this.singerLabel.TabIndex = 1;
@ -99,13 +96,12 @@
// //
// upNextLabel // upNextLabel
// //
this.upNextLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) this.upNextLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.upNextLabel.BackColor = System.Drawing.Color.Transparent; this.upNextLabel.BackColor = System.Drawing.Color.Transparent;
this.upNextLabel.Font = new System.Drawing.Font("Segoe UI", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.upNextLabel.Font = new System.Drawing.Font("Segoe UI", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.upNextLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0))))); this.upNextLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(0)))));
this.upNextLabel.Location = new System.Drawing.Point(50, 100); this.upNextLabel.Location = new System.Drawing.Point(50, 170);
this.upNextLabel.Name = "upNextLabel"; this.upNextLabel.Name = "upNextLabel";
this.upNextLabel.Size = new System.Drawing.Size(1100, 60); this.upNextLabel.Size = new System.Drawing.Size(1100, 60);
this.upNextLabel.TabIndex = 0; this.upNextLabel.TabIndex = 0;

View File

@ -1,147 +1,85 @@
using Herse.Models; using Herse.Models;
using KaraokePlayer.Classes; using KaraokePlayer.Classes;
using System; using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing; using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace KaraokePlayer namespace KaraokePlayer
{ {
public partial class SongInfoForm : Form public partial class SongInfoForm : Form
{ {
private Timer fadeTimer;
private Timer pulseTimer;
private int fadeAlpha = 0;
private bool isFadingIn = true;
private int pulseAlpha = 255;
private bool pulseDirection = false;
public SongInfoForm() public SongInfoForm()
{ {
InitializeComponent(); InitializeComponent();
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.WindowState = FormWindowState.Normal; this.WindowState = FormWindowState.Maximized;
this.ShowInTaskbar = false; this.ShowInTaskbar = false;
this.TopMost = true; this.TopMost = true;
// Enable double buffering to prevent flickering // Calculate dynamic positioning after form is loaded
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true); this.Load += SongInfoForm_Load;
// Add paint event for gradient background
mainPanel.Paint += MainPanel_Paint;
// Setup fade timer
fadeTimer = new Timer();
fadeTimer.Interval = 20;
fadeTimer.Tick += FadeTimer_Tick;
// Setup pulse timer for "UP NEXT" label
pulseTimer = new Timer();
pulseTimer.Interval = 50;
pulseTimer.Tick += PulseTimer_Tick;
// Start fade in effect
StartFadeIn();
} }
private void StartFadeIn() private void SongInfoForm_Load(object sender, EventArgs e)
{ {
fadeAlpha = 0; CalculateDynamicPositions();
isFadingIn = true;
fadeTimer.Start();
pulseTimer.Start();
} }
private void PulseTimer_Tick(object sender, EventArgs e) private void CalculateDynamicPositions()
{ {
if (pulseDirection) // Get the actual screen dimensions
int screenHeight = this.ClientSize.Height;
int screenWidth = this.ClientSize.Width;
// Calculate font scaling factor based on screen size
// Base scaling on the smaller dimension to ensure everything fits
float baseScale = Math.Min(screenHeight / 800f, screenWidth / 1200f);
float fontScale = Math.Max(0.8f, Math.Min(2.0f, baseScale)); // Limit scale between 0.8x and 2.0x
// Calculate spacing between labels (increases with font size)
int labelSpacing = (int)(30 * fontScale);
// Update font sizes
upNextLabel.Font = new Font("Segoe UI", 24 * fontScale, FontStyle.Regular);
singerLabel.Font = new Font("Segoe UI", 42 * fontScale, FontStyle.Bold);
artistLabel.Font = new Font("Segoe UI", 36 * fontScale, FontStyle.Regular);
songTitleLabel.Font = new Font("Segoe UI", 48 * fontScale, FontStyle.Bold);
// Calculate proper label heights using font metrics
using (Graphics g = this.CreateGraphics())
{ {
pulseAlpha += 5; // Get font metrics for each label
if (pulseAlpha >= 255) SizeF upNextSize = g.MeasureString(upNextLabel.Text, upNextLabel.Font);
{ SizeF singerSize = g.MeasureString(singerLabel.Text, singerLabel.Font);
pulseAlpha = 255; SizeF artistSize = g.MeasureString(artistLabel.Text, artistLabel.Font);
pulseDirection = false; SizeF songTitleSize = g.MeasureString(songTitleLabel.Text, songTitleLabel.Font);
}
} // Add extra padding for descenders (about 20% of font size)
else int descenderPadding = (int)(fontScale * 8);
{ int totalLabelHeight = (int)(upNextSize.Height + descenderPadding) +
pulseAlpha -= 5; (int)(singerSize.Height + descenderPadding) +
if (pulseAlpha <= 150) (int)(artistSize.Height + descenderPadding) +
{ (int)(songTitleSize.Height + descenderPadding);
pulseAlpha = 150; totalLabelHeight += (labelSpacing * 3); // Add spacing between labels
pulseDirection = true;
} // Calculate available space and top padding
int availableSpace = screenHeight - totalLabelHeight;
int topPadding = availableSpace / 2;
// Resize labels to fit the actual text height plus descender padding
upNextLabel.Size = new Size(upNextLabel.Width, (int)upNextSize.Height + descenderPadding);
singerLabel.Size = new Size(singerLabel.Width, (int)singerSize.Height + descenderPadding);
artistLabel.Size = new Size(artistLabel.Width, (int)artistSize.Height + descenderPadding);
songTitleLabel.Size = new Size(songTitleLabel.Width, (int)songTitleSize.Height + descenderPadding);
// Position labels dynamically with spacing
upNextLabel.Location = new Point(upNextLabel.Location.X, topPadding);
singerLabel.Location = new Point(singerLabel.Location.X, topPadding + upNextLabel.Height + labelSpacing);
artistLabel.Location = new Point(artistLabel.Location.X, topPadding + upNextLabel.Height + labelSpacing + singerLabel.Height + labelSpacing);
songTitleLabel.Location = new Point(songTitleLabel.Location.X, topPadding + upNextLabel.Height + labelSpacing + singerLabel.Height + labelSpacing + artistLabel.Height + labelSpacing);
} }
upNextLabel.ForeColor = System.Drawing.Color.FromArgb(pulseAlpha, 255, 128, 0);
}
private void FadeTimer_Tick(object sender, EventArgs e)
{
if (isFadingIn)
{
fadeAlpha += 10;
if (fadeAlpha >= 255)
{
fadeAlpha = 255;
fadeTimer.Stop();
}
}
else
{
fadeAlpha -= 10;
if (fadeAlpha <= 0)
{
fadeAlpha = 0;
fadeTimer.Stop();
this.Hide();
}
}
// Update opacity
this.Opacity = fadeAlpha / 255.0;
mainPanel.Invalidate();
}
private void MainPanel_Paint(object sender, PaintEventArgs e)
{
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
// Create gradient background
using (LinearGradientBrush brush = new LinearGradientBrush(
mainPanel.ClientRectangle,
System.Drawing.Color.FromArgb(30, 30, 50),
System.Drawing.Color.FromArgb(20, 20, 30),
LinearGradientMode.Vertical))
{
e.Graphics.FillRectangle(brush, mainPanel.ClientRectangle);
}
// Add subtle radial gradient overlay for depth
using (GraphicsPath path = new GraphicsPath())
{
path.AddEllipse(-300, -300, mainPanel.Width + 600, mainPanel.Height + 600);
using (PathGradientBrush pgb = new PathGradientBrush(path))
{
pgb.CenterColor = System.Drawing.Color.FromArgb(40, 40, 80);
pgb.SurroundColors = new System.Drawing.Color[] { System.Drawing.Color.FromArgb(0, 0, 0) };
e.Graphics.FillPath(pgb, path);
}
}
// Add subtle border glow
using (Pen glowPen = new Pen(System.Drawing.Color.FromArgb(50, 100, 200), 2))
{
glowPen.LineJoin = LineJoin.Round;
e.Graphics.DrawRectangle(glowPen, 2, 2, mainPanel.Width - 4, mainPanel.Height - 4);
}
} }
public void Update(QueueItem queueItem) public void Update(QueueItem queueItem)
@ -157,17 +95,8 @@ namespace KaraokePlayer
songTitleLabel.Text = queueItem.Song.Title; songTitleLabel.Text = queueItem.Song.Title;
} }
// Force a repaint to update the gradient // Recalculate positioning after text changes to ensure proper sizing
mainPanel.Invalidate(); CalculateDynamicPositions();
}
protected override void OnFormClosing(FormClosingEventArgs e)
{
fadeTimer?.Stop();
fadeTimer?.Dispose();
pulseTimer?.Stop();
pulseTimer?.Dispose();
base.OnFormClosing(e);
} }
} }
} }

View File

@ -9,7 +9,7 @@
<Grid> <Grid>
<Button x:Name="launchPlayerButton" Content="Launch Player" HorizontalAlignment="Left" Margin="9,97,0,0" VerticalAlignment="Top" Width="145" Height="44" IsEnabled="False" Click="launchPlayerButton_Click"/> <Button x:Name="launchPlayerButton" Content="Launch Player" HorizontalAlignment="Left" Margin="9,97,0,0" VerticalAlignment="Top" Width="145" Height="44" IsEnabled="False" Click="launchPlayerButton_Click"/>
<Button x:Name="syncLibraryButton" Content="Sync Library" HorizontalAlignment="Left" Margin="160,97,0,0" VerticalAlignment="Top" Width="145" Height="44" IsEnabled="False" Click="syncLibraryButton_Click"/> <Button x:Name="syncLibraryButton" Content="Sync Library" HorizontalAlignment="Left" Margin="160,97,0,0" VerticalAlignment="Top" Width="145" Height="44" IsEnabled="False" Click="syncLibraryButton_Click"/>
<Button x:Name="updateBillboardButton" Content="Update Billboard" HorizontalAlignment="Left" Margin="310,97,0,0" VerticalAlignment="Top" Width="145" Height="44" IsEnabled="False" Click="updateBillboardButton_Click"/> <Button x:Name="updateBillboardButton" Content="Update Song Lists" HorizontalAlignment="Left" Margin="310,97,0,0" VerticalAlignment="Top" Width="145" Height="44" IsEnabled="False" Click="updateBillboardButton_Click"/>
<Button x:Name="deleteSongs" Content="Delete Songs" HorizontalAlignment="Left" Margin="310,10,0,0" VerticalAlignment="Top" Width="145" Height="22" IsEnabled="True" Click="deleteSongsButton_Click"/> <Button x:Name="deleteSongs" Content="Delete Songs" HorizontalAlignment="Left" Margin="310,10,0,0" VerticalAlignment="Top" Width="145" Height="22" IsEnabled="True" Click="deleteSongsButton_Click"/>
<TextBox x:Name="controllerName" HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="295" TextChanged="controllerName_TextChanged"/> <TextBox x:Name="controllerName" HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="295" TextChanged="controllerName_TextChanged"/>
<TextBox x:Name="songsLocation" HorizontalAlignment="Left" Height="23" Margin="10,38,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="295" TextChanged="songsLocation_TextChanged"/> <TextBox x:Name="songsLocation" HorizontalAlignment="Left" Height="23" Margin="10,38,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="295" TextChanged="songsLocation_TextChanged"/>

View File

@ -129,7 +129,7 @@ namespace SingsALot
private void updateBillboardButton_Click(object sender, RoutedEventArgs e) private void updateBillboardButton_Click(object sender, RoutedEventArgs e)
{ {
ProcessStartInfo startInfo = new ProcessStartInfo(); ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "BillboardPlaylistUpdater.exe"; startInfo.FileName = "SongListUpdater.exe";
startInfo.Arguments = this.settings.controllerName; startInfo.Arguments = this.settings.controllerName;
Process.Start(startInfo); Process.Start(startInfo);
} }

View File

@ -124,9 +124,9 @@
<None Include="App.config" /> <None Include="App.config" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\BillboardPlaylistUpdater\BillboardPlaylistUpdater.csproj"> <ProjectReference Include="..\SongListUpdater\SongListUpdater.csproj">
<Project>{ae892df7-c43e-422a-b82e-29b5e6e0341c}</Project> <Project>{ae892df7-c43e-422a-b82e-29b5e6e0341c}</Project>
<Name>BillboardPlaylistUpdater</Name> <Name>SongListUpdater</Name>
</ProjectReference> </ProjectReference>
<ProjectReference Include="..\KaraokePlayer\KaraokePlayer.csproj"> <ProjectReference Include="..\KaraokePlayer\KaraokePlayer.csproj">
<Project>{2cf318e2-04b5-40fc-9577-6dac62b86fb2}</Project> <Project>{2cf318e2-04b5-40fc-9577-6dac62b86fb2}</Project>

View File

@ -15,7 +15,7 @@ using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace BillboardPlaylistUpdater namespace SongListUpdater
{ {
class Program class Program
{ {

View File

@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following // General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("BillboardPlaylistUpdater")] [assembly: AssemblyTitle("SongListUpdater")]
[assembly: AssemblyDescription("")] [assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")] [assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BillboardPlaylistUpdater")] [assembly: AssemblyProduct("SongListUpdater")]
[assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

View File

@ -7,8 +7,8 @@
<ProjectGuid>{AE892DF7-C43E-422A-B82E-29B5E6E0341C}</ProjectGuid> <ProjectGuid>{AE892DF7-C43E-422A-B82E-29B5E6E0341C}</ProjectGuid>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder> <AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BillboardPlaylistUpdater</RootNamespace> <RootNamespace>SongListUpdater</RootNamespace>
<AssemblyName>BillboardPlaylistUpdater</AssemblyName> <AssemblyName>SongListUpdater</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion> <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>

View File

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB