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); }
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(); }
public void Initialize() { listener = new PropertyChangedEventListener(Model); listener.Add(() => Model.BitrateA, UpdateBitrate); listener.Add(() => Model.BitrateB, UpdateBitrate); listener.Add(() => Model.BitrateH264, UpdateBitrate); }
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()); }
public void Initialize() { listener = new PropertyChangedEventListener(Model); listener.Add(() => Model.CurrentLogFile, (_, __) => { IsLargeFile = (Model.CurrentLogFile?.Length ?? 0) > 100 * 1000; }); }
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()); }
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); }
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; } }); }
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); }
/// <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); }
public void Initialize() { listener = new PropertyChangedEventListener(Model); listener.Add(() => Model.DiskFreeSpace, (_, __) => { DiskItems = Model.DiskFreeSpace.Select( item => new DiskItemViewModel() { Model = item }).ToList(); }); }
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(); }
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(); } }); }
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(); } }); }
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", }); } }
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); }
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); } }
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); }
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); }
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); }
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); }
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")); } }
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); }
public DirectoryInfos() { listener = new PropertyChangedEventListener(this); listener.Add(IsExpandedPropertyName, OnPropertyChanged); listener.Add(IsSelectedPropertyName, OnPropertyChanged); }
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()); }
public FileInfos() { listener = new PropertyChangedEventListener(this); listener.Add(IsSelectedPropertyName, OnPropertyChanged); }