public ModuleVM(Module module) { this.Model = module; this.Icon = ModuleIcon.GetModuleIcon(module.GetType()); this.Row = ModuleUnlockTargetVM.UndefinedRowOrColumn; this.Column = ModuleUnlockTargetVM.UndefinedRowOrColumn; }
public PropertyDialog(ModuleIcon icon, ref BeaconModule module) { InitializeComponent(); _icon = icon; _module = module; label_ip.Text = $@"IP : {module.GetIP()}"; label_uuid.Text = $@"UUID : {module.GetUUID()}"; }
private void ModuleIcon_MouseMove(object sender, MouseEventArgs e) { ModuleIcon icon = sender as ModuleIcon; if (icon == null) { return; } if (e.Button == MouseButtons.Left) { Point diff = new Point(e.X - _mouseStart.X, e.Y - _mouseStart.Y); icon.Location = new Point(icon.Location.X + diff.X, icon.Location.Y + diff.Y); } }
private void LocateForm_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Point diff = new Point(e.X - _mouseStart.X, e.Y - _mouseStart.Y); _gridDiff.X = _gridDiff.X - _mouseDiff.X + diff.X; _gridDiff.Y = _gridDiff.Y - _mouseDiff.Y + diff.Y; foreach (Control control in Controls) { if (control.GetType() == typeof(ModuleIcon)) { ModuleIcon icon = control as ModuleIcon; icon.Location = new Point(icon.Location.X - _mouseDiff.X + diff.X, icon.Location.Y - _mouseDiff.Y + diff.Y); } } _mouseDiff = diff; Invalidate(); } }
private void ModuleIcon_MouseUp(object sender, MouseEventArgs e) { ModuleIcon icon = sender as ModuleIcon; if (icon == null) { return; } _mouseStart = new Point(0, 0); _mouseDiff = new Point(0, 0); if (!_ctrl) { int x = (int)(Math.Round((double)icon.Location.X / _gridWidth) * _gridWidth + _gridDiff.X % _gridWidth - (double)icon.Width / 2); int y = (int)(Math.Round((double)icon.Location.Y / _gridWidth) * _gridWidth + _gridDiff.Y % _gridWidth - (double)icon.Height / 2); icon.Location = new Point(x, y); } }
private async Task LoadModules() { BeaconModule m; while (!_scanResult.IsEmpty) { _scanResult.TryTake(out m); } foreach (ModuleIcon icon in _modules.Values) { icon.Dispose(); } _modules.Clear(); InterfaceDialog dialog = new InterfaceDialog(); if (dialog.ShowDialog(this) == DialogResult.OK && dialog.SelectedInterface != null) { status_text.Text = $@"Loading Bluetooth Modules from {dialog.SelectedInterface.Text}"; ThreadPool.SetMinThreads(500, 500); ThreadPool.SetMaxThreads(4096, 4096); UnicastIPAddressInformation ipInfo = dialog.SelectedInterface.IP; (IPAddress start, IPAddress end, int count) = NetworkManager.GetSubnetRange(ipInfo.Address, ipInfo.IPv4Mask); _scanEvent = new CountdownEvent(count); status_progress.Maximum = count; for (IPAddress ip = start; !Equals(ip, end); ip = NetworkManager.NextAddress(ip)) { ThreadPool.QueueUserWorkItem(ScanModule, ip); } await WaitScan(); status_text.Text = $@"Found {_scanResult.Count} Bluetooth Modules"; if (_scanResult.Count < 3) { DialogResult result = MessageBox.Show( $@"There are less than 3 Bluetooth Modules in this network (Found {_scanResult.Count} Modules)" + Environment.NewLine + @"Need at least 3 Modules to Locate Beacon", @"Too less Modules Found", MessageBoxButtons.RetryCancel, MessageBoxIcon.Error); if (result == DialogResult.Retry) { await LoadModules(); } else { status_text.Text = @"Failed to Load Bluetooth Modules"; } } foreach (BeaconModule module in _scanResult) { ModuleIcon icon = new ModuleIcon(module); icon.MouseDown += ModuleIcon_MouseDown; icon.MouseMove += ModuleIcon_MouseMove; icon.MouseUp += ModuleIcon_MouseUp; icon.KeyDown += ModuleIcon_KeyDown; icon.KeyUp += ModuleIcon_KeyUp; _modules[module] = icon; Controls.Add(icon); } } }