Repository: 1iveowl/Plugin.SegmentedControl Branch: master Commit: ba583a14e5a5 Files: 85 Total size: 289.3 KB Directory structure: gitextract_o606_dz2/ ├── .github/ │ └── FUNDING.yml ├── .gitignore ├── LICENSE ├── README.md └── src/ ├── build/ │ ├── Plugin.SegmentedControl.Netstandard.nuspec │ ├── build.ps1 │ ├── publish.ps1 │ └── publishLocal.ps1 ├── crossplatform/ │ ├── SegCtrl.Droid/ │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── Resources/ │ │ │ ├── AboutResources.txt │ │ │ ├── color/ │ │ │ │ └── segmented_control_text.xml │ │ │ ├── drawable/ │ │ │ │ ├── segmented_control_background.xml │ │ │ │ ├── segmented_control_first_background.xml │ │ │ │ └── segmented_control_last_background.xml │ │ │ ├── layout/ │ │ │ │ ├── RadioButton.axml │ │ │ │ └── RadioGroup.axml │ │ │ └── values/ │ │ │ └── colors.xml │ │ ├── SegCtrl.Droid.csproj │ │ └── SegmentedControlRenderer.cs │ ├── SegCtrl.UWP/ │ │ ├── Properties/ │ │ │ ├── AssemblyInfo.cs │ │ │ └── Plugin.Segmented.Control.UWP.rd.xml │ │ ├── SegCtrl.UWP.csproj │ │ ├── SegmentRadioButton.cs │ │ ├── SegmentedControlRenderer.cs │ │ ├── SegmentedRadioButtonStyle.xaml │ │ ├── SegmentedUserControl.xaml │ │ └── SegmentedUserControl.xaml.cs │ ├── SegCtrl.iOS/ │ │ ├── Properties/ │ │ │ └── AssemblyInfo.cs │ │ ├── SegCtrl.iOS.csproj │ │ └── SegmentedControlRenderer.cs │ └── SegCtrl.macOS/ │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── SegCtrl.macOS.csproj │ └── SegmentedControlRenderer.cs ├── main/ │ ├── SegCtlr.Netstandard/ │ │ ├── Control/ │ │ │ ├── SegmentedControl.cs │ │ │ └── SegmentedControlOption.cs │ │ ├── Event/ │ │ │ ├── ElementChildrenChanging.cs │ │ │ └── SegmentSelectEvent.cs │ │ ├── PreserveAttribute.cs │ │ └── SegCtlr.Netstandard.csproj │ └── SegCtlr.Netstandard.sln └── test/ ├── Test.SegCtrl.Android/ │ ├── Assets/ │ │ └── AboutAssets.txt │ ├── MainActivity.cs │ ├── Properties/ │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ ├── Resources/ │ │ ├── AboutResources.txt │ │ ├── font/ │ │ │ └── comicsaaaans.xml │ │ ├── layout/ │ │ │ ├── Tabbar.axml │ │ │ └── Toolbar.axml │ │ └── values/ │ │ └── styles.xml │ ├── Test.SegCtrl.Android.csproj │ └── Test.SegCtrl.Android.csproj.bak ├── Test.SegCtrl.UWP/ │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainPage.xaml │ ├── MainPage.xaml.cs │ ├── Package.appxmanifest │ ├── Properties/ │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml │ └── Test.SegCtlr.UWP.csproj ├── Test.SegCtrl.iOS/ │ ├── AppDelegate.cs │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ ├── Properties/ │ │ └── AssemblyInfo.cs │ ├── Resources/ │ │ └── LaunchScreen.storyboard │ ├── Test.SegCtlr.iOS.csproj │ ├── iTunesArtwork │ └── iTunesArtwork@2x ├── Test.SegCtrl.macOS/ │ ├── AppDelegate.cs │ ├── Assets.xcassets/ │ │ ├── AppIcon.appiconset/ │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Entitlements.plist │ ├── Info.plist │ ├── Main.cs │ └── Test.SegCtrl.macOS.csproj └── Test.SegCtrl.netstandard/ ├── App.xaml ├── App.xaml.cs ├── MainPage.xaml ├── MainPage.xaml.cs ├── MainViewModel.cs ├── SecondPage.xaml ├── SecondPage.xaml.cs ├── Test.SegCtrl.netstandard.csproj ├── ThirdPage.xaml └── ThirdPage.xaml.cs ================================================ FILE CONTENTS ================================================ ================================================ FILE: .github/FUNDING.yml ================================================ # These are supported funding model platforms github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username custom: https://www.buymeacoffee.com/fEXda8L ================================================ FILE: .gitignore ================================================ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. ## ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore # User-specific files *.suo *.user *.userosscache *.sln.docstates *.Designer.cs # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ x64/ x86/ bld/ [Bb]in/ [Oo]bj/ [Ll]og/ # Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* # NUNIT *.VisualState.xml TestResult.xml # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c # .NET Core project.lock.json project.fragment.lock.json artifacts/ **/Properties/launchSettings.json *_i.c *_p.c *_i.h *.ilk *.meta *.obj *.pch *.pdb *.pgc *.pgd *.rsp *.sbr *.tlb *.tli *.tlh *.tmp *.tmp_proj *.log *.vspscc *.vssscc .builds *.pidb *.svclog *.scc # Chutzpah Test files _Chutzpah* # Visual C++ cache files ipch/ *.aps *.ncb *.opendb *.opensdf *.sdf *.cachefile *.VC.db *.VC.VC.opendb # Visual Studio profiler *.psess *.vsp *.vspx *.sap # TFS 2012 Local Workspace $tf/ # Guidance Automation Toolkit *.gpState # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user # JustCode is a .NET coding add-in .JustCode # TeamCity is a build add-in _TeamCity* # DotCover is a Code Coverage Tool *.dotCover # Visual Studio code coverage results *.coverage *.coveragexml # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* # MightyMoose *.mm.* AutoTest.Net/ # Web workbench (sass) .sass-cache/ # Installshield output folder [Ee]xpress/ # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT DocProject/Help/*.HxC DocProject/Help/*.hhc DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html # Click-Once directory publish/ # Publish Web Output *.[Pp]ublish.xml *.azurePubxml # TODO: Comment the next line if you want to checkin your web deploy settings # but database connection strings (with potential passwords) will be unencrypted *.pubxml *.publishproj # Microsoft Azure Web App publish settings. Comment the next line if you want to # checkin your Azure Web App publish settings, but sensitive information contained # in these scripts will be unencrypted PublishScripts/ # NuGet Packages *.nupkg # The packages folder can be ignored because of Package Restore **/packages/* # except build/, which is used as an MSBuild target. !**/packages/build/ # Uncomment if necessary however generally it will be regenerated when needed #!**/packages/repositories.config # NuGet v3's project.json files produces more ignorable files *.nuget.props *.nuget.targets # Microsoft Azure Build Output csx/ *.build.csdef # Microsoft Azure Emulator ecf/ rcf/ # Windows Store app package directories and files AppPackages/ BundleArtifacts/ Package.StoreAssociation.xml _pkginfo.txt # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !*.[Cc]ache/ # Others ClientBin/ ~$* *~ *.dbmdl *.dbproj.schemaview *.jfm *.pfx *.publishsettings orleans.codegen.cs # Since there are multiple workflows, uncomment next line to ignore bower_components # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) #bower_components/ # RIA/Silverlight projects Generated_Code/ # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm # SQL Server files *.mdf *.ldf *.ndf # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings # Microsoft Fakes FakesAssemblies/ # GhostDoc plugin setting file *.GhostDoc.xml # Node.js Tools for Visual Studio .ntvs_analysis.dat node_modules/ # Typescript v1 declaration files typings/ # Visual Studio 6 build log *.plg # Visual Studio 6 workspace options file *.opt # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) *.vbw # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts **/*.DesktopClient/ModelManifest.xml **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions # Paket dependency manager .paket/paket.exe paket-files/ # FAKE - F# Make .fake/ # JetBrains Rider .idea/ *.sln.iml # CodeRush .cr/ # Python Tools for Visual Studio (PTVS) __pycache__/ *.pyc # Cake - Uncomment if you are using it # tools/** # !tools/packages.config # Telerik's JustMock configuration file *.jmconfig # BizTalk build output *.btp.cs *.btm.cs *.odx.cs *.xsd.cs # MFractor .mfractor/ ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2017 1iveowl Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # Plugin Segmented Control for Xamarin Forms and .NET Standard [![NuGet Badge](https://img.shields.io/nuget/v/Plugin.SegmentedControl.Netstandard)](https://www.nuget.org/packages/Plugin.SegmentedControl.Netstandard/) *Please star this project if you find it useful. Thank you!* ## Update - Version 5.2+ Version 5.2 and forward migrated to AndroidX for Android. ## Update - Version 5.4.5+ (PR: #101) ItemsSource is now of type IEnumerable instead of IList. It can contain full objects. When it contains a list of full objects, the text displayed in each segment is read from a property on each object. Define this property using `TextPropertyName`. `TextPropertyName`: string, the name of a property in an `ItemsSource[i]` object. If `TextPropertyName` is set, the displayed text is read from this property on each source object. If `TextPropertyName` is not set, ItemsSource must be a list of strings. New property: `SelectedItem` `SelectedItem = Items[SelectedSegment]` `SelectedItem` contains the current selected object from `ItemsSource`. ### Fix: Remove the extra padding below the control on Android, caused by the wrong usage of match_parent. ## Why this library? There are other Segmented Control libraries out there. This library adds two important capabilities: - It works across all four key platforms—iOS, Android, macOS, and UWP—whereas other libraries I've encountered lack UWP and/or macOS support. - It's based on .NET Standard 2.0. Furthermore, this library has more flexibility and features than any other library I'm aware of. Enjoy! Please star this project if you find it useful, and provide feedback if you encounter issues or shortcomings. ## Supported platforms |Platform|Supported|Version|Renderer| | ------------------- | :-----------: | :-----------: | :------------------: | |Xamarin.iOS Unified|Yes|iOS 8.1+|UISegmentedControl| |Xamarin.Android|Yes|API 21+|RadioGroup| |Xamarin.UWP|Yes|Win10 16299+|User Control/RadioButton| |Xamarin.MacOS|Partial|10.0+|NSSegmentedControl| ## Features - Bindable Tint color - Bindable Select color - Bindable Text color - Bindable Disabled color - Bindable Font size - Bindable Font Family - Bindable Item Text - Bindable Selected Item - Bindable ICommand - Bindable IsEnabled Item - Bindable ItemsSource - Bindable Border color (Android & iOS only) - Bindable Border width (Android & iOS only) For more details please see below or for even more details see: [Test/Demo App](https://github.com/1iveowl/Plugin.SegmentedControl/tree/master/src/test/Test.SegCtrl.netstandard) ## How to use Using this plugin is easy. ### iOS Add initializer to `AppDelegate` ```csharp public override bool FinishedLaunching(UIApplication app, NSDictionary options) { global::Xamarin.Forms.Forms.Init(); Plugin.Segmented.Control.iOS.SegmentedControlRenderer.Initialize(); ... } ``` ### UWP You need to add the assembly to App.xaml.cs in your project. For more details, see the Xamarin documentation [here](https://developer.xamarin.com/guides/xamarin-forms/platform-features/windows/installation/universal/#Troubleshooting). ```csharp var assembliesToInclude = new List {typeof(Plugin.Segmented.Control.UWP.SegmentedControlRenderer).GetTypeInfo().Assembly}; Xamarin.Forms.Forms.Init(e, assembliesToInclude); ``` ### Android No special requirements. For custom fonts on Android, see this blog post: [https://blog.verslu.is/xamarin/xamarin-forms-xamarin/custom-fonts-with-xamarin-forms-revisited/](https://blog.verslu.is/xamarin/xamarin-forms-xamarin/custom-fonts-with-xamarin-forms-revisited/) #### .NET Standard The Xamarin Forms project must use .NET Standard. I suggest using .NET Standard 2.0+. Here is a great blog post about how to move your PCL to .NET Standard: [Building Xamarin.Forms Apps with .NET Standard](https://blog.xamarin.com/building-xamarin-forms-apps-net-standard/) #### XAML ![Plugin Segmented Control Picture](https://github.com/1iveowl/Plugin.SegmentedControl/blob/master/src/asset/SegmentedRadioButtonControl-1.png "Plugin Segmented Control") ```xml ``` You can bind to the SegmentSelectedCommand for notification in your view model when a segment change has occurred. ```xml ``` ## Credits For inspiration and for the Android and iOS part I'd like to thank Alex Rainman for his great work on [SegmentedControl.FormsPlugin](https://www.nuget.org/packages/SegmentedControl.FormsPlugin/). Thank you to [rjantz3](https://github.com/rjantz3) for adding much requested features and enhancements. Thank you to [Thomas Kälin](https://github.com/thomaskaelin) for critical Android and iOS fixes and improvements. ================================================ FILE: src/build/Plugin.SegmentedControl.Netstandard.nuspec ================================================ Plugin.SegmentedControl.Netstandard 0 Segmented Control for Xamarin Forms (.Net Standard) 1iveowl Development Jasper H. Bojsen MIT images\1iveowl-logo.png https://github.com/1iveowl/Plugin.SegmentedControl false Segmented control for Xamarin Forms for iOS, Android, UWP. Mac OS also supported albeit currently with fewer features. [All] Min Width bug fixes [All] New TextPropertyName object for ItemSource [All] ItemSource is not IEnumerable (was IList) [Android, UWP] SegmentedControlOption.IsEnabled fixed. [UWP, Android] Lower the required SDK: UWP supports UWP 16299+; Android supports 21+ [UWP] Fixed TextColor not initially set bug. [Android] Moved to AndroidX [Android] Fixes [iOS and Android only] Added BorderColor and BorderWidth [All] Moved back to .NET Standard 2.0 [UWP] Re-enabled UWP [All] TextColor added - i.e. Unselected text color. [Android] Custom font fixed. [iOS] iOS 13+ tint color issue fixed. [All] Allow selected segment to be changed from view model binding. [All] User interaction with Commands. [All] Implement the IsEnabled property on individual segments. [All] ICommand. [All] Font size. [All] Font Family. [All] Fixes and improvements. [iOS] IsEnabled binding bug fixed. Copyright 2022 xamarin xamarin.forms segmentedControl netstandard iOS UWP Android macOS ================================================ FILE: src/build/build.ps1 ================================================ param([string]$version) if ([string]::IsNullOrEmpty($version)) {$version = "0.0.1"} if ($IsMacOS) { $msbuild = "msbuild" } else { $vswhere = 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe' $msbuild = & $vswhere -latest -products * -requires Microsoft.Component.MSBuild -property installationPath $msbuild = join-path $msbuild 'MSBuild\Current\Bin\MSBuild.exe' } &$msbuild ..\main\SegCtlr.Netstandard\SegCtlr.Netstandard.csproj /t:Build /p:Configuration="Release" &$msbuild ..\crossplatform\SegCtrl.Droid\SegCtrl.Droid.csproj /t:Build /p:Configuration="Release" &$msbuild ..\crossplatform\SegCtrl.UWP\SegCtrl.UWP.csproj /t:Build /p:Configuration="Release" &$msbuild ..\crossplatform\SegCtrl.iOS\SegCtrl.iOS.csproj /t:Build /p:Configuration="Release" &$msbuild ..\crossplatform\SegCtrl.macOS\SegCtrl.macOS.csproj /t:Build /p:Configuration="Release" Remove-Item .\NuGet -Force -Recurse New-Item -ItemType Directory -Force -Path .\NuGet NuGet.exe pack Plugin.SegmentedControl.Netstandard.nuspec -Verbosity detailed -Symbols -OutputDir "NuGet" -Version $version #NuGet.exe pack Plugin.SegmentedControl.Netstandard.nuspec -Verbosity detailed -Symbols -SymbolPackageFormat snupkg -OutputDir "NuGet" -Version $version ================================================ FILE: src/build/publish.ps1 ================================================ param([string]$betaver) if ([string]::IsNullOrEmpty($betaver)) { $version = [Reflection.AssemblyName]::GetAssemblyName((resolve-path '..\main\SegCtlr.Netstandard\bin\Release\netstandard2.0\Plugin.Segmented.dll')).Version.ToString(3) } else { $version = [Reflection.AssemblyName]::GetAssemblyName((resolve-path '..\main\SegCtlr.Netstandard\bin\Release\netstandard2.0\Plugin.Segmented.dll')).Version.ToString(3) + "-" + $betaver } .\build.ps1 $version Nuget.exe push ".\NuGet\Plugin.SegmentedControl.Netstandard.$version.symbols.nupkg" -Source https://api.nuget.org/v3/index.json ================================================ FILE: src/build/publishLocal.ps1 ================================================ param([string]$betaver) if ([string]::IsNullOrEmpty($betaver)) { $version = [Reflection.AssemblyName]::GetAssemblyName((resolve-path '..\main\SegCtlr.Netstandard\bin\Release\netstandard2.0\Plugin.Segmented.dll')).Version.ToString(3) } else { $version = [Reflection.AssemblyName]::GetAssemblyName((resolve-path '..\main\SegCtlr.Netstandard\bin\Release\netstandard2.0\Plugin.Segmented.dll')).Version.ToString(3) + "-" + $betaver } .\build.ps1 $version nuget.exe push -Source "1iveowlNuGetRepo" -ApiKey key ".\NuGet\Plugin.SegmentedControl.Netstandard.$version.symbols.snupkg" ================================================ FILE: src/crossplatform/SegCtrl.Droid/Properties/AssemblyInfo.cs ================================================ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Android.App; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Plugin.Segmented.Control.Droid")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Plugin.Segmented.Control.Droid")] [assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] ================================================ FILE: src/crossplatform/SegCtrl.Droid/Resources/AboutResources.txt ================================================ Images, layout descriptions, binary blobs and string dictionaries can be included in your application as resource files. Various Android APIs are designed to operate on the resource IDs instead of dealing with images, strings or binary blobs directly. For example, a sample Android app that contains a user interface layout (main.axml), an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) would keep its resources in the "Resources" directory of the application: Resources/ drawable/ icon.png layout/ main.axml values/ strings.xml In order to get the build system to recognize Android resources, set the build action to "AndroidResource". The native Android APIs do not operate directly with filenames, but instead operate on resource IDs. When you compile an Android application that uses resources, the build system will package the resources for distribution and generate a class called "R" (this is an Android convention) that contains the tokens for each one of the resources included. For example, for the above Resources layout, this is what the R class would expose: public class R { public class drawable { public const int icon = 0x123; } public class layout { public const int main = 0x456; } public class strings { public const int first_string = 0xabc; public const int second_string = 0xbcd; } } You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main to reference the layout/main.axml file, or R.strings.first_string to reference the first string in the dictionary file values/strings.xml. ================================================ FILE: src/crossplatform/SegCtrl.Droid/Resources/color/segmented_control_text.xml ================================================  ================================================ FILE: src/crossplatform/SegCtrl.Droid/Resources/drawable/segmented_control_background.xml ================================================  ================================================ FILE: src/crossplatform/SegCtrl.Droid/Resources/drawable/segmented_control_first_background.xml ================================================  ================================================ FILE: src/crossplatform/SegCtrl.Droid/Resources/drawable/segmented_control_last_background.xml ================================================  ================================================ FILE: src/crossplatform/SegCtrl.Droid/Resources/layout/RadioButton.axml ================================================ ================================================ FILE: src/crossplatform/SegCtrl.Droid/Resources/layout/RadioGroup.axml ================================================ ================================================ FILE: src/crossplatform/SegCtrl.Droid/Resources/values/colors.xml ================================================  @android:color/transparent #007AFF ================================================ FILE: src/crossplatform/SegCtrl.Droid/SegCtrl.Droid.csproj ================================================  Debug AnyCPU 8.0.30703 2.0 {615565C8-84DE-4B6B-80DD-106695429AD8} {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Library Properties Plugin.Segmented.Control.Droid Plugin.Segmented.Control.Droid 512 Resources\Resource.Designer.cs Resources Resource Off v11.0 true portable false bin\Debug\ DEBUG;TRACE prompt 4 true pdbonly true bin\Release\ TRACE prompt 4 bin\DebugNAtive\ TRACE true pdbonly AnyCPU Off prompt MinimumRecommendedRules.ruleset Always Designer Always {aba23bab-084a-443e-b9cc-37b0a826377e} SegCtlr.Netstandard Always Always Always Always Designer Always 1.1.1 runtime; build; native; contentfiles; analyzers; buildtransitive all 2.1.0.11 2.3.1.3 2.3.1.4 1.1.0.10 1.2.0.3 1.6.0.3 1.0.0.11 1.0.0.10 1.4.0.4 1.3.6.3 1.4.3 1.4.1.3 1.0.0.10 1.3.1.3 1.0.0.11 1.2.5.2 1.0.0.10 1.2.1.3 1.1.0.10 5.0.0.2291 ================================================ FILE: src/crossplatform/SegCtrl.Droid/SegmentedControlRenderer.cs ================================================ using System; using System.Linq; using Android.Content; using Android.Graphics; using Android.Graphics.Drawables; using Android.Views; using Android.Widget; using Plugin.Segmented.Control; using Plugin.Segmented.Control.Droid; using Xamarin.Forms; using Xamarin.Forms.Platform.Android; using RadioButton = Android.Widget.RadioButton; [assembly: ExportRenderer(typeof(SegmentedControl), typeof(SegmentedControlRenderer))] namespace Plugin.Segmented.Control.Droid { [Preserve(AllMembers = true)] public class SegmentedControlRenderer : ViewRenderer { private RadioGroup _nativeControl; private RadioButton _nativeRadioButtonControl; private Android.Graphics.Color _unselectedItemBackgroundColor = Android.Graphics.Color.Transparent; private readonly Context _context; public SegmentedControlRenderer(Context context) : base(context) { _context = context; } protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if (Control is null) { // Instantiate the native control and assign it to the Control property with // the SetNativeControl method } if (!(e.OldElement is null)) { // Unsubscribe from event handlers and cleanup any resources if (_nativeControl != null) { _nativeControl.CheckedChange -= NativeControl_ValueChanged; } RemoveElementHandlers(); } if (!(e.NewElement is null)) { // Configure the control and subscribe to event handlers AddElementHandlers(); } } private void AddElementHandlers(bool addChildrenHandlersOnly = false) { if (!(Element is null)) { if (!addChildrenHandlersOnly) { Element.SizeChanged += Element_SizeChanged; Element.OnElementChildrenChanging += OnElementChildrenChanging; } if (!(Element.Children is null)) { foreach (var child in Element.Children) { child.PropertyChanged += Segment_PropertyChanged; } } } } private void RemoveElementHandlers(bool removeChildrenHandlersOnly = false) { if (!(Element is null)) { if (!removeChildrenHandlersOnly) { Element.SizeChanged -= Element_SizeChanged; Element.OnElementChildrenChanging -= OnElementChildrenChanging; } if (!(Element.Children is null)) { foreach (var child in Element.Children) { child.PropertyChanged -= Segment_PropertyChanged; } } } } private void Element_SizeChanged(object sender, EventArgs e) { if (Control is null && !(Element is null)) { var layoutInflater = LayoutInflater.From(_context); _nativeControl = (RadioGroup)layoutInflater.Inflate(Resource.Layout.RadioGroup, null); SetNativeControlSegments(layoutInflater); var option = (RadioButton)_nativeControl.GetChildAt(Element.SelectedSegment); if (!(option is null)) { option.Checked = true; } _nativeControl.CheckedChange += NativeControl_ValueChanged; SetNativeControl(_nativeControl); } } private void Segment_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { if (!(_nativeControl is null) && !(Element is null) && sender is SegmentedControlOption option) { var index = Element.Children.IndexOf(option); if (_nativeControl.GetChildAt(index) is RadioButton segment) { switch (e.PropertyName) { case nameof(SegmentedControlOption.Text): segment.Text = option.Text; break; case nameof(SegmentedControlOption.IsEnabled): segment.Enabled = option.IsEnabled; break; } } } } protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); switch (e.PropertyName) { case "Renderer": Element_SizeChanged(null, null); Element?.RaiseSelectionChanged(); break; case nameof(SegmentedControl.SelectedSegment): if (!(_nativeControl is null) && !(Element is null)) { if (Element.SelectedSegment < 0) { var layoutInflater = LayoutInflater.From(_context); _nativeControl = (RadioGroup)layoutInflater.Inflate(Resource.Layout.RadioGroup, null); SetNativeControlSegments(layoutInflater); _nativeControl.CheckedChange += NativeControl_ValueChanged; SetNativeControl(_nativeControl); } SetSelectedRadioButton(Element.SelectedSegment); Element.RaiseSelectionChanged(); } break; case nameof(SegmentedControl.TintColor): case nameof(SegmentedControl.IsEnabled): case nameof(SegmentedControl.FontSize): case nameof(SegmentedControl.FontFamily): case nameof(SegmentedControl.TextColor): case nameof(SegmentedControl.BorderColor): case nameof(SegmentedControl.BorderWidth): OnPropertyChanged(); break; case nameof(SegmentedControl.SelectedTextColor): if (!(_nativeControl is null) && !(Element is null)) { var v = (RadioButton)_nativeControl.GetChildAt(Element.SelectedSegment); v.SetTextColor(Element.SelectedTextColor.ToAndroid()); } break; case nameof(SegmentedControl.Children): SetNativeControlSegments(LayoutInflater.FromContext(_context)); AddElementHandlers(true); break; } } private void SetNativeControlSegments(LayoutInflater layoutInflater) { if (_nativeControl is null || Element?.Children is null) { return; } if (_nativeControl.ChildCount > 0) { _nativeControl.RemoveAllViews(); } foreach (var (child, i) in Element?.Children.Select((child, i) => (child, i))) { var radioButton = (RadioButton)layoutInflater.Inflate(Resource.Layout.RadioButton, null); if (radioButton is null) { return; } if (child.WidthRequest > 0) radioButton.LayoutParameters = new RadioGroup.LayoutParams( Convert.ToInt32(Math.Round(child.WidthRequest)), LayoutParams.WrapContent, 0); else radioButton.LayoutParameters = new RadioGroup.LayoutParams(0, LayoutParams.WrapContent, 1f); radioButton.Text = child.Text; if (i == 0) { radioButton.SetBackgroundResource(Resource.Drawable.segmented_control_first_background); } else { radioButton.SetBackgroundResource(Resource.Drawable.segmented_control_last_background); } ConfigureRadioButton(i, radioButton); _nativeControl.AddView(radioButton); } SetSelectedRadioButton(Element.SelectedSegment); } private void SetSelectedRadioButton(int index) { if (_nativeControl.GetChildAt(index) is RadioButton radioButton) { radioButton.Checked = true; } } private void OnPropertyChanged() { if (_nativeControl is null || Element is null) { return; } for (var i = 0; i < Element.Children.Count; i++) { var radioButton = (RadioButton)_nativeControl.GetChildAt(i); ConfigureRadioButton(i, radioButton); } } private void ConfigureRadioButton(int index, RadioButton radioButton) { if (index == Element.SelectedSegment) { radioButton.SetTextColor(Element.SelectedTextColor.ToAndroid()); _nativeRadioButtonControl = radioButton; } else { var textColor = Element.IsEnabled ? Element.TextColor.ToAndroid() : Element.DisabledColor.ToAndroid(); radioButton.SetTextColor(textColor); } radioButton.TextSize = Convert.ToSingle(Element.FontSize); var font = Font.OfSize(Element.FontFamily, Element.FontSize).ToTypeface(); radioButton.SetTypeface(font, TypefaceStyle.Normal); var gradientDrawable = (StateListDrawable)radioButton.Background; var drawableContainerState = (DrawableContainer.DrawableContainerState)gradientDrawable?.GetConstantState(); var children = drawableContainerState?.GetChildren(); if (!(children is null)) { var selectedShape = children[0] is GradientDrawable drawable ? drawable : (GradientDrawable)((InsetDrawable)children[0]).Drawable; var unselectedShape = children[1] is GradientDrawable drawable1 ? drawable1 : (GradientDrawable)((InsetDrawable)children[1]).Drawable; var backgroundColor = Element.IsEnabled ? Element.TintColor.ToAndroid() : Element.DisabledColor.ToAndroid(); var borderColor = Element.IsEnabled ? Element.BorderColor.ToAndroid() : Element.DisabledColor.ToAndroid(); var borderWidthInPixel = ConvertDipToPixel(Element.BorderWidth); if (!(selectedShape is null)) { selectedShape.SetStroke(borderWidthInPixel, borderColor); selectedShape.SetColor(backgroundColor); } if (!(unselectedShape is null)) { unselectedShape.SetStroke(borderWidthInPixel, borderColor); unselectedShape.SetColor(_unselectedItemBackgroundColor); } } radioButton.Enabled = Element.Children[index].IsEnabled; } private void NativeControl_ValueChanged(object sender, RadioGroup.CheckedChangeEventArgs e) { var rg = (RadioGroup)sender; if (rg.CheckedRadioButtonId != -1) { var id = rg.CheckedRadioButtonId; var radioButton = rg.FindViewById(id); var radioId = rg.IndexOfChild(radioButton); var v = (RadioButton)rg.GetChildAt(radioId); var color = Element.IsEnabled ? Element.TextColor.ToAndroid() : Element.DisabledColor.ToAndroid(); _nativeRadioButtonControl?.SetTextColor(color); v.SetTextColor(Element.SelectedTextColor.ToAndroid()); _nativeRadioButtonControl = v; Element.SelectedSegment = radioId; } } private void OnElementChildrenChanging(object sender, EventArgs e) { RemoveElementHandlers(true); } private int ConvertDipToPixel(double dip) { return (int)Android.Util.TypedValue.ApplyDimension(Android.Util.ComplexUnitType.Dip, (float)dip, _context.Resources.DisplayMetrics); } public override void SetBackgroundColor(Android.Graphics.Color color) { _unselectedItemBackgroundColor = color; OnPropertyChanged(); base.SetBackgroundColor(Android.Graphics.Color.Transparent); } protected override void Dispose(bool disposing) { if (!(_nativeControl is null)) { _nativeControl.CheckedChange -= NativeControl_ValueChanged; } if (!(_nativeRadioButtonControl is null)) { _nativeRadioButtonControl.Dispose(); _nativeRadioButtonControl = null; } RemoveElementHandlers(); try { base.Dispose(disposing); _nativeControl = null; } catch (Exception) { return; } } /// /// Used for registration with dependency service /// public static void Init() { var temp = DateTime.Now; } } } ================================================ FILE: src/crossplatform/SegCtrl.UWP/Properties/AssemblyInfo.cs ================================================ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Plugin.Segmented.Control.UWP")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Plugin.Segmented.Control.UWP")] [assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: ComVisible(false)] ================================================ FILE: src/crossplatform/SegCtrl.UWP/Properties/Plugin.Segmented.Control.UWP.rd.xml ================================================ ================================================ FILE: src/crossplatform/SegCtrl.UWP/SegCtrl.UWP.csproj ================================================  Debug AnyCPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B} Library Properties Plugin.Segmented.Control.UWP Plugin.Segmented.Control.UWP en-US UAP 10.0.19041.0 10.0.16299.0 14 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} AnyCPU true portable false bin\Debug\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP prompt 4 true AnyCPU pdbonly true bin\Release\ TRACE;NETFX_CORE;WINDOWS_UWP prompt 4 x86 true bin\x86\Debug\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP ;2008 full x86 false prompt x86 bin\x86\Release\ TRACE;NETFX_CORE;WINDOWS_UWP true ;2008 pdbonly x86 false prompt ARM true bin\ARM\Debug\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP ;2008 full ARM false prompt ARM bin\ARM\Release\ TRACE;NETFX_CORE;WINDOWS_UWP true ;2008 pdbonly ARM false prompt x64 true bin\x64\Debug\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP ;2008 full x64 false prompt x64 bin\x64\Release\ TRACE;NETFX_CORE;WINDOWS_UWP true ;2008 pdbonly x64 false prompt PackageReference SegmentedUserControl.xaml 6.2.13 5.0.0.2291 {aba23bab-084a-443e-b9cc-37b0a826377e} SegCtlr.Netstandard Designer MSBuild:Compile Designer MSBuild:Compile PreserveNewest 14.0 bin\DebugNAtive\ TRACE;NETFX_CORE;WINDOWS_UWP true true pdbonly AnyCPU false prompt MinimumRecommendedRules.ruleset bin\x86\DebugNAtive\ TRACE;NETFX_CORE;WINDOWS_UWP true ;2008 true pdbonly x86 false prompt MinimumRecommendedRules.ruleset bin\ARM\DebugNAtive\ TRACE;NETFX_CORE;WINDOWS_UWP true ;2008 true pdbonly ARM false prompt MinimumRecommendedRules.ruleset bin\x64\DebugNAtive\ TRACE;NETFX_CORE;WINDOWS_UWP true ;2008 true pdbonly x64 false prompt MinimumRecommendedRules.ruleset ================================================ FILE: src/crossplatform/SegCtrl.UWP/SegmentRadioButton.cs ================================================ using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; namespace Plugin.Segmented.Control.UWP { public class SegmentRadioButton : RadioButton { public static readonly DependencyProperty SelectedTextColorProperty = DependencyProperty.Register( "SelectedTextColor", typeof(SolidColorBrush), typeof(SegmentRadioButton), new PropertyMetadata(default(SolidColorBrush), new PropertyChangedCallback(OnSelectedTextChanged))); public SolidColorBrush SelectedTextColor { get => (SolidColorBrush) GetValue(SelectedTextColorProperty); set => SetValue(SelectedTextColorProperty, value); } public static readonly DependencyProperty TextColorProperty = DependencyProperty.Register( "TextColor", typeof(SolidColorBrush), typeof(SegmentRadioButton), new PropertyMetadata(default(SolidColorBrush), new PropertyChangedCallback(OnTextColorChanged))); public SolidColorBrush TextColor { get => (SolidColorBrush)GetValue(TextColorProperty); set => SetValue(TextColorProperty, value); } public static readonly DependencyProperty TintColorProperty = DependencyProperty.Register( "TintColor", typeof(SolidColorBrush), typeof(SegmentRadioButton), new PropertyMetadata(default(SolidColorBrush), new PropertyChangedCallback(OnTintChanged))); public SolidColorBrush TintColor { get => (SolidColorBrush) GetValue(TintColorProperty); set => SetValue(TintColorProperty, value); } public static readonly DependencyProperty DisabledColorProperty = DependencyProperty.Register( "DisabledColor", typeof(SolidColorBrush), typeof(SegmentRadioButton), new PropertyMetadata(default(SolidColorBrush), new PropertyChangedCallback(OnDisabledColorChanged))); public SolidColorBrush DisabledColor { get => (SolidColorBrush) GetValue(DisabledColorProperty); set => SetValue(DisabledColorProperty, value); } public SegmentRadioButton() { this.IsEnabledChanged += SegmentRadioButton_IsEnabledChanged; } private void SegmentRadioButton_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e) { if (sender is SegmentRadioButton segment) { Refresh(segment); } } private static void OnTintChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is SegmentRadioButton segment) { segment.BorderBrush = (SolidColorBrush) e.NewValue; Refresh(segment); } } private static void OnDisabledColorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is SegmentRadioButton segment) { segment.BorderBrush = (SolidColorBrush)e.NewValue; Refresh(segment); } } private static void OnSelectedTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is SegmentRadioButton segment) { segment.SelectedTextColor = (SolidColorBrush)e.NewValue; Refresh(segment); } } private static void OnTextColorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { if (d is SegmentRadioButton segment) { segment.TextColor = (SolidColorBrush)e.NewValue; Refresh(segment); } } private static void Refresh(SegmentRadioButton segment) { // Go to "Indeterminate" State to ensure that the GotoState is refreshed even if the state is the same. // Necessary because properties might have changed even when the state have not. VisualStateManager.GoToState(segment, "Indeterminate", false); if (segment.IsChecked ?? false) { VisualStateManager.GoToState(segment, segment.IsEnabled ? "Checked" : "DisabledAndChecked", false); } else { VisualStateManager.GoToState(segment, segment.IsEnabled ? "Unchecked" : "DisabledAndUnchecked", false); } } } } ================================================ FILE: src/crossplatform/SegCtrl.UWP/SegmentedControlRenderer.cs ================================================ using System; using System.ComponentModel; using System.Linq; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; using Plugin.Segmented.Control; using Plugin.Segmented.Control.UWP; using Xamarin.Forms.Platform.UWP; [assembly: ExportRenderer(typeof(SegmentedControl), typeof(SegmentedControlRenderer))] namespace Plugin.Segmented.Control.UWP { [Preserve(AllMembers = true)] public class SegmentedControlRenderer : ViewRenderer { private SegmentedUserControl _segmentedUserControl; private readonly ColorConverter _colorConverter = new ColorConverter(); public SegmentedControlRenderer() {} protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if (e.OldElement != null) { DisposeEventHandlers(); } if (_segmentedUserControl is null || e.NewElement != null) { CreateSegmentedRadioButtonControl(); } } protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); if (e.PropertyName == "Renderer") { Element?.RaiseSelectionChanged(); return; } if (_segmentedUserControl is null || Element is null) return; switch (e.PropertyName) { case nameof(SegmentedControl.SelectedSegment): SetSelectedSegment(); break; case nameof(SegmentedControl.TintColor): SetTintColor(); break; case nameof(SegmentedControl.IsEnabled): SetIsEnabled(); break; case nameof(SegmentedControl.DisabledColor): SetDisabledColor(); break; case nameof(SegmentedControl.TextColor): SetTextColor(); break; case nameof(SegmentedControl.SelectedTextColor): SetSelectedTextColor(); break; case nameof(SegmentedControl.Children): SetChildren(); break; case nameof(SegmentedControl.FontSize): SetFontSize(); break; case nameof(SegmentedControl.FontFamily): SetFontFamily(); break; } } private void SetFontSize() { if (Element.FontSize > 0) { foreach (SegmentRadioButton segment in _segmentedUserControl.SegmentedControlGrid.Children) { segment.FontSize = Element.FontSize; }; } } private void SetFontFamily() { if (!string.IsNullOrWhiteSpace(Element.FontFamily)) { foreach (SegmentRadioButton segment in _segmentedUserControl.SegmentedControlGrid.Children) { segment.FontFamily = new FontFamily(Element.FontFamily); }; } } private void SetSelectedSegment() { if (_segmentedUserControl.SegmentedControlGrid.Children .Where(x => { var btn = (RadioButton)x; int.TryParse(btn.Tag.ToString(), out var i); return i == Element.SelectedSegment; }) .FirstOrDefault() is RadioButton checkedButton) { checkedButton.IsChecked = true; } } private void SetTintColor() { _segmentedUserControl.SegmentedControlGrid.BorderBrush = (SolidColorBrush)_colorConverter.Convert(Element.TintColor, null, null, ""); foreach (var segment in _segmentedUserControl.SegmentedControlGrid.Children) { ((SegmentRadioButton)segment).TintColor = (SolidColorBrush)_colorConverter.Convert(Element.TintColor, null, null, ""); } } private void SetIsEnabled() { if (Element.IsEnabled) { foreach (var uiElement in _segmentedUserControl.SegmentedControlGrid.Children) { var segment = (SegmentRadioButton)uiElement; segment.IsEnabled = true; } _segmentedUserControl.SegmentedControlGrid.BorderBrush = (SolidColorBrush)_colorConverter.Convert(Element.TintColor, null, null, ""); } else { foreach (var uiElement in _segmentedUserControl.SegmentedControlGrid.Children) { var segment = (SegmentRadioButton)uiElement; segment.IsEnabled = false; } _segmentedUserControl.SegmentedControlGrid.BorderBrush = (SolidColorBrush)_colorConverter.Convert(Element.DisabledColor, null, null, ""); } } private void SetDisabledColor() { foreach (var segment in _segmentedUserControl.SegmentedControlGrid.Children) { ((SegmentRadioButton)segment).DisabledColor = (SolidColorBrush)_colorConverter.Convert(Element.DisabledColor, null, null, ""); } if (!Element.IsEnabled) { _segmentedUserControl.SegmentedControlGrid.BorderBrush = (SolidColorBrush)_colorConverter.Convert(Element.DisabledColor, null, null, ""); } } private void SetTextColor() { foreach (var segment in _segmentedUserControl.SegmentedControlGrid.Children) { ((SegmentRadioButton)segment).TextColor = (SolidColorBrush)_colorConverter.Convert( Element.TextColor, null, null, ""); } } private void SetSelectedTextColor() { foreach (var segment in _segmentedUserControl.SegmentedControlGrid.Children) { ((SegmentRadioButton)segment).SelectedTextColor = (SolidColorBrush)_colorConverter.Convert(Element.SelectedTextColor, null, null, ""); } } private void SetChildren() { if (Element.Children != null) { DisposeEventHandlers(); CreateSegmentedRadioButtonControl(); } } private void CreateSegmentedRadioButtonControl() { _segmentedUserControl = new SegmentedUserControl(); var radioButtonGroupName = Guid.NewGuid().ToString(); var grid = _segmentedUserControl.SegmentedControlGrid; grid.BorderBrush = (SolidColorBrush) _colorConverter.Convert(Element.TintColor, null, null, ""); grid.ColumnDefinitions.Clear(); grid.Children.Clear(); foreach (var (child, i) in Element.Children.Select((child, i) => (child, i))) { var segmentButton = new SegmentRadioButton { GroupName = radioButtonGroupName, Style = (Style)_segmentedUserControl.Resources["SegmentedRadioButtonStyle"], Content = child.Text, Tag = i, HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, BorderBrush = (SolidColorBrush)_colorConverter.Convert(Element.TintColor, null, null, ""), TextColor = (SolidColorBrush)_colorConverter.Convert(Element.TextColor, null, null, ""), SelectedTextColor = (SolidColorBrush)_colorConverter.Convert(Element.SelectedTextColor, null, null, ""), TintColor = (SolidColorBrush)_colorConverter.Convert(Element.TintColor, null, null, ""), DisabledColor = (SolidColorBrush)_colorConverter.Convert(Element.DisabledColor, null, null, ""), BorderThickness = i > 0 ? new Thickness(1, 0, 0, 0) : new Thickness(0, 0, 0, 0), IsEnabled = Element.Children[i].IsEnabled, MinWidth = 0, }; segmentButton.Checked += SegmentRadioButtonOnChecked; if (i == Element.SelectedSegment) { segmentButton.IsChecked = true; } if (Element.FontSize > 0) { segmentButton.FontSize = Element.FontSize; } if (!string.IsNullOrEmpty(Element.FontFamily)) { segmentButton.FontFamily = new FontFamily(Element.FontFamily); } var columnDefinition = new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star), }; if (Element.WidthRequest > 0) columnDefinition.Width = new GridLength(Element.WidthRequest); grid.ColumnDefinitions.Add(columnDefinition); segmentButton.SetValue(Grid.ColumnProperty, i); grid.Children.Add(segmentButton); child.PropertyChanged += Segment_PropertyChanged; } SetNativeControl(_segmentedUserControl); } private void Segment_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (!(_segmentedUserControl is null) && !(Element is null) && sender is SegmentedControlOption option) { var index = Element.Children.IndexOf(option); switch (e.PropertyName) { case nameof(SegmentedControlOption.Text): _segmentedUserControl.SegmentedControlGrid.Children[index].SetValue(ContentControl.ContentProperty, option.Text); break; case nameof(SegmentedControlOption.IsEnabled): _segmentedUserControl.SegmentedControlGrid.Children[index].SetValue(Windows.UI.Xaml.Controls.Control.IsEnabledProperty, option.IsEnabled); break; } } } private void SegmentRadioButtonOnChecked(object sender, RoutedEventArgs e) { var button = (SegmentRadioButton) sender; if (!(button is null)) { Element.SelectedSegment = int.Parse(button.Tag.ToString()); Element?.RaiseSelectionChanged(); } } protected override void Dispose(bool disposing) { DisposeEventHandlers(); base.Dispose(disposing); } private void DisposeEventHandlers() { if (_segmentedUserControl?.SegmentedControlGrid?.Children != null) { foreach (var element in _segmentedUserControl.SegmentedControlGrid.Children) { if (element is SegmentRadioButton segment) { segment.Checked -= SegmentRadioButtonOnChecked; } } } if (!(Element is null)) { foreach (var child in Element.Children) { child.PropertyChanged -= Segment_PropertyChanged; } } } } } ================================================ FILE: src/crossplatform/SegCtrl.UWP/SegmentedRadioButtonStyle.xaml ================================================  ================================================ FILE: src/crossplatform/SegCtrl.UWP/SegmentedUserControl.xaml ================================================  ================================================ FILE: src/crossplatform/SegCtrl.UWP/SegmentedUserControl.xaml.cs ================================================ using Windows.UI.Xaml.Controls; // The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236 namespace Plugin.Segmented.Control.UWP { public sealed partial class SegmentedUserControl : UserControl { public Grid SegmentedControlGrid => mainGrid; public SegmentedUserControl() { this.InitializeComponent(); } } } ================================================ FILE: src/crossplatform/SegCtrl.iOS/Properties/AssemblyInfo.cs ================================================ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Plugin.Segmented.Control.iOS")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Plugin.Segmented.Control.iOS")] [assembly: AssemblyCopyright("Copyright © 2017")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("39cd5d35-d98e-49a2-868b-89e7b64d25de")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] ================================================ FILE: src/crossplatform/SegCtrl.iOS/SegCtrl.iOS.csproj ================================================  Debug AnyCPU 8.0.30703 2.0 {39CD5D35-D98E-49A2-868B-89E7B64D25DE} {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Library Plugin.Segmented.Control.iOS Resources Plugin.Segmented.Control.iOS true portable false bin\Debug DEBUG; prompt 4 false full true bin\Release prompt 4 false true true true snupkg bin\DebugNAtive\ __UNIFIED__;__MOBILE__;__IOS__; true full AnyCPU false prompt MinimumRecommendedRules.ruleset {aba23bab-084a-443e-b9cc-37b0a826377e} SegCtlr.Netstandard 5.0.0.2291 ================================================ FILE: src/crossplatform/SegCtrl.iOS/SegmentedControlRenderer.cs ================================================ using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using Plugin.Segmented.Control; using Plugin.Segmented.Control.iOS; using UIKit; using Xamarin.Forms; using Xamarin.Forms.Platform.iOS; [assembly: ExportRenderer(typeof(SegmentedControl), typeof(SegmentedControlRenderer))] namespace Plugin.Segmented.Control.iOS { [Preserve(AllMembers = true)] public class SegmentedControlRenderer : ViewRenderer { private UISegmentedControl _nativeControl; protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if (Control is null && Element != null) { _nativeControl = new UISegmentedControl { Enabled = Element.IsEnabled }; SetNativeControlSegments(Element.Children); SetNativeControl(_nativeControl); SetEnabledStateColor(); SetFont(); SetSelectedTextColor(); SetTextColor(); SetBorder(); } if (!(e.OldElement is null)) { if (!(_nativeControl is null)) { _nativeControl.ValueChanged -= NativeControl_SelectionChanged; } RemoveElementHandlers(); } if (!(e.NewElement is null)) { if (!(_nativeControl is null)) { _nativeControl.ValueChanged += NativeControl_SelectionChanged; } AddElementHandlers(e.NewElement); } } private void SetNativeControlSegments(IList children) { if (!(_nativeControl is null)) { if (_nativeControl.NumberOfSegments > 0) { _nativeControl.RemoveAllSegments(); } foreach (var (child, i) in children.Select((child, i) => ( child, i))) { _nativeControl.InsertSegment(child.Text, i, false); _nativeControl.SetEnabled(children[i].IsEnabled, i); if (children[i].WidthRequest > 0) _nativeControl.SetWidth((nfloat)children[i].WidthRequest, i); } if (!(Element is null)) { _nativeControl.SelectedSegment = Element.SelectedSegment; } } } private void AddElementHandlers(SegmentedControl element, bool addChildHandlersOnly = false) { if (!(element is null)) { if (!addChildHandlersOnly) { element.OnElementChildrenChanging += OnElementChildrenChanging; } if (!(element.Children is null)) { foreach (var child in element.Children) { child.PropertyChanged += SegmentPropertyChanged; } } } } private void RemoveElementHandlers(bool removeChildrenHandlersOnly = false) { if (!(Element is null)) { if (!removeChildrenHandlersOnly) { Element.OnElementChildrenChanging -= OnElementChildrenChanging; } if (!(Element.Children is null)) { foreach (var child in Element.Children) { child.PropertyChanged -= SegmentPropertyChanged; } } } } private void OnElementChildrenChanging(object sender, EventArgs e) { RemoveElementHandlers(true); } private void SegmentPropertyChanged(object sender, PropertyChangedEventArgs e) { if (!(_nativeControl is null) && !(Element is null) && sender is SegmentedControlOption option) { var index = Element.Children.IndexOf(option); switch (e.PropertyName) { case nameof(SegmentedControlOption.Text): _nativeControl.SetTitle(option.Text, index); break; case nameof(SegmentedControlOption.IsEnabled): _nativeControl.SetEnabled(option.IsEnabled, index); break; } } } protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); if (e.PropertyName == "Renderer") { Element?.RaiseSelectionChanged(); return; } if (_nativeControl is null || Element is null) { return; } switch (e.PropertyName) { case nameof(SegmentedControl.SelectedSegment): _nativeControl.SelectedSegment = Element.SelectedSegment; Element.RaiseSelectionChanged(); break; case nameof(SegmentedControl.TintColor): SetEnabledStateColor(); break; case nameof(SegmentedControl.IsEnabled): _nativeControl.Enabled = Element.IsEnabled; SetEnabledStateColor(); break; case nameof(SegmentedControl.SelectedTextColor): SetSelectedTextColor(); break; case nameof(SegmentedControl.TextColor): SetTextColor(); break; case nameof(SegmentedControl.Children): if (!(Element.Children is null)) { SetNativeControlSegments(Element.Children); AddElementHandlers(Element, true); } break; case nameof(SegmentedControl.FontSize): case nameof(SegmentedControl.FontFamily): SetFont(); break; case nameof(SegmentedControl.BorderWidth): case nameof(SegmentedControl.BorderColor): SetBorder(); break; } } private void SetEnabledStateColor() { if (UIDevice.CurrentDevice.CheckSystemVersion(13, 0)) { _nativeControl.SelectedSegmentTintColor = Element.IsEnabled ? Element.TintColor.ToUIColor() : Element.DisabledColor.ToUIColor(); } else { _nativeControl.TintColor = Element.IsEnabled ? Element.TintColor.ToUIColor() : Element.DisabledColor.ToUIColor(); } } private void SetFont() { var uiTextAttribute = _nativeControl.GetTitleTextAttributes(UIControlState.Normal); var font = string.IsNullOrEmpty(Element.FontFamily) ? UIFont.SystemFontOfSize((nfloat)Element.FontSize) : UIFont.FromName(Element.FontFamily, (nfloat)Element.FontSize); uiTextAttribute.Font = font; _nativeControl.SetTitleTextAttributes(uiTextAttribute, UIControlState.Normal); } private void SetTextColor() { var uiTextAttribute = _nativeControl.GetTitleTextAttributes(UIControlState.Normal); uiTextAttribute.TextColor = Element.TextColor.ToUIColor(); _nativeControl.SetTitleTextAttributes(uiTextAttribute, UIControlState.Normal); } private void SetSelectedTextColor() { var uiTextAttribute = _nativeControl.GetTitleTextAttributes(UIControlState.Normal); uiTextAttribute.TextColor = Element.SelectedTextColor.ToUIColor(); _nativeControl.SetTitleTextAttributes(uiTextAttribute, UIControlState.Selected); } private void SetBorder() { _nativeControl.Layer.BorderWidth = (nfloat)Element.BorderWidth; _nativeControl.Layer.BorderColor = Element.IsEnabled ? Element.BorderColor.ToCGColor() : Element.DisabledColor.ToCGColor(); } private void NativeControl_SelectionChanged(object sender, EventArgs e) { Element.SelectedSegment = (int)_nativeControl.SelectedSegment; } protected override void Dispose(bool disposing) { if (!(_nativeControl is null)) { _nativeControl.ValueChanged -= NativeControl_SelectionChanged; _nativeControl?.Dispose(); _nativeControl = null; } RemoveElementHandlers(); base.Dispose(disposing); } public static void Initialize() { } } } ================================================ FILE: src/crossplatform/SegCtrl.macOS/Properties/AssemblyInfo.cs ================================================ using System.Reflection; using System.Runtime.CompilerServices; // Information about this assembly is defined by the following attributes. // Change them to the values specific to your project. [assembly: AssemblyTitle("SegCtrl.macOS")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Orion Law Management Systems, Inc.")] [assembly: AssemblyProduct("")] [assembly: AssemblyCopyright("Copyright 2018")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". // The form "{Major}.{Minor}.*" will automatically update the build and revision, // and "{Major}.{Minor}.{Build}.*" will update just the revision. [assembly: AssemblyVersion("1.0.*")] // The following attributes are used to specify the signing key for the assembly, // if desired. See the Mono documentation for more information about signing. //[assembly: AssemblyDelaySign(false)] //[assembly: AssemblyKeyFile("")] ================================================ FILE: src/crossplatform/SegCtrl.macOS/SegCtrl.macOS.csproj ================================================  Debug AnyCPU {BF907E43-0F07-4502-9AF3-96B063281234} {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Library SegCtrl.macOS SegCtrl.macOS v2.0 Xamarin.Mac Resources true portable false bin\Debug DEBUG; prompt 4 false false false false false false true bin\Release prompt 4 false false false false false portable true {ABA23BAB-084A-443E-B9CC-37B0A826377E} SegCtlr.Netstandard 2.0.3 5.0.0.2291 ================================================ FILE: src/crossplatform/SegCtrl.macOS/SegmentedControlRenderer.cs ================================================ using System; using System.Linq; using Xamarin.Forms; using AppKit; using Xamarin.Forms.Platform.MacOS; using Plugin.Segmented.Control; using System.ComponentModel; using Plugin.Segmented; [assembly: ExportRenderer(typeof(SegmentedControl), typeof(SegCtrl.macOS.SegmentedControlRenderer))] namespace SegCtrl.macOS { [Preserve(AllMembers = true)] public class SegmentedControlRenderer : ViewRenderer { private NSSegmentedControl _nativeControl; protected override void OnElementChanged(ElementChangedEventArgs e) { base.OnElementChanged(e); if (Control is null && Element != null) { CreateNativeSegmentedControl(); } if (!(e.OldElement is null)) { RemoveElementHandlers(); } AddElementHandlers(e.NewElement); } private void CreateNativeSegmentedControl() { var titles = Element.Children.Select(s => s.Text); _nativeControl = NSSegmentedControl.FromLabels(titles.ToArray(), NSSegmentSwitchTracking.SelectOne, OnNativeSegmentChanged); _nativeControl.Enabled = Element.IsEnabled; _nativeControl.SetSelected(true, Element.SelectedSegment); _nativeControl.FocusRingType = NSFocusRingType.None; foreach (var (segmentedCtrlOption, i) in Element.Children.Select((segmentCtrlOption, i) => (segmentCtrlOption, i))) { if(segmentedCtrlOption.WidthRequest >= 0) _nativeControl.SetWidth((nfloat)segmentedCtrlOption.WidthRequest, i); } SetFont(); SetNativeControl(_nativeControl); } private void OnNativeSegmentChanged() { if (!(_nativeControl is null)) { Element.SelectedSegment = (int)_nativeControl.SelectedSegment; } } private void ResetNativeControl() { if (!(_nativeControl is null) && !(Element is null)) { if (_nativeControl.SegmentCount > 0) { _nativeControl.RemoveFromSuperview(); _nativeControl.Dispose(); _nativeControl = null; CreateNativeSegmentedControl(); } } } private void AddElementHandlers(SegmentedControl element, bool addChildHandlersOnly = false) { if (!(element is null)) { if (!addChildHandlersOnly) { element.OnElementChildrenChanging += OnElementChildrenChanging; } if (!(element.Children is null)) { foreach (var child in element.Children) { child.PropertyChanged += SegmentPropertyChanged; } } } } private void RemoveElementHandlers(bool removeChildrenHandlersOnly = false) { if (!(Element is null)) { if (!removeChildrenHandlersOnly) { Element.OnElementChildrenChanging -= OnElementChildrenChanging; } if (!(Element.Children is null)) { foreach (var child in Element.Children) { child.PropertyChanged -= SegmentPropertyChanged; } } } } private void OnElementChildrenChanging(object sender, EventArgs e) { RemoveElementHandlers(true); } private void SegmentPropertyChanged(object sender, PropertyChangedEventArgs e) { if (!(_nativeControl is null) && !(Element is null) && sender is SegmentedControlOption option) { var index = Element.Children.IndexOf(option); switch (e.PropertyName) { case nameof(SegmentedControlOption.Text): _nativeControl.SetLabel(option.Text, index); break; case nameof(SegmentedControlOption.IsEnabled): _nativeControl.SetEnabled(option.IsEnabled, index); break; } } } protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); if (e.PropertyName == "Renderer") { Element?.RaiseSelectionChanged(); return; } if (_nativeControl is null || Element is null) { return; } switch (e.PropertyName) { case nameof(NSSegmentedControl.SelectedSegment): _nativeControl.SelectedSegment = Element.SelectedSegment; Element.RaiseSelectionChanged(); break; case nameof(NSSegmentedControl.IsEnabled): _nativeControl.Enabled = Element.IsEnabled; break; case nameof(SegmentedControl.Children): ResetNativeControl(); break; case nameof(SegmentedControl.FontSize): case nameof(SegmentedControl.FontFamily): SetFont(); break; } } private void SetFont() { var font = NSFont.FromFontName(string.IsNullOrEmpty(Element.FontFamily) ? _nativeControl.Font.FontName : Element.FontFamily, (nfloat)Element.FontSize); _nativeControl.Font = font; } protected override void Dispose(bool disposing) { RemoveElementHandlers(); base.Dispose(disposing); _nativeControl = null; } public static void Initialize() { } } } ================================================ FILE: src/main/SegCtlr.Netstandard/Control/SegmentedControl.cs ================================================ using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Windows.Input; using Plugin.Segmented.Event; using Xamarin.Forms; using Xamarin.Forms.Internals; namespace Plugin.Segmented.Control { [DesignTimeVisible(true)] [Preserve(AllMembers = true)] [ContentProperty(nameof(Children))] public class SegmentedControl : View, IViewContainer { public SegmentedControl() { Children = new List(); } public event EventHandler OnElementChildrenChanging; public event EventHandler OnSegmentSelected; #region Children public static readonly BindableProperty ChildrenProperty = BindableProperty.Create(nameof(Children), typeof(IList), typeof(SegmentedControl), default(IList), propertyChanging: OnChildrenChanging); private static void OnChildrenChanging(BindableObject bindable, object oldValue, object newValue) { if (bindable is SegmentedControl segmentedControl && newValue is IList newItemsList && segmentedControl.Children != null) { segmentedControl.OnElementChildrenChanging?.Invoke(segmentedControl, new ElementChildrenChanging((IList)oldValue, newItemsList)); segmentedControl.Children.Clear(); foreach (var newSegment in newItemsList) { newSegment.BindingContext = segmentedControl.BindingContext; segmentedControl.Children.Add(newSegment); } } } public IList Children { get => (IList)GetValue(ChildrenProperty); set => SetValue(ChildrenProperty, value); } #endregion #region ItemsSource public static readonly BindableProperty ItemsSourceProperty = BindableProperty.Create(nameof(ItemsSource), typeof(IEnumerable), typeof(SegmentedControl)); public static readonly BindableProperty TextPropertyNameProperty = BindableProperty.Create(nameof(TextPropertyName), typeof(string), typeof(SegmentedControl)); private void OnItemsSourceChanged() { var itemsSource = ItemsSource; var items = itemsSource as IList; if (items == null && itemsSource is IEnumerable list) items = list.Cast().ToList(); if (items != null) { var textValues = items as IEnumerable; if (textValues == null && items.Count > 0 && items[0] is string) textValues = items.Cast(); if (textValues != null) { Children = new List(textValues.Select(child => new SegmentedControlOption { Text = child, Item = child })); OnSelectedItemChanged(true); } else { var textPropertyName = TextPropertyName; if (textPropertyName != null) { var newChildren = new List(); foreach (var item in items) newChildren.Add(new SegmentedControlOption { Item = item, TextPropertyName = textPropertyName }); Children = newChildren; OnSelectedItemChanged(true); } } } } protected override void OnPropertyChanged(string propertyName = null) { base.OnPropertyChanged(propertyName); if (propertyName == nameof(ItemsSource) || propertyName == nameof(TextPropertyName)) OnItemsSourceChanged(); else if(propertyName == nameof(SelectedItem)) OnSelectedItemChanged(); else if(propertyName == nameof(SelectedSegment)) OnSelectedSegmentChanged(); } private void OnSelectedSegmentChanged() { var segmentIndex = SelectedSegment; if (segmentIndex >= 0 && segmentIndex < Children.Count && SelectedItem != Children[segmentIndex].Item) SelectedItem = Children[segmentIndex].Item; } private void OnSelectedItemChanged(bool forceUpdateSelectedSegment = false) { if (TextPropertyName != null) { var selectedItem = SelectedItem; var selectedIndex = Children.IndexOf(item => item.Item == selectedItem); if (selectedIndex == -1) { selectedIndex = SelectedSegment; if (selectedIndex < 0 || selectedIndex >= Children.Count) SelectedSegment = 0; else if(SelectedSegment != selectedIndex) SelectedSegment = selectedIndex; else if(forceUpdateSelectedSegment) OnSelectedSegmentChanged(); } else if (selectedIndex != SelectedSegment) SelectedSegment = selectedIndex; } } public IEnumerable ItemsSource { get => (IEnumerable)GetValue(ItemsSourceProperty); set => SetValue(ItemsSourceProperty, value); } public string TextPropertyName { get => (string)GetValue(TextPropertyNameProperty); set => SetValue(TextPropertyNameProperty, value); } #endregion public static readonly BindableProperty TextColorProperty = BindableProperty.Create( propertyName: "TextColor", returnType: typeof(Color), declaringType: typeof(SegmentedControl), defaultValue: default(Color)); public Color TextColor { get => (Color) GetValue(TextColorProperty); set => SetValue(TextColorProperty, value); } public static readonly BindableProperty TintColorProperty = BindableProperty.Create(nameof(TintColor), typeof(Color), typeof(SegmentedControl), Color.Blue); public Color TintColor { get => (Color)GetValue(TintColorProperty); set => SetValue(TintColorProperty, value); } public static readonly BindableProperty SelectedTextColorProperty = BindableProperty.Create(nameof(SelectedTextColor), typeof(Color), typeof(SegmentedControl), Color.White); public Color SelectedTextColor { get => (Color)GetValue(SelectedTextColorProperty); set => SetValue(SelectedTextColorProperty, value); } public static readonly BindableProperty DisabledColorProperty = BindableProperty.Create(nameof(DisabledColor), typeof(Color), typeof(SegmentedControl), Color.Gray); public Color DisabledColor { get => (Color)GetValue(DisabledColorProperty); set => SetValue(DisabledColorProperty, value); } public static readonly BindableProperty BorderColorProperty = BindableProperty.Create(nameof(BorderColor), typeof(Color), typeof(SegmentedControl), defaultValueCreator: bindable => ((SegmentedControl)bindable).TintColor); public Color BorderColor { get => (Color)GetValue(BorderColorProperty); set => SetValue(BorderColorProperty, value); } public static readonly BindableProperty BorderWidthProperty = BindableProperty.Create(nameof(BorderWidth), typeof(double), typeof(SegmentedControl), defaultValueCreator: _ => Device.RuntimePlatform == Device.Android ? 1.0 : 0.0); public double BorderWidth { get => (double)GetValue(BorderWidthProperty); set => SetValue(BorderWidthProperty, value); } public static readonly BindableProperty SelectedSegmentProperty = BindableProperty.Create(nameof(SelectedSegment), typeof(int), typeof(SegmentedControl), 0); public static readonly BindableProperty SelectedItemProperty = BindableProperty.Create(nameof(SelectedItem), typeof(object), typeof(SegmentedControl), defaultBindingMode: BindingMode.TwoWay); public int SelectedSegment { get => (int)GetValue(SelectedSegmentProperty); set => SetValue(SelectedSegmentProperty, value); } public object SelectedItem { get => (object)GetValue(SelectedItemProperty); set => SetValue(SelectedItemProperty, value); } public static readonly BindableProperty SegmentSelectedCommandProperty = BindableProperty.Create(nameof(SegmentSelectedCommand), typeof(ICommand), typeof(SegmentedControl)); public ICommand SegmentSelectedCommand { get => (ICommand)GetValue(SegmentSelectedCommandProperty); set => SetValue(SegmentSelectedCommandProperty, value); } public static readonly BindableProperty SegmentSelectedCommandParameterProperty = BindableProperty.Create(nameof(SegmentSelectedCommandParameter), typeof(object), typeof(SegmentedControl)); public object SegmentSelectedCommandParameter { get => GetValue(SegmentSelectedCommandParameterProperty); set => SetValue(SegmentSelectedCommandParameterProperty, value); } public static readonly BindableProperty FontSizeProperty = BindableProperty.Create(nameof(FontSize), typeof(double), typeof(SegmentedControl), Device.GetNamedSize(NamedSize.Medium, typeof(Label))); [Xamarin.Forms.TypeConverter(typeof(FontSizeConverter))] public double FontSize { get => (double)GetValue(FontSizeProperty); set => SetValue(FontSizeProperty, value); } public static readonly BindableProperty FontFamilyProperty = BindableProperty.Create(nameof(FontFamily), typeof(string), typeof(SegmentedControl)); public string FontFamily { get => (string)GetValue(FontFamilyProperty); set => SetValue(FontFamilyProperty, value); } [EditorBrowsable(EditorBrowsableState.Never)] public void RaiseSelectionChanged() { OnSegmentSelected?.Invoke(this, new SegmentSelectEventArgs { NewValue = this.SelectedSegment }); if (!(SegmentSelectedCommand is null) && SegmentSelectedCommand.CanExecute(SegmentSelectedCommandParameter)) { SegmentSelectedCommand.Execute(SegmentSelectedCommandParameter); } } protected override void OnBindingContextChanged() { base.OnBindingContextChanged(); if (!(Children is null)) { foreach (var segment in Children) { segment.BindingContext = BindingContext; } } } } } ================================================ FILE: src/main/SegCtlr.Netstandard/Control/SegmentedControlOption.cs ================================================ using System; using System.ComponentModel; using Xamarin.Forms; namespace Plugin.Segmented.Control { [Preserve(AllMembers = true)] public class SegmentedControlOption : View { public static readonly BindableProperty TextProperty = BindableProperty.Create(nameof(Text), typeof(string), typeof(SegmentedControlOption), string.Empty); public static readonly BindableProperty ItemProperty = BindableProperty.Create(nameof(Item), typeof(object), typeof(SegmentedControlOption), propertyChanged: (bindable, value, newValue) => ((SegmentedControlOption)bindable).OnItemChanged(value, newValue)); public static readonly BindableProperty TextPropertyNameProperty = BindableProperty.Create(nameof(TextPropertyName), typeof(string), typeof(SegmentedControlOption)); public string Text { get => (string)GetValue(TextProperty); set => SetValue(TextProperty, value); } public object Item { get => GetValue(ItemProperty); set => SetValue(ItemProperty, value); } public string TextPropertyName { get => (string)GetValue(TextPropertyNameProperty); set => SetValue(TextPropertyNameProperty, value); } private void OnItemChanged(object value, object newValue) { if (value is INotifyPropertyChanged mutableItem) mutableItem.PropertyChanged -= OnItemPropertyChanged; if (newValue is INotifyPropertyChanged newMutableItem) newMutableItem.PropertyChanged += OnItemPropertyChanged; } protected override void OnPropertyChanged(string propertyName = null) { base.OnPropertyChanged(propertyName); if (propertyName == nameof(Item) || propertyName == nameof(TextPropertyName)) SetTextFromItemProperty(); } private void OnItemPropertyChanged(object sender, PropertyChangedEventArgs e) { if(e.PropertyName == TextPropertyName) SetTextFromItemProperty(); } private void SetTextFromItemProperty() { if (Item != null && TextPropertyName != null) Text = Item.GetType().GetProperty(TextPropertyName)?.GetValue(Item)?.ToString(); } } } ================================================ FILE: src/main/SegCtlr.Netstandard/Event/ElementChildrenChanging.cs ================================================ using System; using System.Collections.Generic; using Plugin.Segmented.Control; namespace Plugin.Segmented.Event { [Preserve(AllMembers = true)] public class ElementChildrenChanging : EventArgs { public ElementChildrenChanging(IList oldValues, IList newValues) { OldValues = oldValues; NewValues = newValues; } public IList OldValues { get; } public IList NewValues { get; } } } ================================================ FILE: src/main/SegCtlr.Netstandard/Event/SegmentSelectEvent.cs ================================================ using System; namespace Plugin.Segmented.Event { [Preserve(AllMembers = true)] public class SegmentSelectEventArgs : EventArgs { public int NewValue { get; set; } } } ================================================ FILE: src/main/SegCtlr.Netstandard/PreserveAttribute.cs ================================================ using System; namespace Plugin.Segmented { public sealed class PreserveAttribute : Attribute { public bool AllMembers; public bool Conditional; } } ================================================ FILE: src/main/SegCtlr.Netstandard/SegCtlr.Netstandard.csproj ================================================  netstandard2.0 Plugin.Segmented Plugin.Segmented 5.5.0.0 5.5.0.0 Debug;Release;DebugNative true true true snupkg portable true ================================================ FILE: src/main/SegCtlr.Netstandard.sln ================================================  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29806.167 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SegCtlr.Netstandard", "SegCtlr.Netstandard\SegCtlr.Netstandard.csproj", "{ABA23BAB-084A-443E-B9CC-37B0A826377E}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Abstraction", "Abstraction", "{D54B9249-B233-42AD-8346-2E59628B9B34}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "CrossPlatform", "CrossPlatform", "{C5A73308-8FF9-4767-91CF-1B97B38B0403}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SegCtrl.Droid", "..\crossplatform\SegCtrl.Droid\SegCtrl.Droid.csproj", "{615565C8-84DE-4B6B-80DD-106695429AD8}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SegCtrl.iOS", "..\crossplatform\SegCtrl.iOS\SegCtrl.iOS.csproj", "{39CD5D35-D98E-49A2-868B-89E7B64D25DE}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SegCtrl.UWP", "..\crossplatform\SegCtrl.UWP\SegCtrl.UWP.csproj", "{2848D7D8-3C18-4DF0-8638-CBCCC36A325B}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Test", "Test", "{F6468D98-0EC8-412A-865C-6AC3F010C044}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.SegCtrl.Android", "..\test\Test.SegCtrl.Android\Test.SegCtrl.Android.csproj", "{D41A679F-F6FD-45B5-B63C-304C720090CC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.SegCtlr.UWP", "..\test\Test.SegCtrl.UWP\Test.SegCtlr.UWP.csproj", "{D133A400-6A9B-4414-A989-6165FF3A3BAC}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.SegCtlr.iOS", "..\test\Test.SegCtrl.iOS\Test.SegCtlr.iOS.csproj", "{2C3B781D-170C-44FA-BB73-E454A4AE73BD}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Test.SegCtrl.netstandard", "..\test\Test.SegCtrl.netstandard\Test.SegCtrl.netstandard.csproj", "{085D550D-9E27-474F-A79E-4578224F8664}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{33251B03-DF66-4CA2-B24F-BD267184F4C4}" ProjectSection(SolutionItems) = preProject ..\build\build.ps1 = ..\build\build.ps1 ..\build\Plugin.SegmentedControl.Netstandard.nuspec = ..\build\Plugin.SegmentedControl.Netstandard.nuspec ..\build\publish.ps1 = ..\build\publish.ps1 ..\build\publishLocal.ps1 = ..\build\publishLocal.ps1 EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GitHub", "GitHub", "{788B4700-4995-4AD9-A3C9-0E637AD760DC}" ProjectSection(SolutionItems) = preProject ..\..\.gitignore = ..\..\.gitignore ..\..\README.md = ..\..\README.md EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{A61994BD-A497-4FA5-B00C-EAC91FDFD0C5}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SegCtrl.macOS", "..\crossplatform\SegCtrl.macOS\SegCtrl.macOS.csproj", "{BF907E43-0F07-4502-9AF3-96B063281234}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test.SegCtrl.macOS", "..\test\Test.SegCtrl.macOS\Test.SegCtrl.macOS.csproj", "{F496EC17-11A7-43DD-ABD2-0EACB53BF553}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Ad-Hoc|Any CPU = Ad-Hoc|Any CPU Ad-Hoc|ARM = Ad-Hoc|ARM Ad-Hoc|iPhone = Ad-Hoc|iPhone Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator Ad-Hoc|x64 = Ad-Hoc|x64 Ad-Hoc|x86 = Ad-Hoc|x86 AppStore|Any CPU = AppStore|Any CPU AppStore|ARM = AppStore|ARM AppStore|iPhone = AppStore|iPhone AppStore|iPhoneSimulator = AppStore|iPhoneSimulator AppStore|x64 = AppStore|x64 AppStore|x86 = AppStore|x86 Debug|Any CPU = Debug|Any CPU Debug|ARM = Debug|ARM Debug|iPhone = Debug|iPhone Debug|iPhoneSimulator = Debug|iPhoneSimulator Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 DebugNAtive|Any CPU = DebugNAtive|Any CPU DebugNAtive|ARM = DebugNAtive|ARM DebugNAtive|iPhone = DebugNAtive|iPhone DebugNAtive|iPhoneSimulator = DebugNAtive|iPhoneSimulator DebugNAtive|x64 = DebugNAtive|x64 DebugNAtive|x86 = DebugNAtive|x86 Release|Any CPU = Release|Any CPU Release|ARM = Release|ARM Release|iPhone = Release|iPhone Release|iPhoneSimulator = Release|iPhoneSimulator Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|ARM.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|x64.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Ad-Hoc|x86.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|Any CPU.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|Any CPU.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|ARM.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|ARM.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|iPhone.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|iPhone.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|x64.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|x64.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|x86.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.AppStore|x86.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|Any CPU.Build.0 = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|ARM.ActiveCfg = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|ARM.Build.0 = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|iPhone.ActiveCfg = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|iPhone.Build.0 = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|x64.ActiveCfg = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|x64.Build.0 = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|x86.ActiveCfg = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Debug|x86.Build.0 = Debug|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|Any CPU.ActiveCfg = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|Any CPU.Build.0 = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|ARM.ActiveCfg = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|ARM.Build.0 = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|iPhone.ActiveCfg = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|iPhone.Build.0 = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|iPhoneSimulator.ActiveCfg = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|iPhoneSimulator.Build.0 = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|x64.ActiveCfg = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|x64.Build.0 = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|x86.ActiveCfg = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.DebugNAtive|x86.Build.0 = DebugNAtive|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|Any CPU.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|Any CPU.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|ARM.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|ARM.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|iPhone.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|iPhone.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|x64.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|x64.Build.0 = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|x86.ActiveCfg = Release|Any CPU {ABA23BAB-084A-443E-B9CC-37B0A826377E}.Release|x86.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|ARM.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|x64.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Ad-Hoc|x86.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|Any CPU.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|Any CPU.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|ARM.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|ARM.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|iPhone.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|iPhone.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|x64.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|x64.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|x86.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.AppStore|x86.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|Any CPU.Build.0 = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|ARM.ActiveCfg = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|ARM.Build.0 = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|iPhone.ActiveCfg = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|iPhone.Build.0 = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|x64.ActiveCfg = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|x64.Build.0 = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|x86.ActiveCfg = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Debug|x86.Build.0 = Debug|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|Any CPU.ActiveCfg = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|Any CPU.Build.0 = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|ARM.ActiveCfg = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|ARM.Build.0 = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|iPhone.ActiveCfg = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|iPhone.Build.0 = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|iPhoneSimulator.ActiveCfg = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|iPhoneSimulator.Build.0 = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|x64.ActiveCfg = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|x64.Build.0 = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|x86.ActiveCfg = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.DebugNAtive|x86.Build.0 = DebugNAtive|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|Any CPU.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|Any CPU.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|ARM.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|ARM.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|iPhone.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|iPhone.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|x64.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|x64.Build.0 = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|x86.ActiveCfg = Release|Any CPU {615565C8-84DE-4B6B-80DD-106695429AD8}.Release|x86.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|ARM.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|x64.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Ad-Hoc|x86.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|Any CPU.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|Any CPU.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|ARM.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|ARM.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|iPhone.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|iPhone.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|x64.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|x64.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|x86.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.AppStore|x86.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|Any CPU.Build.0 = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|ARM.ActiveCfg = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|ARM.Build.0 = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|iPhone.ActiveCfg = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|iPhone.Build.0 = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|x64.ActiveCfg = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|x64.Build.0 = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|x86.ActiveCfg = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Debug|x86.Build.0 = Debug|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|Any CPU.ActiveCfg = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|Any CPU.Build.0 = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|ARM.ActiveCfg = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|ARM.Build.0 = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|iPhone.ActiveCfg = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|iPhone.Build.0 = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|iPhoneSimulator.ActiveCfg = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|iPhoneSimulator.Build.0 = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|x64.ActiveCfg = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|x64.Build.0 = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|x86.ActiveCfg = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.DebugNAtive|x86.Build.0 = DebugNAtive|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|Any CPU.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|Any CPU.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|ARM.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|ARM.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|iPhone.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|iPhone.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|x64.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|x64.Build.0 = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|x86.ActiveCfg = Release|Any CPU {39CD5D35-D98E-49A2-868B-89E7B64D25DE}.Release|x86.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|ARM.ActiveCfg = Release|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|ARM.Build.0 = Release|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|x64.ActiveCfg = Release|x64 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|x64.Build.0 = Release|x64 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|x86.ActiveCfg = Release|x86 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Ad-Hoc|x86.Build.0 = Release|x86 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|Any CPU.ActiveCfg = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|Any CPU.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|ARM.ActiveCfg = Release|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|ARM.Build.0 = Release|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|iPhone.ActiveCfg = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|iPhone.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|x64.ActiveCfg = Release|x64 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|x64.Build.0 = Release|x64 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|x86.ActiveCfg = Release|x86 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.AppStore|x86.Build.0 = Release|x86 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|Any CPU.Build.0 = Debug|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|ARM.ActiveCfg = Debug|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|ARM.Build.0 = Debug|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|iPhone.ActiveCfg = Debug|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|iPhone.Build.0 = Debug|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|x64.ActiveCfg = Debug|x64 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|x64.Build.0 = Debug|x64 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|x86.ActiveCfg = Debug|x86 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Debug|x86.Build.0 = Debug|x86 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|Any CPU.ActiveCfg = DebugNAtive|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|Any CPU.Build.0 = DebugNAtive|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|ARM.ActiveCfg = DebugNAtive|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|ARM.Build.0 = DebugNAtive|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|iPhone.ActiveCfg = DebugNAtive|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|iPhone.Build.0 = DebugNAtive|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|iPhoneSimulator.ActiveCfg = DebugNAtive|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|iPhoneSimulator.Build.0 = DebugNAtive|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|x64.ActiveCfg = DebugNAtive|x64 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|x64.Build.0 = DebugNAtive|x64 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|x86.ActiveCfg = DebugNAtive|x86 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.DebugNAtive|x86.Build.0 = DebugNAtive|x86 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|Any CPU.ActiveCfg = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|Any CPU.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|ARM.ActiveCfg = Release|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|ARM.Build.0 = Release|ARM {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|iPhone.ActiveCfg = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|iPhone.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|x64.ActiveCfg = Release|x64 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|x86.ActiveCfg = Release|x86 {2848D7D8-3C18-4DF0-8638-CBCCC36A325B}.Release|x86.Build.0 = Release|x86 {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|ARM.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|x64.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|x64.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|x86.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|Any CPU.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|Any CPU.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|Any CPU.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|ARM.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|ARM.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|ARM.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|iPhone.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|iPhone.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|iPhone.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|x64.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|x64.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|x64.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|x86.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|x86.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.AppStore|x86.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|Any CPU.Build.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|Any CPU.Deploy.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|ARM.ActiveCfg = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|ARM.Build.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|ARM.Deploy.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|iPhone.ActiveCfg = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|iPhone.Build.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|iPhone.Deploy.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|x64.ActiveCfg = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|x64.Build.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|x64.Deploy.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|x86.ActiveCfg = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|x86.Build.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Debug|x86.Deploy.0 = Debug|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|Any CPU.ActiveCfg = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|Any CPU.Build.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|Any CPU.Deploy.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|ARM.ActiveCfg = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|ARM.Build.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|ARM.Deploy.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|iPhone.ActiveCfg = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|iPhone.Build.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|iPhone.Deploy.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|iPhoneSimulator.ActiveCfg = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|iPhoneSimulator.Build.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|iPhoneSimulator.Deploy.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|x64.ActiveCfg = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|x64.Build.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|x64.Deploy.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|x86.ActiveCfg = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|x86.Build.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.DebugNAtive|x86.Deploy.0 = DebugNAtive|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|Any CPU.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|Any CPU.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|Any CPU.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|ARM.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|ARM.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|ARM.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|iPhone.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|iPhone.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|iPhone.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|x64.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|x64.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|x64.Deploy.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|x86.ActiveCfg = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|x86.Build.0 = Release|Any CPU {D41A679F-F6FD-45B5-B63C-304C720090CC}.Release|x86.Deploy.0 = Release|Any CPU {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|Any CPU.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|Any CPU.Build.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|Any CPU.Deploy.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|ARM.ActiveCfg = Release|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|ARM.Build.0 = Release|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|ARM.Deploy.0 = Release|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|iPhone.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|iPhone.Build.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|iPhone.Deploy.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|x64.ActiveCfg = Release|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|x64.Build.0 = Release|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|x64.Deploy.0 = Release|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|x86.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|x86.Build.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Ad-Hoc|x86.Deploy.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|Any CPU.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|Any CPU.Build.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|Any CPU.Deploy.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|ARM.ActiveCfg = Release|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|ARM.Build.0 = Release|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|ARM.Deploy.0 = Release|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|iPhone.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|iPhone.Build.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|iPhone.Deploy.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|iPhoneSimulator.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|iPhoneSimulator.Build.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|iPhoneSimulator.Deploy.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|x64.ActiveCfg = Release|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|x64.Build.0 = Release|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|x64.Deploy.0 = Release|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|x86.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|x86.Build.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.AppStore|x86.Deploy.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|Any CPU.ActiveCfg = Debug|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|Any CPU.Build.0 = Debug|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|Any CPU.Deploy.0 = Debug|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|ARM.ActiveCfg = Debug|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|ARM.Build.0 = Debug|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|ARM.Deploy.0 = Debug|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|iPhone.ActiveCfg = Debug|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|x64.ActiveCfg = Debug|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|x64.Build.0 = Debug|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|x64.Deploy.0 = Debug|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|x86.ActiveCfg = Debug|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|x86.Build.0 = Debug|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Debug|x86.Deploy.0 = Debug|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|Any CPU.ActiveCfg = DebugNAtive|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|Any CPU.Build.0 = DebugNAtive|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|Any CPU.Deploy.0 = DebugNAtive|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|ARM.ActiveCfg = DebugNAtive|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|ARM.Deploy.0 = DebugNAtive|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|iPhone.ActiveCfg = DebugNAtive|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|iPhoneSimulator.ActiveCfg = DebugNAtive|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|x64.ActiveCfg = DebugNAtive|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|x64.Build.0 = DebugNAtive|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|x64.Deploy.0 = DebugNAtive|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|x86.ActiveCfg = DebugNAtive|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|x86.Build.0 = DebugNAtive|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.DebugNAtive|x86.Deploy.0 = DebugNAtive|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|Any CPU.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|ARM.ActiveCfg = Release|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|ARM.Build.0 = Release|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|ARM.Deploy.0 = Release|ARM {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|iPhone.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|iPhoneSimulator.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|x64.ActiveCfg = Release|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|x64.Build.0 = Release|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|x64.Deploy.0 = Release|x64 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|x86.ActiveCfg = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|x86.Build.0 = Release|x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC}.Release|x86.Deploy.0 = Release|x86 {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.AppStore|ARM.ActiveCfg = AppStore|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.AppStore|iPhone.ActiveCfg = AppStore|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.AppStore|iPhone.Build.0 = AppStore|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.AppStore|x64.ActiveCfg = AppStore|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.AppStore|x86.ActiveCfg = AppStore|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Debug|Any CPU.ActiveCfg = Debug|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Debug|ARM.ActiveCfg = Debug|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Debug|iPhone.ActiveCfg = Debug|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Debug|iPhone.Build.0 = Debug|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Debug|x64.ActiveCfg = Debug|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Debug|x86.ActiveCfg = Debug|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.DebugNAtive|Any CPU.ActiveCfg = DebugNAtive|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.DebugNAtive|ARM.ActiveCfg = DebugNAtive|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.DebugNAtive|iPhone.ActiveCfg = DebugNAtive|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.DebugNAtive|iPhoneSimulator.ActiveCfg = DebugNAtive|iPhoneSimulator {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.DebugNAtive|x64.ActiveCfg = DebugNAtive|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.DebugNAtive|x86.ActiveCfg = DebugNAtive|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Release|Any CPU.ActiveCfg = Release|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Release|ARM.ActiveCfg = Release|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Release|iPhone.ActiveCfg = Release|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Release|iPhone.Build.0 = Release|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Release|x64.ActiveCfg = Release|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Release|x64.Build.0 = Release|iPhone {2C3B781D-170C-44FA-BB73-E454A4AE73BD}.Release|x86.ActiveCfg = Release|iPhone {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|ARM.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|ARM.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|x64.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|x64.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|x86.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Ad-Hoc|x86.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|Any CPU.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|ARM.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|ARM.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|iPhone.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|iPhone.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|x64.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|x64.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|x86.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.AppStore|x86.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|Any CPU.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|ARM.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|ARM.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|iPhone.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|iPhone.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|x64.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|x64.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|x86.ActiveCfg = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Debug|x86.Build.0 = Debug|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|Any CPU.ActiveCfg = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|Any CPU.Build.0 = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|ARM.ActiveCfg = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|ARM.Build.0 = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|iPhone.ActiveCfg = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|iPhone.Build.0 = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|iPhoneSimulator.ActiveCfg = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|iPhoneSimulator.Build.0 = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|x64.ActiveCfg = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|x64.Build.0 = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|x86.ActiveCfg = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.DebugNAtive|x86.Build.0 = DebugNAtive|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|Any CPU.ActiveCfg = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|Any CPU.Build.0 = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|ARM.ActiveCfg = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|ARM.Build.0 = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|iPhone.ActiveCfg = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|iPhone.Build.0 = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|x64.ActiveCfg = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|x64.Build.0 = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|x86.ActiveCfg = Release|Any CPU {085D550D-9E27-474F-A79E-4578224F8664}.Release|x86.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|ARM.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|x64.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|x64.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Ad-Hoc|x86.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|Any CPU.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|Any CPU.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|ARM.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|ARM.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|iPhone.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|iPhone.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|x64.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|x64.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|x86.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.AppStore|x86.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|Any CPU.Build.0 = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|ARM.ActiveCfg = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|ARM.Build.0 = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|iPhone.ActiveCfg = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|iPhone.Build.0 = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|x64.ActiveCfg = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|x64.Build.0 = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|x86.ActiveCfg = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Debug|x86.Build.0 = Debug|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|Any CPU.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|Any CPU.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|ARM.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|ARM.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|iPhone.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|iPhone.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|iPhoneSimulator.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|iPhoneSimulator.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|x64.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|x64.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|x86.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.DebugNAtive|x86.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|Any CPU.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|Any CPU.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|ARM.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|ARM.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|iPhone.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|iPhone.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|iPhoneSimulator.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|x64.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|x64.Build.0 = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|x86.ActiveCfg = Release|Any CPU {BF907E43-0F07-4502-9AF3-96B063281234}.Release|x86.Build.0 = Release|Any CPU {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|Any CPU.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|Any CPU.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|ARM.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|ARM.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|iPhone.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|iPhone.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|x64.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|x64.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|x86.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Ad-Hoc|x86.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|Any CPU.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|Any CPU.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|ARM.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|ARM.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|iPhone.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|iPhone.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|x64.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|x64.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|x86.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.AppStore|x86.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|ARM.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|ARM.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|iPhone.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|iPhone.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|x64.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|x64.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|x86.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Debug|x86.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|Any CPU.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|Any CPU.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|ARM.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|ARM.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|iPhone.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|iPhone.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|iPhoneSimulator.Build.0 = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|x64.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|x64.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|x86.ActiveCfg = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.DebugNAtive|x86.Build.0 = Debug|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|Any CPU.ActiveCfg = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|Any CPU.Build.0 = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|ARM.ActiveCfg = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|ARM.Build.0 = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|iPhone.ActiveCfg = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|iPhone.Build.0 = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|x64.ActiveCfg = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|x64.Build.0 = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|x86.ActiveCfg = Release|iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553}.Release|x86.Build.0 = Release|iPhoneSimulator EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {ABA23BAB-084A-443E-B9CC-37B0A826377E} = {D54B9249-B233-42AD-8346-2E59628B9B34} {D54B9249-B233-42AD-8346-2E59628B9B34} = {A61994BD-A497-4FA5-B00C-EAC91FDFD0C5} {C5A73308-8FF9-4767-91CF-1B97B38B0403} = {A61994BD-A497-4FA5-B00C-EAC91FDFD0C5} {615565C8-84DE-4B6B-80DD-106695429AD8} = {C5A73308-8FF9-4767-91CF-1B97B38B0403} {39CD5D35-D98E-49A2-868B-89E7B64D25DE} = {C5A73308-8FF9-4767-91CF-1B97B38B0403} {2848D7D8-3C18-4DF0-8638-CBCCC36A325B} = {C5A73308-8FF9-4767-91CF-1B97B38B0403} {D41A679F-F6FD-45B5-B63C-304C720090CC} = {F6468D98-0EC8-412A-865C-6AC3F010C044} {D133A400-6A9B-4414-A989-6165FF3A3BAC} = {F6468D98-0EC8-412A-865C-6AC3F010C044} {2C3B781D-170C-44FA-BB73-E454A4AE73BD} = {F6468D98-0EC8-412A-865C-6AC3F010C044} {085D550D-9E27-474F-A79E-4578224F8664} = {F6468D98-0EC8-412A-865C-6AC3F010C044} {BF907E43-0F07-4502-9AF3-96B063281234} = {C5A73308-8FF9-4767-91CF-1B97B38B0403} {F496EC17-11A7-43DD-ABD2-0EACB53BF553} = {F6468D98-0EC8-412A-865C-6AC3F010C044} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {1C34EA6A-1B6B-4B5A-B3D8-165B651A6744} EndGlobalSection EndGlobal ================================================ FILE: src/test/Test.SegCtrl.Android/Assets/AboutAssets.txt ================================================ Any raw assets you want to be deployed with your application can be placed in this directory (and child directories) and given a Build Action of "AndroidAsset". These files will be deployed with you package and will be accessible using Android's AssetManager, like this: public class ReadAsset : Activity { protected override void OnCreate (Bundle bundle) { base.OnCreate (bundle); InputStream input = Assets.Open ("my_asset.txt"); } } Additionally, some Android functions will automatically load asset files: Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf"); ================================================ FILE: src/test/Test.SegCtrl.Android/MainActivity.cs ================================================ using System; using Android.App; using Android.Content.PM; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; namespace Test.SegmentedControl.Droid { [Activity(Label = "Test.SegmentedControl", Icon = "@drawable/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity { protected override void OnCreate(Bundle bundle) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(bundle); global::Xamarin.Forms.Forms.Init(this, bundle); LoadApplication(new App()); } } } ================================================ FILE: src/test/Test.SegCtrl.Android/Properties/AndroidManifest.xml ================================================  ================================================ FILE: src/test/Test.SegCtrl.Android/Properties/AssemblyInfo.cs ================================================ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Android.App; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Test.SegmentedControl.Android")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Test.SegmentedControl.Android")] [assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] // Add some common permissions, these can be removed if not needed [assembly: UsesPermission(Android.Manifest.Permission.Internet)] [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)] ================================================ FILE: src/test/Test.SegCtrl.Android/Resources/AboutResources.txt ================================================ Images, layout descriptions, binary blobs and string dictionaries can be included in your application as resource files. Various Android APIs are designed to operate on the resource IDs instead of dealing with images, strings or binary blobs directly. For example, a sample Android app that contains a user interface layout (main.xml), an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png) would keep its resources in the "Resources" directory of the application: Resources/ drawable-hdpi/ icon.png drawable-ldpi/ icon.png drawable-mdpi/ icon.png layout/ main.xml values/ strings.xml In order to get the build system to recognize Android resources, set the build action to "AndroidResource". The native Android APIs do not operate directly with filenames, but instead operate on resource IDs. When you compile an Android application that uses resources, the build system will package the resources for distribution and generate a class called "Resource" that contains the tokens for each one of the resources included. For example, for the above Resources layout, this is what the Resource class would expose: public class Resource { public class drawable { public const int icon = 0x123; } public class layout { public const int main = 0x456; } public class strings { public const int first_string = 0xabc; public const int second_string = 0xbcd; } } You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main to reference the layout/main.xml file, or Resource.strings.first_string to reference the first string in the dictionary file values/strings.xml. ================================================ FILE: src/test/Test.SegCtrl.Android/Resources/font/comicsaaaans.xml ================================================  ================================================ FILE: src/test/Test.SegCtrl.Android/Resources/layout/Tabbar.axml ================================================ ================================================ FILE: src/test/Test.SegCtrl.Android/Resources/layout/Toolbar.axml ================================================ ================================================ FILE: src/test/Test.SegCtrl.Android/Resources/values/styles.xml ================================================ ================================================ FILE: src/test/Test.SegCtrl.Android/Test.SegCtrl.Android.csproj ================================================  Debug AnyCPU 8.0.30703 2.0 {D41A679F-F6FD-45B5-B63C-304C720090CC} {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Library Properties Test.SegmentedControl.Droid Test.SegmentedControl.Android 512 true Resources\Resource.Designer.cs Off Properties\AndroidManifest.xml v11.0 true full false bin\Debug\ DEBUG;TRACE prompt 4 True None armeabi-v7a;x86;x86_64;arm64-v8a false pdbonly true bin\Release\ TRACE prompt 4 False SdkOnly bin\DebugNAtive\ TRACE true pdbonly AnyCPU Off prompt MinimumRecommendedRules.ruleset {615565c8-84de-4b6b-80dd-106695429ad8} SegCtrl.Droid {aba23bab-084a-443e-b9cc-37b0a826377e} SegCtlr.Netstandard {085d550d-9e27-474f-a79e-4578224f8664} Test.SegCtrl.netstandard 2.1.0.11 1.3.0.8 2.3.1.3 2.3.1.3 2.3.1.4 1.1.0.10 1.2.0.3 1.6.0.3 1.0.0.11 1.0.0.10 1.4.0.4 1.3.6.3 1.4.3 1.4.1.3 1.0.0.10 1.3.1.3 1.0.0.11 1.2.5.2 1.0.0.10 1.2.1.3 1.1.0.10 5.0.0.2291 ================================================ FILE: src/test/Test.SegCtrl.Android/Test.SegCtrl.Android.csproj.bak ================================================  Debug AnyCPU 8.0.30703 2.0 {D41A679F-F6FD-45B5-B63C-304C720090CC} {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Library Properties Test.SegmentedControl.Droid Test.SegmentedControl.Android 512 true Resources\Resource.Designer.cs Off Properties\AndroidManifest.xml true v8.0 true full false bin\Debug\ DEBUG;TRACE prompt 4 True None armeabi,armeabi-v7a,x86 pdbonly true bin\Release\ TRACE prompt 4 False SdkOnly bin\DebugNAtive\ TRACE true pdbonly AnyCPU Off prompt MinimumRecommendedRules.ruleset ..\..\main\packages\Xamarin.Forms.2.5.0.121934\lib\MonoAndroid10\FormsViewGroup.dll ..\..\main\packages\Xamarin.Android.Arch.Core.Common.1.0.0\lib\MonoAndroid80\Xamarin.Android.Arch.Core.Common.dll ..\..\main\packages\Xamarin.Android.Arch.Lifecycle.Common.1.0.1\lib\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Common.dll ..\..\main\packages\Xamarin.Android.Arch.Lifecycle.Runtime.1.0.0\lib\MonoAndroid80\Xamarin.Android.Arch.Lifecycle.Runtime.dll ..\..\main\packages\Xamarin.Android.Support.Animated.Vector.Drawable.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Animated.Vector.Drawable.dll ..\..\main\packages\Xamarin.Android.Support.Annotations.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Annotations.dll ..\..\main\packages\Xamarin.Android.Support.Compat.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Compat.dll ..\..\main\packages\Xamarin.Android.Support.Core.UI.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Core.UI.dll ..\..\main\packages\Xamarin.Android.Support.Core.Utils.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Core.Utils.dll ..\..\main\packages\Xamarin.Android.Support.Design.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Design.dll ..\..\main\packages\Xamarin.Android.Support.Fragment.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Fragment.dll ..\..\main\packages\Xamarin.Android.Support.Media.Compat.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Media.Compat.dll ..\..\main\packages\Xamarin.Android.Support.Transition.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Transition.dll ..\..\main\packages\Xamarin.Android.Support.v4.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.v4.dll ..\..\main\packages\Xamarin.Android.Support.v7.AppCompat.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.v7.AppCompat.dll ..\..\main\packages\Xamarin.Android.Support.v7.CardView.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.v7.CardView.dll ..\..\main\packages\Xamarin.Android.Support.v7.MediaRouter.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.v7.MediaRouter.dll ..\..\main\packages\Xamarin.Android.Support.v7.Palette.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.v7.Palette.dll ..\..\main\packages\Xamarin.Android.Support.v7.RecyclerView.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.v7.RecyclerView.dll ..\..\main\packages\Xamarin.Android.Support.Vector.Drawable.26.1.0.1\lib\MonoAndroid80\Xamarin.Android.Support.Vector.Drawable.dll ..\..\main\packages\Xamarin.Forms.2.5.0.121934\lib\MonoAndroid10\Xamarin.Forms.Core.dll ..\..\main\packages\Xamarin.Forms.2.5.0.121934\lib\MonoAndroid10\Xamarin.Forms.Platform.dll ..\..\main\packages\Xamarin.Forms.2.5.0.121934\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll ..\..\main\packages\Xamarin.Forms.2.5.0.121934\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll {615565c8-84de-4b6b-80dd-106695429ad8} SegCtrl.Droid {aba23bab-084a-443e-b9cc-37b0a826377e} SegCtlr.Netstandard {085d550d-9e27-474f-a79e-4578224f8664} Test.SegCtrl.netstandard This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. ================================================ FILE: src/test/Test.SegCtrl.UWP/App.xaml ================================================  ================================================ FILE: src/test/Test.SegCtrl.UWP/App.xaml.cs ================================================ using System; using System.Collections.Generic; using System.Reflection; using Windows.ApplicationModel; using Windows.ApplicationModel.Activation; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; using Plugin.Segmented.Control.UWP; namespace Test.SegmentedControl.UWP { /// /// Provides application-specific behavior to supplement the default Application class. /// sealed partial class App : Application { /// /// Initializes the singleton application object. This is the first line of authored code /// executed, and as such is the logical equivalent of main() or WinMain(). /// public App() { this.InitializeComponent(); this.Suspending += OnSuspending; } /// /// Invoked when the application is launched normally by the end user. Other entry points /// will be used such as when the application is launched to open a specific file. /// /// Details about the launch request and process. protected override void OnLaunched(LaunchActivatedEventArgs e) { #if DEBUG if (System.Diagnostics.Debugger.IsAttached) { this.DebugSettings.EnableFrameRateCounter = true; } #endif Frame rootFrame = Window.Current.Content as Frame; // Do not repeat app initialization when the Window already has content, // just ensure that the window is active if (rootFrame == null) { // Create a Frame to act as the navigation context and navigate to the first page rootFrame = new Frame(); rootFrame.NavigationFailed += OnNavigationFailed; var assembliesToInclude = new List {typeof(SegmentedControlRenderer).GetTypeInfo().Assembly}; Xamarin.Forms.Forms.Init(e, assembliesToInclude); if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: Load state from previously suspended application } // Place the frame in the current Window Window.Current.Content = rootFrame; } if (rootFrame.Content == null) { // When the navigation stack isn't restored navigate to the first page, // configuring the new page by passing required information as a navigation // parameter rootFrame.Navigate(typeof(MainPage), e.Arguments); } // Ensure the current window is active Window.Current.Activate(); } /// /// Invoked when Navigation to a certain page fails /// /// The Frame which failed navigation /// Details about the navigation failure void OnNavigationFailed(object sender, NavigationFailedEventArgs e) { throw new Exception("Failed to load Page " + e.SourcePageType.FullName); } /// /// Invoked when application execution is being suspended. Application state is saved /// without knowing whether the application will be terminated or resumed with the contents /// of memory still intact. /// /// The source of the suspend request. /// Details about the suspend request. private void OnSuspending(object sender, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); //TODO: Save application state and stop any background activity deferral.Complete(); } } } ================================================ FILE: src/test/Test.SegCtrl.UWP/MainPage.xaml ================================================  ================================================ FILE: src/test/Test.SegCtrl.UWP/MainPage.xaml.cs ================================================ using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; namespace Test.SegmentedControl.UWP { public sealed partial class MainPage { public MainPage() { this.InitializeComponent(); LoadApplication(new Test.SegmentedControl.App()); } } } ================================================ FILE: src/test/Test.SegCtrl.UWP/Package.appxmanifest ================================================  Test.SegmentedControl.UWP jaspe Assets\StoreLogo.png ================================================ FILE: src/test/Test.SegCtrl.UWP/Properties/AssemblyInfo.cs ================================================ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Test.SegmentedControl.UWP")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Test.SegmentedControl.UWP")] [assembly: AssemblyCopyright("Copyright © 2015")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: ComVisible(false)] ================================================ FILE: src/test/Test.SegCtrl.UWP/Properties/Default.rd.xml ================================================ ================================================ FILE: src/test/Test.SegCtrl.UWP/Test.SegCtlr.UWP.csproj ================================================  Debug x86 {D133A400-6A9B-4414-A989-6165FF3A3BAC} AppContainerExe Properties Test.SegmentedControl.UWP Test.SegmentedControl.UWP en-US UAP 10.0.19041.0 10.0.16299.0 14 true 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Test.SegmentedControl.UWP_TemporaryKey.pfx win10-arm;win10-arm-aot;win10-x86;win10-x86-aot;win10-x64;win10-x64-aot true bin\ARM\Debug\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP ;2008 full ARM false prompt true bin\ARM\Release\ TRACE;NETFX_CORE;WINDOWS_UWP true ;2008 pdbonly ARM false prompt true true true bin\x64\Debug\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP ;2008 full x64 false prompt true bin\x64\Release\ TRACE;NETFX_CORE;WINDOWS_UWP true ;2008 pdbonly x64 false prompt true true true bin\x86\Debug\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP ;2008 full x86 false prompt true bin\x86\Release\ TRACE;NETFX_CORE;WINDOWS_UWP true ;2008 pdbonly x86 false prompt true true App.xaml MainPage.xaml Designer MSBuild:Compile Designer MSBuild:Compile Designer {2848d7d8-3c18-4df0-8638-cbccc36a325b} SegCtrl.UWP {aba23bab-084a-443e-b9cc-37b0a826377e} SegCtlr.Netstandard {085d550d-9e27-474f-a79e-4578224f8664} Test.SegCtrl.netstandard 6.2.13 5.0.0.2291 14.0 bin\ARM\DebugNAtive\ TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS true ;2008 true pdbonly ARM false prompt MinimumRecommendedRules.ruleset true bin\x64\DebugNAtive\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS;CODE_ANALYSIS false ;2008 true pdbonly x64 false prompt MinimumRecommendedRules.ruleset true true true bin\x86\DebugNAtive\ DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP;CODE_ANALYSIS;CODE_ANALYSIS false ;2008 true pdbonly x86 false prompt MinimumRecommendedRules.ruleset true true true ================================================ FILE: src/test/Test.SegCtrl.iOS/AppDelegate.cs ================================================ using Foundation; using Plugin.Segmented.Control.iOS; using Test.SegmentedControl; using UIKit; namespace Test.Segmented.Control.iOS { // The UIApplicationDelegate for the application. This class is responsible for launching the // User Interface of the application, as well as listening (and optionally responding) to // application events from iOS. [Register("AppDelegate")] public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate { // // This method is invoked when the application has loaded and is ready to run. In this // method you should instantiate the window, load the UI into it and then make the window // visible. // // You have 17 seconds to return from this method, or iOS will terminate your application. // public override bool FinishedLaunching(UIApplication app, NSDictionary options) { global::Xamarin.Forms.Forms.Init(); SegmentedControlRenderer.Initialize(); LoadApplication(new App()); return base.FinishedLaunching(app, options); } } } ================================================ FILE: src/test/Test.SegCtrl.iOS/Entitlements.plist ================================================  ================================================ FILE: src/test/Test.SegCtrl.iOS/Info.plist ================================================  UIDeviceFamily 1 2 UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight MinimumOSVersion 8.0 CFBundleDisplayName Test.SegmentedControl CFBundleIdentifier com.yourcompany.Test.SegmentedControl CFBundleVersion 1.0 CFBundleIconFiles Icon-60@2x Icon-60@3x Icon-76 Icon-76@2x Default Default@2x Default-568h@2x Default-Portrait Default-Portrait@2x Icon-Small-40 Icon-Small-40@2x Icon-Small-40@3x Icon-Small Icon-Small@2x Icon-Small@3x UILaunchStoryboardName LaunchScreen ================================================ FILE: src/test/Test.SegCtrl.iOS/Main.cs ================================================ using UIKit; namespace Test.Segmented.Control.iOS { public class Application { // This is the main entry point of the application. static void Main(string[] args) { // if you want to use a different Application Delegate class from "AppDelegate" // you can specify it here. UIApplication.Main(args, null, typeof(AppDelegate)); } } } ================================================ FILE: src/test/Test.SegCtrl.iOS/Properties/AssemblyInfo.cs ================================================ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Test.SegmentedControl.iOS")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Test.SegmentedControl.iOS")] [assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] ================================================ FILE: src/test/Test.SegCtrl.iOS/Resources/LaunchScreen.storyboard ================================================ ================================================ FILE: src/test/Test.SegCtrl.iOS/Test.SegCtlr.iOS.csproj ================================================  Debug iPhoneSimulator 8.0.30703 2.0 {2C3B781D-170C-44FA-BB73-E454A4AE73BD} {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Exe Test.Segmented.Control.iOS Resources Test.Segmented.Control.iOS true full false bin\iPhoneSimulator\Debug DEBUG prompt 4 false i386, x86_64 None true none true bin\iPhoneSimulator\Release prompt 4 None i386, x86_64 false true full false bin\iPhone\Debug DEBUG prompt 4 false ARMv7, ARM64 iPhone Developer true Entitlements.plist none true bin\iPhone\Release prompt 4 ARMv7, ARM64 false iPhone Developer Entitlements.plist none True bin\iPhone\Ad-Hoc prompt 4 False ARMv7, ARM64 True Automatic:AdHoc iPhone Distribution Entitlements.plist none True bin\iPhone\AppStore prompt 4 False ARMv7, ARM64 Automatic:AppStore iPhone Distribution Entitlements.plist bin\iPhoneSimulator\DebugNAtive\ __UNIFIED__;__MOBILE__;__IOS__; true AnyCPU false prompt MinimumRecommendedRules.ruleset bin\iPhone\DebugNAtive\ __UNIFIED__;__MOBILE__;__IOS__; true AnyCPU false prompt MinimumRecommendedRules.ruleset {39cd5d35-d98e-49a2-868b-89e7b64d25de} SegCtrl.iOS false false {aba23bab-084a-443e-b9cc-37b0a826377e} SegCtlr.Netstandard {085d550d-9e27-474f-a79e-4578224f8664} Test.SegCtrl.netstandard 5.0.0.2291 ================================================ FILE: src/test/Test.SegCtrl.macOS/AppDelegate.cs ================================================ using AppKit; using Foundation; using SegCtrl.macOS; using Test.SegmentedControl; namespace Test.SegCtrl.macOS { [Register("AppDelegate")] public class AppDelegate : global::Xamarin.Forms.Platform.MacOS.FormsApplicationDelegate { NSWindow _window; public AppDelegate() { var style = NSWindowStyle.Closable | NSWindowStyle.Resizable | NSWindowStyle.Titled; var rect = new CoreGraphics.CGRect(200, 200, 800, 600); _window = new NSWindow(rect, style, NSBackingStore.Buffered, false); _window.Title = "SegmentedControl Test on macOS"; } public override NSWindow MainWindow => _window; public override void DidFinishLaunching(NSNotification notification) { // Insert code here to initialize your application global::Xamarin.Forms.Forms.Init(); SegmentedControlRenderer.Initialize(); LoadApplication(new App()); base.DidFinishLaunching(notification); } public override void WillTerminate(NSNotification notification) { // Insert code here to tear down your application } } } ================================================ FILE: src/test/Test.SegCtrl.macOS/Assets.xcassets/AppIcon.appiconset/Contents.json ================================================ { "images": [ { "filename": "AppIcon-16.png", "size": "16x16", "scale": "1x", "idiom": "mac" }, { "filename": "AppIcon-16@2x.png", "size": "16x16", "scale": "2x", "idiom": "mac" }, { "filename": "AppIcon-32.png", "size": "32x32", "scale": "1x", "idiom": "mac" }, { "filename": "AppIcon-32@2x.png", "size": "32x32", "scale": "2x", "idiom": "mac" }, { "filename": "AppIcon-128.png", "size": "128x128", "scale": "1x", "idiom": "mac" }, { "filename": "AppIcon-128@2x.png", "size": "128x128", "scale": "2x", "idiom": "mac" }, { "filename": "AppIcon-256.png", "size": "256x256", "scale": "1x", "idiom": "mac" }, { "filename": "AppIcon-256@2x.png", "size": "256x256", "scale": "2x", "idiom": "mac" }, { "filename": "AppIcon-512.png", "size": "512x512", "scale": "1x", "idiom": "mac" }, { "filename": "AppIcon-512@2x.png", "size": "512x512", "scale": "2x", "idiom": "mac" } ], "info": { "version": 1, "author": "xcode" } } ================================================ FILE: src/test/Test.SegCtrl.macOS/Assets.xcassets/Contents.json ================================================ { "info" : { "version" : 1, "author" : "xcode" } } ================================================ FILE: src/test/Test.SegCtrl.macOS/Entitlements.plist ================================================  ================================================ FILE: src/test/Test.SegCtrl.macOS/Info.plist ================================================ CFBundleName Test.SegCtrl.macOS CFBundleIdentifier com.yourcompany.Test.SegmentedControl.Test-SegCtrl-macOS CFBundleShortVersionString 1.0 CFBundleVersion 1 LSMinimumSystemVersion 10.13 CFBundleDevelopmentRegion en CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType APPL CFBundleSignature ???? NSHumanReadableCopyright Copyright 2018 NSPrincipalClass NSApplication XSAppIconAssets Assets.xcassets/AppIcon.appiconset ================================================ FILE: src/test/Test.SegCtrl.macOS/Main.cs ================================================ using AppKit; namespace Test.SegCtrl.macOS { internal static class MainClass { private static void Main(string[] args) { NSApplication.Init(); NSApplication.SharedApplication.Delegate = new AppDelegate(); NSApplication.Main(args); } } } ================================================ FILE: src/test/Test.SegCtrl.macOS/Test.SegCtrl.macOS.csproj ================================================  Debug iPhoneSimulator {F496EC17-11A7-43DD-ABD2-0EACB53BF553} {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Exe Test.SegCtrl.macOS Test.SegCtrl.macOS v2.0 Xamarin.Mac Resources true full false bin\Debug DEBUG; prompt 4 false Mac Developer false false false true true pdbonly true bin\Release prompt 4 false true false true true true SdkOnly {BF907E43-0F07-4502-9AF3-96B063281234} SegCtrl.macOS {085D550D-9E27-474F-A79E-4578224F8664} Test.SegCtrl.netstandard 5.0.0.2291 ================================================ FILE: src/test/Test.SegCtrl.netstandard/App.xaml ================================================  ================================================ FILE: src/test/Test.SegCtrl.netstandard/App.xaml.cs ================================================ using System; using System.Collections.Generic; using System.Linq; using System.Text; using Xamarin.Forms; namespace Test.SegmentedControl { public partial class App : Application { public App() { InitializeComponent(); MainPage = new Test.SegmentedControl.MainPage(); } protected override void OnStart() { // Handle when your app starts } protected override void OnSleep() { // Handle when your app sleeps } protected override void OnResume() { // Handle when your app resumes } } } ================================================ FILE: src/test/Test.SegCtrl.netstandard/MainPage.xaml ================================================