Example #1
0
 public MainViewModel(INarrator narrator, Host host)
 {
     _hwnds    = new ConcurrentQueue <IntPtr>();
     _narrator = narrator;
     _host     = host;
     Task.Run(InitStates);
     _host.Streams.CreateGazePointDataStream().GazePoint(CheckGazePointIsInScreenBounds);
     Task.Factory.StartNew(() =>
     {
         while (true)
         {
             IntPtr hwnd;
             while (_hwnds.TryDequeue(out hwnd))
             {
                 Debug.WriteLine($"{hwnd} at {DateTime.UtcNow}");
                 var title = GetWindowTitle(hwnd);
                 _narrator.Cancel(_lastTitle);
                 _narrator.Say(title);
                 _lastTitle = title;
             }
         }
     }, TaskCreationOptions.LongRunning);
 }
        //----------------------------------------------------------------------------
        //             RegisterNarrator
        //----------------------------------------------------------------------------

        #region RegisterNarrator

        public void RegisterNarrator(INarrator narrator)
        {
            MyNarrator = narrator;
        }
Example #3
0
        KeyboardHost(IKeyboardApplicationEnvironment environment)
        {
            _environment = environment;
            _editor      = new TextBoxEditor(_environment.ClipboardProvider);

            SetTrainingPhrase();
            _environment.AppSettings.Keyboard.AttachPropertyChangedAction(nameof(_environment.AppSettings.Keyboard.IsTrainingMode), SetTrainingPhrase);

            _isUpdateAvailable            = _environment.IsUpdateAvailable;
            _environment.UpdateAvailable += (s, e) => IsUpdateAvailable = _environment.IsUpdateAvailable;

            var publicTextToAudio  = _environment.TextToAudioProviderFactory.Create(AppSettings.Instance.PublicNarration);
            var privateTextToAudio = _environment.TextToAudioProviderFactory.Create(AppSettings.Instance.PrivateNarration);

            ActivityDisplayStatus = _environment.ActivityDisplayProvider.Status;
            _environment.ActivityDisplayProvider.StatusChanged += (s, e) => ActivityDisplayStatus = _environment.ActivityDisplayProvider.Status;

            var publicNarrator  = new Narrator(environment.Random, AppSettings.Instance.PublicNarration, _environment.AudioProviderFactory, publicTextToAudio, _environment.ActivityDisplayProvider);
            var privateNarrator = new Narrator(environment.Random, AppSettings.Instance.PrivateNarration, _environment.AudioProviderFactory, privateTextToAudio, NullActivityDisplayProvider.Instance);

            _narrator = new CompoundNarrator(publicNarrator, privateNarrator);

            Speak             = new RelayCommand(SpeakAction);
            SendToSlack       = new RelayCommand(SendToSlackAction, (o) => AppSettings.Instance.General.SlackHostUri != GeneralSettings.UnsetSlackHostUri);
            Clear             = new RelayCommand(ClearAction);
            UpdateApplication = new RelayCommand(UpdateApplicationAction);
            ExitApplication   = new RelayCommand(ExitApplicationAction);
            Calibrate         = new RelayCommand(CalibrateAction);

            for (var index = 0; index < 7; index++)
            {
                suggestionItems.Add(new SuggestionItem(this, index));
            }
            for (var index = 0; index < 6; index++)
            {
                phraseItems.Add(new PhraseItem(this, index));
            }

            ShiftToggleState   = ToggleStates["Shift"];
            ControlToggleState = ToggleStates["Control"];
            AltToggleState     = ToggleStates["Alt"];

            ShiftToggleState.CheckChanged += OnShiftChanged;

            _predictor = PredictionEngineFactory.Create(PredictionEnvironment.Instance);
            _predictor.PredictionChanged += OnPredictionChanged;

            _ambiguousKeys = new List <List <string> >();

            _minuteTick.Tick += OnMinuteTick;
            ScheduleNextMinuteTick();

            ShowActiveListening  = new RelayCommand((o) => AppSettings.Instance.Prediction.PredictionLayout = PredictionLayout.ActiveListening);
            ShowWordPrediction   = new RelayCommand((o) => AppSettings.Instance.Prediction.PredictionLayout = PredictionLayout.WordsAlone);
            ShowPhrasePrediction = new RelayCommand((o) => AppSettings.Instance.Prediction.PredictionLayout = PredictionLayout.PhraseAlone);

            ActiveListeningLaugh       = new RelayCommand((o) => SpeakEffect(AudioGesture.Laugh));
            ActiveListeningHmm         = new RelayCommand((o) => SpeakEffect(AudioGesture.Hmm));
            ActiveListeningSarcasm     = new RelayCommand((o) => SpeakEffect(AudioGesture.Sarcasm));
            ActiveListeningOh          = new RelayCommand((o) => SpeakEffect(AudioGesture.Oh));
            ActiveListeningSharpBreath = new RelayCommand((o) => SpeakEffect(AudioGesture.SharpBreath));
            ActiveListeningArgh        = new RelayCommand((o) => SpeakEffect(AudioGesture.Argh));
            ActiveListeningCough       = new RelayCommand((o) => SpeakEffect(AudioGesture.Cough));
            ActiveListeningUgh         = new RelayCommand((o) => SpeakEffect(AudioGesture.Ugh));
        }