Esempio n. 1
0
        public virtual async Task InitiateAsync()
        {
            Settings.Initiate();
            Settings.KnownMonitors.AbsoluteCapacity = MaxKnownMonitorsCount;
            Settings.PropertyChanged += OnSettingsChanged;

            NotifyIconContainer.ShowIcon("pack://application:,,,/Monitorian.Core;component/Resources/Icons/TrayIcon.ico", ProductInfo.Title);

            _current.MainWindow              = new MainWindow(this);
            _current.MainWindow.Deactivated += (sender, e) => MonitorsResetByKey();

            if (StartupAgent.IsWindowShowExpected())
            {
                _current.MainWindow.Show();
            }

            if (Settings.MakesOperationLog)
            {
                _recorder = new OperationRecorder("Initiated");
            }

            await ScanAsync();

            StartupAgent.Requested += (sender, e) => e.Response = OnRequested(sender, e.Args);

            NotifyIconContainer.MouseLeftButtonClick  += OnMainWindowShowRequestedBySelf;
            NotifyIconContainer.MouseRightButtonClick += OnMenuWindowShowRequested;

            _displayWatcher.Subscribe(() => OnMonitorsChangeInferred(nameof(DisplayWatcher)));
            _powerWatcher.Subscribe((e) => OnMonitorsChangeInferred($"{nameof(PowerWatcher)} - {e.Mode}"), PowerManagement.GetOnPowerSettingChanged());
            _brightnessWatcher.Subscribe((instanceName, brightness) => Update(instanceName, brightness));
        }
Esempio n. 2
0
        /// <summary>
        /// 将字幕加载进该视图模型
        /// </summary>
        /// <param name="subtitle">字幕实例</param>
        public void LoadSubtitle(Subtitle subtitle)
        {
            //清楚视图模型中的字幕集合。
            Items.Clear();

            if (subtitle != null)
            {
                RegisterEventsForSubtitle(subtitle);

                _subtitle = subtitle;

                //为视图模型重新添加新字幕中的对话。
                foreach (var d in subtitle.Dialogues)
                {
                    var dialogueViewModel = new DialogueViewModel(d);
                    RegisterEventsForDialogueViewModel(dialogueViewModel);
                    Items.Add(dialogueViewModel);
                }

                //AddNewBlankDialogueViewModel();

                OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));

                OperationRecorder = new OperationRecorder();
                RegisterEventsForOperationRecorder(OperationRecorder);
            }
            else
            {
                throw new ArgumentNullException(nameof(subtitle));
            }
        }
Esempio n. 3
0
 protected virtual void OnSettingsInitiated()
 {
     if (Settings.MakesOperationLog)
     {
         Recorder = new("Initiated");
     }
 }
Esempio n. 4
0
        protected virtual void OnSettingsChanged(object sender, PropertyChangedEventArgs e)
        {
            if (e.PropertyName == nameof(Settings.EnablesUnison))
            {
                OnSettingsEnablesUnisonChanged();
            }

            if (e.PropertyName == nameof(Settings.MakesOperationLog))
            {
                _recorder = Settings.MakesOperationLog ? new OperationRecorder("Enabled") : null;
            }
        }
Esempio n. 5
0
        protected virtual void OnSettingsChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
            case nameof(Settings.EnablesUnison):
                OnSettingsEnablesUnisonChanged();
                break;

            case nameof(Settings.MakesOperationLog):
                Recorder = Settings.MakesOperationLog ? new("Enabled") : null;
                break;
            }
        }
 public void LoadRecorder(OperationRecorder recorder)
 {
     _recorder = recorder;
     RegisterEventsForRecorder();
     UpdateButtonStatus(null, null);
 }
 public OperationRecorderViewModel(OperationRecorder recorder)
 {
     _recorder = recorder;
     RegisterEventsForRecorder();
     UpdateButtonStatus(null, null);
 }
Esempio n. 8
0
 /// <summary>
 /// 为操作记录器注册事件。
 /// </summary>
 /// <param name="recorder"></param>
 private static void RegisterEventsForOperationRecorder(OperationRecorder recorder)
 {
     recorder.Undoing += Recorder_Undoing;
     recorder.Redoing += Recorder_Redoing;
 }