Skip to content

Commit ff3139e

Browse files
authored
Merge pull request #225 from enisn/feature/maui-update
MAUI Compatibility - IconView, CheckBox and StatefulStackLayout
2 parents e8a0896 + ff1164f commit ff3139e

File tree

200 files changed

+5087
-19648
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

200 files changed

+5087
-19648
lines changed

InputKit.sln

Lines changed: 99 additions & 116 deletions
Large diffs are not rendered by default.

InputKit/InputKit.csproj

Lines changed: 18 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
1-
<Project Sdk="MSBuild.Sdk.Extras/2.1.2">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">netstandard2.0;netstandard1.0;MonoAndroid90;MonoAndroid10.0;MonoAndroid11.0;Xamarin.iOS10;uap10.0.19041</TargetFrameworks>
5-
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netstandard2.0;netstandard1.0;MonoAndroid90;MonoAndroid10.0;MonoAndroid11.0;Xamarin.iOS10</TargetFrameworks>
4+
<!--<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">netstandard2.0;netstandard1.0;MonoAndroid90;MonoAndroid10.0;MonoAndroid11.0;Xamarin.iOS10;uap10.0.19041</TargetFrameworks>
5+
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">netstandard2.0;netstandard1.0;MonoAndroid90;MonoAndroid10.0;MonoAndroid11.0;Xamarin.iOS10</TargetFrameworks>-->
6+
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT'">net6.0;net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
7+
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT'">net6.0;net6.0-android;net6.0-ios</TargetFrameworks>
8+
<UseMaui>true</UseMaui>
9+
<SingleProject>true</SingleProject>
610

711
<AssemblyName>Plugin.InputKit</AssemblyName>
812
<RootNamespace>Plugin.InputKit</RootNamespace>
913
<PackageId>Xamarin.Forms.InputKit</PackageId>
1014
<Product>$(AssemblyName) ($(TargetFramework))</Product>
11-
<Version>3.7.2</Version>
12-
<PackageVersion>3.7.2</PackageVersion>
13-
<PackOnBuild>false</PackOnBuild>
15+
<Version>4.0.0</Version>
16+
<PackageVersion>4.0.0</PackageVersion>
1417
<NeutralLanguage>en-US</NeutralLanguage>
1518
<DefineConstants>$(DefineConstants);</DefineConstants>
16-
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
1719
<GenerateDocumentationFile Condition=" '$(Configuration)' == 'Release' ">true</GenerateDocumentationFile>
18-
<UseFullSemVerForNuGet>false</UseFullSemVerForNuGet>
19-
<EnableDefaultCompileItems>false</EnableDefaultCompileItems>
20+
21+
<SupportedOSPlatformVersion Condition="'$(TargetFramework)' == 'net6.0-ios'">14.2</SupportedOSPlatformVersion>
22+
<SupportedOSPlatformVersion Condition="'$(TargetFramework)' == 'net6.0-maccatalyst'">14.0</SupportedOSPlatformVersion>
23+
<SupportedOSPlatformVersion Condition="'$(TargetFramework)' == 'net6.0-android'">21.0</SupportedOSPlatformVersion>
24+
<SupportedOSPlatformVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.17763.0</SupportedOSPlatformVersion>
25+
<TargetPlatformMinVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.17763.0</TargetPlatformMinVersion>
2026

2127
<!--TODO: Fill these in-->
2228
<PackageLicenseUrl></PackageLicenseUrl>
@@ -29,34 +35,16 @@
2935
<Summary>Checkbox, Radio Button, Advanced Slider included this package </Summary>
3036
<Description>Ready to use Input componenets such as Checkbox, RadioButton, Dropdown, AdvancedEntry, Advanced Slider etc.</Description>
3137

32-
<Owners>Enis Necipoglu</Owners>
33-
<Authors>Enis Necipoglu</Authors>
38+
<Owners>enisn</Owners>
39+
<Authors>enisn</Authors>
3440
<Copyright>Copyright 2018</Copyright>
3541
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
3642
<SignAssembly>false</SignAssembly>
3743
<PackageLicenseExpression>MIT</PackageLicenseExpression>
3844
<PackageIcon>icon.png</PackageIcon>
3945
</PropertyGroup>
4046

41-
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard2.0|AnyCPU'">
42-
<DocumentationFile>bin\Debug\netstandard2.0\Plugin.InputKit.xml</DocumentationFile>
43-
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
44-
<NoWarn>1701;1702;CS1591</NoWarn>
45-
</PropertyGroup>
46-
47-
<ItemGroup>
48-
<PackageReference Include="Xamarin.Forms" Version="4.8.0.1364" PrivateAssets="All" />
49-
<Compile Include="Shared\**\*.cs" />
50-
</ItemGroup>
51-
52-
<Import Project="$(MSBuildSDKExtrasTargets)" Condition="Exists('$(MSBuildSDKExtrasTargets)')" />
53-
54-
<ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0' ">
55-
</ItemGroup>
56-
57-
<ItemGroup Condition=" '$(TargetFramework)' == 'MonoAndroid11.0' OR '$(TargetFramework)' == 'MonoAndroid10.0' OR '$(TargetFramework)' == 'MonoAndroid90'">
58-
<Compile Include="Platforms\Droid\**\*.cs" />
59-
47+
<ItemGroup Condition="$(TargetFramework.Contains('-android'))">
6048
<AndroidResource Include="Resources\drawable\*.xml" />
6149
<AndroidResource Include="Resources\drawable\*.png" />
6250
<AndroidResource Include="Resources\drawable-hdpi\*.png" />
@@ -66,78 +54,15 @@
6654
<AndroidResource Include="Resources\values\*.xml" />
6755
</ItemGroup>
6856

69-
<ItemGroup Condition=" '$(TargetFramework)' == 'Xamarin.iOS10' ">
70-
<Compile Include="Platforms\iOS\**\*.cs" />
71-
72-
<!--<Copy SourceFiles="$(NuSpecPath)" DestinationFolder="$(PackageSource)\Resources"/>-->
73-
74-
<!--<Content Include="Resources\*.png">
75-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
76-
</Content>-->
77-
</ItemGroup>
78-
79-
<ItemGroup Condition=" $(TargetFramework.StartsWith('uap10.0')) ">
80-
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.0.6" />
81-
<Compile Include="Platforms\UWP\**\*.cs" />
82-
<!--
83-
If you need to add sdk references:
84-
<SDKReference Include="WindowsMobile, Version=10.0.16299.0">
85-
<Name>Windows Mobile Extensions for the UWP</Name>
86-
</SDKReference>
87-
-->
88-
</ItemGroup>
89-
90-
91-
<ItemGroup Condition=" '$(TargetFramework)' == 'Xamarin.TVOS10' ">
92-
<Compile Include="Platforms\TVOS\**\*.cs" />
93-
</ItemGroup>
94-
95-
96-
<ItemGroup Condition=" '$(TargetFramework)' == 'Xamarin.WatchOS10' ">
97-
<Compile Include="Platforms\WatchOS\**\*.cs" />
98-
</ItemGroup>
99-
100-
101-
<ItemGroup Condition=" '$(TargetFramework)' == 'Xamarin.Mac20' ">
102-
<Compile Include="Platforms\macOS\**\*.cs" />
103-
</ItemGroup>
104-
105-
10657
<ItemGroup>
10758
<EmbeddedResource Include="Shared\Resources\**\*.png" />
10859
<EmbeddedResource Include="Shared\Resources\**\*.jpg" />
10960
</ItemGroup>
11061

111-
11262
<ItemGroup>
11363
<None Include="icon.png">
11464
<Pack>True</Pack>
11565
<PackagePath></PackagePath>
11666
</None>
11767
</ItemGroup>
118-
119-
<!--
120-
<ItemGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.0' ">
121-
<Compile Include="Platforms\DotNet\**\*.cs" />
122-
</ItemGroup>
123-
-->
124-
125-
126-
<!--
127-
<ItemGroup Condition=" '$(TargetFramework)' == 'Tizen40' ">
128-
<Compile Include="Platforms\Tizen\**\*.cs" />
129-
<PackageReference Include="Tizen.NET" Version="4.0.0" />
130-
</ItemGroup>
131-
-->
132-
133-
<!--
134-
<ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
135-
<Compile Include="Platforms\DotNet\**\*.cs" />
136-
</ItemGroup>
137-
-->
138-
139-
140-
141-
<Import Project="inputkit.targets" Condition="Exists('inputkit.targets')" />
142-
<Import Project="$(MSBuildSDKExtrasTargets)" Condition="Exists('$(MSBuildSDKExtrasTargets)')" />
14368
</Project>

InputKit/Platforms/Droid/AutoCompleteViewRenderer.cs renamed to InputKit/Platforms/Android/AutoCompleteViewRenderer.cs

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,28 @@
1-
using System.ComponentModel;
2-
using Android.Content;
1+
using Android.Content;
32
using Android.Content.Res;
4-
#if MONOANDROID10_0 || MONOANDROID11_0
3+
using Android.Graphics.Drawables;
4+
using Android.Widget;
55
using AndroidX.AppCompat.Widget;
66
using Google.Android.Material.TextField;
7-
#else
8-
using Android.Support.Design.Widget;
9-
using Android.Support.V4.View;
10-
using Android.Support.V7.Widget;
11-
#endif
12-
using Android.Text;
13-
using Android.Text.Method;
14-
using Android.Util;
15-
using Android.Views;
16-
using Android.Views.InputMethods;
17-
using Android.Widget;
187
using Java.Lang;
19-
using Xamarin.Forms;
20-
using Xamarin.Forms.Platform.Android;
21-
using Application = Android.App.Application;
22-
using Color = Xamarin.Forms.Color;
23-
using AColor = Android.Graphics.Color;
24-
using FormsAppCompat = Xamarin.Forms.Platform.Android.AppCompat;
25-
using Plugin.InputKit.Shared.Controls;
8+
using Microsoft.Maui.Controls;
9+
using Microsoft.Maui.Controls.Compatibility;
10+
using Microsoft.Maui.Controls.Compatibility.Platform.Android;
11+
using Microsoft.Maui.Controls.Platform;
2612
using Plugin.InputKit.Platforms.Droid;
27-
using System.Collections.Specialized;
28-
using System.Collections.Generic;
13+
using Plugin.InputKit.Shared.Controls;
2914
using System;
15+
using System.Collections.Generic;
16+
using System.Collections.Specialized;
17+
using System.ComponentModel;
3018
using System.Linq;
31-
using System.Collections;
32-
using Android.Graphics.Drawables;
19+
using AColor = Android.Graphics.Color;
20+
using Color = Microsoft.Maui.Graphics.Color;
3321

3422
[assembly: ExportRenderer(typeof(AutoCompleteView), typeof(AutoCompleteViewRenderer))]
3523
namespace Plugin.InputKit.Platforms.Droid
3624
{
37-
public class AutoCompleteViewRenderer : FormsAppCompat.ViewRenderer<AutoCompleteView, TextInputLayout>
25+
public class AutoCompleteViewRenderer : Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat.ViewRenderer<AutoCompleteView, TextInputLayout>
3826
{
3927
public AutoCompleteViewRenderer(Context context) : base(context)
4028
{
@@ -105,7 +93,7 @@ protected override void OnElementPropertyChanged(object sender, PropertyChangedE
10593
private void AutoCompleteOnItemSelected(object sender, AdapterView.ItemClickEventArgs args)
10694
{
10795
var view = (AutoCompleteTextView)sender;
108-
var selectedItemArgs = new SelectedItemChangedEventArgs(view.Text);
96+
var selectedItemArgs = new SelectedItemChangedEventArgs(view.Text, 0);
10997
var element = (AutoCompleteView)Element;
11098
element.OnItemSelectedInternal(Element, selectedItemArgs);
11199
}

InputKit/Platforms/Droid/Config.cs renamed to InputKit/Platforms/Android/Config.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
using Android.App;
22
using Android.OS;
33
using System;
4-
using System.Collections.Generic;
5-
using System.Text;
64

75
namespace Plugin.InputKit.Platforms.Droid
86
{

InputKit/Platforms/Droid/EmptyEntryRenderer.cs renamed to InputKit/Platforms/Android/EmptyEntryRenderer.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
using Android.Content;
22
using Android.Graphics.Drawables;
3+
using Microsoft.Maui.Controls;
4+
using Microsoft.Maui.Controls.Compatibility;
5+
using Microsoft.Maui.Controls.Compatibility.Platform.Android;
6+
using Microsoft.Maui.Controls.Platform;
37
using Plugin.InputKit.Platforms.Droid;
48
using Plugin.InputKit.Shared.Controls;
5-
using Xamarin.Forms;
6-
using Xamarin.Forms.Platform.Android;
79

810
[assembly:ExportRenderer(typeof(EmptyEntry),typeof(EmptyEntryRenderer))]
911
namespace Plugin.InputKit.Platforms.Droid
@@ -17,7 +19,6 @@ public class EmptyEntryRenderer : EntryRenderer
1719
public EmptyEntryRenderer(Context context) : base(context)
1820
{
1921
}
20-
2122
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
2223
{
2324
base.OnElementChanged(e);
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using Android.Widget;
2+
using Microsoft.Maui.Handlers;
3+
using Plugin.InputKit.Shared.Controls;
4+
5+
namespace Plugin.InputKit.Platforms.Droid
6+
{
7+
public class IconViewHandler : ViewHandler<IconView, ImageView>
8+
{
9+
public IconViewHandler() : base(null)
10+
{
11+
}
12+
13+
protected override ImageView CreateNativeView()
14+
{
15+
return new ImageView(Context);
16+
}
17+
}
18+
}

InputKit/Platforms/Droid/MenuEffect.cs renamed to InputKit/Platforms/Android/MenuEffect.cs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
using Android.Content;
22
using Android.OS;
3-
#if MONOANDROID10_0 || MONOANDROID11_0
43
using AndroidX.AppCompat.Widget;
5-
#else
6-
using Android.Support.V7.Widget;
7-
#endif
4+
using Microsoft.Maui.Controls;
5+
using Microsoft.Maui.Controls.Compatibility.Platform.Android;
6+
using Microsoft.Maui.Controls.Platform;
87
using Plugin.InputKit.Platforms.Droid;
98
using System.Linq;
10-
using Xamarin.Forms;
11-
using Xamarin.Forms.Platform.Android;
129
using static Plugin.InputKit.Shared.Utils.PopupMenu;
1310

1411
[assembly: ResolutionGroupName("Plugin.InputKit.Platforms")]
@@ -32,11 +29,7 @@ protected override void OnAttached()
3229
Effect.Parent.OnPopupRequest += OnPopupRequest;
3330

3431
Context context = Config.CurrentActivity;
35-
#if MONOANDROID10_0 || MONOANDROID11_0
3632
Context wrapper = new Android.Views.ContextThemeWrapper(context, Resource.Style.MyPopupMenu);
37-
#else
38-
Context wrapper = new Android.Support.V7.View.ContextThemeWrapper(context, Resource.Style.MyPopupMenu);
39-
#endif
4033

4134
if (Control != null)
4235
{

InputKit/Platforms/Droid/NewIconViewRenderer.cs renamed to InputKit/Platforms/Android/NewIconViewRenderer.cs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
1-
using Plugin.InputKit.Platforms.Droid;
2-
using Plugin.InputKit.Shared.Controls;
3-
using Android.Content;
1+
using Android.Content;
42
using Android.Graphics;
53
using Android.Graphics.Drawables;
64
using Android.Widget;
5+
using Microsoft.Maui.Controls;
6+
using Microsoft.Maui.Controls.Compatibility;
7+
using Microsoft.Maui.Controls.Compatibility.Platform.Android;
8+
using Microsoft.Maui.Controls.Platform;
9+
using Microsoft.Maui.Graphics;
10+
using Plugin.InputKit.Platforms.Droid;
11+
using Plugin.InputKit.Shared.Controls;
712
using System.ComponentModel;
8-
using Xamarin.Forms;
9-
using Xamarin.Forms.Platform.Android;
10-
using System;
11-
using System.Threading.Tasks;
1213
using System.Threading;
14+
using System.Threading.Tasks;
1315

1416
[assembly: ExportRenderer(typeof(IconView), typeof(NewIconViewRenderer))]
1517
namespace Plugin.InputKit.Platforms.Droid
1618
{
17-
public class NewIconViewRenderer : ViewRenderer<IconView, ImageView>
19+
public class NewIconViewRenderer : Microsoft.Maui.Controls.Compatibility.Platform.Android.AppCompat.ViewRenderer<IconView, ImageView>
1820
{
1921
private bool _isDisposed;
2022
Context _context;
@@ -23,6 +25,7 @@ public NewIconViewRenderer(Context context) : base(context)
2325
base.AutoPackage = false;
2426
_context = context;
2527
}
28+
2629
protected override void Dispose(bool disposing)
2730
{
2831
if (_isDisposed)
@@ -32,6 +35,7 @@ protected override void Dispose(bool disposing)
3235
_isDisposed = true;
3336
base.Dispose(disposing);
3437
}
38+
3539
protected override void OnElementChanged(ElementChangedEventArgs<IconView> e)
3640
{
3741
base.OnElementChanged(e);
@@ -41,6 +45,7 @@ protected override void OnElementChanged(ElementChangedEventArgs<IconView> e)
4145
}
4246
UpdateBitmap(e.OldElement);
4347
}
48+
4449
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
4550
{
4651
base.OnElementPropertyChanged(sender, e);
@@ -81,7 +86,7 @@ private void UpdateBitmap(IconView previous = null)
8186
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop)
8287
d.SetTint(Element.FillColor.ToAndroid());
8388
else
84-
d.SetColorFilter(new LightingColorFilter(Xamarin.Forms.Color.Black.ToAndroid(), Element.FillColor.ToAndroid()));
89+
d.SetColorFilter(new LightingColorFilter(Colors.Black.ToAndroid(), Element.FillColor.ToAndroid()));
8590

8691
d.Alpha = Element.FillColor.ToAndroid().A;
8792
Control.SetImageDrawable(d);
@@ -117,7 +122,7 @@ private async Task UpdateBitmapAsync(IconView previous = null)
117122
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop)
118123
d.SetTint(Element.FillColor.ToAndroid());
119124
else
120-
d.SetColorFilter(new LightingColorFilter(Xamarin.Forms.Color.Black.ToAndroid(), Element.FillColor.ToAndroid()));
125+
d.SetColorFilter(new LightingColorFilter(Colors.Black.ToAndroid(), Element.FillColor.ToAndroid()));
121126

122127
d.Alpha = Element.FillColor.ToAndroid().A;
123128
Control.SetImageDrawable(d);

InputKit/Platforms/Droid/StatefulStackLayoutRenderer.cs renamed to InputKit/Platforms/Android/StatefulStackLayoutRenderer.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@
33
using System.Text;
44
using Android.Content;
55
using Android.Views;
6+
using Microsoft.Maui.Controls;
7+
using Microsoft.Maui.Controls.Compatibility;
8+
using Microsoft.Maui.Controls.Compatibility.Platform.Android;
69
using Plugin.InputKit.Platforms.Droid;
710
using Plugin.InputKit.Shared.Controls;
811
using Plugin.InputKit.Shared.Layouts;
9-
using Xamarin.Forms;
10-
using Xamarin.Forms.Platform.Android;
1112

1213
[assembly:ExportRenderer(typeof(StatefulStackLayout),typeof(StatefulStackLayoutRenderer))]
1314
namespace Plugin.InputKit.Platforms.Droid
1415
{
15-
public class StatefulStackLayoutRenderer : VisualElementRenderer<StackLayout>, Android.Views.View.IOnTouchListener
16+
public class StatefulStackLayoutRenderer : VisualElementRenderer<Microsoft.Maui.Controls.StackLayout>, Android.Views.View.IOnTouchListener
1617
{
1718
public StatefulStackLayoutRenderer(Context context) : base(context)
1819
{

0 commit comments

Comments
 (0)