Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 21 additions & 5 deletions Calendars.nuspec
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,30 @@
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata minClientVersion="2.8.1">
<id>CClarke.Plugin.Calendars</id>
<version>1.1.0</version>
<version>1.2.0-preview11</version>

@TheAlmightyBob TheAlmightyBob Jan 11, 2022

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, you would think it's that easy, but I think AppVeyor will overwrite this... I'll have to look into that again if going this route

(but why the 11?) - nevermind, I see the note about MAUI Preview 11, makes sense now

<title>Calendars API Plugin for Xamarin and Windows</title>
<authors>Caleb Clarke</authors>
<owners>Caleb Clarke</owners>
<license type="expression">MIT</license>
<projectUrl>https://github.com/TheAlmightyBob/Calendars</projectUrl>
<!--Default Icon, a template can be found: https://raw.githubusercontent.com/jamesmontemagno/Xamarin-Templates/master/Templates/icons/plugin_icon.png-->
<icon>plugin_icon_nuget.png</icon>

<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>
Perform basic CRUD calendar operations on iOS/Android/UWP through a simple common API.
Perform basic CRUD calendar operations on iOS/Android/UWP/MAUI through a simple common API.

See project site README for usage notes and limitations.
</description>
<releaseNotes>
1.2.0 changes:

Add .NET MAUI preview 11 support.

1.1.0 changes:

Support for C#8 nullable reference types.

1.0.14 changes:

Setting Reminders to null in AddOrUpdateEventAsyc now preserves existing/default reminders.
Expand Down Expand Up @@ -69,5 +73,17 @@ Setting Reminders to null in AddOrUpdateEventAsyc now preserves existing/default
<file src="Calendars\Calendars.Plugin.Abstractions\bin\Release\netstandard1.0\Plugin.Calendars.Abstractions.dll" target="lib\Xamarin.iOS10\Plugin.Calendars.Abstractions.dll" />
<file src="Calendars\Calendars.Plugin.Abstractions\bin\Release\netstandard1.0\Plugin.Calendars.Abstractions.xml" target="lib\Xamarin.iOS10\Plugin.Calendars.Abstractions.xml" />

<!-- .NET MAUI -->
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0\Calendars.Plugin.MAUI.dll" target="lib\net6.0\Calendars.Plugin.MAUI.dll" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0\Calendars.Plugin.MAUI.xml" target="lib\net6.0\Calendars.Plugin.MAUI.xml" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0-android\Calendars.Plugin.MAUI.aar" target="lib\net6.0-android\Calendars.Plugin.MAUI.aar" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0-android\Calendars.Plugin.MAUI.dll" target="lib\net6.0-android\Calendars.Plugin.MAUI.dll" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0-android\Calendars.Plugin.MAUI.xml" target="lib\net6.0-android\Calendars.Plugin.MAUI.xml" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0-ios\Calendars.Plugin.MAUI.dll" target="lib\net6.0-ios\Calendars.Plugin.MAUI.dll" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0-ios\Calendars.Plugin.MAUI.xml" target="lib\net6.0-ios\Calendars.Plugin.MAUI.xml" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0-maccatalyst\Calendars.Plugin.MAUI.dll" target="lib\net6.0-maccatalyst\Calendars.Plugin.MAUI.dll" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0-maccatalyst\Calendars.Plugin.MAUI.xml" target="lib\net6.0-maccatalyst\Calendars.Plugin.MAUI.xml" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0-windows10.0.19041\Calendars.Plugin.MAUI.dll" target="lib\net6.0-windows\Calendars.Plugin.MAUI.dll" />
<file src="Calendars\Calendars.Plugin.MAUI\bin\Release\net6.0-windows10.0.19041\Calendars.Plugin.MAUI.xml" target="lib\net6.0-windows\Calendars.Plugin.MAUI.xml" />
</files>
</package>
74 changes: 70 additions & 4 deletions Calendars.sln
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2020
# Visual Studio Version 17
VisualStudioVersion = 17.1.32104.313
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calendars.Plugin.iOSUnified", "Calendars\Calendars.Plugin.iOSUnified\Calendars.Plugin.iOSUnified.csproj", "{2882AEEB-D4CD-4EB9-8A6C-6653B33681F0}"
EndProject
Expand All @@ -26,9 +26,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calendars.Plugin.UWP", "Cal
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calendars.Plugin.UWP.Tests", "Tests\Calendars.Plugin.UWP.Tests\Calendars.Plugin.UWP.Tests.csproj", "{449591A6-F24A-437D-857A-212BEF68E4D2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calendars.Plugin.Abstractions", "Calendars\Calendars.Plugin.Abstractions\Calendars.Plugin.Abstractions.csproj", "{AE8E6FFF-DA18-4ECB-B0B0-ABC527B5DE32}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Calendars.Plugin.Abstractions", "Calendars\Calendars.Plugin.Abstractions\Calendars.Plugin.Abstractions.csproj", "{AE8E6FFF-DA18-4ECB-B0B0-ABC527B5DE32}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calendars.Plugin", "Calendars\Calendars.Plugin\Calendars.Plugin.csproj", "{D62199DA-C277-4422-8344-F80886CE3861}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Calendars.Plugin", "Calendars\Calendars.Plugin\Calendars.Plugin.csproj", "{D62199DA-C277-4422-8344-F80886CE3861}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calendars.Plugin.MAUI", "Calendars\Calendars.Plugin.MAUI\Calendars.Plugin.MAUI.csproj", "{DE458357-74A5-4BA9-AAFB-828470CECBFF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -564,6 +566,70 @@ Global
{D62199DA-C277-4422-8344-F80886CE3861}.Release|x64.Build.0 = Release|Any CPU
{D62199DA-C277-4422-8344-F80886CE3861}.Release|x86.ActiveCfg = Release|Any CPU
{D62199DA-C277-4422-8344-F80886CE3861}.Release|x86.Build.0 = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|Android.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|Android.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|Mixed Platforms.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|x64.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Ad-Hoc|x86.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|Android.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|Android.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|Any CPU.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|ARM.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|ARM.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|iPhone.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|Mixed Platforms.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|x64.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|x64.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|x86.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.AppStore|x86.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|Android.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|Android.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|ARM.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|ARM.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|iPhone.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|x64.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|x64.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|x86.ActiveCfg = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Debug|x86.Build.0 = Debug|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|Android.ActiveCfg = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|Android.Build.0 = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|Any CPU.Build.0 = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|ARM.ActiveCfg = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|ARM.Build.0 = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|iPhone.ActiveCfg = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|iPhone.Build.0 = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|x64.ActiveCfg = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|x64.Build.0 = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|x86.ActiveCfg = Release|Any CPU
{DE458357-74A5-4BA9-AAFB-828470CECBFF}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using System;
using System;

namespace Plugin.Calendars.Abstractions
{
Expand All @@ -18,7 +18,7 @@ public class CalendarEventReminder
/// </summary>
public CalendarReminderMethod Method { get; set; } = CalendarReminderMethod.Default;

public override bool Equals(object obj)
public override bool Equals(object? obj)
{
if (ReferenceEquals(this, obj))
{
Expand Down
17 changes: 9 additions & 8 deletions Calendars/Calendars.Plugin.Android/CalendarsImplementation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using System.Linq;
using System.Threading.Tasks;
using Calendar = Plugin.Calendars.Abstractions.Calendar;
using Application = Android.App.Application;

#nullable enable

Expand All @@ -34,9 +35,9 @@ public class CalendarsImplementation : ICalendars
CalendarContract.Calendars.InterfaceConsts.CalendarAccessLevel,
CalendarContract.Calendars.InterfaceConsts.AccountType
};

#endregion

#region Properties

/// <summary>
Expand Down Expand Up @@ -113,7 +114,7 @@ public Task<IList<Calendar>> GetCalendarsAsync() => Task.Run(() =>
_calendarsProjection);

var calendar = SingleItemFromCursor(cursor, () => GetCalendar(cursor));

return calendar;
});
}
Expand Down Expand Up @@ -157,7 +158,7 @@ public async Task<IList<CalendarEvent>> GetEventsAsync(Calendar calendar, DateTi
ContentUris.AppendId(eventsUriBuilder, DateConversions.GetDateAsAndroidMS(end));
var eventsUri = eventsUriBuilder?.Build();

return await Task.Run(() =>
return await Task.Run(() =>
{
var cursor = Query(eventsUri, eventsProjection,
string.Format("{0} = {1}", CalendarContract.Events.InterfaceConsts.CalendarId, calendar.ExternalID),
Expand Down Expand Up @@ -416,14 +417,14 @@ public async Task AddEventReminderAsync(CalendarEvent calendarEvent, CalendarEve
throw new ArgumentException("Missing calendar event identifier", nameof(calendarEvent));
}

// Verify calendar event exists
// Verify calendar event exists
var existingAppt = await GetEventByIdAsync(calendarEvent.ExternalID).ConfigureAwait(false);

if (existingAppt == null)
{
throw new ArgumentException("Specified calendar event not found on device");
}

await Task.Run(() =>
{
if (IsEventRecurring(calendarEvent.ExternalID))
Expand Down Expand Up @@ -456,7 +457,7 @@ public async Task<bool> DeleteCalendarAsync(Calendar calendar)
throw new ArgumentException("Cannot delete calendar (probably because it's non-local)", nameof(calendar));
}

return await Task.Run(() => Delete(_calendarsUri, long.Parse(calendar.ExternalID))).ConfigureAwait(false);
return await Task.Run(() => Delete(_calendarsUri, long.Parse(calendar.ExternalID ?? String.Empty))).ConfigureAwait(false);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, possibly this should just return false if ExternalID is null rather than bother to call Delete.... but that can be out-of-scope for this PR

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was just a "dirty fix" for a more-or-less wrong nullable-detection, as it will never get to this place if the id would be null (except maybe some race-conditions). Because existing would be null in that case and it would return false a few lines above...

Maybe a check at the beginning of that method would make sense?

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A check at the beginning makes sense to me. And yeah I understand and agree with your reasoning but the "dirty fix" still looks a bit odd to me

}

/// <summary>
Expand Down Expand Up @@ -742,7 +743,7 @@ private static Calendar GetCalendar(ICursor cursor)
AccountName = cursor.GetString(CalendarContract.Calendars.InterfaceConsts.AccountName)
};
}

private static ICursor Query(Android.Net.Uri? uri, string[] projection, string? selection = null,
string[]? selectionArgs = null, string? sortOrder = null)
{
Expand Down
63 changes: 63 additions & 0 deletions Calendars/Calendars.Plugin.MAUI/Calendars.Plugin.MAUI.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFrameworks>net6.0;net6.0-android;net6.0-ios;net6.0-maccatalyst</TargetFrameworks>
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows')) and '$(MSBuildRuntimeType)' == 'Full'">$(TargetFrameworks);net6.0-windows10.0.19041</TargetFrameworks>
<UseMaui>true</UseMaui>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not needed (only adds unnecessary dependencies)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What part is not needed?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UseMaui. You can remove it, and everything would still compile

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, AFAIK without that the UWP/WinSDK is missing? I will try...

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting, it compiled for me when I removed UseMaui. Maybe needed to do rebuild or something for it to fail.

Maybe that's why current MAUI template also has this in it's project file:

<ItemGroup Condition="$(TargetFramework.Contains('-windows'))">
	<!-- Required - WinUI does not yet have buildTransitive for everything -->
	<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.0.0" />
	<PackageReference Include="Microsoft.Graphics.Win2D" Version="1.0.0.30" />
</ItemGroup>

<PropertyGroup Condition="$(TargetFramework.Contains('-windows'))">
	<OutputType>WinExe</OutputType>
	<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
</PropertyGroup>

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, interesting - will try again on my side (incl. iOS tests) and report back...

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi, any news on that?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, sorry - had no time lately 😑
But it's still on my list 🙈

<SingleProject>true</SingleProject>
<ImplicitUsings>enable</ImplicitUsings>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<GenerateDocumentationFile>True</GenerateDocumentationFile>

<SupportedOSPlatformVersion Condition="$(TargetFramework.Contains(-ios))">14.2</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$(TargetFramework.Contains(-maccatalyst))">14.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$(TargetFramework.Contains(-android))">21.0</SupportedOSPlatformVersion>
<SupportedOSPlatformVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.17763.0</SupportedOSPlatformVersion>
<TargetPlatformMinVersion Condition="$(TargetFramework.Contains('-windows'))">10.0.17763.0</TargetPlatformMinVersion>
</PropertyGroup>

<ItemGroup>
<Compile Include="..\Calendars.Plugin.Abstractions\Calendar.cs" Link="Calendar.cs" />
<Compile Include="..\Calendars.Plugin.Abstractions\CalendarEvent.cs" Link="CalendarEvent.cs" />
<Compile Include="..\Calendars.Plugin.Abstractions\CalendarEventReminder.cs" Link="CalendarEventReminder.cs" />
<Compile Include="..\Calendars.Plugin.Abstractions\ICalendars.cs" Link="ICalendars.cs" />
<Compile Include="..\Calendars.Plugin.Abstractions\ICalendarsExtensions.cs" Link="ICalendarsExtensions.cs" />
<Compile Include="..\Calendars.Plugin.Abstractions\PlatformException.cs" Link="PlatformException.cs" />

<Compile Include="..\Calendars.Plugin\CrossCalendars.cs" Link="CrossCalendars.cs" />
</ItemGroup>

<ItemGroup Condition="$(TargetFramework.Contains(-android))">
<Compile Include="..\Calendars.Plugin.Android\CalendarEventReminderExtensions.cs" Link="Platforms\Android\CalendarEventReminderExtensions.cs" />
<Compile Include="..\Calendars.Plugin.Android\CalendarsImplementation.cs" Link="Platforms\Android\CalendarsImplementation.cs" />
<Compile Include="..\Calendars.Plugin.Android\CursorExtensions.cs" Link="Platforms\Android\CursorExtensions.cs" />
<Compile Include="..\Calendars.Plugin.Android\DateConversions.cs" Link="Platforms\Android\DateConversions.cs" />
<Compile Include="..\Calendars.Plugin.Android\ReminderMethodExtensions.cs" Link="Platforms\Android\ReminderMethodExtensions.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains(-ios))">
<Compile Include="..\Calendars.Plugin.iOSUnified\CalendarEventReminderExtensions.cs" Link="Platforms\iOS\CalendarEventReminderExtensions.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\CalendarsImplementation.cs" Link="Platforms\iOS\CalendarsImplementation.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\ColorConversion.cs" Link="Platforms\iOS\ColorConversion.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\DateConversionExtensions.cs" Link="Platforms\iOS\DateConversionExtensions.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\EKAlarmExtensions.cs" Link="Platforms\iOS\EKAlarmExtensions.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\EKCalendarExtensions.cs" Link="Platforms\iOS\EKCalendarExtensions.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\EKEventExtensions.cs" Link="Platforms\iOS\EKEventExtensions.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains(-maccatalyst))">
<Compile Include="..\Calendars.Plugin.iOSUnified\CalendarEventReminderExtensions.cs" Link="Platforms\MacCatalyst\CalendarEventReminderExtensions.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\CalendarsImplementation.cs" Link="Platforms\MacCatalyst\CalendarsImplementation.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\ColorConversion.cs" Link="Platforms\MacCatalyst\ColorConversion.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\DateConversionExtensions.cs" Link="Platforms\MacCatalyst\DateConversionExtensions.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\EKAlarmExtensions.cs" Link="Platforms\MacCatalyst\EKAlarmExtensions.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\EKCalendarExtensions.cs" Link="Platforms\MacCatalyst\EKCalendarExtensions.cs" />
<Compile Include="..\Calendars.Plugin.iOSUnified\EKEventExtensions.cs" Link="Platforms\MacCatalyst\EKEventExtensions.cs" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('-windows'))">
<Compile Include="..\Calendars.Plugin.UWP\AppointmentCalendarExtensions.cs" Link="Platforms\Windows\AppointmentCalendarExtensions.cs" />
<Compile Include="..\Calendars.Plugin.UWP\AppointmentExtensions.cs" Link="Platforms\Windows\AppointmentExtensions.cs" />
<Compile Include="..\Calendars.Plugin.UWP\CalendarsImplementation.cs" Link="Platforms\Windows\CalendarsImplementation.cs" />
<Compile Include="..\Calendars.Plugin.UWP\IAsyncActionExtensions.cs" Link="Platforms\Windows\IAsyncActionExtensions.cs" />
<Compile Include="..\Calendars.Plugin.UWP\IAsyncOperationExtensions.cs" Link="Platforms\Windows\IAsyncOperationExtensions.cs" />
</ItemGroup>

</Project>
Loading