public static int SetCompatabilityMode() { int radioCOD = GetRadioCOD(); if (!GetInCompatabilityMode()) { L2CAPAPI.RadioMode radioMode = L2CAPAPI.RadioMode.Off; L2CAPAPI.BthGetMode(out radioMode); if (radioMode != L2CAPAPI.RadioMode.Off) { L2CAPAPI.BthSetMode(L2CAPAPI.RadioMode.Off); } try { Microsoft.Win32.Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Bluetooth\sys", "COD", CODCompatabilityMode); L2CAPAPI.BthSetMode(L2CAPAPI.RadioMode.Discoverable); } finally { //Microsoft.Win32.Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Bluetooth\sys", "COD", radioCOD); } } return(radioCOD); }
void MobileRemoteUI_Closing(object sender, CancelEventArgs e) { L2CAPAPI.RadioMode currentRadioMode = 0; L2CAPAPI.BthGetMode(out currentRadioMode); if (currentRadioMode != _initialRadioMode) { L2CAPAPI.BthSetMode(_initialRadioMode); } _hidWriter.Dispose(); }
private void ShowConnectDialog(bool autoConnect) { L2CAPAPI.RadioMode radioMode = L2CAPAPI.RadioMode.Off; L2CAPAPI.BthGetMode(out radioMode); if (radioMode != L2CAPAPI.RadioMode.Discoverable) { if (autoConnect || (DialogResult.Yes == MessageBox.Show("MobileRemote requires that Bluetooth is enabled. Would you like to enable Bluetooth on your phone?", "Bluetooth Required", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1))) { L2CAPAPI.BthSetMode(L2CAPAPI.RadioMode.Discoverable); } else { return; } } using (AddressSelector selector = new AddressSelector()) { bool firstConnect = autoConnect && (selector.SelectedDevice.Address != 0); if (firstConnect || (DialogResult.OK == selector.ShowDialog(this))) { if (null != selector.SelectedDevice) { bool legacyMode = selector.LegacyMode; int oldMode = 0; if (legacyMode) { oldMode = Utils.SetCompatabilityMode(); } WaitHandle result = _hidWriter.ConnectAsync(selector.SelectedDevice.Address); try { using (WaitForConnection waitDialog = new WaitForConnection()) { if (DialogResult.OK != waitDialog.ShowDialog(this, result, selector.SelectedDevice, _hidWriter)) { _hidWriter.Disconnect(); } } } finally { if (legacyMode) { Utils.UnsetCompatabilityMode(oldMode); } } } } } }
public MobileRemoteUI() { this.IsLoaded = false; Properties.Settings.Load(); L2CAPAPI.BthGetMode(out _initialRadioMode); _instance = this; this.Load += new EventHandler(MobileRemoteUI_Load); this.GotFocus += new EventHandler(MobileRemoteUI_GotFocus); _inputs = new List <InputInterfaceControl>( new InputInterfaceControl[] { new InputInterfaceControl("Keyboard", _keyboardControl, Properties.Resources.keyboard, Properties.Resources.keyboard_down, Properties.Resources.keyboard_sel), new InputInterfaceControl("Mouse", _mouseControl, Properties.Resources.mouse, Properties.Resources.mouse_down, Properties.Resources.mouse_sel), new InputInterfaceControl("TouchPad", _touchPanel, Properties.Resources.touch, Properties.Resources.touch_down, Properties.Resources.touch_sel), //new InputInterfaceControl("Media", _mediaControl, Properties.Resources.media, Properties.Resources.media_down, Properties.Resources.media_sel), //new InputInterfaceControl("Present", _presentControl, Properties.Resources.present, Properties.Resources.present_down, Properties.Resources.present_sel) } ); InitializeComponent(); _hidWriter = new BluetoothHidWriter(); _hidWriter.Connected += new EventHandler(_hidWriter_Connected); _hidWriter.Disconnected += new EventHandler(_hidWriter_Disconnected); //_presentControl.HidWriter = _hidWriter; //_mediaControl.HidWriter = _hidWriter; _mouseControl.HidWriter = _hidWriter; _touchPanel.HidWriter = _hidWriter; _keyboardControl.HidWriter = _hidWriter; _connectButton.HidWriter = _hidWriter; XmlSerializer xs = new XmlSerializer(typeof(Classes.CustomInput)); foreach (string customInput in Directory.GetFiles(Path.Combine(Utils.GetWorkingDirectory(), "CustomInputs"))) { using (StreamReader fs = File.OpenText(customInput)) { Classes.CustomInput ci = (Classes.CustomInput)xs.Deserialize(fs); ci.ScaleToResolution(); CustomInputControl input = new CustomInputControl(ci, _hidWriter); InputInterfaceControl interfaceControl = new InputInterfaceControl ( ci.Name, input, CustomInputControl.GetBitmap(ci.Image), CustomInputControl.GetBitmap(ci.DownImage), CustomInputControl.GetBitmap(ci.SelectedImage) ); _inputs.Add(interfaceControl); } } Menu menu = null; if (!Platform.IsWindowsMobileClassic) { int totalButtonsVisible = (buttonPanel1.Width / buttonPanel1.Height) - 2; if (_inputs.Count < totalButtonsVisible) { // great... buttonPanel1.Controls.Remove(_inputsButton); } else { totalButtonsVisible--; } int count = 0; foreach (InputInterfaceControl control in _inputs) { PushButton button = new PushButton(); button.DownImage = control.Down; button.Image = control.Up; button.Name = control.Text; button.Text = control.Text; button.SelectedImage = control.Sel; button.Size = new System.Drawing.Size(buttonPanel1.Height, buttonPanel1.Height); button.TabIndex = 11; button.Dock = DockStyle.Left; button.Click += new EventHandler(button_Click); button.RightClick += new EventHandler(_controlSettingsMenu_Click); if (_inputList.Count < totalButtonsVisible) { } else { button.Visible = false; } buttonPanel1.Controls.Add(button); buttonPanel1.Controls.SetChildIndex(button, count++); control.Click = button_Click; control.Tag = button; _inputList.Add(button, control); } ((PushButton)_inputs[0].Tag).IsSelected = true; menu = _mainContextMenu; } else { this.buttonPanel1.Visible = false; _leftMenu = new MenuItem(); _leftMenu.Text = ""; MenuItem rightMenu = new MenuItem(); rightMenu.Text = "Menu"; _mainMenu.MenuItems.Add(_leftMenu); _mainMenu.MenuItems.Add(rightMenu); int i = 0; foreach (InputInterfaceControl control in _inputs) { if (!control.Control.RequiresTouchscreen) { MenuItem menuItem = new MenuItem(); menuItem.Text = String.Format("&{1}", i++, control.Text); menuItem.Click += new EventHandler(menuItem_Click); rightMenu.MenuItems.Add(menuItem); control.Click = menuItem_Click; control.Tag = menuItem; _inputList.Add(menuItem, control); } } ((MenuItem)_inputs[0].Tag).Checked = true; MenuItem seperatorMenu1 = new MenuItem(); seperatorMenu1.Text = "-"; rightMenu.MenuItems.Add(seperatorMenu1); this.Menu = _mainMenu; menu = rightMenu; } MenuItem connectionSettingsMenu = new MenuItem(); connectionSettingsMenu.Text = "Connection &Settings"; connectionSettingsMenu.Click += new EventHandler(connectionSettingsMenu_Click); _controlSettingsMenu.Text = "Control Settings"; _controlSettingsMenu.Click += new EventHandler(_controlSettingsMenu_Click); MenuItem recorderMenu = new MenuItem(); recorderMenu.Text = "&Recorder"; _startRecorder.Text = "&Create Recording"; _startRecorder.Click += new EventHandler(startRecorder_Click); _stopRecorder.Text = "&Stop Recording"; _stopRecorder.Enabled = false; _stopRecorder.Click += new EventHandler(stopRecorder_Click); _loadRecorder.Text = "&Load Recording"; _loadRecorder.Enabled = true; _loadRecorder.Popup += new EventHandler(_loadRecorder_Popup); MenuItem nullMenuItem = new MenuItem(); nullMenuItem.Text = "--No Saved Recordings--"; _loadRecorder.MenuItems.Add(nullMenuItem); recorderMenu.MenuItems.Add(_loadRecorder); recorderMenu.MenuItems.Add(_startRecorder); recorderMenu.MenuItems.Add(_stopRecorder); _connectionMenuItem.Text = "&Connect"; _connectionMenuItem.Click += new EventHandler(connect_Click); _registerMenu.Text = "Re&gister"; _registerMenu.Click += new EventHandler(_registerMenu_Click); MenuItem aboutMenuItem = new MenuItem(); aboutMenuItem.Text = "&About"; aboutMenuItem.Click += new EventHandler(aboutMenuItem_Click); MenuItem exitMenu = new MenuItem(); exitMenu.Text = "E&xit"; exitMenu.Click += new EventHandler(exitMenu_Click); menu.MenuItems.Add(recorderMenu); menu.MenuItems.Add(_connectionMenuItem); menu.MenuItems.Add(connectionSettingsMenu); menu.MenuItems.Add(_controlSettingsMenu); menu.MenuItems.Add(_registerMenu); menu.MenuItems.Add(aboutMenuItem); menu.MenuItems.Add(exitMenu); SetActivePanel(_inputs[0]); this.Closing += new CancelEventHandler(MobileRemoteUI_Closing); this.IsLoaded = true; }