namespace CecConfigGui
{
- public partial class DeviceInformation : Form
+ public partial class DeviceInformation : AsyncForm
{
- public DeviceInformation(CecLogicalAddress address, ref LibCecSharp lib,
+ public DeviceInformation(CecConfigGUI gui, CecLogicalAddress address, ref LibCecSharp lib,
bool devicePresent, CecVendorId vendor, bool isActiveSource, ushort physicalAddress,
CecVersion version, CecPowerStatus power, string osdName, string menuLanguage)
{
+ Gui = gui;
+ Lib = lib;
+ Address = address;
InitializeComponent();
this.lDevice.Text = lib.ToString(address);
- this.lLogicalAddress.Text = "#" + (int)address;
- this.lPhysicalAddress.Text = physicalAddress.ToString();
+ this.lLogicalAddress.Text = String.Format("{0,1:X}", (int)address);
+ this.lPhysicalAddress.Text = String.Format("{0,4:X}", physicalAddress);
this.lDevicePresent.Text = devicePresent ? "yes" : "no";
- this.lActiveSource.Text = isActiveSource ? "yes" : "no";
- this.lVendor.Text = lib.ToString(vendor) + " (" + (UInt64)vendor +")";
+ this.lActiveSource.Visible = isActiveSource;
+ this.lInactiveSource.Visible = !isActiveSource;
+ this.lVendor.Text = vendor != CecVendorId.Unknown ? lib.ToString(vendor) : "unknown";
this.lCecVersion.Text = lib.ToString(version);
this.lPowerStatus.Text = lib.ToString(power);
+ bool isPoweredOn = (power == CecPowerStatus.On || power == CecPowerStatus.InTransitionStandbyToOn);
this.lOsdName.Text = osdName;
this.lMenuLanguage.Text = menuLanguage;
+ this.Text = "Device: " + osdName;
}
+
+ private void lInactiveSource_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ SetControlVisible(lInactiveSource, false);
+ SetControlVisible(lActiveSource, true);
+ Gui.ActivateSource(Address);
+ }
+
+ private void lStandby_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ {
+ LinkLabel label = sender as LinkLabel;
+ bool sendPowerOn = label.Text != Lib.ToString(CecPowerStatus.InTransitionStandbyToOn) &&
+ label.Text != Lib.ToString(CecPowerStatus.On);
+
+ SetControlText(lPowerStatus, Lib.ToString(sendPowerOn ? CecPowerStatus.On : CecPowerStatus.Standby));
+ if (sendPowerOn)
+ Gui.SendImageViewOn(Address);
+ else
+ Gui.SendStandby(Address);
+ }
+
+ private CecLogicalAddress Address;
+ private CecConfigGUI Gui;
+ private LibCecSharp Lib;
}
}