示例#1
0
 public ModuleVM(Module module)
 {
     this.Model  = module;
     this.Icon   = ModuleIcon.GetModuleIcon(module.GetType());
     this.Row    = ModuleUnlockTargetVM.UndefinedRowOrColumn;
     this.Column = ModuleUnlockTargetVM.UndefinedRowOrColumn;
 }
示例#2
0
        public PropertyDialog(ModuleIcon icon, ref BeaconModule module)
        {
            InitializeComponent();
            _icon   = icon;
            _module = module;

            label_ip.Text   = $@"IP : {module.GetIP()}";
            label_uuid.Text = $@"UUID : {module.GetUUID()}";
        }
示例#3
0
        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);
            }
        }
示例#4
0
 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();
     }
 }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
                }
            }
        }