Merge branch 'master' into release
[deb_libcec.git] / src / cec-config-gui / DeviceInformation.cs
index d340e4774f1805fed5c87bf1c9595827521e33bd..f7992e3ef68e2fe11cb5872da187380dee61a77d 100644 (file)
@@ -1,15 +1,10 @@
 using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Text;
 using System.Windows.Forms;
 using CecSharp;
 
 namespace CecConfigGui
 {
-  public partial class DeviceInformation : Form
+  public partial class DeviceInformation : AsyncForm
   {
     public DeviceInformation(CecConfigGUI gui, CecLogicalAddress address, ref LibCecSharp lib,
       bool devicePresent, CecVendorId vendor, bool isActiveSource, ushort physicalAddress,
@@ -19,55 +14,24 @@ namespace CecConfigGui
       Lib = lib;
       Address = address;
       InitializeComponent();
-      this.lDevice.Text = lib.ToString(address);
-      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.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;
+      lDevice.Text = lib.ToString(address);
+      lLogicalAddress.Text = String.Format("{0,1:X}", (int)address);
+      Update(devicePresent, vendor, isActiveSource, physicalAddress, version, power, osdName, menuLanguage);
     }
 
-    delegate void SetControlVisibleCallback(Control control, bool val);
-    private void SetControlVisible(Control control, bool val)
-    {
-      if (control.InvokeRequired)
-      {
-        SetControlVisibleCallback d = new SetControlVisibleCallback(SetControlVisible);
-        try
-        {
-          this.Invoke(d, new object[] { control, val });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        control.Visible = val;
-      }
-    }
-
-    delegate void SetControlTextCallback(Control control, string val);
-    private void SetControlText(Control control, string val)
+    public void Update(bool devicePresent, CecVendorId vendor, bool isActiveSource, ushort physicalAddress,
+      CecVersion version, CecPowerStatus power, string osdName, string menuLanguage)
     {
-      if (control.InvokeRequired)
-      {
-        SetControlTextCallback d = new SetControlTextCallback(SetControlText);
-        try
-        {
-          this.Invoke(d, new object[] { control, val });
-        }
-        catch (Exception) { }
-      }
-      else
-      {
-        control.Text = val;
-      }
+      SetControlText(lPhysicalAddress, String.Format("{0,4:X}", physicalAddress));
+      SetControlText(lDevicePresent, devicePresent ? "yes" : "no");
+      SetControlVisible(lActiveSource, isActiveSource);
+      SetControlVisible(lInactiveSource, !isActiveSource);
+      SetControlText(lVendor, vendor != CecVendorId.Unknown ? Lib.ToString(vendor) : "unknown");
+      SetControlText(lCecVersion, Lib.ToString(version));
+      SetControlText(lPowerStatus, Lib.ToString(power));
+      SetControlText(lOsdName, osdName);
+      SetControlText(lMenuLanguage, menuLanguage);
+      SetControlText(this, "Device: " + osdName);
     }
 
     private void lInactiveSource_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
@@ -77,7 +41,6 @@ namespace CecConfigGui
       Gui.ActivateSource(Address);
     }
 
-
     private void lStandby_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
     {
       LinkLabel label = sender as LinkLabel;
@@ -91,7 +54,17 @@ namespace CecConfigGui
         Gui.SendStandby(Address);
     }
 
-    private CecLogicalAddress Address;
+
+    private void button1_Click(object sender, EventArgs e)
+    {
+      Gui.UpdateInfoPanel(this);
+    }
+
+    public CecLogicalAddress Address
+    {
+      private set;
+      get;
+    }
     private CecConfigGUI Gui;
     private LibCecSharp Lib;
   }