Add settings for fallback behavior

update action icon with padding
This commit is contained in:
2023-08-20 20:52:48 -06:00
parent 1dc8ab8a2d
commit 90c014e932
24 changed files with 760 additions and 786 deletions

View File

@ -0,0 +1,13 @@
using BarRaider.SdTools;
using Newtonsoft.Json.Linq;
using System.Threading.Tasks;
namespace FocusVolumeControl.UI;
internal static class ISDConnectionExtensions
{
public static async Task SetFeedbackAsync(this ISDConnection _this, object feedbackPayload)
{
await _this.SetFeedbackAsync(JObject.FromObject(feedbackPayload));
}
}

View File

@ -8,58 +8,34 @@ using System.Text;
using System.Threading.Tasks;
using BarRaider.SdTools;
using Newtonsoft.Json;
using FocusVolumeControl.AudioSessions;
namespace FocusVolumeControl.UI
namespace FocusVolumeControl.UI;
internal class UIState
{
internal class UIState
[JsonProperty("title")]
public string Title { get; private init; }
[JsonProperty("value")]
public ValueWithOpacity<string> Value { get; private init; }
[JsonProperty("indicator")]
public ValueWithOpacity<float>Indicator { get; private init; }
[JsonProperty("icon")]
public ValueWithOpacity<string> icon { get; private init; }
public UIState(IAudioSession session)
{
[JsonProperty("title")]
public string Title { get; private init; }
[JsonProperty("value")]
public ValueWithOpacity<string> Value { get; private init; }
[JsonProperty("indicator")]
public ValueWithOpacity<float>Indicator { get; private init; }
[JsonProperty("icon")]
public ValueWithOpacity<string> icon { get; private init; }
public static UIState Build(ActiveAudioSessionWrapper session)
{
var volume = session.GetVolumeLevel();
var opacity = session.GetMuted() != true ? 1 : 0.5f;
var iconData = "";
if (session.Icon != null)
{
iconData = session.Icon;
}
else
{
try
{
var icon = Icon.ExtractAssociatedIcon(session.ExecutablePath);
iconData = Tools.ImageToBase64(icon.ToBitmap(), true);
}
catch
{
iconData = "Image/pluginIcon.png";
}
session.Icon = iconData;
}
return new UIState()
{
Title = session.DisplayName,
Value = new() { Value = $"{volume}%", Opacity = opacity },
Indicator = new() { Value = volume, Opacity = opacity },
icon = new() { Value = iconData, Opacity = opacity },
};
}
var volume = session.GetVolumeLevel();
var opacity = session.IsMuted() ? 0.5f : 1;
var iconData = session.GetIcon();
Title = session.DisplayName;
Value = new() { Value = $"{volume}%", Opacity = opacity };
Indicator = new() { Value = volume, Opacity = opacity };
icon = new() { Value = iconData, Opacity = opacity };
}
}

View File

@ -1,20 +1,13 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data.SqlTypes;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FocusVolumeControl.UI
namespace FocusVolumeControl.UI;
internal class ValueWithOpacity<T>
{
internal class ValueWithOpacity<T>
{
[JsonProperty("value")]
public required T Value { get; init; }
[JsonProperty("value")]
public required T Value { get; init; }
[JsonProperty("opacity")]
public required float Opacity { get; init; }
[JsonProperty("opacity")]
public required float Opacity { get; init; }
}
}