Esempio n. 1
0
        public void Initialize()
        {
            listener = new PropertyChangedEventListener(this);
            listener.Add(FolderNamePropertyName, OnPropertyChanged);
            listener.Add(SystemCheckedPropertyName, OnPropertyChanged);
            listener.Add(TemporaryCheckedPropertyName, OnPropertyChanged);
            listener.Add(ArchiveCheckedPropertyName, OnPropertyChanged);
            listener.Add(ReadOnlyCheckedPropertyName, OnPropertyChanged);
            listener.Add(HiddenCheckedPropertyName, OnPropertyChanged);
            listener.Add(CompressedCheckedPropertyName, OnPropertyChanged);
            listener.Add(EncryptedCheckedPropertyName, OnPropertyChanged);

            listenerModel = new PropertyChangedEventListener(Model.GetInstance());
            listenerModel.Add(Model.FileSelected, OnPropertyChanged);
            listenerModel.Add(Model.FormatDecided, OnPropertyChanged);

            if (string.IsNullOrEmpty(Settings.Default.FolderName))
            {
                FolderName = Directory.GetCurrentDirectory();
                Settings.Default.FolderName = FolderName;
            }
            else
            {
                FolderName = Settings.Default.FolderName;
            }
            DirectoryInfos.SelectedDirectoryName = FolderName;
            Files = Model.GetInstance().FileInfo.GetFileNames(DirectoryInfos.SelectedDirectoryName);
        }
Esempio n. 2
0
        public void Initialize()
        {
            modelListener = new PropertyChangedEventListener(Model);
            modelListener.Add(() => Model.IsRunning, (_, __) => RaisePropertyChanged(() => RunningState));
            modelListener.Add(() => Model.ServerHostName, (_, __) => RaisePropertyChanged(() => WindowCaption));

            consoleListListener = new CollectionChangedEventListener(Model.ConsoleList, (_, __) => UpdateNumConsole());

            // 他のVMのInitializeを読んでやる
            foreach (var vm in MainPanelMenu)
            {
                InitializeVM(vm);
            }
            foreach (var vm in ConsolePanelMenu)
            {
                InitializeVM(vm);
            }
            foreach (var vm in InfoPanelMenu)
            {
                InitializeVM(vm);
            }

            Model.ServerAddressRequired = ServerAddressRequired;
            Model.Start();
        }
Esempio n. 3
0
        public void Initialize()
        {
            listener = new PropertyChangedEventListener(Model);

            listener.Add(() => Model.BitrateA, UpdateBitrate);
            listener.Add(() => Model.BitrateB, UpdateBitrate);
            listener.Add(() => Model.BitrateH264, UpdateBitrate);
        }
Esempio n. 4
0
        protected HistoryViewModelWithTimeFilter()
        {
            TimeSpans = new TimeSpanViewModel[]
            {
                new GeneralTimeSpanViewModel(TimeSpanType.All),
                r_SelectedTimeSpan = new GeneralTimeSpanViewModel(TimeSpanType.Recent24Hours),
                new GeneralTimeSpanViewModel(TimeSpanType.Recent3Days),
                new GeneralTimeSpanViewModel(TimeSpanType.Recent7Days),

                CustomTimeSpan = new CustomTimeSpanViewModel(),
            };

            r_CustomTimeSpanPCEL = new PropertyChangedEventListener(CustomTimeSpan);
            r_CustomTimeSpanPCEL.Add(nameof(CustomTimeSpan.SelectedDateStart), (_, __) => LoadRecords());
            r_CustomTimeSpanPCEL.Add(nameof(CustomTimeSpan.SelectedDateEnd), (_, __) => LoadRecords());
        }
Esempio n. 5
0
 public void Initialize()
 {
     listener = new PropertyChangedEventListener(Model);
     listener.Add(() => Model.CurrentLogFile, (_, __) => {
         IsLargeFile = (Model.CurrentLogFile?.Length ?? 0) > 100 * 1000;
     });
 }
Esempio n. 6
0
        internal AirBaseViewModel()
        {
            var rAirBase = KanColleGame.Current.Port.AirBase;
            var rPCEL    = new PropertyChangedEventListener(rAirBase);

            rPCEL.Add(nameof(rAirBase.Table), (s, e) => Groups = rAirBase.Table.Values.Select(r => new AirForceGroupViewModel(r)).ToList());
        }
Esempio n. 7
0
        public MainWindowViewModel()
        {
            Dpp = new DppViewModel();
            CompositeDisposable.Add(Dpp);

            dppListener = new PropertyChangedEventListener(Dpp);
            CompositeDisposable.Add(Dpp);
            dppListener.Add(() => Dpp.Spectrum, OnSpectrumUpdated);

            PeakFitting = new PeakFittingViewModel();
            CompositeDisposable.Add(PeakFitting);

            peakFittingListener = new PropertyChangedEventListener(PeakFitting);
            CompositeDisposable.Add(peakFittingListener);
            peakFittingListener.Add(() => PeakFitting.Input, (s, e) => DoPeakFittingCommand.RaiseCanExecuteChanged());

            Tube = new TubeControlViewModel();
            CompositeDisposable.Add(Tube);

            SafetySignal = new SafetySignalViewModel();
            CompositeDisposable.Add(SafetySignal);

            Camera = new CameraControlViewModel();
            CompositeDisposable.Add(Camera);

            Reporting = new ReportingViewModel();
            CompositeDisposable.Add(Reporting);

            selfListener = new PropertyChangedEventListener(this, RaiseCanDoChanged);
            CompositeDisposable.Add(selfListener);
        }
Esempio n. 8
0
        internal OverviewViewModel()
        {
            var rPort = KanColleGame.Current.Port;

            var rPortPCEL = PropertyChangedEventListener.FromSource(rPort);

            rPortPCEL.Add(nameof(rPort.Ships), (s, e) => ShipCount                     = rPort.Ships.Count);
            rPortPCEL.Add(nameof(rPort.Equipment), (s, e) => EquipmentCount            = rPort.Equipment.Count);
            rPortPCEL.Add(nameof(rPort.RepairDocks), (s, e) => RepairDocks             = rPort.RepairDocks.Values.Select(r => new RepairDockViewModel(r)).ToList());
            rPortPCEL.Add(nameof(rPort.ConstructionDocks), (s, e) => ConstructionDocks = rPort.ConstructionDocks.Values.Select(r => new ConstructionDockViewModel(r)).ToList());
            rPortPCEL.Add(nameof(rPort.Admiral), delegate
            {
                if (!r_IsAdmiralInitialized)
                {
                    var rAdmiral     = rPort.Admiral;
                    var rAdmiralPCEL = PropertyChangedEventListener.FromSource(rAdmiral);
                    rAdmiralPCEL.Add(nameof(rAdmiral.MaxShipCount), (s, e) => CheckShipCapacity());
                    rAdmiralPCEL.Add(nameof(rAdmiral.MaxEquipmentCount), (s, e) => CheckEquipmentCapacity());

                    r_IsAdmiralInitialized = true;
                }

                CheckCapacity();
            });

            AirBase = new AirBaseViewModel();

            r_AirBasePCEL = PropertyChangedEventListener.FromSource(rPort.AirBase);
            r_AirBasePCEL.Add(nameof(rPort.AirBase.AllGroups), delegate
            {
                if (rPort.AirBase.Table.Count == 0)
                {
                    return;
                }

                DispatcherUtil.UIDispatcher.InvokeAsync(() =>
                {
                    if (RightTabs == null)
                    {
                        RightTabs = new ObservableCollection <ModelBase>();
                        OnPropertyChanged(nameof(RightTabs));
                    }

                    RightTabs.Add(AirBase);
                });

                r_AirBasePCEL.Dispose();
                r_AirBasePCEL = null;
            });

            ApiService.Subscribe("api_req_map/next", delegate
            {
                var rSortie = SortieInfo.Current;
                if (rSortie != null)
                {
                    ShipCount = rPort.Ships.Count + rSortie.PendingShipCount;
                }
            });
        }
Esempio n. 9
0
        public StreamViewModel(Stream circle)
        {
            _circleModel = circle;
            _name = circle.Name;
            _status = StreamStateType.UnLoaded;
            ReconnectCommand = new ViewModelCommand(ReconnectCommand_Executed);
            ResumeCommand = new ViewModelCommand(ReconnectCommand_Executed);
            ResumeButton = new ResumeButtonViewModel() { ClickCommand = ReconnectCommand };
            CompositeDisposable.Add(_modelPropChangedEventListener = new PropertyChangedEventListener(circle));
            CompositeDisposable.Add(_thisPropChangedEventListener = new PropertyChangedEventListener(this));
            CompositeDisposable.Add(_activities = ViewModelHelper.CreateReadOnlyDispatcherCollection<Activity, ViewModel>(
                _circleModel.Activities, item => new ActivityViewModel(item, _isActive), App.Current.Dispatcher));

            _modelPropChangedEventListener.Add(() => circle.Status, Model_Status_PropertyChanged);
            _modelPropChangedEventListener.Add(() => circle.ChangedActivityCount, Model_ChangedActivityCount_PropertyChanged);
            _thisPropChangedEventListener.Add(() => ScrollOffset, ScrollOffset_PropertyChanged);
        }
Esempio n. 10
0
 /// <summary>
 /// 与指定的属性名称一起执行 <see cref="INotifyPropertyChanged.PropertyChanged"/> 订阅事件
 /// </summary>
 /// <param name="propertyName">订阅事件的属性的名称</param>
 /// <param name="action">事件发生时执行的方法。</param>
 /// <param name="immediately">在调用此方法时 <paramref name="action"/>  如果只运行一次,则为true,否则为false,默认值是true。</param>
 public ListenerWrapper Subscribe(string propertyName, Action action, bool immediately = true)
 {
     if (immediately)
     {
         action();
     }
     _listener.Add(propertyName, (sender, args) => action());
     return(this);
 }
        public NotificationManagerViewModel(NotificationManager model)
        {
            _managerModel = model;
            Items = new DispatcherCollection<NotificationStreamViewModel>(App.Current.Dispatcher);
            CompositeDisposable.Add(_modelPropChangedEventListener = new PropertyChangedEventListener(model));
            CompositeDisposable.Add(_thisPropChangedEventListener = new PropertyChangedEventListener(this));
            CompositeDisposable.Add(Observable.Interval(TimeSpan.FromSeconds(60)).Subscribe(Interval_Fired));

            _modelPropChangedEventListener.Add(() => model.UnreadItemCount, UnreadItemCount_PropertyChanged);
            _thisPropChangedEventListener.Add(() => IsActive, IsActive_PropertyChanged);
        }
Esempio n. 12
0
 public void Initialize()
 {
     listener = new PropertyChangedEventListener(Model);
     listener.Add(() => Model.DiskFreeSpace, (_, __) => {
         DiskItems = Model.DiskFreeSpace.Select(
             item => new DiskItemViewModel()
         {
             Model = item
         }).ToList();
     });
 }
Esempio n. 13
0
        public StreamManagerViewModel(Account account)
        {
            _selectedIndex = -1;
            _accountModel = account;
            _streamManagerModel = account.Stream;
            _streams = ViewModelHelper.CreateReadOnlyDispatcherCollection(
                _streamManagerModel.Streams, item => new StreamViewModel(item), App.Current.Dispatcher);

            CompositeDisposable.Add(_thisPropChangedEventListener = new PropertyChangedEventListener(this));
            _thisPropChangedEventListener.Add(() => IsActive, IsActive_PropertyChanged);
        }
        void Initialize()
        {
            MapAreas = KanColleGame.Current.MasterInfo.Expeditions.Values.Where(r => ExpeditionService.Instance.ContainsInfo(r.ID)).GroupBy(r => r.MapArea).Select(r => new ExpeditionGroupByMapArea(r)).ToList();
            OnPropertyChanged(nameof(MapAreas));

            r_PCELs = KanColleGame.Current.Port.Fleets.Table.Values.Skip(1).Select(r =>
            {
                var rPCEL = new PropertyChangedEventListener(r);
                rPCEL.Add(nameof(r.Ships), (s, e) => Update(r));
                return rPCEL;
            }).ToArray();
        }
        void Initialize()
        {
            MapAreas = KanColleGame.Current.MasterInfo.Expeditions.Values.Where(r => ExpeditionService.Instance.ContainsInfo(r.ID)).GroupBy(r => r.MapArea).Select(r => new ExpeditionGroupByMapArea(r)).ToList();
            OnPropertyChanged(nameof(MapAreas));

            r_PCELs = KanColleGame.Current.Port.Fleets.Table.Values.Skip(1).Select(r =>
            {
                var rPCEL = new PropertyChangedEventListener(r);
                rPCEL.Add(nameof(r.Ships), (s, e) => Update(r));
                return(rPCEL);
            }).ToArray();
        }
Esempio n. 16
0
 public UserProfilePageViewModel(User us, MainWindowViewModel vm)
 {
     user       = us;
     mainw      = vm;
     mwlistener = new PropertyChangedEventListener(mainw);
     mwlistener.Add("TabClose", (s, e) =>
     {
         if (mainw.ClosedTabTag == this)
         {
             Dispose();
         }
     });
 }
Esempio n. 17
0
 public UserProfilePageViewModel(User us, MainWindowViewModel vm)
 {
     user = us;
     mainw = vm;
     mwlistener = new PropertyChangedEventListener(mainw);
     mwlistener.Add("TabClose", (s, e) =>
     {
         if (mainw.ClosedTabTag == this)
         {
             Dispose();
         }
     });
 }
 public UserCustomizableTimelineViewModel(MainWindowViewModel mv)
 {
     main = mv;
     listener = new PropertyChangedEventListener(kbtter);
     CompositeDisposable.Add(listener);
     listener.Add("Status", OnStatus);
     mwlistener = new PropertyChangedEventListener(main);
     mwlistener.Add("TabClose", (s, e) =>
     {
         if (main.ClosedTabTag==this)
         {
             Dispose();
         }
     });
 }
Esempio n. 19
0
 public UserCustomizableTimelineViewModel(MainWindowViewModel mv)
 {
     main     = mv;
     listener = new PropertyChangedEventListener(kbtter);
     CompositeDisposable.Add(listener);
     listener.Add("Status", OnStatus);
     mwlistener = new PropertyChangedEventListener(main);
     mwlistener.Add("TabClose", (s, e) =>
     {
         if (main.ClosedTabTag == this)
         {
             Dispose();
         }
     });
 }
Esempio n. 20
0
        public async void Initialize()
        {
            await GetGlobalLock();

            try
            {
                Util.LogHandlers.Add(AddLog);
                Server = new EncodeServer(App.Option.ServerPort, null, async() =>
                {
                    await RealCloseWindow();
                });
                await Server.Init();

                RaisePropertyChanged(nameof(Server));
                WindowCaption = "AmatsukazeServer" + Server.Version + "@" + Dns.GetHostName() + ":" + App.Option.ServerPort;

                // SleepCancel
                SleepCancelVM = new SleepCancelViewModel()
                {
                    Model = Server
                };
                var modelListener = new PropertyChangedEventListener(Server);
                modelListener.Add(() => Server.SleepCancel, (_, __) => ShowOrCloseSleepCancel());
                CompositeDisposable.Add(modelListener);
            }
            catch (Exception e)
            {
                var message = new InformationMessage(
                    "起動処理でエラーが発生しました\r\n" +
                    e.Message + "\r\n" + e.StackTrace,
                    "AmatsukazeServer",
                    "Message");

                await Messenger.RaiseAsync(message);

                await RealCloseWindow();
            }

            if (App.Option.LaunchType == LaunchType.Debug)
            {
                var asm = Assembly.GetExecutingAssembly().GetName();
                Process.Start(new ProcessStartInfo()
                {
                    FileName  = $"{AppContext.BaseDirectory}{asm.Name}.exe",
                    Arguments = "--launch client",
                });
            }
        }
Esempio n. 21
0
        public AccountViewModel(Account model, MainViewModel managerVM)
        {
            _accountModel = model;
            _userName = _accountModel.Builder.Name;
            _userMailAddress = _accountModel.Builder.Email;
            _manager = managerVM;
            _stream = new StreamManagerViewModel(_accountModel);
            _notification = new NotificationManagerViewModel(_accountModel.Notification);
            OpenAccountListCommand = new ViewModelCommand(OpenAccountListCommand_Execute);
            ActivateCommand = new ViewModelCommand(ActivateCommand_Execute);
            CompositeDisposable.Add(_thisPropChangedEventListener = new PropertyChangedEventListener(this));

            _thisPropChangedEventListener.Add(() => IsActive, IsActive_PropertyChanged);
            DataCacheDictionary
                .DownloadImage(new Uri(_accountModel.Builder.IconUrl.Replace("$SIZE_SEGMENT", "s38-c-k")))
                .ContinueWith(tsk => UserIconUrl = tsk.Result);
        }
Esempio n. 22
0
        public ServerWindow()
        {
            InitializeComponent();
            Utils.SetWindowProperties(this);
            NotifyIcon = new NotifyIconWrapper()
            {
                Window = this
            };
            CompositeDisposable = new LivetCompositeDisposable();

            var serverVM = DataContext as ServerViewModel;

            if (serverVM != null)
            {
                var modelListener = new PropertyChangedEventListener(serverVM);
                modelListener.Add(() => serverVM.WindowCaption, (_, __) => NotifyIcon.Text = serverVM.WindowCaption);
                CompositeDisposable.Add(modelListener);
            }
        }
Esempio n. 23
0
 public ActivityViewModel(Activity activity, bool isActive)
 {
     _model = activity;
     _isActive = isActive;
     _comments = ViewModelHelper.CreateReadOnlyDispatcherCollection(
         _model.Comments, item => new CommentViewModel(item, _isActive), App.Current.Dispatcher);
     _comments.CollectionChanged += _comments_CollectionChanged;
     SendCommentCommand = new ViewModelCommand(SendCommentCommand_Executed);
     CancelCommentCommand = new ViewModelCommand(CancelCommentCommand_Executed);
     CompositeDisposable.Add(_comments);
     CompositeDisposable.Add(_thisPropChangedEventListener = new PropertyChangedEventListener(this));
     CompositeDisposable.Add(
         Observable.Merge(
             Observable.Return(Unit.Default),
             Observable.FromEventPattern<EventHandler, EventArgs>(
                 handler => _model.Updated += handler,
                 handler => _model.Updated -= handler).Select(info => Unit.Default))
             .Subscribe(info => Task.Run(() => Refresh(_isActive))));
     _thisPropChangedEventListener.Add(() => IsCheckedCommentsHeader, IsCheckedCommentsHeader_PropertyChanged);
 }
Esempio n. 24
0
 public void RegisterHandlers()
 {
     listener.Add("AccessTokenRequest", OnAccessTokenRequest);
     listener.Add("PluginErrorCount", (s, e) =>
     {
         NotifyInformation(
             string.Format(
                 "{0}個のプラグインがエラーで読み込めませんでした。確認してください。",
                 kbtter.PluginErrorCount
                 ));
     });
     listener.Add("Status", OnStatusUpdate);
     listener.Add("Event", OnEvent);
     listener.Add("DirectMessage", OnDirectMessageUpdate);
     listener.Add("AuthenticatedUser", OnUserProfileUpdate);
 }
Esempio n. 25
0
        public InputCoreViewModel(InputViewModel parent)
        {
            this._parent   = parent;
            this._provider = new InputAreaSuggestItemProvider();

            CompositeDisposable.Add(
                this._bindingHashtags = ViewModelHelperRx.CreateReadOnlyDispatcherCollectionRx(
                    InputModel.InputCore.BindingHashtags,
                    tag => new BindHashtagViewModel(tag, () => UnbindHashtag(tag)),
                    DispatcherHelper.UIDispatcher));
            CompositeDisposable.Add(_bindingHashtags
                                    .ListenCollectionChanged()
                                    .Subscribe(_ =>
            {
                InputData.BoundTags = _bindingHashtags.Select(h => h.Hashtag).ToArray();
                RaisePropertyChanged(() => IsBindingHashtagExisted);
            }));
            _bindableHashtagCandidates =
                new DispatcherCollection <BindHashtagViewModel>(DispatcherHelper.UIDispatcher);
            CompositeDisposable.Add(_bindableHashtagCandidates
                                    .ListenCollectionChanged()
                                    .Subscribe(_ => RaisePropertyChanged(() => IsBindableHashtagExisted)));

            CompositeDisposable.Add(_draftedInputs =
                                        ViewModelHelperRx.CreateReadOnlyDispatcherCollectionRx(
                                            InputModel.InputCore.Drafts,
                                            _ =>
                                            new InputDataViewModel(this, _, vm => InputModel.InputCore.Drafts.Remove(vm)),
                                            DispatcherHelper.UIDispatcher));

            CompositeDisposable.Add(_draftedInputs
                                    .ListenCollectionChanged()
                                    .Subscribe(_ =>
            {
                RaisePropertyChanged(() => DraftCount);
                RaisePropertyChanged(() => IsDraftsExisted);
            }));

            // listen setting changed
            CompositeDisposable.Add(
                Setting.SuppressTagBindingInReply.ListenValueChanged(
                    _ => RaisePropertyChanged(() => IsBindHashtagEnabled)));

            // listen text control
            CompositeDisposable.Add(new EventListener <Action <CursorPosition> >(
                                        h => InputModel.SetCursorRequest += h,
                                        h => InputModel.SetCursorRequest -= h,
                                        SetCursor));
            var plistener = new PropertyChangedEventListener(InputModel.InputCore);

            plistener.Add(() => InputModel.InputCore.CurrentInputData, (_, e) => InputDataChanged());
            CompositeDisposable.Add(plistener);

            // create temporary directory and reserve deletion before exit app.
            do
            {
                _tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            } while (Directory.Exists(_tempDir));
            Directory.CreateDirectory(_tempDir);
            App.ApplicationExit += () =>
            {
                try
                {
                    Directory.Delete(this._tempDir, true);
                }
                // ReSharper disable once EmptyGeneralCatchClause
                catch (Exception)
                {
                    // I think that is sign from God that I must not delete that folder if failed.
                }
            };

            // initialize clipboard watcher.
            ClipboardWatcher watcher;

            CompositeDisposable.Add(watcher = new ClipboardWatcher());
            watcher.ClipboardChanged       += (o, e) => RaisePropertyChanged(() => IsClipboardContentImage);
            watcher.StartWatching();
            Setting.DisableGeoLocationService.ValueChanged += this.UpdateGeoLocationService;
            this.UpdateGeoLocationService(Setting.DisableGeoLocationService.Value);
        }
Esempio n. 26
0
        public InputCoreViewModel(InputViewModel parent)
        {
            this._parent = parent;
            this._provider = new InputAreaSuggestItemProvider();

            CompositeDisposable.Add(
                this._bindingHashtags = ViewModelHelperRx.CreateReadOnlyDispatcherCollectionRx(
                    InputModel.InputCore.BindingHashtags,
                    tag => new BindHashtagViewModel(tag, () => UnbindHashtag(tag)),
                    DispatcherHelper.UIDispatcher));
            CompositeDisposable.Add(_bindingHashtags
                                        .ListenCollectionChanged()
                                        .Subscribe(_ =>
                                        {
                                            InputData.BoundTags = _bindingHashtags.Select(h => h.Hashtag).ToArray();
                                            RaisePropertyChanged(() => IsBindingHashtagExisted);
                                        }));
            _bindableHashtagCandidates =
                new DispatcherCollection<BindHashtagViewModel>(DispatcherHelper.UIDispatcher);
            CompositeDisposable.Add(_bindableHashtagCandidates
                                        .ListenCollectionChanged()
                                        .Subscribe(_ => RaisePropertyChanged(() => IsBindableHashtagExisted)));

            CompositeDisposable.Add(_draftedInputs =
                                    ViewModelHelperRx.CreateReadOnlyDispatcherCollectionRx(
                    InputModel.InputCore.Drafts,
                                        _ =>
                                        new InputDataViewModel(this, _, vm => InputModel.InputCore.Drafts.Remove(vm)),
                                        DispatcherHelper.UIDispatcher));

            CompositeDisposable.Add(_draftedInputs
                                        .ListenCollectionChanged()
                                        .Subscribe(_ =>
                                        {
                                            RaisePropertyChanged(() => DraftCount);
                                            RaisePropertyChanged(() => IsDraftsExisted);
                                        }));

            // listen setting changed
            CompositeDisposable.Add(
                Setting.SuppressTagBindingInReply.ListenValueChanged(
                    _ => RaisePropertyChanged(() => IsBindHashtagEnabled)));

            // listen text control
            CompositeDisposable.Add(new EventListener<Action<CursorPosition>>(
                h => InputModel.SetCursorRequest += h,
                h => InputModel.SetCursorRequest -= h,
                SetCursor));
            var plistener = new PropertyChangedEventListener(InputModel.InputCore);
            plistener.Add(() => InputModel.InputCore.CurrentInputData, (_, e) => InputDataChanged());
            CompositeDisposable.Add(plistener);

            // create temporary directory and reserve deletion before exit app.
            do
            {
                _tempDir = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
            } while (Directory.Exists(_tempDir));
            Directory.CreateDirectory(_tempDir);
            App.ApplicationExit += () =>
            {
                try
                {
                    Directory.Delete(this._tempDir, true);
                }
                // ReSharper disable once EmptyGeneralCatchClause
                catch (Exception)
                {
                    // I think that is sign from God that I must not delete that folder if failed.
                }
            };

            // initialize clipboard watcher.
            ClipboardWatcher watcher;
            CompositeDisposable.Add(watcher = new ClipboardWatcher());
            watcher.ClipboardChanged += (o, e) => RaisePropertyChanged(() => IsClipboardContentImage);
            watcher.StartWatching();
            Setting.DisableGeoLocationService.ValueChanged += this.UpdateGeoLocationService;
            this.UpdateGeoLocationService(Setting.DisableGeoLocationService.Value);
        }
Esempio n. 27
0
        public async void Initialize()
        {
            var modelListener = new PropertyChangedEventListener(Model);

            modelListener.Add(() => Model.IsRunning, (_, __) => RaisePropertyChanged(() => RunningState));
            modelListener.Add(() => Model.IsSuspended, (_, __) => RaisePropertyChanged(() => RunningState));
            modelListener.Add(() => Model.IsScheduledSuspend, (_, __) => RaisePropertyChanged(() => RunningState));
            modelListener.Add(() => Model.ServerHostName, (_, __) => RaisePropertyChanged(() => WindowCaption));
            modelListener.Add(() => Model.ServerVersion, (_, __) => RaisePropertyChanged(() => WindowCaption));
            modelListener.Add(() => Model.IsCurrentResultFail, (_, __) =>
            {
                RaisePropertyChanged("StatusBackColor");
                RaisePropertyChanged("StatusForeColor");
            });
            modelListener.Add(() => Model.SleepCancel, (_, __) => ShowOrCloseSleepCancel());
            CompositeDisposable.Add(modelListener);

            // 他のVMのInitializeを読んでやる
            foreach (var vm in MainPanelMenu)
            {
                InitializeVM(vm);
            }
            foreach (var vm in ConsolePanelMenu)
            {
                InitializeVM(vm);
            }
            foreach (var vm in InfoPanelMenu)
            {
                InitializeVM(vm);
            }

            // 初期パネル表示
            SelectedMainPanel    = null;
            SelectedConsolePanel = null;
            SelectedInfoPanel    = null;

            Model.ServerAddressRequired = ServerAddressRequired;
            Model.FinishRequested       = () =>
                                          Messenger.Raise(new WindowActionMessage(WindowAction.Close, "MainWindowAction"));

            try
            {
                await Model.Start();
            }
            catch (MultipleInstanceException)
            {
                var message = new InformationMessage(
                    "多重起動を検知しました。\r\n" +
                    "サーバが起動している場合はAmatsukazeClientで接続してみてください。",
                    "AmatsukazeServer",
                    "Message");

                await Messenger.RaiseAsync(message);

                Messenger.Raise(new WindowActionMessage(WindowAction.Close, "MainWindowAction"));
            }
            catch (Exception e)
            {
                var message = new InformationMessage(
                    "起動処理でエラーが発生しました\r\n" +
                    e.Message + "\r\n" + e.StackTrace,
                    "AmatsukazeServer",
                    "Message");

                await Messenger.RaiseAsync(message);

                Messenger.Raise(new WindowActionMessage(WindowAction.Close, "MainWindowAction"));
            }
        }
Esempio n. 28
0
        private void InitializeEventListeners()
        {
            listener = new PropertyChangedEventListener(Kbtter);
            CompositeDisposable.Add(listener);

            listener.Add("AuthenticatedUser", (s, e) =>
            {
                View.LoginUser.Dispose();
                View.LoginUser = new UserViewModel(Kbtter.AuthenticatedUser, this);
                UpdateStatusCommand.RaiseCanExecuteChanged();
            });

            listener.Add("NotifyText", (s, e) =>
            {
                View.Notify(Kbtter.NotifyText);
            });

            listener.Add("HeadlineText", (s, e) =>
            {
                View.HeadlineText = Kbtter.HeadlineText;
                View.HeadlineUserImage = Kbtter.HeadlineUserImage;
            });
        }
 public NotificationStreamViewModel(string name, NotificationStream model)
 {
     _streamModel = model;
     Name = name;
     CompositeDisposable.Add(_modelPropChangedEventListener = new PropertyChangedEventListener(model));
     CompositeDisposable.Add(_thisPropChangedEventListener = new PropertyChangedEventListener(this));
     CompositeDisposable.Add(Items = ViewModelHelper.CreateReadOnlyDispatcherCollection(
         _streamModel.Items, item => WrapViewModel(item, DateTime.UtcNow), App.Current.Dispatcher));
     _modelPropChangedEventListener.Add(() => model.Status, Status_ChangedProperty);
 }
Esempio n. 30
0
 public DirectoryInfos()
 {
     listener = new PropertyChangedEventListener(this);
     listener.Add(IsExpandedPropertyName, OnPropertyChanged);
     listener.Add(IsSelectedPropertyName, OnPropertyChanged);
 }
Esempio n. 31
0
        public InputCoreViewModel(InputViewModel parent)
        {
            this._parent = parent;
            this._provider = new InputAreaSuggestItemProvider();

            CompositeDisposable.Add(
                this._bindingHashtags = ViewModelHelperRx.CreateReadOnlyDispatcherCollectionRx(
                    InputModel.InputCore.BindingHashtags,
                    tag => new BindHashtagViewModel(tag, () => UnbindHashtag(tag)),
                    DispatcherHelper.UIDispatcher));
            CompositeDisposable.Add(_bindingHashtags
                                        .ListenCollectionChanged()
                                        .Subscribe(_ =>
                                        {
                                            InputData.BoundTags = _bindingHashtags.Select(h => h.Hashtag).ToArray();
                                            RaisePropertyChanged(() => IsBindingHashtagExisted);
                                        }));
            _bindableHashtagCandidates =
                new DispatcherCollection<BindHashtagViewModel>(DispatcherHelper.UIDispatcher);
            CompositeDisposable.Add(_bindableHashtagCandidates
                                        .ListenCollectionChanged()
                                        .Subscribe(_ => RaisePropertyChanged(() => IsBindableHashtagExisted)));

            CompositeDisposable.Add(_draftedInputs =
                                    ViewModelHelperRx.CreateReadOnlyDispatcherCollectionRx(
                    InputModel.InputCore.Drafts,
                                        _ =>
                                        new InputDataViewModel(this, _, vm => InputModel.InputCore.Drafts.Remove(vm)),
                                        DispatcherHelper.UIDispatcher));

            CompositeDisposable.Add(_draftedInputs
                                        .ListenCollectionChanged()
                                        .Subscribe(_ =>
                                        {
                                            RaisePropertyChanged(() => DraftCount);
                                            RaisePropertyChanged(() => IsDraftsExisted);
                                        }));

            // listen setting changed
            CompositeDisposable.Add(
                Setting.SuppressTagBindingInReply.ListenValueChanged(
                    _ => RaisePropertyChanged(() => IsBindHashtagEnabled)));

            // listen text control
            CompositeDisposable.Add(new EventListener<Action<CursorPosition>>(
                h => InputModel.SetCursorRequest += h,
                h => InputModel.SetCursorRequest -= h,
                SetCursor));
            var plistener = new PropertyChangedEventListener(InputModel.InputCore);
            plistener.Add(() => InputModel.InputCore.CurrentInputData, (_, e) => InputDataChanged());
            CompositeDisposable.Add(plistener);

            // initialize clipboard watcher.
            ClipboardWatcher watcher;
            CompositeDisposable.Add(watcher = new ClipboardWatcher());
            watcher.ClipboardChanged += (o, e) => RaisePropertyChanged(() => IsClipboardContentImage);
            watcher.StartWatching();
            Setting.DisableGeoLocationService.ValueChanged += this.UpdateGeoLocationService;
            this.UpdateGeoLocationService(Setting.DisableGeoLocationService.Value);
        }
 internal AirBaseViewModel()
 {
     var rAirBase = KanColleGame.Current.Port.AirBase;
     var rPCEL = new PropertyChangedEventListener(rAirBase);
     rPCEL.Add(nameof(rAirBase.AllGroups), (s, e) => Groups = rAirBase.AllGroups.Select(r => new AirForceGroupViewModel(r)).ToList());
 }
Esempio n. 33
0
 public FileInfos()
 {
     listener = new PropertyChangedEventListener(this);
     listener.Add(IsSelectedPropertyName, OnPropertyChanged);
 }