private NicoCommentViewModel(NicoSitePlugin.INicoMessage message, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) { _message = message; _metadata = metadata; _methods = methods; ConnectionName = connectionStatus; _options = options; ConnectionName.PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(ConnectionName.Name): RaisePropertyChanged(nameof(ConnectionName)); break; case nameof(ConnectionName.BackColor): RaisePropertyChanged(nameof(Background)); break; case nameof(ConnectionName.ForeColor): RaisePropertyChanged(nameof(Foreground)); break; } }; options.PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(options.IsEnabledSiteConnectionColor): RaisePropertyChanged(nameof(Background)); RaisePropertyChanged(nameof(Foreground)); break; } }; _message.ValueChanged += (s, e) => { if (_message is INicoComment nicoComment) { switch (e.PropertyName) { case nameof(nicoComment.UserName): RaisePropertyChanged(nameof(NameItems)); break; } } }; _metadata.PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(_metadata.BackColor): RaisePropertyChanged(nameof(Background)); break; case nameof(_metadata.ForeColor): RaisePropertyChanged(nameof(Foreground)); break; case nameof(_metadata.FontFamily): RaisePropertyChanged(nameof(FontFamily)); break; case nameof(_metadata.FontStyle): RaisePropertyChanged(nameof(FontStyle)); break; case nameof(_metadata.FontWeight): RaisePropertyChanged(nameof(FontWeight)); break; case nameof(_metadata.FontSize): RaisePropertyChanged(nameof(FontSize)); break; case nameof(_metadata.IsNameWrapping): RaisePropertyChanged(nameof(UserNameWrapping)); break; case nameof(_metadata.IsVisible): RaisePropertyChanged(nameof(IsVisible)); break; } }; if (_metadata.User != null) { var user = _metadata.User; user.PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(user.Nickname): SetNickname(user); RaisePropertyChanged(nameof(NameItems)); break; } }; SetNickname(user); } }
public NicoCommentViewModel(NicoSitePlugin.INicoDisconnected disconnected, IMessageMetadata metadata, IMessageMethods methods, IConnectionStatus connectionStatus, IOptions options) : this(disconnected as NicoSitePlugin.INicoMessage, metadata, methods, connectionStatus, options) { _message = disconnected; MessageItems = Common.MessagePartFactory.CreateMessageItems(disconnected.Text); }