Adding CEC settings tab.
authorStephaneLenclud
Sat, 26 Sep 2015 17:55:51 +0200
changeset 1682568261f74fb
parent 167 d2295c186ce1
child 169 4d78ad195827
Adding CEC settings tab.
Server/App.config
Server/ConsumerElectronicControl.cs
Server/MainForm.Designer.cs
Server/MainForm.cs
Server/MainForm.resx
Server/Properties/Settings.Designer.cs
Server/Properties/Settings.settings
     1.1 --- a/Server/App.config	Sat Sep 26 16:35:27 2015 +0200
     1.2 +++ b/Server/App.config	Sat Sep 26 17:55:51 2015 +0200
     1.3 @@ -31,6 +31,18 @@
     1.4              <setting name="OpticalDriveToEject" serializeAs="String">
     1.5                  <value>None</value>
     1.6              </setting>
     1.7 +            <setting name="CecEnabled" serializeAs="String">
     1.8 +                <value>False</value>
     1.9 +            </setting>
    1.10 +            <setting name="CecHdmiPort" serializeAs="String">
    1.11 +                <value>1</value>
    1.12 +            </setting>
    1.13 +            <setting name="CecMonitorOn" serializeAs="String">
    1.14 +                <value>True</value>
    1.15 +            </setting>
    1.16 +            <setting name="CecMonitorOff" serializeAs="String">
    1.17 +                <value>True</value>
    1.18 +            </setting>
    1.19          </SharpDisplayManager.Properties.Settings>
    1.20      </userSettings>
    1.21  </configuration>
     2.1 --- a/Server/ConsumerElectronicControl.cs	Sat Sep 26 16:35:27 2015 +0200
     2.2 +++ b/Server/ConsumerElectronicControl.cs	Sat Sep 26 17:55:51 2015 +0200
     2.3 @@ -22,12 +22,22 @@
     2.4          /// <param name="aWndHandle"></param>
     2.5          /// <param name="aDeviceName"></param>
     2.6          /// <param name="aHdmiPort"></param>
     2.7 -        public void Start(IntPtr aWndHandle, string aDeviceName, byte aHdmiPort)
     2.8 +        public void Start(IntPtr aWndHandle, string aDeviceName, byte aHdmiPort, bool aMonitorOn, bool aMonitorOff)
     2.9          {
    2.10              //Create our power setting notifier and register the event we are insterrested in
    2.11              iPowerSettingNotifier = new PowerManager.SettingNotifier(aWndHandle);
    2.12 -            iPowerSettingNotifier.OnMonitorPowerOn += OnMonitorPowerOn;
    2.13 -            iPowerSettingNotifier.OnMonitorPowerOff += OnMonitorPowerOff;
    2.14 +
    2.15 +            //
    2.16 +            if (aMonitorOn)
    2.17 +            {
    2.18 +                iPowerSettingNotifier.OnMonitorPowerOn += OnMonitorPowerOn;
    2.19 +            }
    2.20 +
    2.21 +            //
    2.22 +            if (aMonitorOff)
    2.23 +            {
    2.24 +                iPowerSettingNotifier.OnMonitorPowerOff += OnMonitorPowerOff;
    2.25 +            }
    2.26  
    2.27              //CEC
    2.28              iCecClient = new Cec.Client(aDeviceName,aHdmiPort);
    2.29 @@ -41,13 +51,19 @@
    2.30          public void Stop()
    2.31          {
    2.32              //
    2.33 -            iPowerSettingNotifier.OnMonitorPowerOn -= OnMonitorPowerOn;
    2.34 -            iPowerSettingNotifier.OnMonitorPowerOff -= OnMonitorPowerOff;
    2.35 -            iPowerSettingNotifier = null;
    2.36 +            if (iPowerSettingNotifier != null)
    2.37 +            {
    2.38 +                iPowerSettingNotifier.OnMonitorPowerOn -= OnMonitorPowerOn;
    2.39 +                iPowerSettingNotifier.OnMonitorPowerOff -= OnMonitorPowerOff;
    2.40 +                iPowerSettingNotifier = null;
    2.41 +            }
    2.42              //
    2.43 -            iCecClient.Close();
    2.44 -            iCecClient.Dispose();
    2.45 -            iCecClient = null;
    2.46 +            if (iCecClient != null)
    2.47 +            {
    2.48 +                iCecClient.Close();
    2.49 +                iCecClient.Dispose();
    2.50 +                iCecClient = null;
    2.51 +            }
    2.52          }
    2.53  
    2.54  
     3.1 --- a/Server/MainForm.Designer.cs	Sat Sep 26 16:35:27 2015 +0200
     3.2 +++ b/Server/MainForm.Designer.cs	Sat Sep 26 17:55:51 2015 +0200
     3.3 @@ -96,6 +96,12 @@
     3.4              this.pictureBoxGreenStart = new System.Windows.Forms.PictureBox();
     3.5              this.labelStartFileName = new System.Windows.Forms.Label();
     3.6              this.buttonSelectFile = new System.Windows.Forms.Button();
     3.7 +            this.tabPageCec = new System.Windows.Forms.TabPage();
     3.8 +            this.checkBoxCecMonitorOn = new System.Windows.Forms.CheckBox();
     3.9 +            this.checkBoxCecMonitorOff = new System.Windows.Forms.CheckBox();
    3.10 +            this.checkBoxCecEnabled = new System.Windows.Forms.CheckBox();
    3.11 +            this.labelHdmiPort = new System.Windows.Forms.Label();
    3.12 +            this.comboBoxHdmiPort = new System.Windows.Forms.ComboBox();
    3.13              this.tabPageApp = new System.Windows.Forms.TabPage();
    3.14              this.checkBoxStartMinimized = new System.Windows.Forms.CheckBox();
    3.15              this.checkBoxMinimizeToTray = new System.Windows.Forms.CheckBox();
    3.16 @@ -105,7 +111,6 @@
    3.17              this.labelFontHeight = new System.Windows.Forms.Label();
    3.18              this.toolTip = new System.Windows.Forms.ToolTip(this.components);
    3.19              this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
    3.20 -            this.pictureBoxDemo = new System.Windows.Forms.PictureBox();
    3.21              this.panelDisplay.SuspendLayout();
    3.22              this.tableLayoutPanel.SuspendLayout();
    3.23              this.statusStrip.SuspendLayout();
    3.24 @@ -118,8 +123,8 @@
    3.25              ((System.ComponentModel.ISupportInitialize)(this.trackBarMasterVolume)).BeginInit();
    3.26              this.tabPageInput.SuspendLayout();
    3.27              ((System.ComponentModel.ISupportInitialize)(this.pictureBoxGreenStart)).BeginInit();
    3.28 +            this.tabPageCec.SuspendLayout();
    3.29              this.tabPageApp.SuspendLayout();
    3.30 -            ((System.ComponentModel.ISupportInitialize)(this.pictureBoxDemo)).BeginInit();
    3.31              this.SuspendLayout();
    3.32              // 
    3.33              // panelDisplay
    3.34 @@ -521,6 +526,7 @@
    3.35              this.tabControl.Controls.Add(this.tabPageDesign);
    3.36              this.tabControl.Controls.Add(this.tabPageAudio);
    3.37              this.tabControl.Controls.Add(this.tabPageInput);
    3.38 +            this.tabControl.Controls.Add(this.tabPageCec);
    3.39              this.tabControl.Controls.Add(this.tabPageApp);
    3.40              this.tabControl.Location = new System.Drawing.Point(12, 139);
    3.41              this.tabControl.Name = "tabControl";
    3.42 @@ -766,6 +772,86 @@
    3.43              this.buttonSelectFile.UseVisualStyleBackColor = true;
    3.44              this.buttonSelectFile.Click += new System.EventHandler(this.buttonSelectFile_Click);
    3.45              // 
    3.46 +            // tabPageCec
    3.47 +            // 
    3.48 +            this.tabPageCec.Controls.Add(this.checkBoxCecMonitorOn);
    3.49 +            this.tabPageCec.Controls.Add(this.checkBoxCecMonitorOff);
    3.50 +            this.tabPageCec.Controls.Add(this.checkBoxCecEnabled);
    3.51 +            this.tabPageCec.Controls.Add(this.labelHdmiPort);
    3.52 +            this.tabPageCec.Controls.Add(this.comboBoxHdmiPort);
    3.53 +            this.tabPageCec.Location = new System.Drawing.Point(4, 22);
    3.54 +            this.tabPageCec.Name = "tabPageCec";
    3.55 +            this.tabPageCec.Padding = new System.Windows.Forms.Padding(3);
    3.56 +            this.tabPageCec.Size = new System.Drawing.Size(592, 242);
    3.57 +            this.tabPageCec.TabIndex = 7;
    3.58 +            this.tabPageCec.Text = "CEC";
    3.59 +            this.tabPageCec.UseVisualStyleBackColor = true;
    3.60 +            // 
    3.61 +            // checkBoxCecMonitorOn
    3.62 +            // 
    3.63 +            this.checkBoxCecMonitorOn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    3.64 +            this.checkBoxCecMonitorOn.AutoSize = true;
    3.65 +            this.checkBoxCecMonitorOn.Location = new System.Drawing.Point(6, 92);
    3.66 +            this.checkBoxCecMonitorOn.Name = "checkBoxCecMonitorOn";
    3.67 +            this.checkBoxCecMonitorOn.Size = new System.Drawing.Size(192, 17);
    3.68 +            this.checkBoxCecMonitorOn.TabIndex = 23;
    3.69 +            this.checkBoxCecMonitorOn.Text = "Wake up TV when screen turns on";
    3.70 +            this.checkBoxCecMonitorOn.UseVisualStyleBackColor = true;
    3.71 +            this.checkBoxCecMonitorOn.CheckedChanged += new System.EventHandler(this.checkBoxCecMonitorOn_CheckedChanged);
    3.72 +            // 
    3.73 +            // checkBoxCecMonitorOff
    3.74 +            // 
    3.75 +            this.checkBoxCecMonitorOff.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    3.76 +            this.checkBoxCecMonitorOff.AutoSize = true;
    3.77 +            this.checkBoxCecMonitorOff.Location = new System.Drawing.Point(6, 69);
    3.78 +            this.checkBoxCecMonitorOff.Name = "checkBoxCecMonitorOff";
    3.79 +            this.checkBoxCecMonitorOff.Size = new System.Drawing.Size(219, 17);
    3.80 +            this.checkBoxCecMonitorOff.TabIndex = 22;
    3.81 +            this.checkBoxCecMonitorOff.Text = "Set TV on standby when screen turns off";
    3.82 +            this.checkBoxCecMonitorOff.UseVisualStyleBackColor = true;
    3.83 +            this.checkBoxCecMonitorOff.CheckedChanged += new System.EventHandler(this.checkBoxCecMonitorOff_CheckedChanged);
    3.84 +            // 
    3.85 +            // checkBoxCecEnabled
    3.86 +            // 
    3.87 +            this.checkBoxCecEnabled.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
    3.88 +            this.checkBoxCecEnabled.AutoSize = true;
    3.89 +            this.checkBoxCecEnabled.Location = new System.Drawing.Point(6, 6);
    3.90 +            this.checkBoxCecEnabled.Name = "checkBoxCecEnabled";
    3.91 +            this.checkBoxCecEnabled.Size = new System.Drawing.Size(83, 17);
    3.92 +            this.checkBoxCecEnabled.TabIndex = 21;
    3.93 +            this.checkBoxCecEnabled.Text = "Enable CEC";
    3.94 +            this.checkBoxCecEnabled.UseVisualStyleBackColor = true;
    3.95 +            this.checkBoxCecEnabled.CheckedChanged += new System.EventHandler(this.checkBoxCecEnabled_CheckedChanged);
    3.96 +            // 
    3.97 +            // labelHdmiPort
    3.98 +            // 
    3.99 +            this.labelHdmiPort.AutoSize = true;
   3.100 +            this.labelHdmiPort.Location = new System.Drawing.Point(3, 26);
   3.101 +            this.labelHdmiPort.Name = "labelHdmiPort";
   3.102 +            this.labelHdmiPort.Size = new System.Drawing.Size(182, 13);
   3.103 +            this.labelHdmiPort.TabIndex = 20;
   3.104 +            this.labelHdmiPort.Text = "TV HDMI port connected to your PC:";
   3.105 +            // 
   3.106 +            // comboBoxHdmiPort
   3.107 +            // 
   3.108 +            this.comboBoxHdmiPort.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
   3.109 +            this.comboBoxHdmiPort.FormattingEnabled = true;
   3.110 +            this.comboBoxHdmiPort.Items.AddRange(new object[] {
   3.111 +            "HDMI 1",
   3.112 +            "HDMI 2",
   3.113 +            "HDMI 3",
   3.114 +            "HDMI 4",
   3.115 +            "HDMI 5",
   3.116 +            "HDMI 6",
   3.117 +            "HDMI 7",
   3.118 +            "HDMI 8",
   3.119 +            "HDMI 9"});
   3.120 +            this.comboBoxHdmiPort.Location = new System.Drawing.Point(6, 42);
   3.121 +            this.comboBoxHdmiPort.Name = "comboBoxHdmiPort";
   3.122 +            this.comboBoxHdmiPort.Size = new System.Drawing.Size(87, 21);
   3.123 +            this.comboBoxHdmiPort.TabIndex = 19;
   3.124 +            this.comboBoxHdmiPort.SelectedIndexChanged += new System.EventHandler(this.comboBoxHdmiPort_SelectedIndexChanged);
   3.125 +            // 
   3.126              // tabPageApp
   3.127              // 
   3.128              this.tabPageApp.Controls.Add(this.checkBoxStartMinimized);
   3.129 @@ -848,20 +934,11 @@
   3.130              // 
   3.131              this.openFileDialog.Filter = "EXE files (*.exe)|*.exe|All files (*.*)|*.*";
   3.132              // 
   3.133 -            // pictureBoxDemo
   3.134 -            // 
   3.135 -            this.pictureBoxDemo.Location = new System.Drawing.Point(478, 54);
   3.136 -            this.pictureBoxDemo.Name = "pictureBoxDemo";
   3.137 -            this.pictureBoxDemo.Size = new System.Drawing.Size(100, 50);
   3.138 -            this.pictureBoxDemo.TabIndex = 21;
   3.139 -            this.pictureBoxDemo.TabStop = false;
   3.140 -            // 
   3.141              // MainForm
   3.142              // 
   3.143              this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
   3.144              this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
   3.145              this.ClientSize = new System.Drawing.Size(624, 442);
   3.146 -            this.Controls.Add(this.pictureBoxDemo);
   3.147              this.Controls.Add(this.labelFontHeight);
   3.148              this.Controls.Add(this.labelFontWidth);
   3.149              this.Controls.Add(this.labelWarning);
   3.150 @@ -894,9 +971,10 @@
   3.151              this.tabPageInput.ResumeLayout(false);
   3.152              this.tabPageInput.PerformLayout();
   3.153              ((System.ComponentModel.ISupportInitialize)(this.pictureBoxGreenStart)).EndInit();
   3.154 +            this.tabPageCec.ResumeLayout(false);
   3.155 +            this.tabPageCec.PerformLayout();
   3.156              this.tabPageApp.ResumeLayout(false);
   3.157              this.tabPageApp.PerformLayout();
   3.158 -            ((System.ComponentModel.ISupportInitialize)(this.pictureBoxDemo)).EndInit();
   3.159              this.ResumeLayout(false);
   3.160              this.PerformLayout();
   3.161  
   3.162 @@ -945,7 +1023,6 @@
   3.163          private System.Windows.Forms.Label labelFontWidth;
   3.164          private System.Windows.Forms.Label labelFontHeight;
   3.165          private System.Windows.Forms.CheckBox checkBoxInverseColors;
   3.166 -        private System.Windows.Forms.PictureBox pictureBoxDemo;
   3.167          private System.Windows.Forms.TabPage tabPageApp;
   3.168          private System.Windows.Forms.Button buttonUpdate;
   3.169  		private System.Windows.Forms.CheckBox checkBoxAutoStart;
   3.170 @@ -971,6 +1048,12 @@
   3.171  		private System.Windows.Forms.PictureBox pictureBoxGreenStart;
   3.172          private System.Windows.Forms.ComboBox comboBoxOpticalDrives;
   3.173          private System.Windows.Forms.Label labelOpticalDriveEject;
   3.174 +        private System.Windows.Forms.TabPage tabPageCec;
   3.175 +        private System.Windows.Forms.CheckBox checkBoxCecEnabled;
   3.176 +        private System.Windows.Forms.Label labelHdmiPort;
   3.177 +        private System.Windows.Forms.ComboBox comboBoxHdmiPort;
   3.178 +        private System.Windows.Forms.CheckBox checkBoxCecMonitorOn;
   3.179 +        private System.Windows.Forms.CheckBox checkBoxCecMonitorOff;
   3.180      }
   3.181  }
   3.182  
     4.1 --- a/Server/MainForm.cs	Sat Sep 26 16:35:27 2015 +0200
     4.2 +++ b/Server/MainForm.cs	Sat Sep 26 17:55:51 2015 +0200
     4.3 @@ -187,7 +187,8 @@
     4.4              //CEC
     4.5              iCecManager = new ConsumerElectronicControl();
     4.6              OnWndProc += iCecManager.OnWndProc;
     4.7 -            iCecManager.Start(Handle,"CEC", 2);
     4.8 +            ResetCec();
     4.9 +
    4.10  
    4.11              //Setup notification icon
    4.12              SetupTrayIcon();
    4.13 @@ -1095,8 +1096,13 @@
    4.14                  comboBoxOpticalDrives.SelectedIndex = 0;
    4.15              }
    4.16  
    4.17 +            //CEC settings
    4.18 +            checkBoxCecEnabled.Checked = Properties.Settings.Default.CecEnabled;
    4.19 +            checkBoxCecMonitorOn.Checked = Properties.Settings.Default.CecMonitorOn;
    4.20 +            checkBoxCecMonitorOff.Checked = Properties.Settings.Default.CecMonitorOff;
    4.21 +            comboBoxHdmiPort.SelectedIndex = Properties.Settings.Default.CecHdmiPort - 1;
    4.22  
    4.23 -
    4.24 +            //Mini Display settings
    4.25              checkBoxReverseScreen.Checked = cds.ReverseScreen;
    4.26              checkBoxInverseColors.Checked = cds.InverseColors;
    4.27  			checkBoxShowVolumeLabel.Checked = cds.ShowVolumeLabel;
    4.28 @@ -2218,5 +2224,62 @@
    4.29              
    4.30              base.WndProc(ref aMessage);
    4.31          }
    4.32 +
    4.33 +        private void checkBoxCecEnabled_CheckedChanged(object sender, EventArgs e)
    4.34 +        {
    4.35 +            //Save CEC enabled status
    4.36 +            Properties.Settings.Default.CecEnabled = checkBoxCecEnabled.Checked;
    4.37 +            Properties.Settings.Default.Save();
    4.38 +            //
    4.39 +            ResetCec();
    4.40 +        }
    4.41 +
    4.42 +        private void comboBoxHdmiPort_SelectedIndexChanged(object sender, EventArgs e)
    4.43 +        {
    4.44 +            //Save CEC HDMI port
    4.45 +            Properties.Settings.Default.CecHdmiPort = Convert.ToByte(comboBoxHdmiPort.SelectedIndex);
    4.46 +            Properties.Settings.Default.CecHdmiPort++;
    4.47 +            Properties.Settings.Default.Save();
    4.48 +            //
    4.49 +            ResetCec();
    4.50 +        }
    4.51 +
    4.52 +        private void checkBoxCecMonitorOff_CheckedChanged(object sender, EventArgs e)
    4.53 +        {
    4.54 +            Properties.Settings.Default.CecMonitorOff = checkBoxCecMonitorOff.Checked;
    4.55 +            Properties.Settings.Default.Save();
    4.56 +            //
    4.57 +            ResetCec();
    4.58 +        }
    4.59 +
    4.60 +        private void checkBoxCecMonitorOn_CheckedChanged(object sender, EventArgs e)
    4.61 +        {
    4.62 +            Properties.Settings.Default.CecMonitorOn = checkBoxCecMonitorOn.Checked;
    4.63 +            Properties.Settings.Default.Save();
    4.64 +            //
    4.65 +            ResetCec();
    4.66 +        }
    4.67 +
    4.68 +        /// <summary>
    4.69 +        /// 
    4.70 +        /// </summary>
    4.71 +        private void ResetCec()
    4.72 +        {
    4.73 +            if (iCecManager==null)
    4.74 +            {
    4.75 +                //Thus skipping initial UI setup
    4.76 +                return;
    4.77 +            }
    4.78 +
    4.79 +            iCecManager.Stop();
    4.80 +            //
    4.81 +            if (Properties.Settings.Default.CecEnabled)
    4.82 +            {
    4.83 +                iCecManager.Start(Handle, "CEC",
    4.84 +                Properties.Settings.Default.CecHdmiPort,
    4.85 +                Properties.Settings.Default.CecMonitorOn,
    4.86 +                Properties.Settings.Default.CecMonitorOff);
    4.87 +            }
    4.88 +        }
    4.89      }
    4.90  }
     5.1 --- a/Server/MainForm.resx	Sat Sep 26 16:35:27 2015 +0200
     5.2 +++ b/Server/MainForm.resx	Sat Sep 26 17:55:51 2015 +0200
     5.3 @@ -132,60 +132,62 @@
     5.4    <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
     5.5    <data name="pictureBoxGreenStart.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     5.6      <value>
     5.7 -        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
     5.8 -        YQUAAAujSURBVFhHjZcJWM7ZHsf/wwwPl8GlbE2MpTAzimow2aqRVJPSam+RVkrSvrx5U6lUozehkCVp
     5.9 -        ikiakGxjG0P2cLMUU0TWq4w7cz/3/CMPd9zlfZ7v85739z/n9/2e7znn956/xKtA6S1A4j+gr42kJuAm
    5.10 -        UCLQJEA/u3b0s2+H3Bb4XWCfQICA5n/K0xJ/h/O9Hx8aJJINE0jXtGvLwOmdGDinK3q+A3BUmmETZdQC
    5.11 -        J9EetUCLgbO7MnBGZyHsE1nQBoGvPyjk/xUgEsTLxNouXTEO1GVJpgfZu9PYfnAzefuzydv3BqJdWLGJ
    5.12 -        dSUrCVC5oju/L1rOXelv3yJkhUCX94R8SMA/fxNL8cZ+2cK+1tJq7TmdMQoaTlJeBAUVOe+TtpK/8731
    5.13 -        TXvTj5ksSJuJvpcGQ4V4kWvju27ou7V/63xLQyZvCQoBouNXMvlw9264LP+OzT+uImePig0l6e9jj/j9
    5.14 -        Lv70XEVOqaolx3D37nxm20YWYilzyFytIloE/N68+K2APlOlNXqeargnW7NmZxKqgrjXKIx/je3xZOz4
    5.15 -        AET8bR/RP/3NuMyiRNyTrNH3Vkdj2kfyknz+ngB59i+e+rUIEApX6s7rhlnQlyRtDSd+Y/BrbA4mYUsI
    5.16 -        q/OXsnuniv27V1NYtALVtmgS80JJ3Poay3NDWiD3jd8UTJwYK2P55jDMg3TRFxOTJ9gqQOaW/tEcIN2r
    5.17 -        85LJLYfO6ojhwl74pDgSmunZgrA1nkRkeXOsMINnpdt5UriepwVZPC/eyPP9BZwuSCFlw0KiNngRuV5g
    5.18 -        nRfh2Z6ErxXjV3sSkiHDA68kW0Z5q6Hj8qkswkcW8aopQJKanvlJlZedJREsm7ioDwbuPfBOcsAzyV4I
    5.19 -        cWDB944oVZ40pERzP9qTe0vsaAiz42G0HY8S5/JQaUdWsiOq4iWEZM9hUYYT/gIL053wTXXEK9lBkDvi
    5.20 -        mWiHvlsPTAL7ti5F278/8ZOkxgYfqY+VZDTcuTMTF/UWndSZEzsF57gpuCZZMC/ZkoxENxqWenHf35wH
    5.21 -        QaY8ijLlabwpj1Mtqct0wi/ZiooqJYevprO2LIToTa4ECzGRG+aTviOa3AMq5sSYY+Dak7G+6ozy6I7g
    5.22 -        dG6o95ak2hoPefaFZsEajPLshq5zD+yjxjNDOZHZCUbMTTRh/3J3Hihm0+A/jseRhjxPNKRJZcjjHDOO
    5.23 -        Z1kQlG3KzktWbD9vQ8kFX/ZdWsb+CyspP7+OktOZLFw5E9uQ8SK3GvrzumAR1k9ehhM3brhL8rFrpymO
    5.24 -        iJ1iAHpunzJ05l+YGm6AbcwonBLG4Bg3hmqlKw9CLXkkNtLzBF2aMnRpzhnJwx3fkpk+gZQ9xuyttuSH
    5.25 -        i7psPK1L5hE90vcbk13hTu6pNBwVU7BYrM8QUSV15v4F64jPGej4CX2+k7rL9hvqzfsUm4h+jHTtxKAZ
    5.26 -        7TANGsJUhQ528SNwV47nTpg9VUutuJI9m+qt06grMOJR8RjqK0yYH6vHrioHDtyxYef1EWw9r0X2yS/I
    5.27 -        OmLCluMLSd4TwZQAPYwXajPIqT1fze6IZYgG43zFibCSZkpCha/p4l5ClSYj3Toz1LkDo/3VsIwZinX8
    5.28 -        MBRxFsSGORKodMA5dCIekZOJjJtNYYE3h47a4ZpmyLH7ARysd6Tk1jfkXxnExjND2HxyMtvOhuKWao9x
    5.29 -        gLaoij3RmtWBL+Z2EkeyL1ZhmrIDSVJvSynWOlwT20hN9D26iKrVCQP/Lpgq+mEVPwi75Wb4Zq8gaHsZ
    5.30 -        0YeuEVFWjt8mJVMjRuCV8DWRu+w5+mw5hxq9Kas1ovDqYLZUapFXOY28S3FMCh3NuEANdL27MEwcweGu
    5.31 -        Xfku+DOmLx0oC8iVeltI3zvFDMAp5nNG+3ZnpG83DIPFcVH2xCKhPx5rTzBj/U1Gr61HJ/c50/a9IvXi
    5.32 -        P9lwqZEZqROwWfElPhVzSLu/gqx7YWTUzCHxujvRF5cyd8c8jEIHMyZYja8Xq6Pj2R25ytpE9Mc5Xhsx
    5.33 -        +SKp1xRpmWN0f9yWD2N8YG9GBfbCSKGBWaJAjCn6Icfo4n+GdtG3aff9EzS2vMR83x+E/tLE3HR9jp37
    5.34 -        Hh/VRMYG9MJYqc2klSMYrxjMN/49cYoeilG0yKfUwFC4rOevIeKfMWvZUFwShAAL4UCvyZLPVLEp/DP0
    5.35 -        mBI1UAwYgHnSIKzSBmAWGcGIgIO0cT+OFHwdKfEBHbOaGFH8D2y27yM+bwLPH62joW4N16rTKTq4gJzi
    5.36 -        OZQdDqH6ogpV6igsUz/HIlUL42VDGBuujUnYEHzTx4g6o42Y/EpJ3UgyGefzV2JzTZiRrIdFkg7TVo3A
    5.37 -        LuNLJvjl08+1FGl2BZLfBaSYu0jChV55LzHKDKXsiAWvHoTw6v48muvm8vz2bJ78zZ0X15fw8EosAfFa
    5.38 -        2K4Zhu3akZinGTApXp9p8QYoNptjJSbdc5LkJrXrLnX+zPYjVLusCNlizfTMsczYMI6Z6Q6McC6gg+VW
    5.39 -        JLs9SO4nkIKu0Sa+nvZZT3FQGVFXZcXLu068rDGn+YYxzVfH0XzZiqYqf6rKFzF9xRBmbTFgVu5E7NdN
    5.40 -        wkb1LQvWW5NR4ihqQnu6fCX1l8SnrbBiV+T6Caza64nXFnPc882xUCoZPP8HBoXtRjfhCP1jT9Aj5jwd
    5.41 -        lt1APeUYKfkjeV41meaqb2i+MoqmC3o0nTHg5ZmpPLkYwu5sG+ZuHIlP8bd47LLGeZs9LptsSS31JSnf
    5.42 -        Ql7/04K7nfTHy8VS9zGSpbFfb4pOLyG+zI0FO+2EXVGMi3VhcsJkrJLHYpZsj2FaLNqrTjFWlczeoi9o
    5.43 -        +mUsTSeH0nRiCE1HtGg6JCrkTzY0nokkOXE0fsUmBB9xZNFBVxaUzieixJP8UxE4RmmhNlHyEQI+arkN
    5.44 -        iU9n4cLJzJJZbD+rQFHuQsBuOwJ2WRBWaoaibArKUlOiiowJ2mZGUKEDR8v1qDpsTM2Br2n8cTDPivvx
    5.45 -        pGQkdYfdOHd4qfg7nkDUUQdiznoR9fNiog4tIve0ktxDPi23o487ST1auOUbkfi06TFOmjfaQ40T1Wnk
    5.46 -        n1OQcsqT9PPerLvqRe51D36onk/htXlsr5rHDxdcyKywZnW5JduOz2HPcS9+/EkUouNhbNgrLC60QbF3
    5.47 -        GimXfEi7Gk7S+Qg2nV/G8RuZmC8ZIM9eITg/buFuvaOLQKee30r5M5UjOX93HcVVMeT+LZDC2mD21AdT
    5.48 -        0RDCscYwfnkawelHERy4vYj8ShdWH7IjqdQCZZEpCoGlJRasODqdNZcWsP5WBFnVCvKuxvFz7ToCV01C
    5.49 -        3UTaJbi6vncnfOPCR+KBurqxVBYlduqV+hzKb4gr2M1AykWFO/EomnMvlFS9jKP6t3huCFx+tpRfHoRz
    5.50 -        9Ncg9gtBpbf8Kb4dwE4hurA2nG03Iyi5EUdlXQ5rS7xk8sPte0iD5I3/JwFyQLalYz9JR1hUHr3enprG
    5.51 -        An6uSeTgrUCOCRcqH0dz9UUsN39LoPb3RO78kUStwC3RrmqO49wzJcceRlP+ayilN4M5ens51Q/yUe3w
    5.52 -        Qv7L/6uBZCs4PvnTrVh2oDUoH40OfSQdUaD2O0TpcaUmn5sNm6msVXLqTgBn65dw6WEYVU8iufYkmmtP
    5.53 -        o7n8OIrKB6Gcqgvip5oATt5WcP3eRm7cK8Y7xVRe84PizFuK3O1bef7kwL+LEJ01xcbM6W//sdjRTtxp
    5.54 -        KKPhaSk372dx+W4c54XNlbV+nK1ZSGVNEBfvKqm+t5b6xyXUNZaTnOfF4OkdUBsvFYpcAz5E/t4mfO8l
    5.55 -        9fXJaCvQrW0HyUAIKZItnBHzDWuLg/m5ait37h/g781nW3Cv8QinRGzLPgVzl00Qt532iDGlHTUlc5FD
    5.56 -        rXXH/zvHfxXwzuloJ2/ONp9Iul11pEi1CVJFLzPprrjNvHjzVizfbF6K2K9i2Y531ZViP+4sjRFjesuz
    5.57 -        lovNh4jf5v9vD997jRYbVC5YAn0FBgt8ITBcQEfgyzcxDfHdRZ7x/yJuzf0vc27lpI33P0QAAAAASUVO
    5.58 -        RK5CYII=
    5.59 +        iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAC45JREFUWEd9
    5.60 +        lgdYVUcaho8l+Ohq1FWwETR2TSJIiRpsQEQEgiDVRkeqgoj0cvEiICASuYgKdhGJ2BAJKmKLLUaxoy4W
    5.61 +        0ICiWFcwbrLvzsGymrB7nue9d+7cmf/75p9yRuJ1yH+B/0kfG0ld4CEoFjQK6GunRl97NeSy4HfBfkGw
    5.62 +        QKulGO/5QPOjHy01FsGGCzK17NowYHpHBjh3QS+gP45KM2xijZpxEuVRcwczYHYXBszoJIx9IhtaJ/i6
    5.63 +        pZgfan70488NRYAkWXiIWxeMQ3RYmO1N7p4Mth/aRP6BXPL3v0WUC8s3sqZ4OcEqd3Tm9GGwaxf62Tcb
    5.64 +        WSro/FHsDzTfF/79238NiA5afayllUOcO2EUOoLU/Gi2la//WLQFtrz93vhjNnMzZqLvq8kwYV7E2vBh
    5.65 +        NvQ92n1sQBZvrnwj/pUsPsKrK25LvmPTjytYv1fFuuLMj9n7J/7yv4r1JarmGCO8uvGZbWvZiOU7A+9M
    5.66 +        NH/83rTgvYHeU6VVej7qeKVZs2pXKqptiW8oTHrD9iSydrSAqH/fRrTPfNsve2cKXqnW6PtpoDmtlTwl
    5.67 +        n39kQB79y2eBzRXC4XIdz66YhX5J6pYokjaEvWFTGMmbw1lZsIg9u1Qc2LOSwp1LUW2NIyU/gpQtb1iS
    5.68 +        F96M3DZpYxiJoq/Mkk2RmIfqoC8GJg/wnQFZW/pXU7B0v9ZXFrccNqsDhvN64p/uSES2TzORq3yIzvHj
    5.69 +        eGEWz0u287RwLc+25fCiaAMvDmzjzLZ00tfNI3adLzFrBWt8icr1IWq16L/Sh/AsGW98U20Z5aeOttun
    5.70 +        sgl/2cDrxmBJanweKFVccZVTXzpxfm8MvLrjl+qAT6q9MOLA3O8dUap8qE+P40GcD/cX2lEfacejODse
    5.71 +        p7jwSGlHTpojqqKFhOc6Mz/LiSDBvEwnApY54pvmIMQd8UmxQ9+jOyYhfd5NRZt/Pg2UpIZ6f6m3lWQ0
    5.72 +        wrUTE+f3Eo00cE6YgmviFNxTLfBMsyQrxYP6Rb48CDLnYagpj2NNeZZkypNlltRmOxGYZkV5pZIj1zJZ
    5.73 +        XRpO3EZ3woSZmHVzyNwRR95BFc7x5hi492BsgAajvLshNF3r6/wkqabaWx59oVmYJqN8uqLj2h372PHM
    5.74 +        UE5kdrIRLikmHFjixUPFbOqDxvEkxpAXKYY0qgx5st6MEzkWhOaasuuyFdsv2FB8MYD9lxdz4OJyyi6s
    5.75 +        ofhMNvOWz8Q2fLyIrY6+Z2csIvvK03Dy5k0vSd52alpii9gp+qPn8SnDZv6NqVEG2MaPwil5DI6JY6hS
    5.76 +        uvMwwpLHYiG9SNahMUuHpvW6PNrxLdmZE0jfa8y+Kkt+uKTDhjM6ZB/VI/OAMbnlXuSdzsBRMQWLBfoM
    5.77 +        FaektsvfsI7+nAGOn9D7O6mbnH5DPc9PsYnui657RwbOUMM0dChTFdrYJY3ESzmeu5H2VC6y4mrubKq2
    5.78 +        TKN2mxGPi8ZQV27CnAQ9dlc6cPCuDbtujGTLhcHknvqCnKMmbD4xj7S90UwJ1sN43hAGOrXjq9kdsAzX
    5.79 +        ZFyA2BFW0kxJuAgwXdBTuNJC16MTw1zbMzpIHcv4YVgnDUeRaEFCpCMhSgdcIybiHTOZmMTZFG7z4/Ax
    5.80 +        O9wzDDn+IJhDdY4U3/6GgqsD2XB2KJtOTWbruQg8ltljHDxEnIo9GDyrPV+4dBRbsg9WkVpyBlKlXpZS
    5.81 +        gnWUFrYxWuh7dxanVkcMgjpjquiLVdJA7JaYEZC7lNDtpcQdvk50aRmBG5VMjR6Jb/LXxOy259jzJRxu
    5.82 +        8KO0xojCa4PYXDGY/Ipp5F9OZFLEaMaFaKLj15nhYguOcO/Cd2GfMX3RANlAntTLQvreKb4/TvGfMzqg
    5.83 +        G7oBXTEME9tF2QOL5H54rz7JjLW3GL26Du28F0zb/5pll/7NussNzFg2AZulX+Jf7kzGg6Xk3I8kq9qZ
    5.84 +        lBtexF1ahMsOT4wiBjEmTJ2vF2ig7dMN+ZS1ie6Ha9IQxOB3Sj2nSIsd4/rhsWQ440N6MSqkJ0YKTcxS
    5.85 +        BPGm6Icfp3PQWdTi7qD2/VM0N7/CfP8fRPzSiEumPsfPf4+/aiJjg3tirBzCpOUjGa8YxDdBPXCKG4ZR
    5.86 +        nIin1MRQZFkvSFPUf8asxcNwSxYGLEQGek6W/KeKRRGUpceU2AGiQ3/MUwdildEfs5hoRgYforXXCaSw
    5.87 +        G0gpD+mQ08jIon9hs30/SfkTePF4DfW1q7helcnOQ3NZX+RM6ZFwqi6pUC0bheWyz7FYNhjjxUMZGzUE
    5.88 +        k8ihBGSOEefMEMTgl0saRpLJOP+/k5Bnwow0PSxStZm2YiR2WV8yIbCAvu4lSLPLkQIvIsXfQxJZ6Jn/
    5.89 +        CqPsCEqPWvD6YTivH3jSVOvCizuzefoPL17eWMijqwkEJw3GdtVwbFfrYp5hwKQkfaYlGaDYZI6VGHSP
    5.90 +        SZKHpNZN6vSZbStUu60I32zN9OyxzFg3jpmZDox03UZ7yy1IdnuRvE4ihV6ndVId7XKe4aAyorbSilf3
    5.91 +        nHhVbU7TTWOaro2j6YoVjZVBVJbNZ/rSoczabMCsvInYr5mEjepb5q61JqvYUZwJ7ej8ldRPEk8bkYrd
    5.92 +        MWsnsGKfD76bzfEqMMdCqWTQnB8YGLkHneSj9Es4Sff4C7RffBON9OOkF+jyonIyTZXf0HR1FI0X9Wg8
    5.93 +        a8Crs1N5eimcPbk2uGzQxb/oW7x3W+O61R63jbYsKwkgtcBCnv8zQltN+uPVAqnbGMnSOLAXO88sJKnU
    5.94 +        g7m77ES6YhmX4Mbk5MlYpY3FLM0ew4wEhqw4zVhVGvt2fkHjL2NpPDWMxpNDaTw6mMbD4oT8yYaGszGk
    5.95 +        pYwmsMiEsKOOzD/kztySOUQX+1BwOhrH2MGoT5T8hYFWb97JktRJZOFUdvEstp9ToChzI3iPHcG7LYgs
    5.96 +        MUNROgVliSmxO40J3WpGaKEDx8r0qDxiTPXBr2n4cRDPi/rytFiX2iMenD+ySLyOJxB7zIH4c77E/ryA
    5.97 +        2MPzyTujJO+wf/PtqG1HqXuzdvOtRJJadx8neY72VudkVQYF5xWkn/Yh84Ifa675knfDmx+q5lB43ZPt
    5.98 +        lZ78cNGN7HJrVpZZsvWEM3tP+PLjT+IgOhHJun0ixYU2KPZNI/2yPxnXoki9EM3GC4s5cTMb84X95dEr
    5.99 +        hGbb91eytyY69vhWKpip1OXCvTUUVcaT948QCmvC2FsXRnl9OMcbIvnlWTRnHkdz8M58CircWHnYjtQS
   5.100 +        C5Q7TVEIFhVbsPTYdFZdnsva29HkVCnIv5bIzzVrCFkxCQ0TabfQ6vL+SvaBgVYCDQ1jqTRWrNSrdesp
   5.101 +        uymuYLdCKBMn3MnHcZx/qaTyVSJVvyVxU3Dl+SJ+eRjFsV9DOSAMldwOouhOMLuE6cKaKLbeiqb4ZiIV
   5.102 +        tetZXewrix9p110aKHTa/MWAXCGeth36StoiRWVxa+2pbtjGz9UpHLodwnGRhYoncVx7mcCt35Kp+T2F
   5.103 +        u3+kUiO4LcqVTYmcf67k+KM4yn6NoORWGMfuLKHqYQGqHb7Ir/y/G0i2QuMTWatFA29NqLXvLWmLA+qA
   5.104 +        Q6weV6sLuFW/iYoaJafvBnOubiGXH0VS+TSG60/juP4sjitPYql4GMHp2lB+qg7m1B0FN+5v4Ob9IvzS
   5.105 +        TeU5PyT2vKWI3e6dzl8M/NmEQEsszPX97NuKFe3E3fpS6p+VcOtBDlfuJXJBpLmiJpBz1fOoqA7l0j0l
   5.106 +        VfdXU/ekmNqGMtLyfRk0vT3q46VCEat/S+J/MfAh4mkj6NqmvWQgjOyUUzgj/htWF4Xxc+UW7j44yD+b
   5.107 +        zjVzv+Eop0Xd5v0KXBZPELeddog+JR20JHMRQ13QvOJbosXKDxGPnA2N1p9IOl20pRj1CVJ5TzPpnrjN
   5.108 +        vBTXOfl2K99sXom6X8W0neiiIyW07SSNEX16CeR0tmop7jtarGwJ8bQVdBL0EQwSfCEYIdAWfPm2TlPQ
   5.109 +        WSC3/b/CbwiR/gNzbuWksIMBOAAAAABJRU5ErkJggg==
   5.110  </value>
   5.111    </data>
   5.112 +  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
   5.113 +    <value>315, 17</value>
   5.114 +  </metadata>
   5.115    <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
   5.116      <value>405, 17</value>
   5.117    </metadata>
     6.1 --- a/Server/Properties/Settings.Designer.cs	Sat Sep 26 16:35:27 2015 +0200
     6.2 +++ b/Server/Properties/Settings.Designer.cs	Sat Sep 26 17:55:51 2015 +0200
     6.3 @@ -117,5 +117,53 @@
     6.4                  this["OpticalDriveToEject"] = value;
     6.5              }
     6.6          }
     6.7 +        
     6.8 +        [global::System.Configuration.UserScopedSettingAttribute()]
     6.9 +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    6.10 +        [global::System.Configuration.DefaultSettingValueAttribute("False")]
    6.11 +        public bool CecEnabled {
    6.12 +            get {
    6.13 +                return ((bool)(this["CecEnabled"]));
    6.14 +            }
    6.15 +            set {
    6.16 +                this["CecEnabled"] = value;
    6.17 +            }
    6.18 +        }
    6.19 +        
    6.20 +        [global::System.Configuration.UserScopedSettingAttribute()]
    6.21 +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    6.22 +        [global::System.Configuration.DefaultSettingValueAttribute("1")]
    6.23 +        public byte CecHdmiPort {
    6.24 +            get {
    6.25 +                return ((byte)(this["CecHdmiPort"]));
    6.26 +            }
    6.27 +            set {
    6.28 +                this["CecHdmiPort"] = value;
    6.29 +            }
    6.30 +        }
    6.31 +        
    6.32 +        [global::System.Configuration.UserScopedSettingAttribute()]
    6.33 +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    6.34 +        [global::System.Configuration.DefaultSettingValueAttribute("True")]
    6.35 +        public bool CecMonitorOn {
    6.36 +            get {
    6.37 +                return ((bool)(this["CecMonitorOn"]));
    6.38 +            }
    6.39 +            set {
    6.40 +                this["CecMonitorOn"] = value;
    6.41 +            }
    6.42 +        }
    6.43 +        
    6.44 +        [global::System.Configuration.UserScopedSettingAttribute()]
    6.45 +        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    6.46 +        [global::System.Configuration.DefaultSettingValueAttribute("True")]
    6.47 +        public bool CecMonitorOff {
    6.48 +            get {
    6.49 +                return ((bool)(this["CecMonitorOff"]));
    6.50 +            }
    6.51 +            set {
    6.52 +                this["CecMonitorOff"] = value;
    6.53 +            }
    6.54 +        }
    6.55      }
    6.56  }
     7.1 --- a/Server/Properties/Settings.settings	Sat Sep 26 16:35:27 2015 +0200
     7.2 +++ b/Server/Properties/Settings.settings	Sat Sep 26 17:55:51 2015 +0200
     7.3 @@ -26,5 +26,17 @@
     7.4      <Setting Name="OpticalDriveToEject" Type="System.String" Scope="User">
     7.5        <Value Profile="(Default)">None</Value>
     7.6      </Setting>
     7.7 +    <Setting Name="CecEnabled" Type="System.Boolean" Scope="User">
     7.8 +      <Value Profile="(Default)">False</Value>
     7.9 +    </Setting>
    7.10 +    <Setting Name="CecHdmiPort" Type="System.Byte" Scope="User">
    7.11 +      <Value Profile="(Default)">1</Value>
    7.12 +    </Setting>
    7.13 +    <Setting Name="CecMonitorOn" Type="System.Boolean" Scope="User">
    7.14 +      <Value Profile="(Default)">True</Value>
    7.15 +    </Setting>
    7.16 +    <Setting Name="CecMonitorOff" Type="System.Boolean" Scope="User">
    7.17 +      <Value Profile="(Default)">True</Value>
    7.18 +    </Setting>
    7.19    </Settings>
    7.20  </SettingsFile>
    7.21 \ No newline at end of file