Skip to content

Commit 72e0cae

Browse files
authored
Merge pull request #1224 from reactiveui/develop
Ship ReactiveUI v7.1.0
2 parents 25fb135 + b1e60d9 commit 72e0cae

25 files changed

+499
-259
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ If you’re already familiar with [functional reactive programming](http://docs.
1111

1212
If you have a question, please see if any discussions in our [GitHub issues](github.com/reactiveui/ReactiveUI/issues) or [Stack Overflow](https://stackoverflow.com/questions/tagged/reactiveui) have already answered it. If not, please [feel free to file your own](https://github.com/reactiveui/ReactiveUI/issues/new)!
1313

14-
We have our very own [Slack organization](https://reactivex.slack.com/) which contains some of the best user interface/reactive extension developers in the industry. All software engineers, young and old, regardless of experience are welcome to join our campfire but you'll need to send an email to [[email protected]](mailto:[email protected]) with the email address you'd like to be invited, and we'll send you an invite. Sit tight, it's worth it.
14+
We have our very own [Slack organization](https://reactivex.slack.com/) which contains some of the best user interface/reactive extension developers in the industry. All software engineers, young and old, regardless of experience are welcome to join our campfire but you'll need to send an email to [[email protected]](mailto:[email protected]) with the email address you'd like to be invited, and we'll send you an invite. Sit tight, it's worth it.
1515

1616
# Introduction
1717

@@ -107,7 +107,7 @@ this.WhenAnyValue(x => x.SearchQuery)
107107

108108
# Slack
109109

110-
We have our very own [Slack organization](https://reactivex.slack.com/) which contains some of the best user interface/reactive extension developers in the industry. All software engineers, young and old, regardless of experience are welcome to join our campfire but you'll need to send an email to [[email protected]](mailto:[email protected]) with the Email address you'd like to be invited, and we'll send you an invite. Sit tight, it's worth it.
110+
We have our very own [Slack organization](https://reactivex.slack.com/) which contains some of the best user interface/reactive extension developers in the industry. All software engineers, young and old, regardless of experience are welcome to join our campfire but you'll need to send an email to [[email protected]](mailto:[email protected]) with the Email address you'd like to be invited, and we'll send you an invite. Sit tight, it's worth it.
111111

112112
# Support
113113

src/ReactiveUI-AndroidSupport.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<language>en-us</language>
88

99
<dependencies>
10-
<dependency id="reactiveui-core" version="$version$" />
10+
<dependency id="reactiveui-core" version="[$version$]" />
1111
<dependency id="Xamarin.Android.Support.v4" version="22.1.1.1" />
1212
<dependency id="Xamarin.Android.Support.v7.AppCompat" version="22.1.1.1" />
1313
<dependency id="Xamarin.Android.Support.v7.RecyclerView" version="22.1.1.1" />

src/ReactiveUI-Blend.nuspec

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,22 @@
77
<language>en-us</language>
88
<dependencies>
99
<group>
10-
<dependency id="reactiveui-core" version="$version$" />
10+
<dependency id="reactiveui-core" version="[$version$]" />
1111
</group>
1212
<group targetFramework="net45">
13-
<dependency id="reactiveui-core" version="$version$" />
13+
<dependency id="reactiveui-core" version="[$version$]" />
1414
<dependency id="Rx-Xaml" version="2.2.5" />
1515
</group>
1616
<group targetFramework="wp8">
17-
<dependency id="reactiveui-core" version="$version$" />
17+
<dependency id="reactiveui-core" version="[$version$]" />
1818
<dependency id="Rx-Xaml" version="2.2.5" />
1919
</group>
2020
<group targetFramework="Portable-Win81+WPA81">
21-
<dependency id="reactiveui-core" version="$version$" />
21+
<dependency id="reactiveui-core" version="[$version$]" />
2222
<dependency id="Rx-Xaml" version="2.2.5" />
2323
</group>
2424
<group targetFramework="uap10.0">
25-
<dependency id="reactiveui-core" version="$version$" />
25+
<dependency id="reactiveui-core" version="[$version$]" />
2626
<dependency id="System.Diagnostics.Debug" version="4.0.10" />
2727
<dependency id="Microsoft.Xaml.Behaviors.Uwp.Managed" version="1.1.0" />
2828
<dependency id="Rx-Core" version="2.2.5" />

src/ReactiveUI-Testing.nuspec

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77
<language>en-us</language>
88
<dependencies>
99
<group targetFramework="net45">
10-
<dependency id="reactiveui-core" version="$version$" />
10+
<dependency id="reactiveui-core" version="[$version$]" />
1111
<dependency id="Rx-Testing" version="2.2.5" />
1212
</group>
1313
<group targetFramework="Win8">
14-
<dependency id="reactiveui-core" version="$version$" />
14+
<dependency id="reactiveui-core" version="[$version$]" />
1515
<dependency id="Rx-Testing" version="2.2.5" />
1616
</group>
1717
<group targetFramework="uap10.0">
18-
<dependency id="reactiveui-core" version="$version$" />
18+
<dependency id="reactiveui-core" version="[$version$]" />
1919
<dependency id="Rx-Core" version="2.2.5" />
2020
<dependency id="Rx-Interfaces" version="2.2.5" />
2121
<dependency id="Rx-Linq" version="2.2.5" />
@@ -26,10 +26,10 @@
2626
<dependency id="System.Threading.Tasks" version="4.0.10" />
2727
</group>
2828
<group targetFramework="monoandroid">
29-
<dependency id="reactiveui-core" version="$version$" />
29+
<dependency id="reactiveui-core" version="[$version$]" />
3030
</group>
3131
<group targetFramework="monotouch">
32-
<dependency id="reactiveui-core" version="$version$" />
32+
<dependency id="reactiveui-core" version="[$version$]" />
3333
</group>
3434
</dependencies>
3535
</metadata>

src/ReactiveUI-Winforms.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<description>Windows Forms specific extensions to ReactiveUI</description>
77
<language>en-us</language>
88
<dependencies>
9-
<dependency id="reactiveui-core" version="$version$" />
9+
<dependency id="reactiveui-core" version="[$version$]" />
1010
</dependencies>
1111
</metadata>
1212
<files>

src/ReactiveUI-XamForms.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<description>Xamarin Forms specific extensions to ReactiveUI</description>
77
<language>en-us</language>
88
<dependencies>
9-
<dependency id="reactiveui-core" version="$version$" />
9+
<dependency id="reactiveui-core" version="[$version$]" />
1010
<dependency id="Xamarin.Forms" version="2.3.1.114" />
1111
</dependencies>
1212
</metadata>

src/ReactiveUI.Tests/ReactiveCommandTest.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,19 @@ public void CanExecuteIsFalseIfAlreadyExecuting()
100100
});
101101
}
102102

103+
[Fact]
104+
public void CanExecuteIsUnsubscribedAfterCommandDisposal()
105+
{
106+
var canExecuteSubject = new Subject<bool>();
107+
var fixture = ReactiveCommand.Create(() => Observable.Return(Unit.Default), canExecuteSubject);
108+
109+
Assert.True(canExecuteSubject.HasObservers);
110+
111+
fixture.Dispose();
112+
113+
Assert.False(canExecuteSubject.HasObservers);
114+
}
115+
103116
[Fact]
104117
public void CanExecuteTicksFailuresThroughThrownExceptions()
105118
{

src/ReactiveUI.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<description>A MVVM framework that integrates with the Reactive Extensions for .NET to create elegant, testable User Interfaces that run on any mobile or desktop platform. Supports Xamarin.iOS, Xamarin.Android, Xamarin.Mac, Xamarin Forms, WPF, Windows Forms, Windows Phone 8.1, Windows Store and Universal Windows Platform (UWP).</description>
77
<language>en-us</language>
88
<dependencies>
9-
<dependency id="reactiveui-core" version="$version$" />
9+
<dependency id="reactiveui-core" version="[$version$]" />
1010
</dependencies>
1111
</metadata>
1212
<files>

src/ReactiveUI/Android/ControlFetcherMixin.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public static T GetControl<T>(this Fragment This, [CallerMemberName]string prope
7878
public static void WireUpControls(this ILayoutViewHost This)
7979
{
8080
var members = This.GetType().GetRuntimeProperties()
81-
.Where(m => m.PropertyType.IsSubclassOf(typeof(View)));
81+
.Where(m => typeof(View).IsAssignableFrom(m.PropertyType));
8282

8383
members.ToList().ForEach(m => {
8484
try {
@@ -100,7 +100,7 @@ public static void WireUpControls(this ILayoutViewHost This)
100100
public static void WireUpControls(this View This)
101101
{
102102
var members = This.GetType().GetRuntimeProperties()
103-
.Where(m => m.PropertyType.IsSubclassOf(typeof(View)));
103+
.Where(m => typeof(View).IsAssignableFrom(m.PropertyType));
104104

105105
members.ToList().ForEach(m => {
106106
try {
@@ -124,7 +124,7 @@ public static void WireUpControls(this View This)
124124
public static void WireUpControls(this Fragment This, View inflatedView)
125125
{
126126
var members = This.GetType().GetRuntimeProperties()
127-
.Where(m => m.PropertyType.IsSubclassOf(typeof(View)));
127+
.Where(m => typeof(View).IsAssignableFrom(m.PropertyType));
128128

129129
members.ToList().ForEach(m => {
130130
try {
@@ -146,7 +146,7 @@ public static void WireUpControls(this Fragment This, View inflatedView)
146146
public static void WireUpControls(this Activity This)
147147
{
148148
var members = This.GetType().GetRuntimeProperties()
149-
.Where(m => m.PropertyType.IsSubclassOf(typeof(View)));
149+
.Where(m => typeof(View).IsAssignableFrom(m.PropertyType));
150150

151151
members.ToList().ForEach(m => {
152152
try {

src/ReactiveUI/Cocoa/ReactiveCollectionReusableView.cs

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,22 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.ComponentModel;
4-
using System.Diagnostics.Contracts;
5-
using System.Drawing;
6-
using System.Linq;
73
using System.Reactive;
8-
using System.Reactive.Concurrency;
9-
using System.Reactive.Disposables;
104
using System.Reactive.Subjects;
11-
using System.Reflection;
12-
using System.Runtime.CompilerServices;
13-
using System.Runtime.Serialization;
14-
using System.Threading;
15-
using ReactiveUI;
16-
using Splat;
175
using System.Reactive.Linq;
186

197
#if UNIFIED
208
using CoreGraphics;
219
using Foundation;
2210
using UIKit;
2311
#else
12+
using System.Drawing;
2413
using MonoTouch.Foundation;
2514
using MonoTouch.UIKit;
2615
#endif
2716

2817
namespace ReactiveUI
2918
{
30-
public abstract class ReactiveCollectionReusableView : UICollectionReusableView,
19+
public abstract class ReactiveCollectionReusableView : UICollectionReusableView,
3120
IReactiveNotifyPropertyChanged<ReactiveCollectionReusableView>, IHandleObservableErrors, IReactiveObject, ICanActivate
3221
{
3322
#if UNIFIED
@@ -43,7 +32,7 @@ public abstract class ReactiveCollectionReusableView : UICollectionReusableView,
4332

4433
public event PropertyChangingEventHandler PropertyChanging;
4534

46-
void IReactiveObject.RaisePropertyChanging(PropertyChangingEventArgs args)
35+
void IReactiveObject.RaisePropertyChanging(PropertyChangingEventArgs args)
4736
{
4837
var handler = PropertyChanging;
4938
if (handler != null) {
@@ -53,7 +42,7 @@ void IReactiveObject.RaisePropertyChanging(PropertyChangingEventArgs args)
5342

5443
public event PropertyChangedEventHandler PropertyChanged;
5544

56-
void IReactiveObject.RaisePropertyChanged(PropertyChangedEventArgs args)
45+
void IReactiveObject.RaisePropertyChanged(PropertyChangedEventArgs args)
5746
{
5847
var handler = PropertyChanged;
5948
if (handler != null) {
@@ -111,4 +100,29 @@ public override void RemoveFromSuperview()
111100
deactivated.OnNext(Unit.Default);
112101
}
113102
}
103+
104+
public abstract class ReactiveCollectionReusableView<TViewModel> : ReactiveCollectionReusableView, IViewFor<TViewModel>
105+
where TViewModel : class
106+
{
107+
protected ReactiveCollectionReusableView() { }
108+
protected ReactiveCollectionReusableView(IntPtr handle) : base(handle) { }
109+
protected ReactiveCollectionReusableView(NSObjectFlag t) : base(t) { }
110+
protected ReactiveCollectionReusableView(NSCoder coder) : base(coder) { }
111+
#if UNIFIED
112+
protected ReactiveCollectionReusableView(CGRect frame) : base(frame) { }
113+
#else
114+
protected ReactiveCollectionReusableView(RectangleF frame) : base(frame) { }
115+
#endif
116+
117+
TViewModel _viewModel;
118+
public TViewModel ViewModel {
119+
get { return _viewModel; }
120+
set { this.RaiseAndSetIfChanged(ref _viewModel, value); }
121+
}
122+
123+
object IViewFor.ViewModel {
124+
get { return ViewModel; }
125+
set { ViewModel = (TViewModel)value; }
126+
}
127+
}
114128
}

0 commit comments

Comments
 (0)