public void SetsInvisible()
        {
            var viewModel = Mock.Of <IViewModel>();
            var command   = new DeactivatedCommand(viewModel);

            command.Execute(null);

            Mock.Get(viewModel).VerifySet(x => x.IsVisible = false);
        }
Exemple #2
0
        public BeamgunViewModel()
        {
            var dictionary      = new RegistryBackedDictionary();
            var beamgunSettings = new BeamgunSettings(dictionary);

            BeamgunState = new BeamgunState(beamgunSettings)
            {
                MainWindowVisibility = Visibility.Hidden
            };
            // TODO: This bi-directional relationship feels bad.
            dictionary.BadCastReport += BeamgunState.AppendToAlert;
            BeamgunState.Disabler     = new Disabler(BeamgunState);
            BeamgunState.Disabler.Enable();
            DisableCommand     = new DisableCommand(this, beamgunSettings);
            TrayIconCommand    = new TrayIconCommand(this);
            LoseFocusCommand   = new DeactivatedCommand(this);
            ResetCommand       = new ResetCommand(this);
            ExitCommand        = new ExitCommand(this);
            ClearAlertsCommand = new ClearAlertsCommand(this);
            _keystrokeHooker   = InstallKeystrokeHooker();
            _usbStorageGuard   = InstallUsbStorageGuard(beamgunSettings);
            _alarm             = InstallAlarm(beamgunSettings);
            _networkWatcher    = new NetworkWatcher(beamgunSettings,
                                                    new NetworkAdapterDisabler(),
                                                    x => BeamgunState.AppendToAlert(x),
                                                    x =>
            {
                _alarm.Trigger(x);
                BeamgunState.SetGraphicsLanAlert();
            },
                                                    () => BeamgunState.Disabler.IsDisabled);
            _keyboardWatcher = new KeyboardWatcher(beamgunSettings,
                                                   new WorkstationLocker(),
                                                   x => BeamgunState.AppendToAlert(x),
                                                   x =>
            {
                _alarm.Trigger(x);
                BeamgunState.SetGraphicsKeyboardAlert();
            },
                                                   () => BeamgunState.Disabler.IsDisabled);
            _mouseWatcher = new MouseWatcher(beamgunSettings,
                                             new WorkstationLocker(),
                                             x => BeamgunState.AppendToAlert(x),
                                             x =>
            {
                _alarm.Trigger(x);
                BeamgunState.SetGraphicsMouseAlert();
            },
                                             () => BeamgunState.Disabler.IsDisabled);
            var checker = new VersionChecker();

            _updateTimer = new VersionCheckerTimer(beamgunSettings,
                                                   checker,
                                                   x => BeamgunState.AppendToAlert(x));
        }
        public void IsExecutable()
        {
            var command = new DeactivatedCommand(Mock.Of <IViewModel>());

            command.CanExecute(null).ShouldBeTrue();
        }
Exemple #4
0
        public BeamgunViewModel(Window mainWindow)
        {
            BeamgunState = new BeamgunState
            {
                MainWindowVisibility = Visibility.Hidden
            };
            BeamgunState.Disabler = new Disabler(BeamgunState);
            BeamgunState.Disabler.Enable();
            DisableCommand     = new DisableCommand(this);
            TrayIconCommand    = new TrayIconCommand(this);
            LoseFocusCommand   = new DeactivatedCommand(this);
            ResetCommand       = new ResetCommand(this);
            ExitCommand        = new ExitCommand(this);
            _workstationLocker = new WorkstationLocker();

            const uint repeatInterval = 10;
            var        converter      = new KeyConverter();

            _keystrokeHooker = new KeystrokeHooker();

            _alarm = new Alarm(repeatInterval, BeamgunState);
            _alarm.AlarmCallback += () =>
            {
                BeamgunState.MainWindowState      = WindowState.Normal;
                BeamgunState.MainWindowVisibility = Visibility.Visible;
                BeamgunState.SetGraphicsAlert();
                if (BeamgunState.StealFocus)
                {
                    StealFocus();
                }
            };

            var windowHandle = new WindowInteropHelper(mainWindow).Handle;

            _usbMonitor              = new UsbMonitor(windowHandle);
            _usbMonitor.DeviceAdded += () =>
            {
                BeamgunState.AppendToAlert("USB device inserted.");
                _alarm.Trigger("Alerting on USB device insertion.");
                if (!BeamgunState.LockWorkStation)
                {
                    return;
                }
                var result  = _workstationLocker.Lock();
                var message = result ? "Successfully locked the workstation." : "Could not lock the workstation.";
                BeamgunState.AppendToAlert(message);
            };
            _usbMonitor.DeviceRemoved += () =>
            {
                BeamgunState.AppendToAlert("USB device removed.");
            };

            _keystrokeHooker.Callback += key =>
            {
                if (!_alarm.Triggered)
                {
                    return;
                }
                BeamgunState.AppendToKeyLog(converter.Convert(key));
            };
        }