mirror of
https://github.com/RawAccelOfficial/rawaccel.git
synced 2025-05-15 13:59:05 +02:00
this uses w32 apis for enumerating dev info instead of ManagementObjectSearcher, which upper-cases dev ids, differing from kernel/cfgmgr32 this also breaks showing dev name alongside id, as the name seems inaccessible from cfgmgr32 given an interface supplied by rawinput not a big deal considering the names are too generic to be useful anyway
73 lines
2 KiB
C#
73 lines
2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace grapher.Models.Devices
|
|
{
|
|
public class DeviceIDItem
|
|
{
|
|
public DeviceIDItem(string name, string id, DeviceIDManager manager)
|
|
{
|
|
Name = name;
|
|
ID = id;
|
|
Manager = manager;
|
|
DeviceIDMenuItem = new ToolStripMenuItem();
|
|
DeviceIDMenuItem.Checked = false;
|
|
DeviceIDMenuItem.Text = MenuItemText();
|
|
DeviceIDMenuItem.Click += OnClicked;
|
|
manager.DeviceIDsMenuItem.DropDownItems.Add(DeviceIDMenuItem);
|
|
}
|
|
|
|
private ToolStripMenuItem DeviceIDMenuItem { get; }
|
|
|
|
public string Name { get; }
|
|
|
|
public string ID { get; }
|
|
|
|
private DeviceIDManager Manager { get; }
|
|
|
|
public void SetActivated()
|
|
{
|
|
DeviceIDMenuItem.Checked = true;
|
|
}
|
|
|
|
public void SetDeactivated()
|
|
{
|
|
DeviceIDMenuItem.Checked = false;
|
|
}
|
|
|
|
private string MenuItemText() => string.IsNullOrEmpty(ID) ? $"{Name}" : ID.Replace("&", "&&");
|
|
|
|
private string DisconnectedText() => $"Disconnected: {ID}";
|
|
|
|
public void SetDisconnected()
|
|
{
|
|
DeviceIDMenuItem.ForeColor = Color.DarkGray;
|
|
DeviceIDMenuItem.Text = DisconnectedText();
|
|
}
|
|
|
|
public void OnClicked(object sender, EventArgs e)
|
|
{
|
|
Manager.SetActive(this);
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
return obj is DeviceIDItem item &&
|
|
Name == item.Name &&
|
|
ID == item.ID;
|
|
}
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
int hashCode = -1692744877;
|
|
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Name);
|
|
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(ID);
|
|
return hashCode;
|
|
}
|
|
}
|
|
}
|