├── .github
└── ISSUE_TEMPLATE
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── README.md
├── csoextension
├── StringUtility.cs
└── csoextension.csproj
├── img
├── cso.png
├── flow.gif
├── issue.png
├── solution.png
├── string.gif
├── string1.png
├── string2.png
└── string3.png
└── sample
└── Xaminals
├── README.md
├── Xaminals.Android
├── Assets
│ └── AboutAssets.txt
├── MainActivity.cs
├── Properties
│ ├── AndroidManifest.xml
│ └── AssemblyInfo.cs
├── Resources
│ ├── AboutResources.txt
│ ├── drawable
│ │ ├── back.png
│ │ ├── bear.png
│ │ ├── cat.png
│ │ ├── dog.png
│ │ ├── elephant.png
│ │ ├── help.png
│ │ ├── info.png
│ │ ├── monkey.png
│ │ ├── paw.png
│ │ ├── photo.jpg
│ │ ├── random.png
│ │ ├── xamarin_logo.png
│ │ └── xamarinstore.jpg
│ ├── mipmap-anydpi-v26
│ │ ├── icon.xml
│ │ └── icon_round.xml
│ ├── mipmap-hdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ ├── mipmap-mdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ ├── mipmap-xhdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ ├── mipmap-xxhdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ ├── mipmap-xxxhdpi
│ │ ├── icon.png
│ │ └── launcher_foreground.png
│ └── values
│ │ ├── colors.xml
│ │ └── styles.xml
└── Xaminals.Android.csproj
├── Xaminals.UWP
├── App.xaml
├── App.xaml.cs
├── Assets
│ ├── 3bar.png
│ ├── 3bar@2x.png
│ ├── LockScreenLogo.scale-200.png
│ ├── SplashScreen.scale-200.png
│ ├── Square150x150Logo.scale-200.png
│ ├── Square44x44Logo.scale-200.png
│ ├── Square44x44Logo.targetsize-24_altform-unplated.png
│ ├── StoreLogo.png
│ ├── Wide310x150Logo.scale-200.png
│ ├── back.png
│ ├── back@2x.png
│ ├── bear.png
│ ├── bear@2x.png
│ ├── cat.png
│ ├── cat@2x.png
│ ├── dog.png
│ ├── dog@2x.png
│ ├── elephant.png
│ ├── elephant@2x.png
│ ├── help.png
│ ├── help@2x.png
│ ├── info.png
│ ├── info@2x.png
│ ├── monkey.png
│ ├── monkey@2x.png
│ ├── paw.png
│ ├── paw@2x.png
│ ├── photo.jpg
│ ├── random.png
│ ├── random@2x.png
│ ├── xamarin_logo.png
│ ├── xamarin_logo@2x.png
│ ├── xamarin_logo@3x.png
│ └── xamarinstore.jpg
├── MainPage.xaml
├── MainPage.xaml.cs
├── Package.appxmanifest
├── Properties
│ ├── AssemblyInfo.cs
│ └── Default.rd.xml
└── Xaminals.UWP.csproj
├── Xaminals.iOS
├── AppDelegate.cs
├── Assets.xcassets
│ └── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon1024.png
│ │ ├── Icon120.png
│ │ ├── Icon152.png
│ │ ├── Icon167.png
│ │ ├── Icon180.png
│ │ ├── Icon20.png
│ │ ├── Icon29.png
│ │ ├── Icon40.png
│ │ ├── Icon58.png
│ │ ├── Icon60.png
│ │ ├── Icon76.png
│ │ ├── Icon80.png
│ │ └── Icon87.png
├── Entitlements.plist
├── Info.plist
├── Main.cs
├── Properties
│ └── AssemblyInfo.cs
├── Resources
│ ├── 3bar.png
│ ├── 3bar@2x.png
│ ├── Default-568h@2x.png
│ ├── Default-Portrait.png
│ ├── Default-Portrait@2x.png
│ ├── Default.png
│ ├── Default@2x.png
│ ├── LaunchScreen.storyboard
│ ├── back.png
│ ├── back@2x.png
│ ├── bear.png
│ ├── bear@2x.png
│ ├── cat.png
│ ├── cat@2x.png
│ ├── dog.png
│ ├── dog@2x.png
│ ├── elephant.png
│ ├── elephant@2x.png
│ ├── help.png
│ ├── help@2x.png
│ ├── info.png
│ ├── info@2x.png
│ ├── monkey.png
│ ├── monkey@2x.png
│ ├── paw.png
│ ├── paw@2x.png
│ ├── photo.jpg
│ ├── random.png
│ ├── random@2x.png
│ ├── xamarin_logo.png
│ ├── xamarin_logo@2x.png
│ ├── xamarin_logo@3x.png
│ └── xamarinstore.jpg
└── Xaminals.iOS.csproj
├── Xaminals.sln
├── Xaminals
├── App.xaml
├── App.xaml.cs
├── AppShell.xaml
├── AppShell.xaml.cs
├── Controls
│ ├── AnimalSearchHandler.cs
│ ├── FlyoutFooter.xaml
│ ├── FlyoutFooter.xaml.cs
│ ├── FlyoutHeader.xaml
│ ├── FlyoutHeader.xaml.cs
│ └── MonkeySearchHandler.cs
├── Data
│ ├── BearData.cs
│ ├── CatData.cs
│ ├── DogData.cs
│ ├── ElephantData.cs
│ └── MonkeyData.cs
├── Models
│ └── Animal.cs
├── ViewModels
│ ├── BearsViewModel.cs
│ └── MonkeyDetailViewModel.cs
├── Views
│ ├── AboutPage.xaml
│ ├── AboutPage.xaml.cs
│ ├── BearDetailPage.xaml
│ ├── BearDetailPage.xaml.cs
│ ├── BearsPage.xaml
│ ├── BearsPage.xaml.cs
│ ├── CatDetailPage.xaml
│ ├── CatDetailPage.xaml.cs
│ ├── CatsPage.xaml
│ ├── CatsPage.xaml.cs
│ ├── DogDetailPage.xaml
│ ├── DogDetailPage.xaml.cs
│ ├── DogsPage.xaml
│ ├── DogsPage.xaml.cs
│ ├── ElephantDetailPage.xaml
│ ├── ElephantDetailPage.xaml.cs
│ ├── ElephantsPage.xaml
│ ├── ElephantsPage.xaml.cs
│ ├── MonkeyDetailPage.xaml
│ ├── MonkeyDetailPage.xaml.cs
│ ├── MonkeysPage.xaml
│ └── MonkeysPage.xaml.cs
└── Xaminals.csproj
├── ascii.cfg
└── cso.cfg
/.github/ISSUE_TEMPLATE/bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ---
11 | name: Bug report
12 | about: Create a report to help us improve
13 | title: ''
14 | labels: 'bug'
15 |
16 |
17 | ---
18 |
19 | **Version Used**:
20 |
21 | **Steps to Reproduce**:
22 |
23 | 1.
24 | 2.
25 | 3.
26 |
27 | **Expected Behavior**:
28 |
29 | **Actual Behavior**:
30 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 | title: ''
5 | labels: ''
6 | assignees: ''
7 |
8 | ---
9 |
10 | ---
11 | name: Feature request
12 | about: Suggest an idea for this project
13 | title: ''
14 | labels: enhancement
15 |
16 | ---
17 |
18 | **Is your feature request related to a problem? Please describe.**
19 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
20 |
21 | **Describe the solution you'd like**
22 | A clear and concise description of what you want to happen.
23 |
24 | **Describe alternatives you've considered**
25 | A clear and concise description of any alternative solutions or features you've considered.
26 |
27 | **Additional context**
28 | Add any other context or screenshots about the feature request here.
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /**/*.orig
2 | **/bin/**
3 | **/obj**
4 | **/AppPackages/**
5 | **/.vs/**
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CSharp Obfuscator
2 | CSharp Obfuscator protects your .NET application code through obfuscation transforms, while maintaining debugging abilities for quality assurance testing. This is made possible by the [Roslyn](https://github.com/dotnet/roslyn) open source project.
3 |
4 | ## Features
5 | ### Renaming
6 | Rename obfuscation applies trivial names, as short as a single character, to methods, variables, classes, and fields that allow code readability.
7 | 
8 |
9 | ### Scrambling Strings
10 | CSharp Obfuscator extracts all strings and puts them in a seperate source file. All strings are serialized and encoded, which blocks the hacker from locating the critical method by searching for keyword strings. For further protection, you can encrypt the strings using your unique key.
11 |
12 | #### Before
13 | 
14 |
15 | #### After
16 | 
17 |
18 | #### string file
19 | 
20 |
21 | #### Encrypt strings with an extension DLL
22 |
23 | - Download [the extension project](https://github.com/nwtsolution/CSharpObfuscator/tree/main/csoextension)
24 | - Implement the encryption in the EncodeStringArray method
25 | - Return the full name of the decryption method that exists in your project/solution
26 | - Build the project and set the file path in the configuration file
27 |
28 | ## Integrate with the existing development cycle
29 | CSharp Obfuscator obfuscates your source code, so you can run full quality assurance tests even after your source code has been obfuscated, ensuring that your code is both tested and protected. It will also update Xamarin XAML files with the obfuscated code.
30 |
31 | 
32 |
33 | It can be seamlessly integrated with the exising development cycle when each c# project only targets one framework. If a c# project targets multiple framework, you need obfuscate the project for each framework seperately.
34 |
35 |
36 | ## Versions
37 |
38 | Both free and premium versions are available. Please check [NorWest Solution](https://www.nwtsolution.com/cso.html) for details.
39 |
40 | ## Command Line
41 |
42 | Usage: cso.exe [MSBuild options] [Options]
43 |
44 | MSBuild options: the same options when you use MSBuild.exe to build your solution.
45 |
46 | Options:
47 | -activate:account={account};sn={sn} Activate your license
48 | -deactivate Deactivate your license
49 | -config:{file} A file containing the obfuscation configuration and rules
50 |
51 | ### Obfuscation Configuration File
52 | - A text file that contains the obfuscation configuration and rules.
53 | - Each configuration rule should be on a separate line.
54 | - Any lines starting with a hash symbol (#) will be ignored.
55 |
56 | #### Configuration
57 |
58 | Name | Value | Note
59 | -----|-------|-----
60 | MSBuildPath|path of MSBuild.exe|Specify the path if you have more than one MSBuild.exe installed
61 | Obfuscate|all|By default, all public declarations will not be obfuscated. Use this option to obfuscate all declarations.
62 | UseASCII|true|By default, declarations will be obfuscated with symbol characters. Use this option to obfuscate all declaration with ASCII characters.
63 | Reserve|comma separated word list| Reserved keywords
64 | ASCII|comma separated word list| Use ASCII characters for the matched declaration
65 | Suffix| any letter that is allowed to be used as a declaration name| The suffix of an obfuscated declaration.
66 | Prefix| any letter that is allowed to be used as a declaration name| The prefix of an obfuscated declaration.
67 | Reuse|true|Save the obfuscation result into a file (cso.db). Reuse the file for your next obfuscation.
68 | Extension| path of the extension assembly|Use the extension assembly to encrypt strings.
69 |
70 | #### Rules
71 |
72 | Use rules to skip the obfuscation of matched declarations. Use the following format to define a rule:
73 |
74 | keep {type} {pattern}
75 |
76 | A pattern should be the fullname of a declaration and can use an asterisk (*) as the wildcard, such as
77 |
78 | keep namespace *.Tests
79 |
80 | ##### Available rules
81 | Name | Note
82 | -----|-------
83 | project| skip processing matched projects
84 | file:string| does not extract strings from matched files
85 | namespace| keep declarations within the matched namespace
86 | namespace:name| keep the namespace name only
87 | type| keep declarations within the matched type, it could be a class, enum or interface
88 | type:name| keep the type name only
89 | method| keep declaration within the matched method
90 | method:name| keep the method name only
91 | method:parameter| keep method parameters
92 | property| keep property
93 | variable| keep field variable
94 | enum:value| keep values of an enum
95 | any| comma separated word, does not support wildcard
96 |
97 |
98 |
--------------------------------------------------------------------------------
/csoextension/StringUtility.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 | using System.Runtime.Serialization.Formatters.Binary;
4 |
5 | namespace CSharpObfuscator.Extension
6 | {
7 | public static class StringUtility
8 | {
9 | public static string EncodeStringArray(string project, string[] array)
10 | {
11 | //implement your own encryption and encoding
12 | using (var ms = new MemoryStream())
13 | {
14 | new BinaryFormatter().Serialize(ms, array);
15 | return Convert.ToBase64String(ms.ToArray());
16 | }
17 | }
18 | public static string GetDecodeToStringArrayMethodName(string project)
19 | {
20 | //the full name of the decoding method in your project
21 | return "CSharpObfuscator.Utility.StringHelpers.DecodeToStringArray";
22 | }
23 | }
24 | }
25 |
26 | /*
27 | namespace CSharpObfuscator.Utility
28 | {
29 | public static class StringHelpers
30 | {
31 | public static string[] DecodeToStringArray(string content)
32 | {
33 | using (var ms = new MemoryStream(Convert.FromBase64String(content)))
34 | return (string[])new BinaryFormatter().Deserialize(ms);
35 | }
36 | }
37 | }
38 | */
39 |
--------------------------------------------------------------------------------
/csoextension/csoextension.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | net472
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/img/cso.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/cso.png
--------------------------------------------------------------------------------
/img/flow.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/flow.gif
--------------------------------------------------------------------------------
/img/issue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/issue.png
--------------------------------------------------------------------------------
/img/solution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/solution.png
--------------------------------------------------------------------------------
/img/string.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/string.gif
--------------------------------------------------------------------------------
/img/string1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/string1.png
--------------------------------------------------------------------------------
/img/string2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/string2.png
--------------------------------------------------------------------------------
/img/string3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/img/string3.png
--------------------------------------------------------------------------------
/sample/Xaminals/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Xamarin Project Sample
3 |
4 | This sample demonstrates how to use CSharp Obfuscator to obfuscate a Xamarin solution. The solution is copied from the [Xamarin.Forms Samples](https://github.com/xamarin/xamarin-forms-samples/tree/master/UserInterface/Xaminals) repository
5 |
6 | ## Steps to obfuscate
7 |
8 | - Insatll the latest version of Visual Studio 2019.
9 |
10 | - Restore referenced packages
11 |
12 | msbuild Xaminals.sln -t:restore -p:Configuration=Debug
13 |
14 | - Build solution
15 |
16 | msbuild Xaminals.sln -t:rebuild -p:Configuration=Debug
17 |
18 | - Obfuscate solution
19 |
20 | cso Xaminals.sln -t:rebuild -p:Configuration=Debug -Config:cso.cfg
21 |
22 | - Check the obfuscation result
23 |
24 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Assets/AboutAssets.txt:
--------------------------------------------------------------------------------
1 | Any raw assets you want to be deployed with your application can be placed in
2 | this directory (and child directories) and given a Build Action of "AndroidAsset".
3 |
4 | These files will be deployed with you package and will be accessible using Android's
5 | AssetManager, like this:
6 |
7 | public class ReadAsset : Activity
8 | {
9 | protected override void OnCreate (Bundle bundle)
10 | {
11 | base.OnCreate (bundle);
12 |
13 | InputStream input = Assets.Open ("my_asset.txt");
14 | }
15 | }
16 |
17 | Additionally, some Android functions will automatically load asset files:
18 |
19 | Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
20 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using Android.App;
2 | using Android.Content.PM;
3 | using Android.Runtime;
4 | using Android.OS;
5 |
6 | namespace Xaminals.Droid
7 | {
8 | [Activity(Label = "Xaminals", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
9 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
10 | {
11 | protected override void OnCreate(Bundle savedInstanceState)
12 | {
13 | base.OnCreate(savedInstanceState);
14 |
15 | Window.SetStatusBarColor(Android.Graphics.Color.Argb(255, 0, 0, 0));
16 | global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
17 | Xamarin.Essentials.Platform.Init(this, savedInstanceState);
18 | LoadApplication(new App());
19 | }
20 |
21 | public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
22 | {
23 | Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
24 |
25 | base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 | using Android.App;
5 |
6 | // General Information about an assembly is controlled through the following
7 | // set of attributes. Change these attribute values to modify the information
8 | // associated with an assembly.
9 | [assembly: AssemblyTitle("Xaminals.Android")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("Xaminals.Android")]
14 | [assembly: AssemblyCopyright("Copyright © 2014")]
15 | [assembly: AssemblyTrademark("")]
16 | [assembly: AssemblyCulture("")]
17 | [assembly: ComVisible(false)]
18 |
19 | // Version information for an assembly consists of the following four values:
20 | //
21 | // Major Version
22 | // Minor Version
23 | // Build Number
24 | // Revision
25 | //
26 | // You can specify all the values or you can default the Build and Revision Numbers
27 | // by using the '*' as shown below:
28 | // [assembly: AssemblyVersion("1.0.*")]
29 | [assembly: AssemblyVersion("1.0.0.0")]
30 | [assembly: AssemblyFileVersion("1.0.0.0")]
31 |
32 | // Add some common permissions, these can be removed if not needed
33 | [assembly: UsesPermission(Android.Manifest.Permission.Internet)]
34 | [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
35 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/AboutResources.txt:
--------------------------------------------------------------------------------
1 | Images, layout descriptions, binary blobs and string dictionaries can be included
2 | in your application as resource files. Various Android APIs are designed to
3 | operate on the resource IDs instead of dealing with images, strings or binary blobs
4 | directly.
5 |
6 | For example, a sample Android app that contains a user interface layout (main.xml),
7 | an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
8 | would keep its resources in the "Resources" directory of the application:
9 |
10 | Resources/
11 | drawable-hdpi/
12 | icon.png
13 |
14 | drawable-ldpi/
15 | icon.png
16 |
17 | drawable-mdpi/
18 | icon.png
19 |
20 | layout/
21 | main.xml
22 |
23 | values/
24 | strings.xml
25 |
26 | In order to get the build system to recognize Android resources, set the build action to
27 | "AndroidResource". The native Android APIs do not operate directly with filenames, but
28 | instead operate on resource IDs. When you compile an Android application that uses resources,
29 | the build system will package the resources for distribution and generate a class called
30 | "Resource" that contains the tokens for each one of the resources included. For example,
31 | for the above Resources layout, this is what the Resource class would expose:
32 |
33 | public class Resource {
34 | public class drawable {
35 | public const int icon = 0x123;
36 | }
37 |
38 | public class layout {
39 | public const int main = 0x456;
40 | }
41 |
42 | public class strings {
43 | public const int first_string = 0xabc;
44 | public const int second_string = 0xbcd;
45 | }
46 | }
47 |
48 | You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
49 | to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
50 | string in the dictionary file values/strings.xml.
51 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/back.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/bear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/bear.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/cat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/cat.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/dog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/dog.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/elephant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/elephant.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/help.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/help.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/info.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/monkey.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/paw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/paw.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/photo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/photo.jpg
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/random.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/random.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/xamarin_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/xamarin_logo.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/drawable/xamarinstore.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/drawable/xamarinstore.jpg
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-hdpi/icon.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-hdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-hdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-mdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-mdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xhdpi/icon.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-xhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxhdpi/icon.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
24 |
27 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.Android/Xaminals.Android.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {DA067342-E7FA-4C40-8809-21401D523D47}
7 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
8 | {c9e5eea5-ca05-42a1-839b-61506e0a37df}
9 | Library
10 | Xaminals.Droid
11 | Xaminals.Android
12 | True
13 | Resources\Resource.designer.cs
14 | Resource
15 | Properties\AndroidManifest.xml
16 | Resources
17 | Assets
18 | v10.0
19 | Xamarin.Android.Net.AndroidClientHandler
20 |
21 |
22 |
23 |
24 | true
25 | portable
26 | false
27 | bin\Debug
28 | DEBUG;
29 | prompt
30 | 4
31 | None
32 |
33 |
34 | true
35 | pdbonly
36 | true
37 | bin\Release
38 | prompt
39 | 4
40 | true
41 | false
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 | {CD4DE9E8-2721-47F3-BA95-999B6F75FF27}
102 | Xaminals
103 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/App.xaml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using Windows.ApplicationModel;
3 | using Windows.ApplicationModel.Activation;
4 | using Windows.UI.Xaml;
5 | using Windows.UI.Xaml.Controls;
6 | using Windows.UI.Xaml.Navigation;
7 |
8 | namespace Xaminals.UWP
9 | {
10 | ///
11 | /// Provides application-specific behavior to supplement the default Application class.
12 | ///
13 | sealed partial class App : Application
14 | {
15 | ///
16 | /// Initializes the singleton application object. This is the first line of authored code
17 | /// executed, and as such is the logical equivalent of main() or WinMain().
18 | ///
19 | public App()
20 | {
21 | this.InitializeComponent();
22 | this.Suspending += OnSuspending;
23 | }
24 |
25 | ///
26 | /// Invoked when the application is launched normally by the end user. Other entry points
27 | /// will be used such as when the application is launched to open a specific file.
28 | ///
29 | /// Details about the launch request and process.
30 | protected override void OnLaunched(LaunchActivatedEventArgs e)
31 | {
32 | Frame rootFrame = Window.Current.Content as Frame;
33 |
34 | // Do not repeat app initialization when the Window already has content,
35 | // just ensure that the window is active
36 | if (rootFrame == null)
37 | {
38 | // Create a Frame to act as the navigation context and navigate to the first page
39 | rootFrame = new Frame();
40 |
41 | rootFrame.NavigationFailed += OnNavigationFailed;
42 |
43 | Xamarin.Forms.Forms.SetFlags("Shell_UWP_Experimental");
44 | Xamarin.Forms.Forms.Init(e);
45 |
46 | if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
47 | {
48 | //TODO: Load state from previously suspended application
49 | }
50 |
51 | // Place the frame in the current Window
52 | Window.Current.Content = rootFrame;
53 | }
54 |
55 | if (e.PrelaunchActivated == false)
56 | {
57 | if (rootFrame.Content == null)
58 | {
59 | // When the navigation stack isn't restored navigate to the first page,
60 | // configuring the new page by passing required information as a navigation
61 | // parameter
62 | rootFrame.Navigate(typeof(MainPage), e.Arguments);
63 | }
64 | // Ensure the current window is active
65 | Window.Current.Activate();
66 | }
67 | }
68 |
69 | ///
70 | /// Invoked when Navigation to a certain page fails
71 | ///
72 | /// The Frame which failed navigation
73 | /// Details about the navigation failure
74 | void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
75 | {
76 | throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
77 | }
78 |
79 | ///
80 | /// Invoked when application execution is being suspended. Application state is saved
81 | /// without knowing whether the application will be terminated or resumed with the contents
82 | /// of memory still intact.
83 | ///
84 | /// The source of the suspend request.
85 | /// Details about the suspend request.
86 | private void OnSuspending(object sender, SuspendingEventArgs e)
87 | {
88 | var deferral = e.SuspendingOperation.GetDeferral();
89 | //TODO: Save application state and stop any background activity
90 | deferral.Complete();
91 | }
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/3bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/3bar.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/3bar@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/3bar@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/LockScreenLogo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/LockScreenLogo.scale-200.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/SplashScreen.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/SplashScreen.scale-200.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/Square150x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/Square150x150Logo.scale-200.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/Square44x44Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/Square44x44Logo.scale-200.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/Square44x44Logo.targetsize-24_altform-unplated.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/StoreLogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/StoreLogo.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/Wide310x150Logo.scale-200.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/Wide310x150Logo.scale-200.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/back.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/back@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/back@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/bear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/bear.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/bear@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/bear@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/cat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/cat.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/cat@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/cat@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/dog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/dog.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/dog@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/dog@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/elephant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/elephant.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/elephant@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/elephant@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/help.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/help.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/help@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/help@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/info.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/info@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/info@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/monkey.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/monkey@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/monkey@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/paw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/paw.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/paw@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/paw@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/photo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/photo.jpg
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/random.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/random.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/random@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/random@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/xamarin_logo@3x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Assets/xamarinstore.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.UWP/Assets/xamarinstore.jpg
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | namespace Xaminals.UWP
2 | {
3 | public sealed partial class MainPage
4 | {
5 | public MainPage()
6 | {
7 | this.InitializeComponent();
8 | this.LoadApplication(new Xaminals.App());
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Package.appxmanifest:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
13 |
14 |
15 |
16 |
17 | Xaminals.UWP
18 | Dave
19 | Assets\StoreLogo.png
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
34 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Xaminals.UWP")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Xaminals.UWP")]
13 | [assembly: AssemblyCopyright("Copyright © 2020")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Version information for an assembly consists of the following four values:
18 | //
19 | // Major Version
20 | // Minor Version
21 | // Build Number
22 | // Revision
23 | //
24 | // You can specify all the values or you can default the Build and Revision Numbers
25 | // by using the '*' as shown below:
26 | // [assembly: AssemblyVersion("1.0.*")]
27 | [assembly: AssemblyVersion("1.0.0.0")]
28 | [assembly: AssemblyFileVersion("1.0.0.0")]
29 | [assembly: ComVisible(false)]
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.UWP/Xaminals.UWP.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | x86
7 | {73754C6F-1DB5-4BB0-85B3-D85E159C5A57}
8 | AppContainerExe
9 | Properties
10 | Xaminals.UWP
11 | Xaminals.UWP
12 | en-US
13 | UAP
14 | 10.0.18362.0
15 | 10.0.16299.0
16 | 14
17 | 512
18 | {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
19 | true
20 | false
21 |
22 |
23 | true
24 | bin\x86\Debug\
25 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
26 | ;2008
27 | full
28 | x86
29 | false
30 | prompt
31 | true
32 |
33 |
34 | bin\x86\Release\
35 | TRACE;NETFX_CORE;WINDOWS_UWP
36 | true
37 | ;2008
38 | pdbonly
39 | x86
40 | false
41 | prompt
42 | true
43 | true
44 |
45 |
46 | true
47 | bin\ARM\Debug\
48 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
49 | ;2008
50 | full
51 | ARM
52 | false
53 | prompt
54 | true
55 |
56 |
57 | bin\ARM\Release\
58 | TRACE;NETFX_CORE;WINDOWS_UWP
59 | true
60 | ;2008
61 | pdbonly
62 | ARM
63 | false
64 | prompt
65 | true
66 | true
67 |
68 |
69 | true
70 | bin\ARM64\Debug\
71 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
72 | ;2008
73 | full
74 | ARM64
75 | false
76 | prompt
77 | true
78 | true
79 |
80 |
81 | bin\ARM64\Release\
82 | TRACE;NETFX_CORE;WINDOWS_UWP
83 | true
84 | ;2008
85 | pdbonly
86 | ARM64
87 | false
88 | prompt
89 | true
90 | true
91 |
92 |
93 | true
94 | bin\x64\Debug\
95 | DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP
96 | ;2008
97 | full
98 | x64
99 | false
100 | prompt
101 | true
102 |
103 |
104 | bin\x64\Release\
105 | TRACE;NETFX_CORE;WINDOWS_UWP
106 | true
107 | ;2008
108 | pdbonly
109 | x64
110 | false
111 | prompt
112 | true
113 | true
114 |
115 |
116 | PackageReference
117 |
118 |
119 |
120 | App.xaml
121 |
122 |
123 | MainPage.xaml
124 |
125 |
126 |
127 |
128 |
129 | Designer
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 | MSBuild:Compile
172 | Designer
173 |
174 |
175 | MSBuild:Compile
176 | Designer
177 |
178 |
179 |
180 |
181 | 6.2.9
182 |
183 |
184 | 1.3.1
185 |
186 |
187 | 5.0.0.1874
188 |
189 |
190 |
191 |
192 | {cd4de9e8-2721-47f3-ba95-999b6f75ff27}
193 | Xaminals
194 |
195 |
196 |
197 | 14.0
198 |
199 |
200 |
207 |
208 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using Foundation;
2 | using UIKit;
3 |
4 | namespace Xaminals.iOS
5 | {
6 | [Register("AppDelegate")]
7 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
8 | {
9 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
10 | {
11 | global::Xamarin.Forms.Forms.Init();
12 | LoadApplication(new App());
13 |
14 | return base.FinishedLaunching(app, options);
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "scale": "2x",
5 | "size": "20x20",
6 | "idiom": "iphone",
7 | "filename": "Icon40.png"
8 | },
9 | {
10 | "scale": "3x",
11 | "size": "20x20",
12 | "idiom": "iphone",
13 | "filename": "Icon60.png"
14 | },
15 | {
16 | "scale": "2x",
17 | "size": "29x29",
18 | "idiom": "iphone",
19 | "filename": "Icon58.png"
20 | },
21 | {
22 | "scale": "3x",
23 | "size": "29x29",
24 | "idiom": "iphone",
25 | "filename": "Icon87.png"
26 | },
27 | {
28 | "scale": "2x",
29 | "size": "40x40",
30 | "idiom": "iphone",
31 | "filename": "Icon80.png"
32 | },
33 | {
34 | "scale": "3x",
35 | "size": "40x40",
36 | "idiom": "iphone",
37 | "filename": "Icon120.png"
38 | },
39 | {
40 | "scale": "2x",
41 | "size": "60x60",
42 | "idiom": "iphone",
43 | "filename": "Icon120.png"
44 | },
45 | {
46 | "scale": "3x",
47 | "size": "60x60",
48 | "idiom": "iphone",
49 | "filename": "Icon180.png"
50 | },
51 | {
52 | "scale": "1x",
53 | "size": "20x20",
54 | "idiom": "ipad",
55 | "filename": "Icon20.png"
56 | },
57 | {
58 | "scale": "2x",
59 | "size": "20x20",
60 | "idiom": "ipad",
61 | "filename": "Icon40.png"
62 | },
63 | {
64 | "scale": "1x",
65 | "size": "29x29",
66 | "idiom": "ipad",
67 | "filename": "Icon29.png"
68 | },
69 | {
70 | "scale": "2x",
71 | "size": "29x29",
72 | "idiom": "ipad",
73 | "filename": "Icon58.png"
74 | },
75 | {
76 | "scale": "1x",
77 | "size": "40x40",
78 | "idiom": "ipad",
79 | "filename": "Icon40.png"
80 | },
81 | {
82 | "scale": "2x",
83 | "size": "40x40",
84 | "idiom": "ipad",
85 | "filename": "Icon80.png"
86 | },
87 | {
88 | "scale": "1x",
89 | "size": "76x76",
90 | "idiom": "ipad",
91 | "filename": "Icon76.png"
92 | },
93 | {
94 | "scale": "2x",
95 | "size": "76x76",
96 | "idiom": "ipad",
97 | "filename": "Icon152.png"
98 | },
99 | {
100 | "scale": "2x",
101 | "size": "83.5x83.5",
102 | "idiom": "ipad",
103 | "filename": "Icon167.png"
104 | },
105 | {
106 | "scale": "1x",
107 | "size": "1024x1024",
108 | "idiom": "ios-marketing",
109 | "filename": "Icon1024.png"
110 | }
111 | ],
112 | "properties": {},
113 | "info": {
114 | "version": 1,
115 | "author": "xcode"
116 | }
117 | }
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIDeviceFamily
6 |
7 | 1
8 | 2
9 |
10 | UISupportedInterfaceOrientations
11 |
12 | UIInterfaceOrientationPortrait
13 | UIInterfaceOrientationLandscapeLeft
14 | UIInterfaceOrientationLandscapeRight
15 |
16 | UISupportedInterfaceOrientations~ipad
17 |
18 | UIInterfaceOrientationPortrait
19 | UIInterfaceOrientationPortraitUpsideDown
20 | UIInterfaceOrientationLandscapeLeft
21 | UIInterfaceOrientationLandscapeRight
22 |
23 | MinimumOSVersion
24 | 8.0
25 | CFBundleDisplayName
26 | Xaminals
27 | CFBundleIdentifier
28 | com.companyname.Xaminals
29 | CFBundleVersion
30 | 1.0
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | CFBundleName
34 | Xaminals
35 | XSAppIconAssets
36 | Assets.xcassets/AppIcon.appiconset
37 |
38 |
39 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using UIKit;
2 |
3 | namespace Xaminals.iOS
4 | {
5 | public class Application
6 | {
7 | // This is the main entry point of the application.
8 | static void Main(string[] args)
9 | {
10 | // if you want to use a different Application Delegate class from "AppDelegate"
11 | // you can specify it here.
12 | UIApplication.Main(args, null, "AppDelegate");
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("Xaminals.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("Xaminals.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2014")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/3bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/3bar.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/3bar@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/3bar@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/back.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/back@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/back@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/bear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/bear.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/bear@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/bear@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/cat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/cat.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/cat@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/cat@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/dog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/dog.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/dog@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/dog@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/elephant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/elephant.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/elephant@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/elephant@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/help.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/help.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/help@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/help@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/info.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/info@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/info@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/monkey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/monkey.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/monkey@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/monkey@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/paw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/paw.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/paw@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/paw@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/photo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/photo.jpg
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/random.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/random.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/random@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/random@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo@2x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/xamarin_logo@3x.png
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Resources/xamarinstore.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nwtsolution/CSharpObfuscator/3edf66605740a7f91cda71aa9f86ab34a2bda015/sample/Xaminals/Xaminals.iOS/Resources/xamarinstore.jpg
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals.iOS/Xaminals.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | iPhoneSimulator
6 | 8.0.30703
7 | 2.0
8 | {2EAAEE32-09F5-4390-9CA5-C67B7CE09BA2}
9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | {6143fdea-f3c2-4a09-aafa-6e230626515e}
11 | Exe
12 | Xaminals.iOS
13 | Resources
14 | Xaminals.iOS
15 | NSUrlSessionHandler
16 |
17 |
18 |
19 |
20 | true
21 | full
22 | false
23 | bin\iPhoneSimulator\Debug
24 | DEBUG
25 | prompt
26 | 4
27 | false
28 | x86_64
29 | None
30 | true
31 |
32 |
33 | none
34 | true
35 | bin\iPhoneSimulator\Release
36 | prompt
37 | 4
38 | None
39 | x86_64
40 | false
41 |
42 |
43 | true
44 | full
45 | false
46 | bin\iPhone\Debug
47 | DEBUG
48 | prompt
49 | 4
50 | false
51 | ARM64
52 | iPhone Developer
53 | true
54 | Entitlements.plist
55 |
56 |
57 | none
58 | true
59 | bin\iPhone\Release
60 | prompt
61 | 4
62 | ARM64
63 | false
64 | iPhone Developer
65 | Entitlements.plist
66 |
67 |
68 | none
69 | True
70 | bin\iPhone\Ad-Hoc
71 | prompt
72 | 4
73 | False
74 | ARM64
75 | True
76 | Automatic:AdHoc
77 | iPhone Distribution
78 | Entitlements.plist
79 |
80 |
81 | none
82 | True
83 | bin\iPhone\AppStore
84 | prompt
85 | 4
86 | False
87 | ARM64
88 | Automatic:AppStore
89 | iPhone Distribution
90 | Entitlements.plist
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 | false
103 |
104 |
105 | false
106 |
107 |
108 | false
109 |
110 |
111 | false
112 |
113 |
114 | false
115 |
116 |
117 | false
118 |
119 |
120 | false
121 |
122 |
123 | false
124 |
125 |
126 | false
127 |
128 |
129 | false
130 |
131 |
132 | false
133 |
134 |
135 | false
136 |
137 |
138 | false
139 |
140 |
141 | false
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 | {CD4DE9E8-2721-47F3-BA95-999B6F75FF27}
154 | Xaminals
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
24 |
27 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
45 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms;
2 | using Xamarin.Forms.Xaml;
3 |
4 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
5 | namespace Xaminals
6 | {
7 | public partial class App : Application
8 | {
9 | public App()
10 | {
11 | InitializeComponent();
12 |
13 | MainPage = new AppShell();
14 | }
15 |
16 | protected override void OnStart()
17 | {
18 | // Handle when your app starts
19 | }
20 |
21 | protected override void OnSleep()
22 | {
23 | // Handle when your app sleeps
24 | }
25 |
26 | protected override void OnResume()
27 | {
28 | // Handle when your app resumes
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/AppShell.xaml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
26 |
28 |
34 |
40 |
46 |
52 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
85 |
86 |
87 |
88 |
101 |
102 |
103 |
104 |
117 |
118 |
119 |
120 |
135 |
136 |
137 |
154 |
155 |
156 |
173 |
174 |
177 |
180 |
185 |
190 |
191 |
192 |
203 |
208 |
213 |
218 |
219 |
220 |
225 |
226 |
229 |
233 |
234 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/AppShell.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using System.Windows.Input;
6 | using Xamarin.Essentials;
7 | using Xamarin.Forms;
8 | using Xaminals.Data;
9 | using Xaminals.Views;
10 |
11 | namespace Xaminals
12 | {
13 | public partial class AppShell : Shell
14 | {
15 | Random rand = new Random();
16 | Dictionary routes = new Dictionary();
17 | public Dictionary Routes { get { return routes; } }
18 |
19 | public ICommand HelpCommand => new Command(async (url) => await Launcher.OpenAsync(url));
20 | public ICommand RandomPageCommand => new Command(async () => await NavigateToRandomPageAsync());
21 |
22 | public AppShell()
23 | {
24 | InitializeComponent();
25 | RegisterRoutes();
26 | BindingContext = this;
27 | }
28 |
29 | void RegisterRoutes()
30 | {
31 | routes.Add("monkeydetails", typeof(MonkeyDetailPage));
32 | routes.Add("beardetails", typeof(BearDetailPage));
33 | routes.Add("catdetails", typeof(CatDetailPage));
34 | routes.Add("dogdetails", typeof(DogDetailPage));
35 | routes.Add("elephantdetails", typeof(ElephantDetailPage));
36 |
37 | foreach (var item in routes)
38 | {
39 | Routing.RegisterRoute(item.Key, item.Value);
40 | }
41 | }
42 |
43 | async Task NavigateToRandomPageAsync()
44 | {
45 | string destinationRoute = routes.ElementAt(rand.Next(0, routes.Count)).Key;
46 | string animalName = null;
47 |
48 | switch (destinationRoute)
49 | {
50 | case "monkeydetails":
51 | animalName = MonkeyData.Monkeys.ElementAt(rand.Next(0, MonkeyData.Monkeys.Count)).Name;
52 | break;
53 | case "beardetails":
54 | animalName = BearData.Bears.ElementAt(rand.Next(0, BearData.Bears.Count)).Name;
55 | break;
56 | case "catdetails":
57 | animalName = CatData.Cats.ElementAt(rand.Next(0, CatData.Cats.Count)).Name;
58 | break;
59 | case "dogdetails":
60 | animalName = DogData.Dogs.ElementAt(rand.Next(0, DogData.Dogs.Count)).Name;
61 | break;
62 | case "elephantdetails":
63 | animalName = ElephantData.Elephants.ElementAt(rand.Next(0, ElephantData.Elephants.Count)).Name;
64 | break;
65 | }
66 |
67 | ShellNavigationState state = Shell.Current.CurrentState;
68 | await Shell.Current.GoToAsync($"{state.Location}/{destinationRoute}?name={animalName}");
69 | Shell.Current.FlyoutIsPresented = false;
70 | }
71 |
72 | //protected override void OnNavigating(ShellNavigatingEventArgs args)
73 | //{
74 | // base.OnNavigating(args);
75 |
76 | // // Cancel any back navigation
77 | // //if (e.Source == ShellNavigationSource.Pop)
78 | // //{
79 | // // e.Cancel();
80 | // //}
81 | //}
82 |
83 | //protected override void OnNavigated(ShellNavigatedEventArgs args)
84 | //{
85 | // base.OnNavigated(args);
86 |
87 | // // Perform required logic
88 | //}
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Controls/AnimalSearchHandler.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using Xamarin.Forms;
6 | using Xaminals.Models;
7 |
8 | namespace Xaminals.Controls
9 | {
10 | public class AnimalSearchHandler : SearchHandler
11 | {
12 | public IList Animals { get; set; }
13 | public Type SelectedItemNavigationTarget { get; set; }
14 |
15 | protected override void OnQueryChanged(string oldValue, string newValue)
16 | {
17 | base.OnQueryChanged(oldValue, newValue);
18 |
19 | if (string.IsNullOrWhiteSpace(newValue))
20 | {
21 | ItemsSource = null;
22 | }
23 | else
24 | {
25 | ItemsSource = Animals
26 | .Where(animal => animal.Name.ToLower().Contains(newValue.ToLower()))
27 | .ToList();
28 | }
29 | }
30 |
31 | protected override async void OnItemSelected(object item)
32 | {
33 | base.OnItemSelected(item);
34 | await Task.Delay(1000);
35 |
36 | ShellNavigationState state = (App.Current.MainPage as Shell).CurrentState;
37 | // Note: strings will be URL encoded for navigation (e.g. "Blue Monkey" becomes "Blue%20Monkey"). Therefore, decode at the receiver.
38 | // This works because route names are unique in this application.
39 | await Shell.Current.GoToAsync($"{GetNavigationTarget()}?name={((Animal)item).Name}");
40 | }
41 |
42 | string GetNavigationTarget()
43 | {
44 | return (Shell.Current as AppShell).Routes.FirstOrDefault(route => route.Value.Equals(SelectedItemNavigationTarget)).Key;
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Controls/FlyoutFooter.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Controls/FlyoutFooter.xaml.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms;
2 |
3 | namespace Xaminals.Controls
4 | {
5 | public partial class FlyoutFooter : ContentView
6 | {
7 | public FlyoutFooter()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Controls/FlyoutHeader.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Controls/FlyoutHeader.xaml.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms;
2 |
3 | namespace Xaminals.Controls
4 | {
5 | public partial class FlyoutHeader : ContentView
6 | {
7 | public FlyoutHeader()
8 | {
9 | InitializeComponent();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Controls/MonkeySearchHandler.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using System.Threading.Tasks;
3 | using Xamarin.Forms;
4 | using Xaminals.Data;
5 | using Xaminals.Models;
6 |
7 | namespace Xaminals.Controls
8 | {
9 | public class MonkeySearchHandler : SearchHandler
10 | {
11 | protected override void OnQueryChanged(string oldValue, string newValue)
12 | {
13 | base.OnQueryChanged(oldValue, newValue);
14 |
15 | if (string.IsNullOrWhiteSpace(newValue))
16 | {
17 | ItemsSource = null;
18 | }
19 | else
20 | {
21 | ItemsSource = MonkeyData.Monkeys
22 | .Where(monkey => monkey.Name.ToLower().Contains(newValue.ToLower()))
23 | .ToList();
24 | }
25 | }
26 |
27 | protected override async void OnItemSelected(object item)
28 | {
29 | base.OnItemSelected(item);
30 | await Task.Delay(1000);
31 |
32 | // Note: strings will be URL encoded for navigation (e.g. "Blue Monkey" becomes "Blue%20Monkey"). Therefore, decode at the receiver.
33 | // This works because route names are unique in this application.
34 | await Shell.Current.GoToAsync($"monkeydetails?name={((Animal)item).Name}");
35 | // The full route is shown below.
36 | // await Shell.Current.GoToAsync($"//animals/monkeys/monkeydetails?name={((Animal)item).Name}");
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Data/BearData.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Xaminals.Models;
3 |
4 | namespace Xaminals.Data
5 | {
6 | public static class BearData
7 | {
8 | public static IList Bears { get; private set; }
9 |
10 | static BearData()
11 | {
12 | Bears = new List();
13 |
14 | Bears.Add(new Animal
15 | {
16 | Name = "American Black Bear",
17 | Location = "North America",
18 | Details = "The American black bear is a medium-sized bear native to North America. It is the continent's smallest and most widely distributed bear species. American black bears are omnivores, with their diets varying greatly depending on season and location. They typically live in largely forested areas, but do leave forests in search of food. Sometimes they become attracted to human communities because of the immediate availability of food. The American black bear is the world's most common bear species.",
19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/0/08/01_Schwarzbär.jpg"
20 | });
21 |
22 | Bears.Add(new Animal
23 | {
24 | Name = "Asian Black Bear",
25 | Location = "Asia",
26 | Details = "The Asian black bear, also known as the moon bear and the white-chested bear, is a medium-sized bear species native to Asia and largely adapted to arboreal life. It lives in the Himalayas, in the northern parts of the Indian subcontinent, Korea, northeastern China, the Russian Far East, the Honshū and Shikoku islands of Japan, and Taiwan. It is classified as vulnerable by the International Union for Conservation of Nature (IUCN), mostly because of deforestation and hunting for its body parts.",
27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b7/Ursus_thibetanus_3_%28Wroclaw_zoo%29.JPG/180px-Ursus_thibetanus_3_%28Wroclaw_zoo%29.JPG"
28 | });
29 |
30 | Bears.Add(new Animal
31 | {
32 | Name = "Brown Bear",
33 | Location = "Northern Eurasia & North America",
34 | Details = "The brown bear is a bear that is found across much of northern Eurasia and North America. In North America the population of brown bears are often called grizzly bears. It is one of the largest living terrestrial members of the order Carnivora, rivaled in size only by its closest relative, the polar bear, which is much less variable in size and slightly larger on average. The brown bear's principal range includes parts of Russia, Central Asia, China, Canada, the United States, Scandinavia and the Carpathian region, especially Romania, Anatolia and the Caucasus. The brown bear is recognized as a national and state animal in several European countries.",
35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Kamchatka_Brown_Bear_near_Dvuhyurtochnoe_on_2015-07-23.jpg/320px-Kamchatka_Brown_Bear_near_Dvuhyurtochnoe_on_2015-07-23.jpg"
36 | });
37 |
38 | Bears.Add(new Animal
39 | {
40 | Name = "Giant Panda",
41 | Location = "China",
42 | Details = "The giant panda, also known as panda bear or simply panda, is a bear native to south central China. It is easily recognized by the large, distinctive black patches around its eyes, over the ears, and across its round body. The name giant panda is sometimes used to distinguish it from the unrelated red panda. Though it belongs to the order Carnivora, the giant panda's diet is over 99% bamboo. Giant pandas in the wild will occasionally eat other grasses, wild tubers, or even meat in the form of birds, rodents, or carrion. In captivity, they may receive honey, eggs, fish, yams, shrub leaves, oranges, or bananas along with specially prepared food.",
43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Grosser_Panda.JPG/320px-Grosser_Panda.JPG"
44 | });
45 |
46 | Bears.Add(new Animal
47 | {
48 | Name = "Grizzly-Polar Bear Hybrid",
49 | Location = "Canadian Artic",
50 | Details = "A grizzly–polar bear hybrid is a rare ursid hybrid that has occurred both in captivity and in the wild. In 2006, the occurrence of this hybrid in nature was confirmed by testing the DNA of a unique-looking bear that had been shot near Sachs Harbour, Northwest Territories on Banks Island in the Canadian Arctic. The number of confirmed hybrids has since risen to eight, all of them descending from the same female polar bear.",
51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/7/7e/Grolar.JPG/276px-Grolar.JPG"
52 | });
53 |
54 | Bears.Add(new Animal
55 | {
56 | Name = "Sloth Bear",
57 | Location = "Indian Subcontinent",
58 | Details = "The sloth bear is an insectivorous bear species native to the Indian subcontinent. It is listed as Vulnerable on the IUCN Red List, mainly because of habitat loss and degradation. It has also been called labiated bear because of its long lower lip and palate used for sucking insects. Compared to brown and black bears, the sloth bear is lankier, has a long, shaggy fur and a mane around the face, and long, sickle-shaped claws. It evolved from the ancestral brown bear during the Pleistocene and through convergent evolution shares features found in insect-eating mammals.",
59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6c/Sloth_Bear_Washington_DC.JPG/320px-Sloth_Bear_Washington_DC.JPG"
60 | });
61 |
62 | Bears.Add(new Animal
63 | {
64 | Name = "Sun Bear",
65 | Location = "Southeast Asia",
66 | Details = "The sun bear is a bear species occurring in tropical forest habitats of Southeast Asia. It is listed as Vulnerable on the IUCN Red List. The global population is thought to have declined by more than 30% over the past three bear generations. Suitable habitat has been dramatically reduced due to the large-scale deforestation that has occurred throughout Southeast Asia over the past three decades. The sun bear is also known as the honey bear, which refers to its voracious appetite for honeycombs and honey.",
67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/a/a6/Sitting_sun_bear.jpg/319px-Sitting_sun_bear.jpg"
68 | });
69 |
70 | Bears.Add(new Animal
71 | {
72 | Name = "Polar Bear",
73 | Location = "Artic Circle",
74 | Details = "The polar bear is a hypercarnivorous bear whose native range lies largely within the Arctic Circle, encompassing the Arctic Ocean, its surrounding seas and surrounding land masses. It is a large bear, approximately the same size as the omnivorous Kodiak bear. A boar (adult male) weighs around 350–700 kg (772–1,543 lb), while a sow (adult female) is about half that size. Although it is the sister species of the brown bear, it has evolved to occupy a narrower ecological niche, with many body characteristics adapted for cold temperatures, for moving across snow, ice and open water, and for hunting seals, which make up most of its diet. Although most polar bears are born on land, they spend most of their time on the sea ice. Their scientific name means maritime bear and derives from this fact. Polar bears hunt their preferred food of seals from the edge of sea ice, often living off fat reserves when no sea ice is present. Because of their dependence on the sea ice, polar bears are classified as marine mammals.",
75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/6/66/Polar_Bear_-_Alaska_%28cropped%29.jpg"
76 | });
77 |
78 | Bears.Add(new Animal
79 | {
80 | Name = "Spectacled Bear",
81 | Location = "South America",
82 | Details = "The spectacled bear, also known as the Andean bear or Andean short-faced bear and locally as jukumari (Aymara), ukumari (Quechua) or ukuku, is the last remaining short-faced bear. Its closest relatives are the extinct Florida spectacled bear, and the giant short-faced bears of the Middle to Late Pleistocene age. Spectacled bears are the only surviving species of bear native to South America, and the only surviving member of the subfamily Tremarctinae. The species is classified as Vulnerable by the IUCN because of habitat loss.",
83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/99/Spectacled_Bear_-_Houston_Zoo.jpg/264px-Spectacled_Bear_-_Houston_Zoo.jpg"
84 | });
85 |
86 | Bears.Add(new Animal
87 | {
88 | Name = "Cave Bear",
89 | Location = "Extinct",
90 | Details = "The cave bear was a species of bear that lived in Europe and Asia during the Pleistocene and became extinct about 24,000 years ago during the Last Glacial Maximum. Both the word cave and the scientific name spelaeus are used because fossils of this species were mostly found in caves. This reflects the views of experts that cave bears may have spent more time in caves than the brown bear, which uses caves only for hibernation.",
91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/6a/Teufelshöhle-Höhlenbär-Dreiviertelprofil.jpg/320px-Teufelshöhle-Höhlenbär-Dreiviertelprofil.jpg"
92 | });
93 |
94 | Bears.Add(new Animal
95 | {
96 | Name = "Short-faced Bear",
97 | Location = "Extinct",
98 | Details = "The short-faced bears is an extinct bear genus that inhabited North America during the Pleistocene epoch from about 1.8 Mya until 11,000 years ago. It was the most common early North American bear and was most abundant in California. There are two recognized species: Arctodus pristinus and Arctodus simus, with the latter considered to be one of the largest known terrestrial mammalian carnivores that has ever existed. It has been hypothesized that their extinction coincides with the Younger Dryas period of global cooling commencing around 10,900 BC.",
99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b8/ArctodusSimusSkeleton.jpg/320px-ArctodusSimusSkeleton.jpg"
100 | });
101 |
102 | Bears.Add(new Animal
103 | {
104 | Name = "California Grizzly Bear",
105 | Location = "Extinct",
106 | Details = "The California grizzly bear is an extinct subspecies of the grizzly bear, the very large North American brown bear. Grizzly could have meant grizzled (that is, with golden and grey tips of the hair) or fear-inspiring. Nonetheless, after careful study, naturalist George Ord formally classified it in 1815 – not for its hair, but for its character – as Ursus horribilis (terrifying bear). Genetically, North American grizzlies are closely related; in size and coloring, the California grizzly bear was much like the grizzly bear of the southern coast of Alaska. In California, it was particularly admired for its beauty, size and strength. The grizzly became a symbol of the Bear Flag Republic, a moniker that was attached to the short-lived attempt by a group of American settlers to break away from Mexico in 1846. Later, this rebel flag became the basis for the state flag of California, and then California was known as the Bear State.",
107 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/d/de/Monarch_the_bear.jpg"
108 | });
109 | }
110 | }
111 | }
112 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Data/CatData.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Xaminals.Models;
3 |
4 | namespace Xaminals.Data
5 | {
6 | public static class CatData
7 | {
8 | public static IList Cats { get; private set; }
9 |
10 | static CatData()
11 | {
12 | Cats = new List();
13 |
14 | Cats.Add(new Animal
15 | {
16 | Name = "Abyssinian",
17 | Location = "Ethopia",
18 | Details = "The Abyssinian is a breed of domestic short-haired cat with a distinctive tickedtabby coat, in which individual hairs are banded with different colors. The breed is named for Abyssinia (now called Ethiopia), where it is believed to have originated.",
19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Gustav_chocolate.jpg/168px-Gustav_chocolate.jpg"
20 | });
21 |
22 | Cats.Add(new Animal
23 | {
24 | Name = "Arabian Mau",
25 | Location = "Arabian Peninsula",
26 | Details = "The Arabian Mau is a formal breed of domestic cat, originated from the desert cat, a short-haired landrace native to the desert of the Arabian Peninsula. It lives there in the streets and has adapted very well to the extreme climate. The Arabian Mau is recognized as a formal breed by few fancier and breeder organization and cat registry, World Cat Federation (WCF) and Emirates Feline Federation (EFF). Based on one landrace, the Arabian Mau is a natural breed.",
27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/d/d3/Bex_Arabian_Mau.jpg"
28 | });
29 |
30 | Cats.Add(new Animal
31 | {
32 | Name = "Bengal",
33 | Location = "Asia",
34 | Details = "The Bengal cat is a domesticated cat breed created from hybrids of domestic cats and the Asian leopard cat – the breed name comes from the taxonomic name. Back-crossing to domestic cats is then done with the goal of creating a healthy, and docile cat with wild-looking, high-contrast coat. Bengals have a wild appearance and may show spots, rosettes, arrowhead markings, or marbling.",
35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/ba/Paintedcats_Red_Star_standing.jpg/187px-Paintedcats_Red_Star_standing.jpg"
36 | });
37 |
38 | Cats.Add(new Animal
39 | {
40 | Name = "Burmese",
41 | Location = "Thailand",
42 | Details = "The Burmese cat is a breed of domestic cat, originating in Thailand, believed to have its roots near the present Thai-Burma border and developed in the United States and Britain.",
43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/0/04/Blissandlucky11.jpg"
44 | });
45 |
46 | Cats.Add(new Animal
47 | {
48 | Name = "Cyprus",
49 | Location = "Cyprus",
50 | Details = "Cyprus cats, also known as Cypriot cats, Saint Helen cats, and Saint Nicholas cats, are a landrace of domestic cat found across the island of Cyprus. A standardized breed is being developed from them; among cat fancier and breeder organizations, it is presently fully recognized by the World Cat Federation (WCF), with breeding regulated by the World Cat Congress (WCC), under the name Aphrodite's Giant; and provisionally by The International Cat Association (TICA) as the Aphrodite. All three organizations permit shorthaired and semi-longhaired versions and no out-crossing to other breeds.",
51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/CyprusShorthair.jpg/320px-CyprusShorthair.jpg"
52 | });
53 |
54 | Cats.Add(new Animal
55 | {
56 | Name = "German Rex",
57 | Location = "Germany",
58 | Details = "The German Rex is a medium-sized breed with slender legs of a medium length. The head is round with well-developed cheeks and large, open ears. The eyes are of medium size in colours related to the coat colour. The coat is silky and short with a tendency to curl. The whiskers also curl, though less strongly than in the Cornish Rex. They may be nearly straight. All colours of coat, including white, are allowed. The body development is heavier than in the Cornish Rex - more like the European Shorthairs.",
59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/c/c7/German_rex_harry_%28cropped%29.jpg"
60 | });
61 |
62 | Cats.Add(new Animal
63 | {
64 | Name = "Highlander",
65 | Location = "United States",
66 | Details = "The Highlander (also known as the Highlander Shorthair, and originally as the Highland Lynx), is an experimental breed of cat. The unique appearance of the Highlander comes from the deliberate cross between the Desert Lynx and the Jungle Curl breeds, also recently developed. The latter of these has some non-domestic ancestry from two Asian small cat species, the leopard cat and jungle cat, making the Highlander nominally a feline hybrid, though its foundation stock is mostly domestic cat.",
67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Highlander-7.jpg/293px-Highlander-7.jpg"
68 | });
69 |
70 | Cats.Add(new Animal
71 | {
72 | Name = "Manx",
73 | Location = "Isle of Man",
74 | Details = "The Manx cat is a breed of domestic cat originating on the Isle of Man, with a naturally occurring mutation that shortens the tail. Many Manx have a small stub of a tail, but Manx cats are best known as being entirely tailless; this is the most distinguishing characteristic of the breed, along with elongated hind legs and a rounded head. Manx cats come in all coat colours and patterns, though all-white specimens are rare, and the coat range of the original stock was more limited. Long-haired variants are sometimes considered a separate breed, the Cymric. Manx are prized as skilled hunters, and thus have often been sought by farmers with rodent problems, and been a preferred ship's cat breed. They are said to be social, tame and active. An old local term for the cats on their home island is stubbin. Manx have been exhibited in cat shows since the 1800s, with the first known breed standard published in 1903.",
75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/en/9/9b/Manx_cat_by_Karen_Weaver.jpg"
76 | });
77 |
78 | Cats.Add(new Animal
79 | {
80 | Name = "Peterbald",
81 | Location = "Russia",
82 | Details = "The Peterbald is a cat breed of Russian origin. It was created in St Petersburg in 1994 from an experimental breeding by Olga S. Mironova. They resemble Oriental Shorthairs with a hair-losing gene. The breed was accepted for Championship class competition in 2009.",
83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/c/c7/Peterbald_male_Shango_by_Irina_Polunina.jpg"
84 | });
85 |
86 | Cats.Add(new Animal
87 | {
88 | Name = "Scottish Fold",
89 | Location = "Scotland",
90 | Details = "The Scottish Fold is a breed of domestic cat with a natural dominant-gene mutation that affects cartilage throughout the body, causing the ears to fold, bending forward and down towards the front of the head, which gives the cat what is often described as an owl-like appearance.",
91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5d/Adult_Scottish_Fold.jpg/240px-Adult_Scottish_Fold.jpg"
92 | });
93 |
94 | Cats.Add(new Animal
95 | {
96 | Name = "Sphynx",
97 | Location = "Europe",
98 | Details = "The Sphynx cat is a breed of cat known for its lack of coat (fur). It was developed through selective breeding, starting in the 1960s. The skin should have the texture of chamois, as it has fine hairs, or they may be completely hairless. Whiskers may be present, either whole or broken, or may be totally absent. They also have a narrow, long head, and webbed feet. Their skin is the color that their fur would be, and all the usual cat markings (solid, point, van, tabby, tortie, etc.) may be found on the Sphynx cat's skin. Because they have no coat, they lose more body heat than coated cats. This makes them warm to the touch as well as heat-seeking.",
99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e8/Sphinx2_July_2006.jpg/180px-Sphinx2_July_2006.jpg"
100 | });
101 | }
102 | }
103 | }
104 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Data/DogData.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Xaminals.Models;
3 |
4 | namespace Xaminals.Data
5 | {
6 | public static class DogData
7 | {
8 | public static IList Dogs { get; private set; }
9 |
10 | static DogData()
11 | {
12 | Dogs = new List();
13 |
14 | Dogs.Add(new Animal
15 | {
16 | Name = "Afghan Hound",
17 | Location = "Afghanistan",
18 | Details = "The Afghan Hound is a hound that is distinguished by its thick, fine, silky coat and its tail with a ring curl at the end. The breed is selectively bred for its unique features in the cold mountains of Afghanistan. Other names for this breed are Kuchi Hound, Tāzī, Balkh Hound, Baluchi Hound, Barakzai Hound, Shalgar Hound, Kabul Hound, Galanday Hound or sometimes incorrectly African Hound.",
19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/6/69/Afghane.jpg"
20 | });
21 |
22 | Dogs.Add(new Animal
23 | {
24 | Name = "Alpine Dachsbracke",
25 | Location = "Austria",
26 | Details = "The Alpine Dachsbracke is a small breed of dog of the scent hound type originating in Austria. The Alpine Dachsbracke was bred to track wounded deer as well as boar, hare, and fox. It is highly efficient at following a trail even after it has gone cold. The Alpine Dachsbracke is very sturdy, and Austria is said to be the country of origin.",
27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/23/Alpejski_gończy_krótkonożny_g99.jpg/320px-Alpejski_gończy_krótkonożny_g99.jpg"
28 | });
29 |
30 | Dogs.Add(new Animal
31 | {
32 | Name = "American Bulldog",
33 | Location = "United States",
34 | Details = "The American Bulldog is a breed of utility dog descended from the Old English Bulldog.",
35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/5/5e/American_Bulldog_600.jpg"
36 | });
37 |
38 | Dogs.Add(new Animal
39 | {
40 | Name = "Bearded Collie",
41 | Location = "Scotland",
42 | Details = "The Bearded Collie, or Beardie, is a herding breed of dog once used primarily by Scottish shepherds, but now mostly a popular family companion. Bearded Collies have an average weight of 18–27 kilograms (40–60 lb). Males are around 51–56 centimetres (20–22 in) tall at the withers while females are around 51–53 centimetres (20–21 in) tall.",
43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/9/9c/Bearded_Collie_600.jpg"
44 | });
45 |
46 | Dogs.Add(new Animal
47 | {
48 | Name = "Boston Terrier",
49 | Location = "United States",
50 | Details = "The Boston Terrier is a breed of dog originating in the United States of America. This American Gentleman was accepted in 1893 by the American Kennel Club as a non-sporting breed. Color and markings are important when distinguishing this breed to the AKC standard. They should be either black, brindle or seal with white markings. Bostons are small and compact with a short tail and erect ears. The AKC says they are highly intelligent and very easily trained. They are friendly and can be stubborn at times. The average life span of a Boston is around 11 to 13 years, though some can live well into their teens.",
51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/Boston-terrier-carlos-de.JPG/320px-Boston-terrier-carlos-de.JPG"
52 | });
53 |
54 | Dogs.Add(new Animal
55 | {
56 | Name = "Canadian Eskimo",
57 | Location = "Canada",
58 | Details = "The Canadian Eskimo Dog is an Arctic breed of working dog, which is often considered to be one of North America's oldest and rarest remaining purebred indigenous domestic canines. Other names include qimmiq or qimmit. They were brought from Siberia to North America by the Thule people 1,000 years ago, along with the Greenland Dog that is genetically identical.",
59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/7/79/Spoonsced.jpg"
60 | });
61 |
62 | Dogs.Add(new Animal
63 | {
64 | Name = "Eurohound",
65 | Location = "Scandinavia",
66 | Details = "A Eurohound (also known as a Eurodog or Scandinavian hound) is a type of dog bred for sled dog racing. The Eurohound is typically crossbred from the Alaskan husky group and any of a number of pointing breeds.",
67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/9/98/Eurohound.jpg"
68 | });
69 |
70 | Dogs.Add(new Animal
71 | {
72 | Name = "Irish Terrier",
73 | Location = "Ireland",
74 | Details = "The Irish Terrier is a dog breed from Ireland, one of many breeds of terrier. The Irish Terrier is considered one of the oldest terrier breeds. The Dublin dog show in 1873 was the first to provide a separate class for Irish Terriers. By the 1880s, Irish Terriers were the fourth most popular breed in Ireland and Britain.",
75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/5/56/IrishTerrierSydenhamHillWoods.jpg/180px-IrishTerrierSydenhamHillWoods.jpg"
76 | });
77 |
78 | Dogs.Add(new Animal
79 | {
80 | Name = "Kerry Beagle",
81 | Location = "Ireland",
82 | Details = "The Kerry Beagle is one of the oldest Irish hound breeds, believed to be descendant from the Old Southern Hound or the Celtic Hounds. It is the only extant scent hound breed native to Ireland.",
83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/7/75/Kerry_Beagle_from_1915.JPG"
84 | });
85 |
86 | Dogs.Add(new Animal
87 | {
88 | Name = "Norwegian Buhund",
89 | Location = "Norway",
90 | Details = "The Norwegian Buhund is a breed of dog of the spitz type. It is closely related to the Icelandic Sheepdog and the Jämthund. The Buhund is used as an all purpose farm and herding dog, as well as watch dog and a nanny dog.",
91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/3/3b/Norwegian_Buhund_600.jpg"
92 | });
93 |
94 | Dogs.Add(new Animal
95 | {
96 | Name = "Patterdale Terrier",
97 | Location = "England",
98 | Details = "The Patterdale Terrier is a breed of dog descended from the Northern terrier breeds of the early 20th century. The origins of the breed can be traced back to the Lake District, specifically to Ullswater Hunt master Joe Bowman, an early Border Terrier breeder.",
99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/ec/05078045_Patterdale_Terrier.jpg/320px-05078045_Patterdale_Terrier.jpg"
100 | });
101 |
102 | Dogs.Add(new Animal
103 | {
104 | Name = "St. Bernard",
105 | Location = "Italy, Switzerland",
106 | Details = "The St. Bernard or St Bernard is a breed of very large working dog from the western Alps in Italy and Switzerland. They were originally bred for rescue by the hospice of the Great St Bernard Pass on the Italian-Swiss border. The hospice, built by and named after Italian monk Bernard of Menthon, acquired its first dogs between 1660 and 1670. The breed has become famous through tales of alpine rescues, as well as for its enormous size.",
107 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Hummel_Vedor_vd_Robandahoeve.jpg/320px-Hummel_Vedor_vd_Robandahoeve.jpg"
108 | });
109 | }
110 | }
111 | }
112 |
113 |
114 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Data/ElephantData.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Xaminals.Models;
3 |
4 | namespace Xaminals.Data
5 | {
6 | public static class ElephantData
7 | {
8 | public static IList Elephants { get; private set; }
9 |
10 | static ElephantData()
11 | {
12 | Elephants = new List();
13 |
14 | Elephants.Add(new Animal
15 | {
16 | Name = "African Bush Elephant",
17 | Location = "Africa",
18 | Details = "The African bush elephant, also known as the African savanna elephant, is the larger of the two species of African elephants, and the largest living terrestrial animal. These elephants were previously regarded as the same species, but the African forest elephant has been reclassified as L. cyclotis.",
19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/African_Elephant_%28Loxodonta_africana%29_bull_%2831100819046%29.jpg/320px-African_Elephant_%28Loxodonta_africana%29_bull_%2831100819046%29.jpg"
20 | });
21 |
22 | Elephants.Add(new Animal
23 | {
24 | Name = "African Forest Elephant",
25 | Location = "Africa",
26 | Details = "The African forest elephant is a forest-dwelling species of elephant found in the Congo Basin. It is the smallest of the three extant species of elephant, but still one of the largest living terrestrial animals. The African forest elephant and the African bush elephan were considered to be one species until genetic studies indicated that they separated an estimated 2–7 million years ago. From an estimated population size of over 2 million prior to the colonization of Africa, the population in 2015 is estimated to be about 100,000 forest elephants, mostly living in the forests of Gabon. Due to a slower birth rate, the forest elephant takes longer to recover from poaching, which caused its population to fall by 65% from 2002 to 2014.",
27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/6/6a/African_Forest_Elephant.jpg"
28 | });
29 |
30 | Elephants.Add(new Animal
31 | {
32 | Name = "Desert Elephant",
33 | Location = "Africa",
34 | Details = "Desert elephants, or desert-adapted elephants are not a distinct species of elephant but are African bush elephants that have made their homes in the Namib and Sahara deserts in Africa. It was believed at one time that they were a subspecies of the African bush elephant but this is no longer thought to be the case. Desert-dwelling elephants were once more widespread in Africa than they are now and are currently found only in Namibia and Mali. They tend to migrate from one waterhole to another following traditional routes which depend on the seasonal availability of food and water. They face pressure from poaching and from changes in land use by humans.",
35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Desert_elephants_in_the_Huab_River.jpg/320px-Desert_elephants_in_the_Huab_River.jpg"
36 | });
37 |
38 | Elephants.Add(new Animal
39 | {
40 | Name = "Borneo Elephant",
41 | Location = "Asia",
42 | Details = "The Borneo elephant, also called the Borneo pygmy elephant, is a subspecies of Asian elephant that inhabits northeastern Borneo, in Indonesia and Malaysia. Its origin remains the subject of debate. A definitive subspecific classification as Elephas maximus borneensis awaits a detailed range-wide morphometric and genetic study. Since 1986, Elephas maximus has been listed as Endangered on the IUCN Red List as the population has declined by at least 50% over the last three generations, estimated to be 60–75 years. The species is pre-eminently threatened by habitat loss, degradation and fragmentation.",
43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e4/Elephant_%40_kabini.jpg/180px-Elephant_%40_kabini.jpg"
44 | });
45 |
46 | Elephants.Add(new Animal
47 | {
48 | Name = "Indian Elephant",
49 | Location = "Asia",
50 | Details = "The Indian elephant is one of three extant recognized subspecies of the Asian elephant and native to mainland Asia. Since 1986, the Asian elephant has been listed as Endangered on the IUCN Red List as the wild population has declined by at least 50% since the 1930s to 1940s, i.e. three elephant generations. The Asian elephant is threatened by habitat loss, degradation and fragmentation.",
51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/98/Elephas_maximus_%28Bandipur%29.jpg/320px-Elephas_maximus_%28Bandipur%29.jpg"
52 | });
53 |
54 | Elephants.Add(new Animal
55 | {
56 | Name = "Sri Lankan Elephant",
57 | Location = "Asia",
58 | Details = "The Sri Lankan elephant is one of three recognized subspecies of the Asian elephant, and native to Sri Lanka. Since 1986, Elephas maximus has been listed as endangered by IUCN as the population has declined by at least 50% over the last three generations, estimated to be 60–75 years. The species is primarily threatened by habitat loss, degradation and fragmentation.",
59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Srilankan_tuskelephant.jpg/213px-Srilankan_tuskelephant.jpg"
60 | });
61 |
62 | Elephants.Add(new Animal
63 | {
64 | Name = "Sumatran Elephant",
65 | Location = "Asia",
66 | Details = "The Sumatran elephant is one of three recognized subspecies of the Asian elephant, and native to the Indonesia island of Sumatra. In 2011, the Sumatran elephant has been classified as critically endangered by IUCN as the population has declined by at least 80% over the last three generations, estimated to be about 75 years. The subspecies is pre-eminently threatened by habitat loss, degradation and fragmentation, and poaching; over 69% of potential elephant habitat has been lost within the last 25 years. Much of the remaining forest cover is in blocks smaller than 250 km2 (97 sq mi), which are too small to contain viable elephant populations.",
67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b6/Borobudur-Temple-Park_Elephant-cage-01.jpg/320px-Borobudur-Temple-Park_Elephant-cage-01.jpg"
68 | });
69 |
70 | Elephants.Add(new Animal
71 | {
72 | Name = "Pygmy Elephant",
73 | Location = "Africa & Asia",
74 | Details = "Pygmy elephants live in both Africa and Asia.The African pygmy elephant is currently considered to be a tiny morph of the African forest elephant. The Borneo elephant, a well-documented variety of elephant, is also calledmpygmy elephant. This elephant, inhabiting tropical rainforest in north Borneo (east Sabah and extreme north Kalimantan), was long thought to be identical to the Asian elephant and descended from a captive population. In 2003, DNA comparison revealed them to be probably a new subspecies.",
75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/9/93/Borneo-elephant-PLoS_Biology.jpg"
76 | });
77 |
78 | Elephants.Add(new Animal
79 | {
80 | Name = "Mammoth",
81 | Location = "Extinct",
82 | Details = "A mammoth is any species of the extinct genus Mammuthus, one of the many genera that make up the order of trunked mammals called proboscideans. The various species of mammoth were commonly equipped with long, curved tusks and, in northern species, a covering of long hair. They lived from the Pliocene epoch (from around 5 million years ago) into the Holocene at about 4,000 years ago, and various species existed in Africa, Europe, Asia, and North America. They were members of the family Elephantidae, which also contains the two genera of modern elephants and their ancestors.",
83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/62/Columbian_mammoth.JPG/320px-Columbian_mammoth.JPG"
84 | });
85 |
86 | Elephants.Add(new Animal
87 | {
88 | Name = "Mastodon",
89 | Location = "Extinct",
90 | Details = "Mastodons are any species of extinct proboscideans in the genus Mammut, distantly related to elephants, that inhabited North and Central America during the late Miocene or late Pliocene up to their extinction at the end of the Pleistocene 10,000 to 11,000 years ago. Mastodons lived in herds and were predominantly forest-dwelling animals that fed on a mixed diet obtained by browsing and grazing with a seasonal preference for browsing, similar to living elephants.",
91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/b/b0/Mammut_americanum.jpg/320px-Mammut_americanum.jpg"
92 | });
93 |
94 | Elephants.Add(new Animal
95 | {
96 | Name = "Dwarf Elephant",
97 | Location = "Extinct",
98 | Details = "Dwarf elephants are prehistoric members of the order Proboscidea which, through the process of allopatric speciation on islands, evolved much smaller body sizes (around 1.5-2.3 metres) in comparison with their immediate ancestors. Dwarf elephants are an example of insular dwarfism, the phenomenon whereby large terrestrial vertebrates (usually mammals) that colonize islands evolve dwarf forms, a phenomenon attributed to adaptation to resource-poor environments and selection for early maturation and reproduction. Some modern populations of Asian elephants have also undergone size reduction on islands to a lesser degree, resulting in populations of pygmy elephants.",
99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/Elephas_skeleton.JPG/320px-Elephas_skeleton.JPG"
100 | });
101 |
102 | Elephants.Add(new Animal
103 | {
104 | Name = "Pygmy Mammoth",
105 | Location = "Extinct",
106 | Details = "The pygmy mammoth or Channel Islands mammoth is an extinct species of dwarf elephant descended from the Columbian mammoth of mainland North America. This species became extinct during the Quaternary extinction event in which many megafauna species became extinct due to changing conditions to which the species could not adapt. A case of island or insular dwarfism, from a recent analysis in 2010 it was determined that M. exilis was on average, 1.72 m (5.6 ft) tall at the shoulders and 760 kg (1,680 lb) in weight, in stark contrast to its 4.3 m (14 ft) tall, 9,070 kg (20,000 lb) ancestor. Another estimate gives a shoulder height of 2.02 m (6.6 ft) and a weight of 1,350 kg (2,980 lb).",
107 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/f/f6/Mammuthus_exilis.jpg"
108 | });
109 | }
110 | }
111 | }
112 |
113 |
114 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Data/MonkeyData.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using Xaminals.Models;
3 |
4 | namespace Xaminals.Data
5 | {
6 | public static class MonkeyData
7 | {
8 | public static IList Monkeys { get; private set; }
9 |
10 | static MonkeyData()
11 | {
12 | Monkeys = new List();
13 |
14 | Monkeys.Add(new Animal
15 | {
16 | Name = "Baboon",
17 | Location = "Africa & Asia",
18 | Details = "Baboons are African and Arabian Old World monkeys belonging to the genus Papio, part of the subfamily Cercopithecinae.",
19 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Papio_anubis_%28Serengeti%2C_2009%29.jpg/200px-Papio_anubis_%28Serengeti%2C_2009%29.jpg"
20 | });
21 |
22 | Monkeys.Add(new Animal
23 | {
24 | Name = "Capuchin Monkey",
25 | Location = "Central & South America",
26 | Details = "The capuchin monkeys are New World monkeys of the subfamily Cebinae. Prior to 2011, the subfamily contained only a single genus, Cebus.",
27 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/4/40/Capuchin_Costa_Rica.jpg/200px-Capuchin_Costa_Rica.jpg"
28 | });
29 |
30 | Monkeys.Add(new Animal
31 | {
32 | Name = "Blue Monkey",
33 | Location = "Central and East Africa",
34 | Details = "The blue monkey or diademed monkey is a species of Old World monkey native to Central and East Africa, ranging from the upper Congo River basin east to the East African Rift and south to northern Angola and Zambia",
35 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/83/BlueMonkey.jpg/220px-BlueMonkey.jpg"
36 | });
37 |
38 | Monkeys.Add(new Animal
39 | {
40 | Name = "Squirrel Monkey",
41 | Location = "Central & South America",
42 | Details = "The squirrel monkeys are the New World monkeys of the genus Saimiri. They are the only genus in the subfamily Saimirinae. The name of the genus Saimiri is of Tupi origin, and was also used as an English name by early researchers.",
43 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Saimiri_sciureus-1_Luc_Viatour.jpg/220px-Saimiri_sciureus-1_Luc_Viatour.jpg"
44 | });
45 |
46 | Monkeys.Add(new Animal
47 | {
48 | Name = "Golden Lion Tamarin",
49 | Location = "Brazil",
50 | Details = "The golden lion tamarin also known as the golden marmoset, is a small New World monkey of the family Callitrichidae.",
51 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Golden_lion_tamarin_portrait3.jpg/220px-Golden_lion_tamarin_portrait3.jpg"
52 | });
53 |
54 | Monkeys.Add(new Animal
55 | {
56 | Name = "Howler Monkey",
57 | Location = "South America",
58 | Details = "Howler monkeys are among the largest of the New World monkeys. Fifteen species are currently recognised. Previously classified in the family Cebidae, they are now placed in the family Atelidae.",
59 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Alouatta_guariba.jpg/200px-Alouatta_guariba.jpg"
60 | });
61 |
62 | Monkeys.Add(new Animal
63 | {
64 | Name = "Japanese Macaque",
65 | Location = "Japan",
66 | Details = "The Japanese macaque, is a terrestrial Old World monkey species native to Japan. They are also sometimes known as the snow monkey because they live in areas where snow covers the ground for months each",
67 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Macaca_fuscata_fuscata1.jpg/220px-Macaca_fuscata_fuscata1.jpg"
68 | });
69 |
70 | Monkeys.Add(new Animal
71 | {
72 | Name = "Mandrill",
73 | Location = "Southern Cameroon, Gabon, Equatorial Guinea, and Congo",
74 | Details = "The mandrill is a primate of the Old World monkey family, closely related to the baboons and even more closely to the drill. It is found in southern Cameroon, Gabon, Equatorial Guinea, and Congo.",
75 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/Mandrill_at_san_francisco_zoo.jpg/220px-Mandrill_at_san_francisco_zoo.jpg"
76 | });
77 |
78 | Monkeys.Add(new Animal
79 | {
80 | Name = "Proboscis Monkey",
81 | Location = "Borneo",
82 | Details = "The proboscis monkey or long-nosed monkey, known as the bekantan in Malay, is a reddish-brown arboreal Old World monkey that is endemic to the south-east Asian island of Borneo.",
83 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/e/e5/Proboscis_Monkey_in_Borneo.jpg/250px-Proboscis_Monkey_in_Borneo.jpg"
84 | });
85 |
86 | Monkeys.Add(new Animal
87 | {
88 | Name = "Red-shanked Douc",
89 | Location = "Vietnam, Laos",
90 | Details = "The red-shanked douc is a species of Old World monkey, among the most colourful of all primates. This monkey is sometimes called the \"costumed ape\" for its extravagant appearance. From its knees to its ankles it sports maroon-red \"stockings\", and it appears to wear white forearm length gloves. Its attire is finished with black hands and feet. The golden face is framed by a white ruff, which is considerably fluffier in males. The eyelids are a soft powder blue. The tail is white with a triangle of white hair at the base. Males of all ages have a white spot on both sides of the corners of the rump patch, and red and white genitals.",
91 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9f/Portrait_of_a_Douc.jpg/159px-Portrait_of_a_Douc.jpg"
92 | });
93 |
94 | Monkeys.Add(new Animal
95 | {
96 | Name = "Gray-shanked Douc",
97 | Location = "Vietnam",
98 | Details = "The gray-shanked douc langur is a douc species native to the Vietnamese provinces of Quảng Nam, Quảng Ngãi, Bình Định, Kon Tum, and Gia Lai. The total population is estimated at 550 to 700 individuals. In 2016, Dr Benjamin Rawson, Country Director of Fauna & Flora International - Vietnam Programme, announced a discovery of an additional population of more than 500 individuals found in Central Vietnam, bringing the total population up to approximately 1000 individuals.",
99 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/0/0b/Cuc.Phuong.Primate.Rehab.center.jpg/320px-Cuc.Phuong.Primate.Rehab.center.jpg"
100 | });
101 |
102 | Monkeys.Add(new Animal
103 | {
104 | Name = "Golden Snub-nosed Monkey",
105 | Location = "China",
106 | Details = "The golden snub-nosed monkey is an Old World monkey in the Colobinae subfamily. It is endemic to a small area in temperate, mountainous forests of central and Southwest China. They inhabit these mountainous forests of Southwestern China at elevations of 1,500-3,400 m above sea level. The Chinese name is Sichuan golden hair monkey. It is also widely referred to as the Sichuan snub-nosed monkey. Of the three species of snub-nosed monkeys in China, the golden snub-nosed monkey is the most widely distributed throughout China.",
107 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Golden_Snub-nosed_Monkeys%2C_Qinling_Mountains_-_China.jpg/165px-Golden_Snub-nosed_Monkeys%2C_Qinling_Mountains_-_China.jpg"
108 | });
109 |
110 | Monkeys.Add(new Animal
111 | {
112 | Name = "Black Snub-nosed Monkey",
113 | Location = "China",
114 | Details = "The black snub-nosed monkey, also known as the Yunnan snub-nosed monkey, is an endangered species of primate in the family Cercopithecidae. It is endemic to China, where it is known to the locals as the Yunnan golden hair monkey and the black golden hair monkey. It is threatened by habitat loss. It was named after Bishop Félix Biet.",
115 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/5/59/RhinopitecusBieti.jpg/320px-RhinopitecusBieti.jpg"
116 | });
117 |
118 | Monkeys.Add(new Animal
119 | {
120 | Name = "Tonkin Snub-nosed Monkey",
121 | Location = "Vietnam",
122 | Details = "The Tonkin snub-nosed monkey or Dollman's snub-nosed monkey is a slender-bodied arboreal Old World monkey, endemic to northern Vietnam. It is a black and white monkey with a pink nose and lips and blue patches round the eyes. It is found at altitudes of 200 to 1,200 m (700 to 3,900 ft) on fragmentary patches of forest on craggy limestone areas. First described in 1912, the monkey was rediscovered in 1990 but is exceedingly rare. In 2008, fewer than 250 individuals were thought to exist, and the species was the subject of intense conservation effort. The main threats faced by these monkeys is habitat loss and hunting, and the International Union for Conservation of Nature has rated the species as \"critically endangered\".",
123 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Tonkin_snub-nosed_monkeys_%28Rhinopithecus_avunculus%29.jpg/320px-Tonkin_snub-nosed_monkeys_%28Rhinopithecus_avunculus%29.jpg"
124 | });
125 |
126 | Monkeys.Add(new Animal
127 | {
128 | Name = "Thomas's Langur",
129 | Location = "Indonesia",
130 | Details = "Thomas's langur is a species of primate in the family Cercopithecidae. It is endemic to North Sumatra, Indonesia. Its natural habitat is subtropical or tropical dry forests. It is threatened by habitat loss. Its native names are reungkah in Acehnese and kedih in Alas.",
131 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/3/31/Thomas%27s_langur_Presbytis_thomasi.jpg/142px-Thomas%27s_langur_Presbytis_thomasi.jpg"
132 | });
133 |
134 | Monkeys.Add(new Animal
135 | {
136 | Name = "Purple-faced Langur",
137 | Location = "Sri Lanka",
138 | Details = "The purple-faced langur, also known as the purple-faced leaf monkey, is a species of Old World monkey that is endemic to Sri Lanka. The animal is a long-tailed arboreal species, identified by a mostly brown appearance, dark face (with paler lower face) and a very shy nature. The species was once highly prevalent, found in suburban Colombo and the \"wet zone\" villages (areas with high temperatures and high humidity throughout the year, whilst rain deluges occur during the monsoon seasons), but rapid urbanization has led to a significant decrease in the population level of the monkeys.",
139 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Semnopithèque_blanchâtre_mâle.JPG/192px-Semnopithèque_blanchâtre_mâle.JPG"
140 | });
141 |
142 | Monkeys.Add(new Animal
143 | {
144 | Name = "Gelada",
145 | Location = "Ethiopia",
146 | Details = "The gelada, sometimes called the bleeding-heart monkey or the gelada baboon, is a species of Old World monkey found only in the Ethiopian Highlands, with large populations in the Semien Mountains. Theropithecus is derived from the Greek root words for \"beast-ape.\" Like its close relatives the baboons, it is largely terrestrial, spending much of its time foraging in grasslands.",
147 | ImageUrl = "https://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Gelada-Pavian.jpg/320px-Gelada-Pavian.jpg"
148 | });
149 | }
150 | }
151 | }
152 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Models/Animal.cs:
--------------------------------------------------------------------------------
1 | namespace Xaminals.Models
2 | {
3 | public class Animal
4 | {
5 | public string Name { get; set; }
6 | public string Location { get; set; }
7 | public string Details { get; set; }
8 | public string ImageUrl { get; set; }
9 |
10 | public override string ToString()
11 | {
12 | return Name;
13 | }
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/ViewModels/BearsViewModel.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.ObjectModel;
2 | using System.Linq;
3 | using System.Windows.Input;
4 | using Xamarin.Forms;
5 | using Xaminals.Data;
6 | using Xaminals.Models;
7 |
8 | namespace Xaminals.ViewModels
9 | {
10 | public class BearsViewModel
11 | {
12 | public ObservableCollection SearchResults { get; private set; }
13 |
14 | public ICommand SearchCommand => new Command(SearchItems);
15 |
16 | void SearchItems(string query)
17 | {
18 | if (string.IsNullOrWhiteSpace(query))
19 | {
20 | SearchResults = null;
21 | }
22 | else
23 | {
24 | var filteredItems = BearData.Bears
25 | .Where(bear => bear.Name.ToLower()
26 | .Contains(query.ToLower()))
27 | .ToList();
28 | SearchResults = new ObservableCollection(filteredItems);
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/ViewModels/MonkeyDetailViewModel.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.ComponentModel;
3 | using System.Linq;
4 | using System.Runtime.CompilerServices;
5 | using Xamarin.Forms;
6 | using Xaminals.Data;
7 | using Xaminals.Models;
8 |
9 | namespace Xaminals.ViewModels
10 | {
11 | [QueryProperty(nameof(MonkeyName), "name")]
12 | public class MonkeyDetailViewModel : INotifyPropertyChanged
13 | {
14 | public string MonkeyName
15 | {
16 | set
17 | {
18 | Animal monkey = MonkeyData.Monkeys.FirstOrDefault(m => m.Name == Uri.UnescapeDataString(value));
19 |
20 | if (monkey != null)
21 | {
22 | Name = monkey.Name;
23 | Location = monkey.Location;
24 | Details = monkey.Details;
25 | ImageUrl = monkey.ImageUrl;
26 | OnPropertyChanged(nameof(Name));
27 | OnPropertyChanged(nameof(Location));
28 | OnPropertyChanged(nameof(Details));
29 | OnPropertyChanged(nameof(ImageUrl));
30 | }
31 | }
32 | }
33 |
34 | public string Name { get; set; }
35 | public string Location { get; private set; }
36 | public string Details { get; private set; }
37 | public string ImageUrl { get; private set; }
38 |
39 | #region INotifyPropertyChanged
40 |
41 | public event PropertyChangedEventHandler PropertyChanged;
42 |
43 | void OnPropertyChanged([CallerMemberName] string propertyName = null)
44 | {
45 | PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
46 | }
47 |
48 | #endregion
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/AboutPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 | #96d1ff
8 | #999999
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
20 |
23 |
25 |
28 |
29 |
30 |
31 |
32 |
35 |
49 |
68 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/AboutPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Windows.Input;
2 | using Xamarin.Essentials;
3 | using Xamarin.Forms;
4 |
5 | namespace Xaminals.Views
6 | {
7 | public partial class AboutPage : ContentPage
8 | {
9 | public ICommand TapCommand => new Command(async (url) => await Launcher.OpenAsync(url));
10 |
11 | public AboutPage()
12 | {
13 | InitializeComponent();
14 | BindingContext = this;
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/BearDetailPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
11 |
14 |
18 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/BearDetailPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using Xamarin.Forms;
4 | using Xaminals.Data;
5 |
6 | namespace Xaminals.Views
7 | {
8 | [QueryProperty(nameof(Name), "name")]
9 | public partial class BearDetailPage : ContentPage
10 | {
11 | public string Name
12 | {
13 | set
14 | {
15 | BindingContext = BearData.Bears.FirstOrDefault(m => m.Name == Uri.UnescapeDataString(value));
16 | }
17 | }
18 |
19 | public BearDetailPage()
20 | {
21 | InitializeComponent();
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/BearsPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
25 |
26 |
27 |
28 |
33 |
34 |
35 |
44 |
45 |
50 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/BearsPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using Xamarin.Forms;
3 | using Xaminals.Models;
4 | using Xaminals.ViewModels;
5 |
6 | namespace Xaminals.Views
7 | {
8 | public partial class BearsPage : ContentPage
9 | {
10 | public BearsPage()
11 | {
12 | InitializeComponent();
13 | BindingContext = new BearsViewModel();
14 | }
15 |
16 | async void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
17 | {
18 | string bearName = (e.CurrentSelection.FirstOrDefault() as Animal).Name;
19 | // This works because route names are unique in this application.
20 | await Shell.Current.GoToAsync($"beardetails?name={bearName}");
21 | // The full route is shown below.
22 | // await Shell.Current.GoToAsync($"//animals/bears/beardetails?name={bearName}");
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/CatDetailPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
11 |
14 |
18 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/CatDetailPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using Xamarin.Forms;
4 | using Xaminals.Data;
5 |
6 | namespace Xaminals.Views
7 | {
8 | [QueryProperty(nameof(Name), "name")]
9 | public partial class CatDetailPage : ContentPage
10 | {
11 | public string Name
12 | {
13 | set
14 | {
15 | BindingContext = CatData.Cats.FirstOrDefault(m => m.Name == Uri.UnescapeDataString(value));
16 | }
17 | }
18 |
19 | public CatDetailPage()
20 | {
21 | InitializeComponent();
22 | }
23 |
24 | protected override bool OnBackButtonPressed()
25 | {
26 | return base.OnBackButtonPressed();
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/CatsPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
25 |
26 |
27 |
28 |
33 |
34 |
35 |
40 |
41 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/CatsPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using Xamarin.Forms;
3 | using Xaminals.Models;
4 |
5 | namespace Xaminals.Views
6 | {
7 | public partial class CatsPage : ContentPage
8 | {
9 | public CatsPage()
10 | {
11 | InitializeComponent();
12 | }
13 |
14 | async void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
15 | {
16 | string catName = (e.CurrentSelection.FirstOrDefault() as Animal).Name;
17 | // This works because route names are unique in this application.
18 | await Shell.Current.GoToAsync($"catdetails?name={catName}");
19 | // The full route is shown below.
20 | // await Shell.Current.GoToAsync($"//animals/domestic/cats/catdetails?name={catName}");
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/DogDetailPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
11 |
14 |
18 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/DogDetailPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using Xamarin.Forms;
4 | using Xaminals.Data;
5 |
6 | namespace Xaminals.Views
7 | {
8 | [QueryProperty(nameof(Name), "name")]
9 | public partial class DogDetailPage : ContentPage
10 | {
11 | public string Name
12 | {
13 | set
14 | {
15 | BindingContext = DogData.Dogs.FirstOrDefault(m => m.Name == Uri.UnescapeDataString(value));
16 | }
17 | }
18 |
19 | public DogDetailPage()
20 | {
21 | InitializeComponent();
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/DogsPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
25 |
26 |
27 |
28 |
33 |
34 |
35 |
40 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/DogsPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using Xamarin.Forms;
3 | using Xaminals.Models;
4 |
5 | namespace Xaminals.Views
6 | {
7 | public partial class DogsPage : ContentPage
8 | {
9 | public DogsPage()
10 | {
11 | InitializeComponent();
12 | }
13 |
14 | async void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
15 | {
16 | string dogName = (e.CurrentSelection.FirstOrDefault() as Animal).Name;
17 | // This works because route names are unique in this application.
18 | await Shell.Current.GoToAsync($"dogdetails?name={dogName}");
19 | // The full route is shown below.
20 | // await Shell.Current.GoToAsync($"//animals/domestic/dogs/dogdetails?name={dogName}");
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/ElephantDetailPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
11 |
14 |
18 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/ElephantDetailPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Linq;
3 | using Xamarin.Forms;
4 | using Xaminals.Data;
5 |
6 | namespace Xaminals.Views
7 | {
8 | [QueryProperty(nameof(Name), "name")]
9 | public partial class ElephantDetailPage : ContentPage
10 | {
11 | public string Name
12 | {
13 | set
14 | {
15 | BindingContext = ElephantData.Elephants.FirstOrDefault(m => m.Name == Uri.UnescapeDataString(value));
16 | }
17 | }
18 |
19 | public ElephantDetailPage()
20 | {
21 | InitializeComponent();
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/ElephantsPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
25 |
26 |
27 |
28 |
33 |
34 |
35 |
40 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/ElephantsPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using Xamarin.Forms;
3 | using Xaminals.Models;
4 |
5 | namespace Xaminals.Views
6 | {
7 | public partial class ElephantsPage : ContentPage
8 | {
9 | public ElephantsPage()
10 | {
11 | InitializeComponent();
12 | }
13 |
14 | async void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
15 | {
16 | string elephantName = (e.CurrentSelection.FirstOrDefault() as Animal).Name;
17 | // This works because route names are unique in this application.
18 | await Shell.Current.GoToAsync($"elephantdetails?name={elephantName}");
19 | // The full route is shown below.
20 | // await Shell.Current.GoToAsync($"//animals/elephants/elephantdetails?name={elephantName}");
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/MonkeyDetailPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
16 |
19 |
22 |
26 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/MonkeyDetailPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms;
2 | using Xaminals.ViewModels;
3 |
4 | namespace Xaminals.Views
5 | {
6 | public partial class MonkeyDetailPage : ContentPage
7 | {
8 | public MonkeyDetailPage()
9 | {
10 | InitializeComponent();
11 | BindingContext = new MonkeyDetailViewModel();
12 | }
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/MonkeysPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
24 |
25 |
26 |
27 |
30 |
31 |
32 |
37 |
38 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Views/MonkeysPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System.Linq;
2 | using Xamarin.Forms;
3 | using Xaminals.Models;
4 |
5 | namespace Xaminals.Views
6 | {
7 | public partial class MonkeysPage : ContentPage
8 | {
9 | public MonkeysPage()
10 | {
11 | InitializeComponent();
12 | }
13 |
14 | async void OnCollectionViewSelectionChanged(object sender, SelectionChangedEventArgs e)
15 | {
16 | string monkeyName = (e.CurrentSelection.FirstOrDefault() as Animal).Name;
17 | // This works because route names are unique in this application.
18 | await Shell.Current.GoToAsync($"monkeydetails?name={monkeyName}");
19 | // The full route is shown below.
20 | // await Shell.Current.GoToAsync($"//animals/monkeys/monkeydetails?name={monkeyName}");
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/sample/Xaminals/Xaminals/Xaminals.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 |
6 |
7 |
8 | pdbonly
9 | true
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/sample/Xaminals/ascii.cfg:
--------------------------------------------------------------------------------
1 | Obfuscate All
2 |
3 | UseASCII true
4 |
5 | #already used in the VisualElement class.
6 | Reserve X,Y
7 |
8 | keep method:name *.InitializeComponent
9 |
10 | #Xamarin Android
11 | keep type *.Droid.Resource
12 | keep type *.Droid.Resource.*
13 |
14 | #Xamarin IOS
15 | keep method:name *.Main
16 |
--------------------------------------------------------------------------------
/sample/Xaminals/cso.cfg:
--------------------------------------------------------------------------------
1 | Obfuscate All
2 |
3 | #Used as the name of an XML element/attribute, which symbol characters are not allowed
4 | ASCII FlyoutFooter,FlyoutHeader,SelectedItemNavigationTarget,Animals,AnimalSearchHandler,MonkeySearchHandler
5 |
6 | keep method:name *.InitializeComponent
7 |
8 | #Xamarin Android
9 | keep type *.Droid.Resource
10 | keep type *.Droid.Resource.*
11 |
12 | #Xamarin IOS
13 | keep method:name *.Main
14 |
--------------------------------------------------------------------------------