Exemple #1
0
        public PasswordManagerViewModel(IWindowsManager windowsManager, IQrScannerHelper qrScannerHelper,
                                        IMetaPubSub metaMessenger, IActiveDevice activeDevice, ISettingsManager <ApplicationSettings> settingsManager)
        {
            this.windowsManager  = windowsManager;
            this.qrScannerHelper = qrScannerHelper;
            _metaMessenger       = metaMessenger;
            _settingsManager     = settingsManager;

            _metaMessenger.Subscribe <ActiveDeviceChangedMessage>(OnActiveDeviceChanged);
            _metaMessenger.Subscribe <AddAccountForAppMessage>(OnAddAccountForApp);

            this.WhenAnyValue(x => x.SearchQuery)
            .Throttle(TimeSpan.FromMilliseconds(100))
            .Where(term => null != term)
            .DistinctUntilChanged()
            .InvokeCommand(FilterAccountCommand);

            this.WhenAnyValue(x => x.Device)
            .Where(x => null != x)
            .Subscribe(d => OnDeviceChanged());

            this.WhenAnyValue(x => x.SelectedAccount)
            .InvokeCommand(CancelCommand);

            // Todo: On update, preserve selection or if unable, clear it
            //Observable.FromEventPattern<NotifyCollectionChangedEventArgs>(Accounts, nameof(ObservableCollection<string>.CollectionChanged))
            //          .Subscribe(change => SelectedAccount = Accounts.FirstOrDefault());

            Device = activeDevice.Device != null ? new DeviceViewModel(activeDevice.Device) : null;
        }
 public MenuFactory(IStartupHelper startupHelper
                    , IWindowsManager windowsManager, IAppHelper appHelper,
                    ISettingsManager <ApplicationSettings> settingsManager, ISupportMailContentGenerator supportMailContentGenerator,
                    IServiceProxy serviceProxy, IActiveDevice activeDevice, IMetaPubSub metaMessenger)
 {
     _startupHelper               = startupHelper;
     _windowsManager              = windowsManager;
     _appHelper                   = appHelper;
     _settingsManager             = settingsManager;
     _supportMailContentGenerator = supportMailContentGenerator;
     _serviceProxy                = serviceProxy;
     _activeDevice                = activeDevice;
     _metaMessenger               = metaMessenger;
 }
        public UserActionHandler(
            IMetaPubSub metaMessenger,
            IActiveDevice activeDevice,
            InputLogin inputLogin,
            InputPassword inputPassword,
            InputOtp inputOtp,
            ISettingsManager <ApplicationSettings> appSettingsManager,
            IHotkeyManager hotkeyManager,
            IWindowsManager windowsManager,
            ILog log)
            : base(nameof(UserActionHandler), log)
        {
            _metaMessenger      = metaMessenger;
            _activeDevice       = activeDevice;
            _inputLogin         = inputLogin;
            _inputPassword      = inputPassword;
            _inputOtp           = inputOtp;
            _appSettingsManager = appSettingsManager;
            _hotkeyManager      = hotkeyManager;
            _windowsManager     = windowsManager;

            _metaMessenger.Subscribe <HotkeyPressedMessage>(HotkeyPressedMessageHandler);
            _metaMessenger.Subscribe <ButtonPressedMessage>(ButtonPressedMessageHandler);
        }
        public MainViewModel(IDeviceManager deviceManager,
                             IMenuFactory menuFactory,
                             IActiveDevice activeDevice,
                             IMetaPubSub metaMessenger,
                             ViewModelLocator viewModelLocator,
                             IAppHelper appHelper,
                             SoftwareUnlockSettingViewModel softwareUnlock)
        {
            _deviceManager    = deviceManager;
            _menuFactory      = menuFactory;
            _activeDevice     = activeDevice;
            _viewModelLocator = viewModelLocator;
            _appHelper        = appHelper;
            _softwareUnlock   = softwareUnlock;

            InitMenu();

            _deviceManager.DevicesCollectionChanged += Devices_CollectionChanged;
            _activeDevice.ActiveDeviceChanged       += ActiveDevice_ActiveDeviceChanged;

            metaMessenger.Subscribe <OpenPasswordManagerMessage>((p) => { MenuPasswordManager.IsChecked = true; return(Task.CompletedTask); });
            metaMessenger.Subscribe <OpenHideezKeyPageMessage>((p) => { MenuHardwareKeyPage.IsChecked = true; return(Task.CompletedTask); });
            metaMessenger.Subscribe <OpenMobileAuthenticatorPageMessage>((p) => { MenuSoftwareKeyPage.IsChecked = true; return(Task.CompletedTask); });
        }
        public DeviceSettingsPageViewModel(IServiceProxy serviceProxy, IWindowsManager windowsManager, IActiveDevice activeDevice, IMetaPubSub metaMessenger)
        {
            this.serviceProxy   = serviceProxy;
            this.windowsManager = windowsManager;
            _metaMessenger      = metaMessenger;

            _metaMessenger.Subscribe <ActiveDeviceChangedMessage>(OnActiveDeviceChanged);

            Сonnected = new StateControlViewModel
            {
                Name    = "Status.Device.Сonnected",
                Visible = true,
            };
            Initialized = new StateControlViewModel
            {
                Name    = "Status.Device.Initialized",
                Visible = true,
            };
            Authorized = new StateControlViewModel
            {
                Name    = "Status.Device.Authorized",
                Visible = true,
            };
            StorageLoaded = new StateControlViewModel
            {
                Name    = "Status.Device.StorageLoaded",
                Visible = true,
            };

            Indicators.Add(Сonnected);
            Indicators.Add(Initialized);
            Indicators.Add(Authorized);
            Indicators.Add(StorageLoaded);

            this.WhenAnyValue(x => x.Device).Where(d => d != null).Subscribe(d =>
            {
                PropertyChangedEventManager.AddListener(Device, this, nameof(Device.IsConnected));
                PropertyChangedEventManager.AddListener(Device, this, nameof(Device.IsInitialized));
                PropertyChangedEventManager.AddListener(Device, this, nameof(Device.IsAuthorized));
                PropertyChangedEventManager.AddListener(Device, this, nameof(Device.IsStorageLoaded));

                Сonnected.State     = StateControlViewModel.BoolToState(Device.IsConnected);
                Initialized.State   = StateControlViewModel.BoolToState(Device.IsInitialized);
                Authorized.State    = StateControlViewModel.BoolToState(Device.IsAuthorized);
                StorageLoaded.State = StateControlViewModel.BoolToState(Device.IsStorageLoaded);
            });

            this.WhenAnyValue(x => x.LockProximity, x => x.UnlockProximity).Where(t => t.Item1 != 0 && t.Item2 != 0).Subscribe(o => ProximityHasChanges = true);

            Device = activeDevice.Device != null ? new DeviceViewModel(activeDevice.Device) : null;
        }