MainForm.cs
author sl
Tue, 23 Dec 2014 21:17:17 +0100
changeset 40 b3e177062849
parent 39 53886b25c49d
child 41 dd603eba46ca
permissions -rw-r--r--
Adding colums to our listview.
     1 using System;
     2 using System.Drawing;
     3 using System.Collections;
     4 using System.ComponentModel;
     5 using System.Windows.Forms;
     6 using System.Data;
     7 using Devices.RemoteControl;
     8 
     9 namespace RemoteControlSample
    10 {
    11 	/// <summary>
    12 	/// Summary description for Form1.
    13 	/// </summary>
    14 	public class MainForm : System.Windows.Forms.Form
    15 	{
    16 		/// <summary>
    17 		/// Required designer variable.
    18 		/// </summary>
    19         private System.ComponentModel.Container components = null;
    20         private RemoteControlDevice _remote;
    21         private Label labelButtonName;
    22         private Label labelDeviceName;
    23         private ListView listViewEvents;
    24         private ColumnHeader columnHeaderUsage;
    25         private ColumnHeader columnHeaderUsagePage;
    26         private ColumnHeader columnHeaderUsageCollection;
    27 		private Timer _timer;
    28 
    29 		public MainForm()
    30 		{
    31 			//
    32 			// Required for Windows Form Designer support
    33 			//
    34 			InitializeComponent();
    35 
    36 			_timer = new Timer();
    37 			_timer.Interval = 3000;
    38 			_timer.Enabled = false;
    39 			_timer.Tick +=new EventHandler(_timer_Tick);            
    40 		}
    41 
    42 		/// <summary>
    43 		/// Clean up any resources being used.
    44 		/// </summary>
    45 		protected override void Dispose( bool disposing )
    46 		{
    47 			if( disposing )
    48 			{
    49 				if (components != null)
    50 				{
    51 					components.Dispose();
    52 				}
    53 			}
    54 			base.Dispose( disposing );
    55 		}
    56 
    57 		#region Windows Form Designer generated code
    58 		/// <summary>
    59 		/// Required method for Designer support - do not modify
    60 		/// the contents of this method with the code editor.
    61 		/// </summary>
    62 		private void InitializeComponent()
    63 		{
    64             this.labelButtonName = new System.Windows.Forms.Label();
    65             this.labelDeviceName = new System.Windows.Forms.Label();
    66             this.listViewEvents = new System.Windows.Forms.ListView();
    67             this.columnHeaderUsage = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
    68             this.columnHeaderUsagePage = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
    69             this.columnHeaderUsageCollection = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
    70             this.SuspendLayout();
    71             // 
    72             // labelButtonName
    73             // 
    74             this.labelButtonName.AutoSize = true;
    75             this.labelButtonName.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    76             this.labelButtonName.Location = new System.Drawing.Point(600, 32);
    77             this.labelButtonName.Name = "labelButtonName";
    78             this.labelButtonName.Size = new System.Drawing.Size(103, 20);
    79             this.labelButtonName.TabIndex = 0;
    80             this.labelButtonName.Text = "Button Name";
    81             // 
    82             // labelDeviceName
    83             // 
    84             this.labelDeviceName.AutoSize = true;
    85             this.labelDeviceName.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
    86             this.labelDeviceName.Location = new System.Drawing.Point(600, 12);
    87             this.labelDeviceName.Name = "labelDeviceName";
    88             this.labelDeviceName.Size = new System.Drawing.Size(103, 20);
    89             this.labelDeviceName.TabIndex = 1;
    90             this.labelDeviceName.Text = "Device Name";
    91             // 
    92             // listViewEvents
    93             // 
    94             this.listViewEvents.Alignment = System.Windows.Forms.ListViewAlignment.Left;
    95             this.listViewEvents.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
    96             | System.Windows.Forms.AnchorStyles.Left)));
    97             this.listViewEvents.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
    98             this.listViewEvents.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
    99             this.columnHeaderUsage,
   100             this.columnHeaderUsagePage,
   101             this.columnHeaderUsageCollection});
   102             this.listViewEvents.GridLines = true;
   103             this.listViewEvents.Location = new System.Drawing.Point(12, 12);
   104             this.listViewEvents.Name = "listViewEvents";
   105             this.listViewEvents.Size = new System.Drawing.Size(582, 369);
   106             this.listViewEvents.TabIndex = 2;
   107             this.listViewEvents.UseCompatibleStateImageBehavior = false;
   108             this.listViewEvents.View = System.Windows.Forms.View.Details;
   109             // 
   110             // columnHeaderUsage
   111             // 
   112             this.columnHeaderUsage.Text = "Usage";
   113             this.columnHeaderUsage.Width = 180;
   114             // 
   115             // columnHeaderUsagePage
   116             // 
   117             this.columnHeaderUsagePage.Text = "Usage Page";
   118             this.columnHeaderUsagePage.Width = 120;
   119             // 
   120             // columnHeaderUsageCollection
   121             // 
   122             this.columnHeaderUsageCollection.Text = "Usage Collection";
   123             this.columnHeaderUsageCollection.Width = 120;
   124             // 
   125             // MainForm
   126             // 
   127             this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
   128             this.BackColor = System.Drawing.SystemColors.Control;
   129             this.ClientSize = new System.Drawing.Size(926, 393);
   130             this.Controls.Add(this.listViewEvents);
   131             this.Controls.Add(this.labelDeviceName);
   132             this.Controls.Add(this.labelButtonName);
   133             this.Name = "MainForm";
   134             this.Text = "Remote Control Sample";
   135             this.Load += new System.EventHandler(this.Form1_Load);
   136             this.ResumeLayout(false);
   137             this.PerformLayout();
   138 
   139 		}
   140 		#endregion Windows Form Designer generated code
   141 
   142 		/// <summary>
   143 		/// The main entry point for the application.
   144 		/// </summary>
   145 		[STAThread]
   146 		static void Main()
   147 		{
   148 			Application.Run(new MainForm());
   149 		}
   150 
   151 		private void Form1_Load(object sender, System.EventArgs e)
   152 		{
   153             _remote = new RemoteControlDevice(this.Handle);
   154             _remote.ButtonPressed += new Devices.RemoteControl.RemoteControlDevice.RemoteControlDeviceEventHandler(_remote_ButtonPressed);
   155             _remote.iHidHandler.OnHidEvent += HandleHidEvent;             
   156 		}
   157 
   158         void HandleHidEvent(object aSender, Hid.HidEvent aHidEvent)
   159         {
   160             listViewEvents.Items.Insert(0, aHidEvent.ListViewItem);
   161         }
   162 
   163 		protected override void WndProc(ref Message message)
   164 		{
   165             if (_remote != null)
   166             {
   167                 _remote.ProcessMessage(message);
   168             }
   169 			base.WndProc(ref message);
   170 		}
   171 
   172 		private bool _remote_ButtonPressed(object sender, RemoteControlEventArgs e)
   173 		{
   174             bool processed = false;
   175 			_timer.Enabled = false;
   176             if (e.Button != RemoteControlButton.Unknown)
   177             {
   178                 labelButtonName.Text = e.Button.ToString();
   179                 processed = true;
   180             }
   181             else if (e.MceButton != Hid.UsageTables.WindowsMediaCenterRemoteControl.Null)
   182             {
   183                 //Display MCE button name
   184                 labelButtonName.Text = e.MceButton.ToString();
   185                 //Check if this is an HP extension
   186                 if (Enum.IsDefined(typeof(Hid.UsageTables.HpWindowsMediaCenterRemoteControl), (ushort)e.MceButton))
   187                 {
   188                     //Also display HP button name
   189                     labelButtonName.Text += " / HP:" + ((Hid.UsageTables.HpWindowsMediaCenterRemoteControl)e.MceButton).ToString();
   190                 }
   191 
   192                 processed = true;                
   193             }
   194             else if (e.ConsumerControl != Hid.UsageTables.ConsumerControl.Null)
   195             {
   196                 //Display consumer control name
   197                 labelButtonName.Text = e.ConsumerControl.ToString();
   198                 processed = true;
   199             }
   200             else
   201             {
   202                 labelButtonName.Text = "Unknown";
   203             }
   204 			labelDeviceName.Text = e.Device.ToString();
   205 			_timer.Enabled = true;
   206             return processed;
   207 		}
   208 
   209 		private void _timer_Tick(object sender, EventArgs e)
   210 		{
   211 			_timer.Enabled = false;
   212 			labelButtonName.Text = "Ready...";
   213 		}
   214 
   215 	}
   216 }