# HG changeset patch # User StephaneLenclud # Date 1471627683 -7200 # Node ID 448e6a616c22db21eb5c545ef2284009764c6c9e # Parent 2e4d2558bb21d0d8d66ce205a2cb12a847cde667 Removing Input tab as we don't need to specific features anymore. diff -r 2e4d2558bb21 -r 448e6a616c22 Server/App.config --- a/Server/App.config Fri Aug 19 19:18:54 2016 +0200 +++ b/Server/App.config Fri Aug 19 19:28:03 2016 +0200 @@ -25,12 +25,6 @@ False - - None - - - None - False diff -r 2e4d2558bb21 -r 448e6a616c22 Server/FormMain.Designer.cs --- a/Server/FormMain.Designer.cs Fri Aug 19 19:18:54 2016 +0200 +++ b/Server/FormMain.Designer.cs Fri Aug 19 19:28:03 2016 +0200 @@ -92,12 +92,6 @@ this.checkBoxShowVolumeLabel = new System.Windows.Forms.CheckBox(); this.checkBoxMute = new System.Windows.Forms.CheckBox(); this.trackBarMasterVolume = new System.Windows.Forms.TrackBar(); - this.tabPageInput = new System.Windows.Forms.TabPage(); - this.comboBoxOpticalDrives = new System.Windows.Forms.ComboBox(); - this.labelOpticalDriveEject = new System.Windows.Forms.Label(); - this.pictureBoxGreenStart = new System.Windows.Forms.PictureBox(); - this.labelStartFileName = new System.Windows.Forms.Label(); - this.buttonSelectFile = new System.Windows.Forms.Button(); this.tabPageCec = new System.Windows.Forms.TabPage(); this.groupBoxCecLogOptions = new System.Windows.Forms.GroupBox(); this.checkBoxCecLogNoPoll = new System.Windows.Forms.CheckBox(); @@ -153,8 +147,6 @@ this.tabPageDesign.SuspendLayout(); this.tabPageAudio.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.trackBarMasterVolume)).BeginInit(); - this.tabPageInput.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxGreenStart)).BeginInit(); this.tabPageCec.SuspendLayout(); this.groupBoxCecLogOptions.SuspendLayout(); this.tabPageHarmony.SuspendLayout(); @@ -588,7 +580,6 @@ this.tabControl.Controls.Add(this.tabPageClients); this.tabControl.Controls.Add(this.tabPageDesign); this.tabControl.Controls.Add(this.tabPageAudio); - this.tabControl.Controls.Add(this.tabPageInput); this.tabControl.Controls.Add(this.tabPageCec); this.tabControl.Controls.Add(this.tabPageHarmony); this.tabControl.Controls.Add(this.tabPageEvent); @@ -783,69 +774,6 @@ this.toolTip.SetToolTip(this.trackBarMasterVolume, "Master Volume"); this.trackBarMasterVolume.Scroll += new System.EventHandler(this.trackBarMasterVolume_Scroll); // - // tabPageInput - // - this.tabPageInput.Controls.Add(this.comboBoxOpticalDrives); - this.tabPageInput.Controls.Add(this.labelOpticalDriveEject); - this.tabPageInput.Controls.Add(this.pictureBoxGreenStart); - this.tabPageInput.Controls.Add(this.labelStartFileName); - this.tabPageInput.Controls.Add(this.buttonSelectFile); - this.tabPageInput.Location = new System.Drawing.Point(4, 22); - this.tabPageInput.Name = "tabPageInput"; - this.tabPageInput.Padding = new System.Windows.Forms.Padding(3); - this.tabPageInput.Size = new System.Drawing.Size(752, 385); - this.tabPageInput.TabIndex = 6; - this.tabPageInput.Text = "Input"; - this.tabPageInput.UseVisualStyleBackColor = true; - // - // comboBoxOpticalDrives - // - this.comboBoxOpticalDrives.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.comboBoxOpticalDrives.FormattingEnabled = true; - this.comboBoxOpticalDrives.Location = new System.Drawing.Point(113, 53); - this.comboBoxOpticalDrives.Name = "comboBoxOpticalDrives"; - this.comboBoxOpticalDrives.Size = new System.Drawing.Size(55, 21); - this.comboBoxOpticalDrives.TabIndex = 18; - this.comboBoxOpticalDrives.SelectedIndexChanged += new System.EventHandler(this.comboBoxOpticalDrives_SelectedIndexChanged); - // - // labelOpticalDriveEject - // - this.labelOpticalDriveEject.AutoSize = true; - this.labelOpticalDriveEject.Location = new System.Drawing.Point(0, 56); - this.labelOpticalDriveEject.Name = "labelOpticalDriveEject"; - this.labelOpticalDriveEject.Size = new System.Drawing.Size(107, 13); - this.labelOpticalDriveEject.TabIndex = 3; - this.labelOpticalDriveEject.Text = "Optical drive to eject:"; - // - // pictureBoxGreenStart - // - this.pictureBoxGreenStart.Image = ((System.Drawing.Image)(resources.GetObject("pictureBoxGreenStart.Image"))); - this.pictureBoxGreenStart.Location = new System.Drawing.Point(3, 6); - this.pictureBoxGreenStart.Name = "pictureBoxGreenStart"; - this.pictureBoxGreenStart.Size = new System.Drawing.Size(32, 32); - this.pictureBoxGreenStart.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; - this.pictureBoxGreenStart.TabIndex = 2; - this.pictureBoxGreenStart.TabStop = false; - // - // labelStartFileName - // - this.labelStartFileName.AutoSize = true; - this.labelStartFileName.Location = new System.Drawing.Point(72, 16); - this.labelStartFileName.Name = "labelStartFileName"; - this.labelStartFileName.Size = new System.Drawing.Size(33, 13); - this.labelStartFileName.TabIndex = 1; - this.labelStartFileName.Text = "None"; - // - // buttonSelectFile - // - this.buttonSelectFile.Location = new System.Drawing.Point(41, 11); - this.buttonSelectFile.Name = "buttonSelectFile"; - this.buttonSelectFile.Size = new System.Drawing.Size(25, 23); - this.buttonSelectFile.TabIndex = 0; - this.buttonSelectFile.Text = "..."; - this.buttonSelectFile.UseVisualStyleBackColor = true; - this.buttonSelectFile.Click += new System.EventHandler(this.buttonSelectFile_Click); - // // tabPageCec // this.tabPageCec.Controls.Add(this.groupBoxCecLogOptions); @@ -1401,9 +1329,6 @@ this.tabPageAudio.ResumeLayout(false); this.tabPageAudio.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.trackBarMasterVolume)).EndInit(); - this.tabPageInput.ResumeLayout(false); - this.tabPageInput.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.pictureBoxGreenStart)).EndInit(); this.tabPageCec.ResumeLayout(false); this.tabPageCec.PerformLayout(); this.groupBoxCecLogOptions.ResumeLayout(false); @@ -1480,13 +1405,7 @@ private System.Windows.Forms.CheckBox checkBoxMute; private System.Windows.Forms.CheckBox checkBoxShowVolumeLabel; private System.Windows.Forms.Label labelDefaultAudioDevice; - private System.Windows.Forms.TabPage tabPageInput; - private System.Windows.Forms.Button buttonSelectFile; private System.Windows.Forms.OpenFileDialog openFileDialog; - private System.Windows.Forms.Label labelStartFileName; - private System.Windows.Forms.PictureBox pictureBoxGreenStart; - private System.Windows.Forms.ComboBox comboBoxOpticalDrives; - private System.Windows.Forms.Label labelOpticalDriveEject; private System.Windows.Forms.TabPage tabPageCec; private System.Windows.Forms.CheckBox checkBoxCecEnabled; private System.Windows.Forms.Label labelHdmiPort; diff -r 2e4d2558bb21 -r 448e6a616c22 Server/FormMain.Hid.cs --- a/Server/FormMain.Hid.cs Fri Aug 19 19:18:54 2016 +0200 +++ b/Server/FormMain.Hid.cs Fri Aug 19 19:28:03 2016 +0200 @@ -21,8 +21,6 @@ [System.ComponentModel.DesignerCategory("Code")] public class FormMainHid : Form { - [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "SwitchToThisWindow")] - public static extern void SwitchToThisWindow([System.Runtime.InteropServices.InAttribute()] System.IntPtr hwnd, [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] bool fUnknown); // public delegate void OnHidEventDelegate(object aSender, Hid.Event aHidEvent); @@ -141,19 +139,6 @@ Usage = (Hid.Usage.WindowsMediaCenterRemoteControl) aHidEvent.Usages[0] }; Properties.Settings.Default.EarManager.TriggerEvent(e); - - //Old legacy hard coded stuff - //TODO: remove it - switch (aHidEvent.Usages[0]) - { - case (ushort) Hid.Usage.WindowsMediaCenterRemoteControl.GreenStart: - HandleGreenStart(); - break; - case (ushort) Hid.Usage.WindowsMediaCenterRemoteControl.Eject: - case (ushort) Hid.Usage.WindowsMediaCenterRemoteControl.Ext2: - HandleEject(); - break; - } } else if (aHidEvent.UsagePage == (ushort) Hid.UsagePage.Consumer) { @@ -163,12 +148,6 @@ Usage = (Hid.Usage.ConsumerControl) aHidEvent.Usages[0] }; Properties.Settings.Default.EarManager.TriggerEvent(e); - - //Keep this for debug when only ThinkPad keyboard is available - //if (aHidEvent.Usages[0] == (ushort)Hid.Usage.ConsumerControl.ThinkPadFullscreenMagnifier) - //{ - // HandleEject(); - //} } } else if (aHidEvent.IsKeyboard) @@ -189,259 +168,9 @@ } } - /// - /// - /// - /// - private void CheckLastError(string aPrefix) - { - string errorMessage = new Win32Exception(Marshal.GetLastWin32Error()).Message; - Debug.WriteLine(aPrefix + Marshal.GetLastWin32Error().ToString() + ": " + errorMessage); - } + - /// - /// - /// - /// - /// - private IntPtr MarshalToPointer(object data) - { - IntPtr buf = Marshal.AllocHGlobal( - Marshal.SizeOf(data)); - Marshal.StructureToPtr(data, - buf, false); - return buf; - } - - /// - /// - /// - /// - private SafeFileHandle OpenVolume(string aDriveName) - { - return Function.CreateFile("\\\\.\\" + aDriveName, - SharpLib.Win32.FileAccess.GENERIC_READ, - SharpLib.Win32.FileShare.FILE_SHARE_READ | SharpLib.Win32.FileShare.FILE_SHARE_WRITE, - IntPtr.Zero, - CreationDisposition.OPEN_EXISTING, - 0, - IntPtr.Zero); - } - - /// - /// - /// - /// - /// - private bool LockVolume(SafeFileHandle aVolume) - { - //Hope that's doing what I think it does - IntPtr dwBytesReturned=new IntPtr(); - //Should not be needed but I'm not sure how to pass NULL in there. - OVERLAPPED overlapped=new OVERLAPPED(); - - int tries = 0; - const int KMaxTries = 100; - const int KSleepTime = 10; - bool success = false; - - while (!success && tries < KMaxTries) - { - success = Function.DeviceIoControl(aVolume, Const.FSCTL_LOCK_VOLUME, IntPtr.Zero, 0, IntPtr.Zero, 0, dwBytesReturned, ref overlapped); - System.Threading.Thread.Sleep(KSleepTime); - tries++; - } - - CheckLastError("Lock volume: "); - - return success; - } - - /// - /// - /// - /// - /// - private bool DismountVolume(SafeFileHandle aVolume) - { - //Hope that's doing what I think it does - IntPtr dwBytesReturned = new IntPtr(); - //Should not be needed but I'm not sure how to pass NULL in there. - OVERLAPPED overlapped=new OVERLAPPED(); - - bool res = Function.DeviceIoControl(aVolume, Const.FSCTL_DISMOUNT_VOLUME, IntPtr.Zero, 0, IntPtr.Zero, 0, dwBytesReturned, ref overlapped); - CheckLastError("Dismount volume: "); - return res; - } - - - - /// - /// - /// - /// - /// - /// - private bool PreventRemovalOfVolume(SafeFileHandle aVolume, bool aPreventRemoval) - { - //Hope that's doing what I think it does - IntPtr dwBytesReturned = new IntPtr(); - //Should not be needed but I'm not sure how to pass NULL in there. - OVERLAPPED overlapped = new OVERLAPPED(); - // - PREVENT_MEDIA_REMOVAL preventMediaRemoval = new PREVENT_MEDIA_REMOVAL(); - preventMediaRemoval.PreventMediaRemoval = Convert.ToByte(aPreventRemoval); - IntPtr preventMediaRemovalParam = MarshalToPointer(preventMediaRemoval); - - bool result = Function.DeviceIoControl(aVolume, Const.IOCTL_STORAGE_MEDIA_REMOVAL, preventMediaRemovalParam, Convert.ToUInt32(Marshal.SizeOf(preventMediaRemoval)), IntPtr.Zero, 0, dwBytesReturned, ref overlapped); - CheckLastError("Media removal: "); - Marshal.FreeHGlobal(preventMediaRemovalParam); - - return result; - } - - /// - /// Eject optical drive media opening the tray if any. - /// - /// - /// - private bool MediaEject(SafeFileHandle aVolume) - { - //Hope that's doing what I think it does - IntPtr dwBytesReturned = new IntPtr(); - //Should not be needed but I'm not sure how to pass NULL in there. - OVERLAPPED overlapped=new OVERLAPPED(); - - bool res = Function.DeviceIoControl(aVolume, Const.IOCTL_STORAGE_EJECT_MEDIA, IntPtr.Zero, 0, IntPtr.Zero, 0, dwBytesReturned, ref overlapped); - CheckLastError("Media eject: "); - return res; - } - - /// - /// Close an optical drive tray. - /// - /// - /// - private bool MediaLoad(SafeFileHandle aVolume) - { - //Hope that's doing what I think it does - IntPtr dwBytesReturned = new IntPtr(); - //Should not be needed but I'm not sure how to pass NULL in there. - OVERLAPPED overlapped=new OVERLAPPED(); - - bool res = Function.DeviceIoControl(aVolume, Const.IOCTL_STORAGE_LOAD_MEDIA, IntPtr.Zero, 0, IntPtr.Zero, 0, dwBytesReturned, ref overlapped); - CheckLastError("Media load: "); - return res; - } - - /// - /// - /// - /// - /// - private bool StorageCheckVerify(SafeFileHandle aVolume) - { - //Hope that's doing what I think it does - IntPtr dwBytesReturned = new IntPtr(); - //Should not be needed but I'm not sure how to pass NULL in there. - OVERLAPPED overlapped = new OVERLAPPED(); - - bool res = Function.DeviceIoControl(aVolume, Const.IOCTL_STORAGE_CHECK_VERIFY2, IntPtr.Zero, 0, IntPtr.Zero, 0, dwBytesReturned, ref overlapped); - - CheckLastError("Check verify: "); - - return res; - } - - - - /// - /// Perform media ejection. - /// - private void HandleEject() - { - string drive = ((FormMain)this).OpticalDriveToEject(); - if (drive.Length!=2) - { - //Not a proper drive spec. - //Probably 'None' selected. - return; - } - - SafeFileHandle handle = OpenVolume(drive); - if (handle.IsInvalid) - { - CheckLastError("ERROR: Failed to open volume: "); - return; - } - - if (LockVolume(handle) && DismountVolume(handle)) - { - Debug.WriteLine("Volume was dismounted."); - - if (PreventRemovalOfVolume(handle,false)) - { - //StorageCheckVerify(handle); - - DateTime before; - before = DateTime.Now; - bool ejectSuccess = MediaEject(handle); - double ms = (DateTime.Now - before).TotalMilliseconds; - - //We assume that if it take more than a certain time to for eject to execute it means we actually ejected. - //If our eject completes too rapidly we assume the tray is already open and we will try to close it. - if (ejectSuccess && ms > 100) - { - Debug.WriteLine("Media was ejected"); - } - else if (MediaLoad(handle)) - { - Debug.WriteLine("Media was loaded"); - } - } - } - else - { - Debug.WriteLine("Volume lock or dismount failed."); - } - - //This is needed to make sure we can open the volume next time around - handle.Dispose(); - } - - /// - /// - /// - private void HandleGreenStart() - { - //First check if the process we want to launch already exists - string procName = Path.GetFileNameWithoutExtension(Properties.Settings.Default.StartFileName); - Process[] existingProcesses = Process.GetProcessesByName(procName); - if (existingProcesses == null || existingProcesses.Length == 0) - { - // Process do not exists just try to launch it - ProcessStartInfo start = new ProcessStartInfo(); - // Enter in the command line arguments, everything you would enter after the executable name itself - //start.Arguments = arguments; - // Enter the executable to run, including the complete path - start.FileName = Properties.Settings.Default.StartFileName; - start.WindowStyle = ProcessWindowStyle.Normal; - start.CreateNoWindow = true; - start.UseShellExecute = true; - // Run the external process & wait for it to finish - Process proc = Process.Start(start); - - //SL: We could have used that too - //Shell32.Shell shell = new Shell32.Shell(); - //shell.ShellExecute(Properties.Settings.Default.StartFileName); - } - else - { - //This won't work properly until we have a manifest that enables uiAccess. - //However uiAccess just won't work with ClickOnce so we will have to use a different deployment system. - SwitchToThisWindow(existingProcesses[0].MainWindowHandle, true); - } - } + /// diff -r 2e4d2558bb21 -r 448e6a616c22 Server/FormMain.cs --- a/Server/FormMain.cs Fri Aug 19 19:18:54 2016 +0200 +++ b/Server/FormMain.cs Fri Aug 19 19:28:03 2016 +0200 @@ -178,9 +178,6 @@ //Populate device types PopulateDeviceTypes(); - //Populate optical drives - PopulateOpticalDrives(); - //Initial status update UpdateStatus(); @@ -647,41 +644,6 @@ } /// - /// - /// - private void PopulateOpticalDrives() - { - //Reset our list of drives - comboBoxOpticalDrives.Items.Clear(); - comboBoxOpticalDrives.Items.Add("None"); - - //Go through each drives on our system and collected the optical ones in our list - DriveInfo[] allDrives = DriveInfo.GetDrives(); - foreach (DriveInfo d in allDrives) - { - Debug.WriteLine("Drive " + d.Name); - Debug.WriteLine(" Drive type: {0}", d.DriveType); - - if (d.DriveType == DriveType.CDRom) - { - //This is an optical drive, add it now - comboBoxOpticalDrives.Items.Add(d.Name.Substring(0, 2)); - } - } - } - - /// - /// - /// - /// - public string OpticalDriveToEject() - { - return comboBoxOpticalDrives.SelectedItem.ToString(); - } - - - - /// /// /// private void SetupTrayIcon() @@ -1237,31 +1199,6 @@ CheckFontHeight(); //Check if "run on Windows startup" is enabled checkBoxAutoStart.Checked = iStartupManager.Startup; - // - labelStartFileName.Text = Properties.Settings.Default.StartFileName; - - - //Try find our drive in our drive list - int opticalDriveItemIndex = 0; - bool driveNotFound = true; - string opticalDriveToEject = Properties.Settings.Default.OpticalDriveToEject; - foreach (object item in comboBoxOpticalDrives.Items) - { - if (opticalDriveToEject == item.ToString()) - { - comboBoxOpticalDrives.SelectedIndex = opticalDriveItemIndex; - driveNotFound = false; - break; - } - opticalDriveItemIndex++; - } - - if (driveNotFound) - { - //We could not find the drive we had saved. - //Select "None" then. - comboBoxOpticalDrives.SelectedIndex = 0; - } //Harmony settings iTextBoxHarmonyHubAddress.Text = Properties.Settings.Default.HarmonyHubAddress; @@ -2563,39 +2500,6 @@ /// /// /// - /// - /// - private void buttonSelectFile_Click(object sender, EventArgs e) - { - //openFileDialog1.InitialDirectory = "c:\\"; - //openFileDialog.Filter = "EXE files (*.exe)|*.exe|All files (*.*)|*.*"; - //openFileDialog.FilterIndex = 1; - openFileDialog.RestoreDirectory = true; - - if (DlgBox.ShowDialog(openFileDialog) == DialogResult.OK) - { - labelStartFileName.Text = openFileDialog.FileName; - Properties.Settings.Default.StartFileName = openFileDialog.FileName; - Properties.Settings.Default.Save(); - } - } - - /// - /// - /// - /// - /// - private void comboBoxOpticalDrives_SelectedIndexChanged(object sender, EventArgs e) - { - //Save the optical drive the user selected for ejection - Properties.Settings.Default.OpticalDriveToEject = comboBoxOpticalDrives.SelectedItem.ToString(); - Properties.Settings.Default.Save(); - } - - - /// - /// - /// private void LogsUpdate() { if (iWriter != null) diff -r 2e4d2558bb21 -r 448e6a616c22 Server/FormMain.resx --- a/Server/FormMain.resx Fri Aug 19 19:18:54 2016 +0200 +++ b/Server/FormMain.resx Fri Aug 19 19:28:03 2016 +0200 @@ -129,65 +129,10 @@ 315, 17 - - - - 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 - - 405, 17 + AAABAAEAgIAAAAEAIAADNAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAACAAAAAgAgGAAAAwz5hywAAIABJ diff -r 2e4d2558bb21 -r 448e6a616c22 Server/Properties/Settings.Designer.cs --- a/Server/Properties/Settings.Designer.cs Fri Aug 19 19:18:54 2016 +0200 +++ b/Server/Properties/Settings.Designer.cs Fri Aug 19 19:28:03 2016 +0200 @@ -96,30 +96,6 @@ [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("None")] - public string StartFileName { - get { - return ((string)(this["StartFileName"])); - } - set { - this["StartFileName"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("None")] - public string OpticalDriveToEject { - get { - return ((string)(this["OpticalDriveToEject"])); - } - set { - this["OpticalDriveToEject"] = value; - } - } - - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] public bool CecEnabled { get { diff -r 2e4d2558bb21 -r 448e6a616c22 Server/Properties/Settings.settings --- a/Server/Properties/Settings.settings Fri Aug 19 19:18:54 2016 +0200 +++ b/Server/Properties/Settings.settings Fri Aug 19 19:28:03 2016 +0200 @@ -20,12 +20,6 @@ False - - None - - - None - False