AMRPC/AppleMusicRPC/Payload.cs

85 lines
2.2 KiB
C#
Raw Normal View History

2024-04-02 03:11:40 +02:00
using System.ComponentModel;
using System.Runtime.CompilerServices;
namespace AppleMusicRPC
{
public class Payload
{
private string? _playerStateValue;
private double _endTimeValue = -1;
private double _duration = -1;
public event PropertyChangedEventHandler? PropertyChanged;
public static class ResponseTypes
{
public const string Response = "res";
public const string Event = "event";
}
public static class PlayingStatuses
{
public const string Playing = "playing";
public const string NotStarted = "not_started";
public const string Paused = "paused";
}
public string? title { get; set; }
public string? album { get; set; }
public string? artist { get; set; }
public string? thumbnailPath { get; set; }
public string? type { get; set; }
public string? playerState
{
get => _playerStateValue;
set
{
if (value == _playerStateValue) return;
_playerStateValue = value;
NotifyPropertyChanged();
}
}
public double endTime
{
get => _endTimeValue;
set
{
if (value == _endTimeValue) return;
_endTimeValue = value;
NotifyPropertyChanged();
}
}
public double duration
{
get => _duration;
set
{
if (value == _duration) return;
_duration = value;
NotifyPropertyChanged();
}
}
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
public void ResetToInitialState()
{
title = null;
artist = null;
album = null;
thumbnailPath = null;
playerState = PlayingStatuses.NotStarted;
endTime = -1;
duration = -1;
type = ResponseTypes.Event;
}
}
}