Skip to content

Commit 1a0893e

Browse files
authored
feature: Add support for Xamarin TV.OS (#1706)
1 parent 5c83e6e commit 1a0893e

33 files changed

+182
-9
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ src/ReactiveUI/Platforms/net461/* @reactiveui/wpf-team @reactiveui/winf
2727
src/ReactiveUI/Platforms/netcoreapp2.0/* @reactiveui/dotnetcore-team @reactiveui/webassembly-team
2828
src/ReactiveUI/Platforms/uap10.0.16299/* @reactiveui/uwp-team
2929
src/ReactiveUI/Platforms/tizen/* @reactiveui/tizen-team
30+
src/ReactiveUI/Platforms/tvos/* @reactiveui/tvos-team
3031
src/ReactiveUI/Platforms/windows-common/* @reactiveui/wpf-team @reactiveui/winforms-team @reactiveui/uwp-team
3132
src/ReactiveUI/Platforms/xamarin-common/* @reactiveui/xamarin-forms-team
3233

build.cake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ Task("GenerateEvents")
175175
generate("wpf", "src/ReactiveUI.Events.WPF/");
176176
generate("xamforms", "src/ReactiveUI.Events.XamForms/");
177177
generate("winforms", "src/ReactiveUI.Events.Winforms/");
178+
generate("essentials", "src/ReactiveUI.Events/");
179+
generate("tvos", "src/ReactiveUI.Events/");
178180
});
179181

180182
Task("BuildReactiveUI")

src/Directory.build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<Authors>.NET Foundation and Contributors</Authors>
88
<Owners>xpaulbettsx;ghuntley</Owners>
99
<Product>ReactiveUI ($(TargetFramework))</Product>
10-
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;LINQ;events;frp;xamarin;android;ios;mac;forms;monodroid;monotouch;xamarin.android;xamarin.ios;xamarin.forms;xamarin.mac;wpf;net;netstandard;net461;uwp;tizen</PackageTags>
10+
<PackageTags>mvvm;reactiveui;rx;reactive extensions;observable;LINQ;events;frp;xamarin;android;ios;mac;forms;monodroid;monotouch;xamarin.android;xamarin.ios;xamarin.forms;xamarin.mac;xamarin.tvos;wpf;net;netstandard;net461;uwp;tizen</PackageTags>
1111
<PackageReleaseNotes>https://reactiveui.net/blog/</PackageReleaseNotes>
1212

1313
<NoWarn>$(NoWarn);1591;1701;1702;1705</NoWarn>

src/Directory.build.targets

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
</PropertyGroup>
1414
<PropertyGroup Condition="'$(TargetFramework)' == 'Xamarin.Mac20'">
1515
<DefineConstants>$(DefineConstants);MONO;COCOA</DefineConstants>
16+
</PropertyGroup>
17+
<PropertyGroup Condition="'$(TargetFramework)' == 'Xamarin.TVOS10'">
18+
<DefineConstants>$(DefineConstants);MONO;UIKIT;COCOA;TVOS10</DefineConstants>
1619
</PropertyGroup>
1720
<PropertyGroup Condition="'$(TargetFramework)' == 'MonoAndroid80'">
1821
<DefineConstants>$(DefineConstants);MONO;ANDROID</DefineConstants>

src/EventBuilder/CommandLineOptions.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ public enum AutoPlatform
1919
XamForms,
2020
UWP,
2121
Winforms,
22+
TVOS,
2223
Essentials
2324
}
2425

@@ -29,7 +30,7 @@ public class CommandLineOptions
2930

3031
[Option('p', "platform", Required = true,
3132
HelpText =
32-
"Platform to automatically generate. Possible options include: NONE, ANDROID, IOS, WPF, MAC, TIZEN, UWP, XAMFORMS, WINFORMS"
33+
"Platform to automatically generate. Possible options include: NONE, ANDROID, IOS, WPF, MAC, TIZEN, UWP, XAMFORMS, WINFORMS, TVOS"
3334
)]
3435
public AutoPlatform Platform { get; set; }
3536

src/EventBuilder/Platforms/tvOS.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// See the LICENSE file in the project root for more information.
4+
5+
using System.IO;
6+
using System.Linq;
7+
8+
namespace EventBuilder.Platforms
9+
{
10+
// ReSharper disable once InconsistentNaming
11+
public class TVOS : BasePlatform
12+
{
13+
public override AutoPlatform Platform => AutoPlatform.TVOS;
14+
15+
public TVOS(string referenceAssembliesLocation)
16+
{
17+
if (PlatformHelper.IsRunningOnMono()) {
18+
var assembly =
19+
@"/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.TVOS10/Xamarin.TVOS10.dll";
20+
Assemblies.Add(assembly);
21+
22+
CecilSearchDirectories.Add(Path.GetDirectoryName(assembly));
23+
} else {
24+
var assemblies =
25+
Directory.GetFiles(Path.Combine(referenceAssembliesLocation, "Xamarin.TVOS"),
26+
"Xamarin.TVOS.dll", SearchOption.AllDirectories);
27+
28+
var latestVersion = assemblies.Last();
29+
Assemblies.Add(latestVersion);
30+
31+
CecilSearchDirectories.Add(Path.GetDirectoryName(latestVersion));
32+
}
33+
}
34+
}
35+
}

src/EventBuilder/Program.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,11 @@ private static void Main(string[] args)
9393
platform = new Mac(_referenceAssembliesLocation);
9494
break;
9595

96-
case AutoPlatform.WPF:
96+
case AutoPlatform.TVOS:
97+
platform = new TVOS(_referenceAssembliesLocation);
98+
break;
99+
100+
case AutoPlatform.WPF:
97101
platform = new WPF();
98102
break;
99103

src/ReactiveUI.Events/ReactiveUI.Events.csproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="MSBuild.Sdk.Extras">
22
<PropertyGroup>
3-
<TargetFrameworks>uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;MonoAndroid80;tizen40</TargetFrameworks>
3+
<TargetFrameworks>uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid80;tizen40</TargetFrameworks>
44
<AssemblyName>ReactiveUI.Events</AssemblyName>
55
<RootNamespace>ReactiveUI.Events</RootNamespace>
66
<Description>Provides Observable-based events API for common UI controls/eventhandlers. The contents of this package is automatically generated, please target pull-requests to the code generator.</Description>
@@ -43,4 +43,8 @@
4343
<ItemGroup Condition=" '$(TargetFramework)' == 'Xamarin.Mac20' ">
4444
<Reference Include="netstandard" />
4545
</ItemGroup>
46+
47+
<ItemGroup Condition=" '$(TargetFramework)' == 'Xamarin.TVOS10' ">
48+
<Reference Include="netstandard" />
49+
</ItemGroup>
4650
</Project>

src/ReactiveUI.Fody.Helpers/ReactiveUI.Fody.Helpers.csproj

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="MSBuild.Sdk.Extras">
22
<PropertyGroup>
3-
<TargetFrameworks>netstandard2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;MonoAndroid80;netcoreapp2.0</TargetFrameworks>
3+
<TargetFrameworks>netstandard2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid80;netcoreapp2.0</TargetFrameworks>
44
<AssemblyName>ReactiveUI.Fody.Helpers</AssemblyName>
55
<RootNamespace>ReactiveUI.Fody.Helpers</RootNamespace>
66
<Description>Fody extension to generate RaisePropertyChange notifications for properties and ObservableAsPropertyHelper properties.</Description>
@@ -28,6 +28,10 @@
2828
<Reference Include="System.Runtime.Serialization" />
2929
</ItemGroup>
3030

31+
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.TVOS10'))">
32+
<Reference Include="System.Runtime.Serialization" />
33+
</ItemGroup>
34+
3135
<ItemGroup Condition="$(TargetFramework.StartsWith('Xamarin.Mac'))">
3236
<Reference Include="System.Runtime.Serialization" />
3337
</ItemGroup>

src/ReactiveUI.Testing/ReactiveUI.Testing.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="MSBuild.Sdk.Extras">
22
<PropertyGroup>
3-
<TargetFrameworks>netstandard2.0;netcoreapp2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;MonoAndroid80</TargetFrameworks>
3+
<TargetFrameworks>netstandard2.0;netcoreapp2.0;net461;uap10.0.16299;Xamarin.iOS10;Xamarin.Mac20;Xamarin.TVOS10;MonoAndroid80</TargetFrameworks>
44
<AssemblyName>ReactiveUI.Testing</AssemblyName>
55
<RootNamespace>ReactiveUI.Testing</RootNamespace>
66
<Description>A library to aid in writing unit tests for ReactiveUI projects</Description>

0 commit comments

Comments
 (0)