Skip to content

Commit

Permalink
feat: make marquee thing configurable
Browse files Browse the repository at this point in the history
adds a status bar to the dev layout
  • Loading branch information
aidan committed Jan 26, 2024
1 parent ce3aa66 commit 28df8a1
Show file tree
Hide file tree
Showing 6 changed files with 214 additions and 125 deletions.
30 changes: 29 additions & 1 deletion FoxTunes.Scripting.JS/Resources/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -104,4 +104,32 @@ function content(value) {
return JSON.parse(value.data);
}
return value.data;
}
}

function bitrate(sampleRate, depth, channels) {
sampleRate = parseInt(sampleRate ?? "44100");
depth = parseInt(depth ?? "16");
channels = parseInt(channels ?? "2");
return parseInt((sampleRate * depth * channels) / 1000) + " kbps";
}

function samplerate(sampleRate) {
return (sampleRate ?? 44100) + " Hz";
}

function channeldescription(channels) {
switch (parseInt(channels ?? 2))
{
case 1:
return "mono";
case 2:
return "stereo";
case 4:
return "quad";
case 6:
return "5.1";
case 8:
return "7.1";
}
return channels + " channels";
}
206 changes: 107 additions & 99 deletions FoxTunes.UI.Windows.Layout/Resources/Main_5.xml
Original file line number Diff line number Diff line change
@@ -1,102 +1,110 @@
<?xml version="1.0" encoding="Windows-1252"?>
<FoxTunes>
<UIComponentConfiguration Component="3451DAA4-C643-4CB2-8105-B441F0277559">
<UIComponentConfiguration Component="8A4E9DDB-2390-455D-9BA9-57C9A441CD75">
<MetaDataEntry Name="Configuration_AAAA1509-4808-419D-93BB-B8D914C60646" Value="pack://application:,,,/FoxTunes.UI.Windows.Layout;component/Resources/001.jpg &#xD;&#xA;pack://application:,,,/FoxTunes.UI.Windows.Layout;component/Resources/002.jpg &#xD;&#xA;pack://application:,,,/FoxTunes.UI.Windows.Layout;component/Resources/003.jpg &#xD;&#xA;pack://application:,,,/FoxTunes.UI.Windows.Layout;component/Resources/004.jpg " />
<MetaDataEntry Name="Configuration_AABBBC99-41C7-4563-BB7E-12EDAC59E57F" Value="70" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="3E899F79-380C-4EF7-8570-4B4E3B3467CB">
<UIComponentConfiguration Component="A6820FDA-E415-40C6-AEFB-A73B6FBE4C93">
<UIComponentConfiguration Component="18E98420-F039-4504-A116-3D0F26BEAAD5">
<UIComponentConfiguration Component="A6820FDA-E415-40C6-AEFB-A73B6FBE4C93">
<UIComponentConfiguration Component="3E899F79-380C-4EF7-8570-4B4E3B3467CB">
<UIComponentConfiguration Component="86276AD4-3962-4659-A00F-95065CD92117" />
<UIComponentConfiguration Component="F5B28CA5-163F-491B-83B6-9D08DAB11B3F" />
<MetaDataEntry Name="DockLocation" Value="Top" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="A6820FDA-E415-40C6-AEFB-A73B6FBE4C93">
<UIComponentConfiguration Component="1155473E-FA29-4D31-8A28-4E4F5582261A">
<MetaDataEntry Name="Configuration_BBCC9137-2B5C-4D2E-9976-A268C1AEB146" Value="True" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="F7774E81-26FC-4F0C-8E0A-67214D155547" />
<MetaDataEntry Name="SplitterDistance" Value="260" />
<MetaDataEntry Name="CollapseBottom" Value="True" />
<MetaDataEntry Name="SplitterDirection" Value="Top" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="360" />
<MetaDataEntry Name="SplitterDirection" Value="Top" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="A6820FDA-E415-40C6-AEFB-A73B6FBE4C93">
<UIComponentConfiguration Component="18E98420-F039-4504-A116-3D0F26BEAAD5">
<UIComponentConfiguration Component="66C8A9E7-0891-48DD-8086-E40F72D4D030" />
<UIComponentConfiguration Component="18E98420-F039-4504-A116-3D0F26BEAAD5">
<UIComponentConfiguration Component="F8231616-9D5E-45C8-BD72-506FC5FC9C95">
<MetaDataEntry Name="Configuration_BBBBFFA3-8F13-4838-9429-69C5E208963D" Value="False" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="381328C3-C2CE-4FDA-AC92-71A15C3FC387">
<MetaDataEntry Name="Configuration_AABBF573-83D3-498E-BEF8-F1DB5A329B9D" Value="GGGG5E28-CC67-43F2-8778-61570785C766" />
<MetaDataEntry Name="Configuration_BBBBDCF0-8B24-4321-B7BE-74DADE59D4FA" Value="False" />
<MetaDataEntry Name="Configuration_DDDEE2B6A-188E-4FF4-A277-37D140D49C45" Value="False" />
<MetaDataEntry Name="Configuration_AAAA0663-7CBF-4EE4-99C8-A0A096D4E876" Value="DDDD058E-7B9C-4101-992A-709B87756991" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="110" />
<MetaDataEntry Name="SplitterDirection" Value="Left" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="360" />
<MetaDataEntry Name="SplitterDirection" Value="Left" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="3E899F79-380C-4EF7-8570-4B4E3B3467CB">
<UIComponentConfiguration Component="12023E31-CB53-4F9C-8A5B-A0593706F37E" />
<UIComponentConfiguration Component="868C483E-C23A-4960-A60F-B3AD9A4460C2" />
<MetaDataEntry Name="DockLocation" Value="Bottom" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="360" />
<MetaDataEntry Name="SplitterDirection" Value="Top" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="400" />
<MetaDataEntry Name="SplitterDirection" Value="Left" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="1CABFBE6-C5BD-4818-A092-2D79509D3A52">
<MetaDataEntry Name="Configuration_402DE29B-50AB-4345-89FB-174D87824F98" Value="CCCC3286-5097-4977-A4CC-5CEDA5E2E099" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="220" />
<MetaDataEntry Name="SplitterDirection" Value="Bottom" />
<MetaDataEntry Name="DockLocation" Value="Top" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="C1BD2AF7-ACF8-4710-99A3-AB5F34C46A90">
<UIComponentConfiguration Component="26A6EFC8-E2A5-4157-AAF7-6E7A52516FCA" />
<UIComponentConfiguration Component="DA832CBE-3C11-4F1F-80D4-B72A801DD972" />
<UIComponentConfiguration Component="9C2BD136-A337-448C-906B-7317C43990B6">
<MetaDataEntry Name="Alignment" Value="Stretch" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="D3FBE95D-3B9E-4DAB-B3AD-B66A53AF5F85">
<MetaDataEntry Name="Alignment" Value="Stretch" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="9AB8D410-B94D-492E-BF00-022A3E77762D">
<MetaDataEntry Name="Alignment" Value="Stretch" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="82279C77-7959-4FCA-A699-270612C20F62">
<MetaDataEntry Name="Alignment" Value="Right" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="F0398311-BF56-4307-B6A8-E30F283F7C89">
<MetaDataEntry Name="Alignment" Value="Right" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="3EAA32EE-9CB2-491B-928E-EA1E9E547E30">
<MetaDataEntry Name="Alignment" Value="Right" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="7709A1DD-5334-4164-ACBD-56E52491BF69">
<MetaDataEntry Name="Alignment" Value="Right" />
</UIComponentConfiguration>
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="220" />
<MetaDataEntry Name="SplitterDirection" Value="Bottom" />
<MetaDataEntry Name="DockLocation" Value="Top" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="EDC787A6-7B1E-4161-B2E1-843C58806D81">
<MetaDataEntry Name="VerticalAlignment" Value="Bottom" />
<MetaDataEntry Name="HorizontalAlignment" Value="Right" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="220" />
<MetaDataEntry Name="SplitterDirection" Value="Bottom" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="3451DAA4-C643-4CB2-8105-B441F0277559">
<UIComponentConfiguration Component="8A4E9DDB-2390-455D-9BA9-57C9A441CD75">
<MetaDataEntry Name="Configuration_AABBBC99-41C7-4563-BB7E-12EDAC59E57F" Value="70" />
<MetaDataEntry Name="Configuration_AAAA1509-4808-419D-93BB-B8D914C60646" Value="pack://application:,,,/FoxTunes.UI.Windows.Layout;component/Resources/001.jpg &#xD;&#xA;pack://application:,,,/FoxTunes.UI.Windows.Layout;component/Resources/002.jpg &#xD;&#xA;pack://application:,,,/FoxTunes.UI.Windows.Layout;component/Resources/003.jpg &#xD;&#xA;pack://application:,,,/FoxTunes.UI.Windows.Layout;component/Resources/004.jpg " />
</UIComponentConfiguration>
<UIComponentConfiguration Component="3E899F79-380C-4EF7-8570-4B4E3B3467CB">
<UIComponentConfiguration Component="3E899F79-380C-4EF7-8570-4B4E3B3467CB">
<UIComponentConfiguration Component="A6820FDA-E415-40C6-AEFB-A73B6FBE4C93">
<UIComponentConfiguration Component="18E98420-F039-4504-A116-3D0F26BEAAD5">
<UIComponentConfiguration Component="A6820FDA-E415-40C6-AEFB-A73B6FBE4C93">
<UIComponentConfiguration Component="3E899F79-380C-4EF7-8570-4B4E3B3467CB">
<UIComponentConfiguration Component="86276AD4-3962-4659-A00F-95065CD92117" />
<UIComponentConfiguration Component="F5B28CA5-163F-491B-83B6-9D08DAB11B3F" />
<MetaDataEntry Name="DockLocation" Value="Top" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="A6820FDA-E415-40C6-AEFB-A73B6FBE4C93">
<UIComponentConfiguration Component="1155473E-FA29-4D31-8A28-4E4F5582261A">
<MetaDataEntry Name="Configuration_BBCC9137-2B5C-4D2E-9976-A268C1AEB146" Value="True" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="F7774E81-26FC-4F0C-8E0A-67214D155547" />
<MetaDataEntry Name="SplitterDistance" Value="260" />
<MetaDataEntry Name="CollapseBottom" Value="True" />
<MetaDataEntry Name="SplitterDirection" Value="Top" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="360" />
<MetaDataEntry Name="SplitterDirection" Value="Top" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="A6820FDA-E415-40C6-AEFB-A73B6FBE4C93">
<UIComponentConfiguration Component="18E98420-F039-4504-A116-3D0F26BEAAD5">
<UIComponentConfiguration Component="66C8A9E7-0891-48DD-8086-E40F72D4D030" />
<UIComponentConfiguration Component="18E98420-F039-4504-A116-3D0F26BEAAD5">
<UIComponentConfiguration Component="F8231616-9D5E-45C8-BD72-506FC5FC9C95">
<MetaDataEntry Name="Configuration_BBBBFFA3-8F13-4838-9429-69C5E208963D" Value="False" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="381328C3-C2CE-4FDA-AC92-71A15C3FC387">
<MetaDataEntry Name="Configuration_AABBF573-83D3-498E-BEF8-F1DB5A329B9D" Value="GGGG5E28-CC67-43F2-8778-61570785C766" />
<MetaDataEntry Name="Configuration_BBBBDCF0-8B24-4321-B7BE-74DADE59D4FA" Value="False" />
<MetaDataEntry Name="Configuration_DDDEE2B6A-188E-4FF4-A277-37D140D49C45" Value="False" />
<MetaDataEntry Name="Configuration_AAAA0663-7CBF-4EE4-99C8-A0A096D4E876" Value="DDDD058E-7B9C-4101-992A-709B87756991" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="110" />
<MetaDataEntry Name="SplitterDirection" Value="Left" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="360" />
<MetaDataEntry Name="SplitterDirection" Value="Left" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="3E899F79-380C-4EF7-8570-4B4E3B3467CB">
<UIComponentConfiguration Component="12023E31-CB53-4F9C-8A5B-A0593706F37E" />
<UIComponentConfiguration Component="868C483E-C23A-4960-A60F-B3AD9A4460C2" />
<MetaDataEntry Name="DockLocation" Value="Bottom" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="360" />
<MetaDataEntry Name="SplitterDirection" Value="Top" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="400" />
<MetaDataEntry Name="SplitterDirection" Value="Left" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="1CABFBE6-C5BD-4818-A092-2D79509D3A52">
<MetaDataEntry Name="Configuration_402DE29B-50AB-4345-89FB-174D87824F98" Value="CCCC3286-5097-4977-A4CC-5CEDA5E2E099" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="220" />
<MetaDataEntry Name="SplitterDirection" Value="Bottom" />
<MetaDataEntry Name="DockLocation" Value="Top" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="C1BD2AF7-ACF8-4710-99A3-AB5F34C46A90">
<UIComponentConfiguration Component="26A6EFC8-E2A5-4157-AAF7-6E7A52516FCA" />
<UIComponentConfiguration Component="DA832CBE-3C11-4F1F-80D4-B72A801DD972" />
<UIComponentConfiguration Component="9C2BD136-A337-448C-906B-7317C43990B6">
<MetaDataEntry Name="Alignment" Value="Stretch" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="D3FBE95D-3B9E-4DAB-B3AD-B66A53AF5F85">
<MetaDataEntry Name="Alignment" Value="Stretch" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="9AB8D410-B94D-492E-BF00-022A3E77762D">
<MetaDataEntry Name="Alignment" Value="Stretch" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="82279C77-7959-4FCA-A699-270612C20F62">
<MetaDataEntry Name="Alignment" Value="Right" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="F0398311-BF56-4307-B6A8-E30F283F7C89">
<MetaDataEntry Name="Alignment" Value="Right" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="3EAA32EE-9CB2-491B-928E-EA1E9E547E30">
<MetaDataEntry Name="Alignment" Value="Right" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="7709A1DD-5334-4164-ACBD-56E52491BF69">
<MetaDataEntry Name="Alignment" Value="Right" />
</UIComponentConfiguration>
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="220" />
<MetaDataEntry Name="SplitterDirection" Value="Bottom" />
<MetaDataEntry Name="DockLocation" Value="Top" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="CFF16494-CB86-4483-99C7-07E496FE894A">
<MetaDataEntry Name="Configuration_BBBB78F3-B32F-4A8C-B566-9A8B39A896C7" Value="(function () {&#xD;&#xA; if (!file) {&#xD;&#xA; return version();&#xD;&#xA; }&#xD;&#xA; var parts = [];&#xD;&#xA; if (tag.disccount != 1 &amp;&amp; tag.disc) {&#xD;&#xA; parts.push(tag.disc);&#xD;&#xA; }&#xD;&#xA; if (tag.track) {&#xD;&#xA; parts.push(zeropad2(tag.track, tag.trackcount, 2));&#xD;&#xA; }&#xD;&#xA; if (tag.artist) {&#xD;&#xA; parts.push(tag.artist);&#xD;&#xA; }&#xD;&#xA; if (tag.album) {&#xD;&#xA; parts.push(tag.album);&#xD;&#xA; }&#xD;&#xA; if (tag.title) {&#xD;&#xA; parts.push(tag.title);&#xD;&#xA; }&#xD;&#xA; else {&#xD;&#xA; parts.push(filename(file));&#xD;&#xA; }&#xD;&#xA; if (tag.performer &amp;&amp; tag.performer != tag.artist) {&#xD;&#xA; parts.push(tag.performer);&#xD;&#xA; }&#xD;&#xA; parts.push((extension(file) || &quot;&quot;).toUpperCase());&#xD;&#xA; parts.push(bitrate(property.audioSampleRate, property.bitsPerSample, property.audioChannels));&#xD;&#xA; parts.push(samplerate(property.audioSampleRate));&#xD;&#xA; parts.push(channeldescription(property.audioChannels));&#xD;&#xA; return parts.join(&quot; - &quot;);&#xD;&#xA;})()" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="220" />
<MetaDataEntry Name="DockLocation" Value="Bottom" />
<MetaDataEntry Name="SplitterDirection" Value="Bottom" />
</UIComponentConfiguration>
<UIComponentConfiguration Component="EDC787A6-7B1E-4161-B2E1-843C58806D81">
<MetaDataEntry Name="VerticalAlignment" Value="Bottom" />
<MetaDataEntry Name="HorizontalAlignment" Value="Right" />
</UIComponentConfiguration>
<MetaDataEntry Name="SplitterDistance" Value="220" />
<MetaDataEntry Name="SplitterDirection" Value="Bottom" />
</UIComponentConfiguration>
</FoxTunes>
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ public static class MiniPlayerBehaviourConfiguration
public static IEnumerable<ConfigurationSection> GetConfigurationSections()
{
yield return new ConfigurationSection(SECTION, Strings.MiniPlayerBehaviourConfiguration_Section)
.WithElement(
new TextConfigurationElement(NOW_PLAYING_SCRIPT_ELEMENT, Strings.MiniPlayerBehaviourConfiguration_NowPlayingScript, path: Strings.MiniPlayerBehaviourConfiguration_Advanced)
.WithValue(Resources.NowPlaying)
.WithFlags(ConfigurationElementFlags.MultiLine | ConfigurationElementFlags.Script))
.WithElement(
new TextConfigurationElement(PLAYLIST_SCRIPT_ELEMENT, Strings.MiniPlayerBehaviourConfiguration_PlaylistScript, path: Strings.MiniPlayerBehaviourConfiguration_Advanced)
.WithValue(Resources.Playlist)
Expand Down
26 changes: 25 additions & 1 deletion FoxTunes.UI.Windows.MiniPlayer/NowPlaying.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Windows.Controls;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace FoxTunes
{
Expand All @@ -8,9 +9,32 @@ namespace FoxTunes
[UIComponent("CFF16494-CB86-4483-99C7-07E496FE894A", role: UIComponentRole.Info)]
public partial class NowPlaying : ConfigurableUIComponentBase
{
public const string CATEGORY = "C0803688-E230-4DFF-AFCB-931B3AA5BE6D";

public NowPlaying()
{
this.InitializeComponent();
}

public override IEnumerable<string> InvocationCategories
{
get
{
yield return CATEGORY;
}
}

public override IEnumerable<ConfigurationSection> GetConfigurationSections()
{
return NowPlayingConfiguration.GetConfigurationSections();
}

protected override Task<bool> ShowSettings()
{
return this.ShowSettings(
Strings.NowPlaying_Name,
NowPlayingConfiguration.SECTION
);
}
}
}
15 changes: 11 additions & 4 deletions FoxTunes.UI.Windows.MiniPlayer/NowPlayingConfiguration.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Generic;

namespace FoxTunes
{
Expand All @@ -10,5 +7,15 @@ public static class NowPlayingConfiguration
public const string SECTION = "A9F63A1C-16F8-4F68-8E49-3C4C62172FFA";

public const string NOW_PLAYING_SCRIPT_ELEMENT = "BBBB78F3-B32F-4A8C-B566-9A8B39A896C7";

public static IEnumerable<ConfigurationSection> GetConfigurationSections()
{
yield return new ConfigurationSection(SECTION, Strings.NowPlaying_Name)
.WithElement(
new TextConfigurationElement(NOW_PLAYING_SCRIPT_ELEMENT, Strings.MiniPlayerBehaviourConfiguration_NowPlayingScript, path: Strings.MiniPlayerBehaviourConfiguration_Advanced)
.WithValue(Resources.NowPlaying)
.WithFlags(ConfigurationElementFlags.MultiLine | ConfigurationElementFlags.Script)
);
}
}
}
Loading

0 comments on commit 28df8a1

Please sign in to comment.