diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e593b8b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,173 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.sln.docstates
+*.userprefs
+
+# Xamarin Components
+Components/
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+x64/
+build/
+bld/
+[Bb]in/
+[Oo]bj/
+[Pp]ackages/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+#NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+*.cachefile
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding addin-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+*.ncrunch*
+_NCrunch_*
+.*crunch*.local.xml
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+*.pubxml
+PublishProfiles/
+
+# Windows Azure Build Output
+csx/
+*.build.csdef
+
+# Windows Store app package directory
+AppPackages/
+
+# Others
+sql/
+*.Cache
+ClientBin/
+[Ss]tyle[Cc]op.*
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.pfx
+*.publishsettings
+node_modules/
+.DS_Store
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file to a newer
+# Visual Studio version. Backup files are not needed, because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
diff --git a/MonkeyApp.sln b/MonkeyApp.sln
new file mode 100644
index 0000000..dedf4e3
--- /dev/null
+++ b/MonkeyApp.sln
@@ -0,0 +1,230 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.23107.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonkeyApp.iOS", "MonkeyApp\MonkeyApp.iOS\MonkeyApp.iOS.csproj", "{B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonkeyApp.Droid", "MonkeyApp\MonkeyApp.Droid\MonkeyApp.Droid.csproj", "{CAD93516-4664-4F5A-BA36-3A17D215DFDE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonkeyApp.WinPhone", "MonkeyApp\MonkeyApp.WinPhone\MonkeyApp.WinPhone.csproj", "{CB7A7114-4E65-458A-A230-09FA921DACC9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MonkeyApp", "MonkeyApp\MonkeyApp\MonkeyApp.csproj", "{6A88882F-8257-4429-8DCA-7761FCD8804C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
+ Ad-Hoc|ARM = Ad-Hoc|ARM
+ Ad-Hoc|iPhone = Ad-Hoc|iPhone
+ Ad-Hoc|iPhoneSimulator = Ad-Hoc|iPhoneSimulator
+ Ad-Hoc|x86 = Ad-Hoc|x86
+ AppStore|Any CPU = AppStore|Any CPU
+ AppStore|ARM = AppStore|ARM
+ AppStore|iPhone = AppStore|iPhone
+ AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
+ AppStore|x86 = AppStore|x86
+ Debug|Any CPU = Debug|Any CPU
+ Debug|ARM = Debug|ARM
+ Debug|iPhone = Debug|iPhone
+ Debug|iPhoneSimulator = Debug|iPhoneSimulator
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|ARM = Release|ARM
+ Release|iPhone = Release|iPhone
+ Release|iPhoneSimulator = Release|iPhoneSimulator
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.AppStore|ARM.ActiveCfg = AppStore|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.AppStore|iPhone.Build.0 = AppStore|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.AppStore|x86.ActiveCfg = AppStore|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Debug|Any CPU.ActiveCfg = Debug|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Debug|ARM.ActiveCfg = Debug|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Debug|iPhone.ActiveCfg = Debug|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Debug|iPhone.Build.0 = Debug|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Debug|x86.ActiveCfg = Debug|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Release|Any CPU.ActiveCfg = Release|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Release|ARM.ActiveCfg = Release|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Release|iPhone.ActiveCfg = Release|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Release|iPhone.Build.0 = Release|iPhone
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}.Release|x86.ActiveCfg = Release|iPhone
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|ARM.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|x86.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Ad-Hoc|x86.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|Any CPU.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|ARM.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|ARM.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|iPhone.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|iPhone.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|x86.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|x86.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.AppStore|x86.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|ARM.Build.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|ARM.Deploy.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|iPhone.Deploy.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|x86.Build.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Debug|x86.Deploy.0 = Debug|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|ARM.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|ARM.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|ARM.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|iPhone.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|iPhone.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|x86.ActiveCfg = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|x86.Build.0 = Release|Any CPU
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}.Release|x86.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|Any CPU.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|ARM.ActiveCfg = Release|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|ARM.Build.0 = Release|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|ARM.Deploy.0 = Release|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|iPhone.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|iPhoneSimulator.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|x86.ActiveCfg = Release|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|x86.Build.0 = Release|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Ad-Hoc|x86.Deploy.0 = Release|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|Any CPU.Build.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|Any CPU.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|ARM.ActiveCfg = Release|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|ARM.Build.0 = Release|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|ARM.Deploy.0 = Release|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|iPhone.Build.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|iPhone.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|iPhoneSimulator.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|x86.ActiveCfg = Release|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|x86.Build.0 = Release|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.AppStore|x86.Deploy.0 = Release|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|ARM.ActiveCfg = Debug|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|ARM.Build.0 = Debug|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|ARM.Deploy.0 = Debug|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|iPhone.Deploy.0 = Debug|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|x86.ActiveCfg = Debug|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|x86.Build.0 = Debug|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Debug|x86.Deploy.0 = Debug|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|Any CPU.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|ARM.ActiveCfg = Release|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|ARM.Build.0 = Release|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|ARM.Deploy.0 = Release|ARM
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|iPhone.Build.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|iPhone.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|x86.ActiveCfg = Release|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|x86.Build.0 = Release|x86
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}.Release|x86.Deploy.0 = Release|x86
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|ARM.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|ARM.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|x86.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Ad-Hoc|x86.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|Any CPU.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|ARM.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|ARM.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|iPhone.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|iPhone.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|x86.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.AppStore|x86.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|ARM.Build.0 = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|iPhone.ActiveCfg = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|iPhone.Build.0 = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Debug|x86.Build.0 = Debug|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|ARM.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|ARM.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|iPhone.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|iPhone.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|x86.ActiveCfg = Release|Any CPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/MonkeyApp/MonkeyApp.Droid/Assets/AboutAssets.txt b/MonkeyApp/MonkeyApp.Droid/Assets/AboutAssets.txt
new file mode 100644
index 0000000..5ddf087
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.Droid/Assets/AboutAssets.txt
@@ -0,0 +1,19 @@
+Any raw assets you want to be deployed with your application can be placed in
+this directory (and child directories) and given a Build Action of "AndroidAsset".
+
+These files will be deployed with you package and will be accessible using Android's
+AssetManager, like this:
+
+public class ReadAsset : Activity
+{
+ protected override void OnCreate (Bundle bundle)
+ {
+ base.OnCreate (bundle);
+
+ InputStream input = Assets.Open ("my_asset.txt");
+ }
+}
+
+Additionally, some Android functions will automatically load asset files:
+
+Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
diff --git a/MonkeyApp/MonkeyApp.Droid/MainActivity.cs b/MonkeyApp/MonkeyApp.Droid/MainActivity.cs
new file mode 100644
index 0000000..8cbc3c3
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.Droid/MainActivity.cs
@@ -0,0 +1,24 @@
+using System;
+
+using Android.App;
+using Android.Content.PM;
+using Android.Runtime;
+using Android.Views;
+using Android.Widget;
+using Android.OS;
+
+namespace MonkeyApp.Droid
+{
+ [Activity(Label = "MonkeyApp", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
+ public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
+ {
+ protected override void OnCreate(Bundle bundle)
+ {
+ base.OnCreate(bundle);
+
+ global::Xamarin.Forms.Forms.Init(this, bundle);
+ LoadApplication(new App());
+ }
+ }
+}
+
diff --git a/MonkeyApp/MonkeyApp.Droid/MonkeyApp.Droid.csproj b/MonkeyApp/MonkeyApp.Droid/MonkeyApp.Droid.csproj
new file mode 100644
index 0000000..c409291
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.Droid/MonkeyApp.Droid.csproj
@@ -0,0 +1,133 @@
+
+
+
+ Debug
+ AnyCPU
+ 8.0.30703
+ 2.0
+ {CAD93516-4664-4F5A-BA36-3A17D215DFDE}
+ {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Library
+ Properties
+ MonkeyApp.Droid
+ MonkeyApp.Droid
+ 512
+ true
+ Resources\Resource.Designer.cs
+ Off
+ Properties\AndroidManifest.xml
+ true
+ v6.0
+ armeabi,armeabi-v7a,x86
+
+
+
+
+
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ True
+ None
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ False
+ SdkOnly
+
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\MonoAndroid10\FormsViewGroup.dll
+ True
+
+
+
+
+ ..\..\packages\Newtonsoft.Json.7.0.1\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll
+ True
+
+
+
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\monoandroid\System.Net.Http.Extensions.dll
+ True
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\monoandroid\System.Net.Http.Primitives.dll
+ True
+
+
+
+
+ ..\..\packages\Xamarin.Android.Support.v4.21.0.3.0\lib\MonoAndroid10\Xamarin.Android.Support.v4.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\MonoAndroid10\Xamarin.Forms.Core.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\MonoAndroid10\Xamarin.Forms.Platform.Android.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\MonoAndroid10\Xamarin.Forms.Xaml.dll
+ True
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MonkeyApp
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp.Droid/Properties/AndroidManifest.xml b/MonkeyApp/MonkeyApp.Droid/Properties/AndroidManifest.xml
new file mode 100644
index 0000000..1b619fc
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.Droid/Properties/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/MonkeyApp/MonkeyApp.Droid/Properties/AssemblyInfo.cs b/MonkeyApp/MonkeyApp.Droid/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4ef6fe2
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.Droid/Properties/AssemblyInfo.cs
@@ -0,0 +1,34 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using Android.App;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MonkeyApp.Droid")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MonkeyApp.Droid")]
+[assembly: AssemblyCopyright("Copyright © 2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: ComVisible(false)]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+
+// Add some common permissions, these can be removed if not needed
+[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
+[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
diff --git a/MonkeyApp/MonkeyApp.Droid/Resources/AboutResources.txt b/MonkeyApp/MonkeyApp.Droid/Resources/AboutResources.txt
new file mode 100644
index 0000000..cb30f20
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.Droid/Resources/AboutResources.txt
@@ -0,0 +1,50 @@
+Images, layout descriptions, binary blobs and string dictionaries can be included
+in your application as resource files. Various Android APIs are designed to
+operate on the resource IDs instead of dealing with images, strings or binary blobs
+directly.
+
+For example, a sample Android app that contains a user interface layout (main.xml),
+an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
+would keep its resources in the "Resources" directory of the application:
+
+Resources/
+ drawable-hdpi/
+ icon.png
+
+ drawable-ldpi/
+ icon.png
+
+ drawable-mdpi/
+ icon.png
+
+ layout/
+ main.xml
+
+ values/
+ strings.xml
+
+In order to get the build system to recognize Android resources, set the build action to
+"AndroidResource". The native Android APIs do not operate directly with filenames, but
+instead operate on resource IDs. When you compile an Android application that uses resources,
+the build system will package the resources for distribution and generate a class called
+"Resource" that contains the tokens for each one of the resources included. For example,
+for the above Resources layout, this is what the Resource class would expose:
+
+public class Resource {
+ public class drawable {
+ public const int icon = 0x123;
+ }
+
+ public class layout {
+ public const int main = 0x456;
+ }
+
+ public class strings {
+ public const int first_string = 0xabc;
+ public const int second_string = 0xbcd;
+ }
+}
+
+You would then use R.drawable.icon to reference the drawable/icon.png file, or Resource.layout.main
+to reference the layout/main.xml file, or Resource.strings.first_string to reference the first
+string in the dictionary file values/strings.xml.
diff --git a/MonkeyApp/MonkeyApp.Droid/Resources/Resource.Designer.cs b/MonkeyApp/MonkeyApp.Droid/Resources/Resource.Designer.cs
new file mode 100644
index 0000000..15d9aca
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.Droid/Resources/Resource.Designer.cs
@@ -0,0 +1,61 @@
+#pragma warning disable 1591
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+[assembly: global::Android.Runtime.ResourceDesignerAttribute("MonkeyApp.Droid.Resource", IsApplication=true)]
+
+namespace MonkeyApp.Droid
+{
+
+
+ [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
+ public partial class Resource
+ {
+
+ static Resource()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ public static void UpdateIdValues()
+ {
+ }
+
+ public partial class Attribute
+ {
+
+ static Attribute()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Attribute()
+ {
+ }
+ }
+
+ public partial class Drawable
+ {
+
+ // aapt resource value: 0x7f020000
+ public const int icon = 2130837504;
+
+ static Drawable()
+ {
+ global::Android.Runtime.ResourceIdManager.UpdateIdValues();
+ }
+
+ private Drawable()
+ {
+ }
+ }
+ }
+}
+#pragma warning restore 1591
diff --git a/MonkeyApp/MonkeyApp.Droid/Resources/drawable-hdpi/icon.png b/MonkeyApp/MonkeyApp.Droid/Resources/drawable-hdpi/icon.png
new file mode 100644
index 0000000..964f110
Binary files /dev/null and b/MonkeyApp/MonkeyApp.Droid/Resources/drawable-hdpi/icon.png differ
diff --git a/MonkeyApp/MonkeyApp.Droid/Resources/drawable-xhdpi/icon.png b/MonkeyApp/MonkeyApp.Droid/Resources/drawable-xhdpi/icon.png
new file mode 100644
index 0000000..3c01e60
Binary files /dev/null and b/MonkeyApp/MonkeyApp.Droid/Resources/drawable-xhdpi/icon.png differ
diff --git a/MonkeyApp/MonkeyApp.Droid/Resources/drawable-xxhdpi/icon.png b/MonkeyApp/MonkeyApp.Droid/Resources/drawable-xxhdpi/icon.png
new file mode 100644
index 0000000..0d8c1c5
Binary files /dev/null and b/MonkeyApp/MonkeyApp.Droid/Resources/drawable-xxhdpi/icon.png differ
diff --git a/MonkeyApp/MonkeyApp.Droid/Resources/drawable/icon.png b/MonkeyApp/MonkeyApp.Droid/Resources/drawable/icon.png
new file mode 100644
index 0000000..b0ba715
Binary files /dev/null and b/MonkeyApp/MonkeyApp.Droid/Resources/drawable/icon.png differ
diff --git a/MonkeyApp/MonkeyApp.Droid/app.config b/MonkeyApp/MonkeyApp.Droid/app.config
new file mode 100644
index 0000000..ececa7d
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.Droid/app.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp.Droid/packages.config b/MonkeyApp/MonkeyApp.Droid/packages.config
new file mode 100644
index 0000000..62e7e6a
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.Droid/packages.config
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp.WinPhone/App.xaml b/MonkeyApp/MonkeyApp.WinPhone/App.xaml
new file mode 100644
index 0000000..6fd6ace
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/App.xaml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MonkeyApp/MonkeyApp.WinPhone/App.xaml.cs b/MonkeyApp/MonkeyApp.WinPhone/App.xaml.cs
new file mode 100644
index 0000000..195f724
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/App.xaml.cs
@@ -0,0 +1,223 @@
+using System;
+using System.Diagnostics;
+using System.Resources;
+using System.Windows;
+using System.Windows.Markup;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+using MonkeyApp.WinPhone.Resources;
+
+namespace MonkeyApp.WinPhone
+{
+ public partial class App : Application
+ {
+ ///
+ /// Provides easy access to the root frame of the Phone Application.
+ ///
+ /// The root frame of the Phone Application.
+ public static PhoneApplicationFrame RootFrame { get; private set; }
+
+ ///
+ /// Constructor for the Application object.
+ ///
+ public App()
+ {
+ // Global handler for uncaught exceptions.
+ UnhandledException += Application_UnhandledException;
+
+ // Standard XAML initialization
+ InitializeComponent();
+
+ // Phone-specific initialization
+ InitializePhoneApplication();
+
+ // Language display initialization
+ InitializeLanguage();
+
+ // Show graphics profiling information while debugging.
+ if (Debugger.IsAttached)
+ {
+ // Display the current frame rate counters.
+ Application.Current.Host.Settings.EnableFrameRateCounter = true;
+
+ // Show the areas of the app that are being redrawn in each frame.
+ //Application.Current.Host.Settings.EnableRedrawRegions = true;
+
+ // Enable non-production analysis visualization mode,
+ // which shows areas of a page that are handed off to GPU with a colored overlay.
+ //Application.Current.Host.Settings.EnableCacheVisualization = true;
+
+ // Prevent the screen from turning off while under the debugger by disabling
+ // the application's idle detection.
+ // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
+ // and consume battery power when the user is not using the phone.
+ PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
+ }
+
+ }
+
+ // Code to execute when the application is launching (eg, from Start)
+ // This code will not execute when the application is reactivated
+ private void Application_Launching(object sender, LaunchingEventArgs e)
+ {
+ }
+
+ // Code to execute when the application is activated (brought to foreground)
+ // This code will not execute when the application is first launched
+ private void Application_Activated(object sender, ActivatedEventArgs e)
+ {
+ }
+
+ // Code to execute when the application is deactivated (sent to background)
+ // This code will not execute when the application is closing
+ private void Application_Deactivated(object sender, DeactivatedEventArgs e)
+ {
+ }
+
+ // Code to execute when the application is closing (eg, user hit Back)
+ // This code will not execute when the application is deactivated
+ private void Application_Closing(object sender, ClosingEventArgs e)
+ {
+ }
+
+ // Code to execute if a navigation fails
+ private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
+ {
+ if (Debugger.IsAttached)
+ {
+ // A navigation has failed; break into the debugger
+ Debugger.Break();
+ }
+ }
+
+ // Code to execute on Unhandled Exceptions
+ private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
+ {
+ if (Debugger.IsAttached)
+ {
+ // An unhandled exception has occurred; break into the debugger
+ Debugger.Break();
+ }
+ }
+
+ #region Phone application initialization
+
+ // Avoid double-initialization
+ private bool phoneApplicationInitialized = false;
+
+ // Do not add any additional code to this method
+ private void InitializePhoneApplication()
+ {
+ if (phoneApplicationInitialized)
+ return;
+
+ // Create the frame but don't set it as RootVisual yet; this allows the splash
+ // screen to remain active until the application is ready to render.
+ RootFrame = new PhoneApplicationFrame();
+ RootFrame.Navigated += CompleteInitializePhoneApplication;
+
+ // Handle navigation failures
+ RootFrame.NavigationFailed += RootFrame_NavigationFailed;
+
+ // Handle reset requests for clearing the backstack
+ RootFrame.Navigated += CheckForResetNavigation;
+
+ // Ensure we don't initialize again
+ phoneApplicationInitialized = true;
+ }
+
+ // Do not add any additional code to this method
+ private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
+ {
+ // Set the root visual to allow the application to render
+ if (RootVisual != RootFrame)
+ RootVisual = RootFrame;
+
+ // Remove this handler since it is no longer needed
+ RootFrame.Navigated -= CompleteInitializePhoneApplication;
+ }
+
+ private void CheckForResetNavigation(object sender, NavigationEventArgs e)
+ {
+ // If the app has received a 'reset' navigation, then we need to check
+ // on the next navigation to see if the page stack should be reset
+ if (e.NavigationMode == NavigationMode.Reset)
+ RootFrame.Navigated += ClearBackStackAfterReset;
+ }
+
+ private void ClearBackStackAfterReset(object sender, NavigationEventArgs e)
+ {
+ // Unregister the event so it doesn't get called again
+ RootFrame.Navigated -= ClearBackStackAfterReset;
+
+ // Only clear the stack for 'new' (forward) and 'refresh' navigations
+ if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh)
+ return;
+
+ // For UI consistency, clear the entire page stack
+ while (RootFrame.RemoveBackEntry() != null)
+ {
+ ; // do nothing
+ }
+ }
+
+ #endregion
+
+ // Initialize the app's font and flow direction as defined in its localized resource strings.
+ //
+ // To ensure that the font of your application is aligned with its supported languages and that the
+ // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage
+ // and ResourceFlowDirection should be initialized in each resx file to match these values with that
+ // file's culture. For example:
+ //
+ // AppResources.es-ES.resx
+ // ResourceLanguage's value should be "es-ES"
+ // ResourceFlowDirection's value should be "LeftToRight"
+ //
+ // AppResources.ar-SA.resx
+ // ResourceLanguage's value should be "ar-SA"
+ // ResourceFlowDirection's value should be "RightToLeft"
+ //
+ // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072.
+ //
+ private void InitializeLanguage()
+ {
+ try
+ {
+ // Set the font to match the display language defined by the
+ // ResourceLanguage resource string for each supported language.
+ //
+ // Fall back to the font of the neutral language if the Display
+ // language of the phone is not supported.
+ //
+ // If a compiler error is hit then ResourceLanguage is missing from
+ // the resource file.
+ RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage);
+
+ // Set the FlowDirection of all elements under the root frame based
+ // on the ResourceFlowDirection resource string for each
+ // supported language.
+ //
+ // If a compiler error is hit then ResourceFlowDirection is missing from
+ // the resource file.
+ FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection);
+ RootFrame.FlowDirection = flow;
+ }
+ catch
+ {
+ // If an exception is caught here it is most likely due to either
+ // ResourceLangauge not being correctly set to a supported language
+ // code or ResourceFlowDirection is set to a value other than LeftToRight
+ // or RightToLeft.
+
+ if (Debugger.IsAttached)
+ {
+ Debugger.Break();
+ }
+
+ throw;
+ }
+ }
+ }
+}
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Assets/AlignmentGrid.png b/MonkeyApp/MonkeyApp.WinPhone/Assets/AlignmentGrid.png
new file mode 100644
index 0000000..f7d2e97
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Assets/AlignmentGrid.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Assets/ApplicationIcon.png b/MonkeyApp/MonkeyApp.WinPhone/Assets/ApplicationIcon.png
new file mode 100644
index 0000000..d2b5c95
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Assets/ApplicationIcon.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/FlipCycleTileLarge.png b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/FlipCycleTileLarge.png
new file mode 100644
index 0000000..8856d9a
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/FlipCycleTileLarge.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/FlipCycleTileMedium.png b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/FlipCycleTileMedium.png
new file mode 100644
index 0000000..baab003
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/FlipCycleTileMedium.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/FlipCycleTileSmall.png b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/FlipCycleTileSmall.png
new file mode 100644
index 0000000..d44d803
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/FlipCycleTileSmall.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/IconicTileMediumLarge.png b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/IconicTileMediumLarge.png
new file mode 100644
index 0000000..2c90438
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/IconicTileMediumLarge.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/IconicTileSmall.png b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/IconicTileSmall.png
new file mode 100644
index 0000000..76d82e0
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Assets/Tiles/IconicTileSmall.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/LocalizedStrings.cs b/MonkeyApp/MonkeyApp.WinPhone/LocalizedStrings.cs
new file mode 100644
index 0000000..cd3d636
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/LocalizedStrings.cs
@@ -0,0 +1,14 @@
+using MonkeyApp.WinPhone.Resources;
+
+namespace MonkeyApp.WinPhone
+{
+ ///
+ /// Provides access to string resources.
+ ///
+ public class LocalizedStrings
+ {
+ private static AppResources _localizedResources = new AppResources();
+
+ public AppResources LocalizedResources { get { return _localizedResources; } }
+ }
+}
diff --git a/MonkeyApp/MonkeyApp.WinPhone/MainPage.xaml b/MonkeyApp/MonkeyApp.WinPhone/MainPage.xaml
new file mode 100644
index 0000000..7c72bb9
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/MainPage.xaml
@@ -0,0 +1,16 @@
+
+
diff --git a/MonkeyApp/MonkeyApp.WinPhone/MainPage.xaml.cs b/MonkeyApp/MonkeyApp.WinPhone/MainPage.xaml.cs
new file mode 100644
index 0000000..03e73cc
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/MainPage.xaml.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Navigation;
+using Microsoft.Phone.Controls;
+using Microsoft.Phone.Shell;
+
+namespace MonkeyApp.WinPhone
+{
+ public partial class MainPage : global::Xamarin.Forms.Platform.WinPhone.FormsApplicationPage
+ {
+ public MainPage()
+ {
+ InitializeComponent();
+ SupportedOrientations = SupportedPageOrientation.PortraitOrLandscape;
+
+ global::Xamarin.Forms.Forms.Init();
+ LoadApplication(new MonkeyApp.App());
+ }
+ }
+}
diff --git a/MonkeyApp/MonkeyApp.WinPhone/MonkeyApp.WinPhone.csproj b/MonkeyApp/MonkeyApp.WinPhone/MonkeyApp.WinPhone.csproj
new file mode 100644
index 0000000..b427cc5
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/MonkeyApp.WinPhone.csproj
@@ -0,0 +1,220 @@
+
+
+
+ Debug
+ AnyCPU
+ 10.0.20506
+ 2.0
+ {CB7A7114-4E65-458A-A230-09FA921DACC9}
+ {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
+ Library
+ Properties
+ MonkeyApp.WinPhone
+ MonkeyApp.WinPhone
+ WindowsPhone
+ v8.0
+ $(TargetFrameworkVersion)
+ true
+
+
+ true
+ true
+ PhoneApp1_$(Configuration)_$(Platform).xap
+ Properties\AppManifest.xml
+ MonkeyApp.WinPhone.App
+ true
+ 11.0
+ true
+
+
+
+
+ true
+ full
+ false
+ Bin\Debug
+ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ Bin\Release
+ TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ true
+ full
+ false
+ Bin\x86\Debug
+ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ Bin\x86\Release
+ TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ true
+ full
+ false
+ Bin\ARM\Debug
+ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ Bin\ARM\Release
+ TRACE;SILVERLIGHT;WINDOWS_PHONE
+ true
+ true
+ prompt
+ 4
+
+
+
+ App.xaml
+
+
+
+ MainPage.xaml
+
+
+
+ True
+ True
+ AppResources.resx
+
+
+
+
+ Designer
+ MSBuild:Compile
+
+
+ Designer
+ MSBuild:Compile
+
+
+
+
+
+
+ Designer
+
+
+
+
+
+ PreserveNewest
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+ PublicResXFileCodeGenerator
+ AppResources.Designer.cs
+
+
+
+
+ MonkeyApp
+
+
+
+
+ ..\..\packages\WPtoolkit.4.2013.08.16\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll
+ True
+
+
+ ..\..\packages\Newtonsoft.Json.7.0.1\lib\portable-net45+wp80+win8+wpa81+dnxcore50\Newtonsoft.Json.dll
+ True
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\sl4-windowsphone71\System.Net.Http.dll
+ True
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\sl4-windowsphone71\System.Net.Http.Extensions.dll
+ True
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\sl4-windowsphone71\System.Net.Http.Primitives.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\WP80\Xamarin.Forms.Core.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\WP80\Xamarin.Forms.Platform.WP8.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\WP80\Xamarin.Forms.Xaml.dll
+ True
+
+
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Properties/AppManifest.xml b/MonkeyApp/MonkeyApp.WinPhone/Properties/AppManifest.xml
new file mode 100644
index 0000000..6712a11
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/Properties/AppManifest.xml
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Properties/AssemblyInfo.cs b/MonkeyApp/MonkeyApp.WinPhone/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..f3017a7
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/Properties/AssemblyInfo.cs
@@ -0,0 +1,37 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Resources;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MonkeyApp.WinPhone")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MonkeyApp.WinPhone")]
+[assembly: AssemblyCopyright("Copyright © 2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("65077432-0c92-466b-b68d-911a8ec84f1d")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: NeutralResourcesLanguageAttribute("en-US")]
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Properties/WMAppManifest.xml b/MonkeyApp/MonkeyApp.WinPhone/Properties/WMAppManifest.xml
new file mode 100644
index 0000000..a137a34
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/Properties/WMAppManifest.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ Assets\ApplicationIcon.png
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Assets\Tiles\FlipCycleTileSmall.png
+ 0
+ Assets\Tiles\FlipCycleTileMedium.png
+ MonkeyApp.WinPhone
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MonkeyApp/MonkeyApp.WinPhone/README_FIRST.txt b/MonkeyApp/MonkeyApp.WinPhone/README_FIRST.txt
new file mode 100644
index 0000000..ce40c01
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/README_FIRST.txt
@@ -0,0 +1,3 @@
+For the Windows Phone toolkit make sure that you have
+marked the icons in the "Toolkit.Content" folder as content. That way they
+can be used as the icons for the ApplicationBar control.
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Resources/AppResources.Designer.cs b/MonkeyApp/MonkeyApp.WinPhone/Resources/AppResources.Designer.cs
new file mode 100644
index 0000000..4b1a528
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/Resources/AppResources.Designer.cs
@@ -0,0 +1,127 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.17626
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace MonkeyApp.WinPhone.Resources
+{
+ using System;
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ public class AppResources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal AppResources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if (object.ReferenceEquals(resourceMan, null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MonkeyApp.WinPhone.Resources.AppResources", typeof(AppResources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ public static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to LeftToRight.
+ ///
+ public static string ResourceFlowDirection
+ {
+ get
+ {
+ return ResourceManager.GetString("ResourceFlowDirection", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to us-EN.
+ ///
+ public static string ResourceLanguage
+ {
+ get
+ {
+ return ResourceManager.GetString("ResourceLanguage", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to MY APPLICATION.
+ ///
+ public static string ApplicationTitle
+ {
+ get
+ {
+ return ResourceManager.GetString("ApplicationTitle", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to button.
+ ///
+ public static string AppBarButtonText
+ {
+ get
+ {
+ return ResourceManager.GetString("AppBarButtonText", resourceCulture);
+ }
+ }
+
+ ///
+ /// Looks up a localized string similar to menu item.
+ ///
+ public static string AppBarMenuItemText
+ {
+ get
+ {
+ return ResourceManager.GetString("AppBarMenuItemText", resourceCulture);
+ }
+ }
+ }
+}
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Resources/AppResources.resx b/MonkeyApp/MonkeyApp.WinPhone/Resources/AppResources.resx
new file mode 100644
index 0000000..569bf52
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/Resources/AppResources.resx
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ LeftToRight
+ Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language
+
+
+ en-US
+ Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language.
+
+
+ MY APPLICATION
+
+
+ add
+
+
+ Menu Item
+
+
diff --git a/MonkeyApp/MonkeyApp.WinPhone/SplashScreenImage.jpg b/MonkeyApp/MonkeyApp.WinPhone/SplashScreenImage.jpg
new file mode 100644
index 0000000..666f7c5
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/SplashScreenImage.jpg differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Add.png b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Add.png
new file mode 100644
index 0000000..4b524d6
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Add.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png
new file mode 100644
index 0000000..4dd724f
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Cancel.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Check.png b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Check.png
new file mode 100644
index 0000000..7a07466
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Check.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Delete.png b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Delete.png
new file mode 100644
index 0000000..95bb16d
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Delete.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Select.png b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Select.png
new file mode 100644
index 0000000..995deaa
Binary files /dev/null and b/MonkeyApp/MonkeyApp.WinPhone/Toolkit.Content/ApplicationBar.Select.png differ
diff --git a/MonkeyApp/MonkeyApp.WinPhone/packages.config b/MonkeyApp/MonkeyApp.WinPhone/packages.config
new file mode 100644
index 0000000..b65f298
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.WinPhone/packages.config
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp.iOS/AppDelegate.cs b/MonkeyApp/MonkeyApp.iOS/AppDelegate.cs
new file mode 100644
index 0000000..850fb64
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.iOS/AppDelegate.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using Foundation;
+using UIKit;
+
+namespace MonkeyApp.iOS
+{
+ // The UIApplicationDelegate for the application. This class is responsible for launching the
+ // User Interface of the application, as well as listening (and optionally responding) to
+ // application events from iOS.
+ [Register("AppDelegate")]
+ public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
+ {
+ //
+ // This method is invoked when the application has loaded and is ready to run. In this
+ // method you should instantiate the window, load the UI into it and then make the window
+ // visible.
+ //
+ // You have 17 seconds to return from this method, or iOS will terminate your application.
+ //
+ public override bool FinishedLaunching(UIApplication app, NSDictionary options)
+ {
+ global::Xamarin.Forms.Forms.Init();
+ LoadApplication(new App());
+
+ return base.FinishedLaunching(app, options);
+ }
+ }
+}
diff --git a/MonkeyApp/MonkeyApp.iOS/Entitlements.plist b/MonkeyApp/MonkeyApp.iOS/Entitlements.plist
new file mode 100644
index 0000000..e9a3005
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.iOS/Entitlements.plist
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/MonkeyApp/MonkeyApp.iOS/Info.plist b/MonkeyApp/MonkeyApp.iOS/Info.plist
new file mode 100644
index 0000000..233c086
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.iOS/Info.plist
@@ -0,0 +1,52 @@
+
+
+
+
+ UIDeviceFamily
+
+ 1
+ 2
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+
+ MinimumOSVersion
+ 6.0
+ CFBundleDisplayName
+ MonkeyApp
+ CFBundleIdentifier
+ com.yourcompany.MonkeyApp
+ CFBundleVersion
+ 1.0
+ CFBundleIconFiles
+
+ Icon-60@2x
+ Icon-60@3x
+ Icon-76
+ Icon-76@2x
+ Default
+ Default@2x
+ Default-568h@2x
+ Default-Portrait
+ Default-Portrait@2x
+ Icon-Small-40
+ Icon-Small-40@2x
+ Icon-Small-40@3x
+ Icon-Small
+ Icon-Small@2x
+ Icon-Small@3x
+
+ UILaunchStoryboardName
+ LaunchScreen
+
+
diff --git a/MonkeyApp/MonkeyApp.iOS/Main.cs b/MonkeyApp/MonkeyApp.iOS/Main.cs
new file mode 100644
index 0000000..ea4b68b
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.iOS/Main.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+using Foundation;
+using UIKit;
+
+namespace MonkeyApp.iOS
+{
+ public class Application
+ {
+ // This is the main entry point of the application.
+ static void Main(string[] args)
+ {
+ // if you want to use a different Application Delegate class from "AppDelegate"
+ // you can specify it here.
+ UIApplication.Main(args, null, "AppDelegate");
+ }
+ }
+}
diff --git a/MonkeyApp/MonkeyApp.iOS/MonkeyApp.iOS.csproj b/MonkeyApp/MonkeyApp.iOS/MonkeyApp.iOS.csproj
new file mode 100644
index 0000000..0af9d2c
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.iOS/MonkeyApp.iOS.csproj
@@ -0,0 +1,164 @@
+
+
+
+ Debug
+ iPhoneSimulator
+ 8.0.30703
+ 2.0
+ {B710D9FD-4FA0-479A-82BC-3DB7D864C4D9}
+ {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Exe
+ MonkeyApp.iOS
+ Resources
+ MonkeyAppiOS
+
+
+
+
+ true
+ full
+ false
+ bin\iPhoneSimulator\Debug
+ DEBUG
+ prompt
+ 4
+ false
+ i386, x86_64
+ None
+ true
+
+
+ none
+ true
+ bin\iPhoneSimulator\Release
+ prompt
+ 4
+ None
+ i386, x86_64
+ false
+
+
+ true
+ full
+ false
+ bin\iPhone\Debug
+ DEBUG
+ prompt
+ 4
+ false
+ ARMv7, ARM64
+ iPhone Developer
+ true
+ Entitlements.plist
+
+
+ none
+ true
+ bin\iPhone\Release
+ prompt
+ 4
+ ARMv7, ARM64
+ false
+ iPhone Developer
+ Entitlements.plist
+
+
+ none
+ True
+ bin\iPhone\Ad-Hoc
+ prompt
+ 4
+ False
+ ARMv7, ARM64
+ True
+ Automatic:AdHoc
+ iPhone Distribution
+ Entitlements.plist
+
+
+ none
+ True
+ bin\iPhone\AppStore
+ prompt
+ 4
+ False
+ ARMv7, ARM64
+ Automatic:AppStore
+ iPhone Distribution
+ Entitlements.plist
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MonkeyApp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\..\packages\Newtonsoft.Json.7.0.1\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll
+ True
+
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\Xamarin.iOS10\System.Net.Http.Extensions.dll
+ True
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\Xamarin.iOS10\System.Net.Http.Primitives.dll
+ True
+
+
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\Xamarin.iOS10\Xamarin.Forms.Core.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\Xamarin.iOS10\Xamarin.Forms.Platform.iOS.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\Xamarin.iOS10\Xamarin.Forms.Xaml.dll
+ True
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp.iOS/Properties/AssemblyInfo.cs b/MonkeyApp/MonkeyApp.iOS/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..047c2b9
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.iOS/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MonkeyApp.iOS")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MonkeyApp.iOS")]
+[assembly: AssemblyCopyright("Copyright © 2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("72bdc44f-c588-44f3-b6df-9aace7daafdd")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Default-568h@2x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Default-568h@2x.png
new file mode 100644
index 0000000..26c6461
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Default-568h@2x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Default-Portrait.png b/MonkeyApp/MonkeyApp.iOS/Resources/Default-Portrait.png
new file mode 100644
index 0000000..5d0d1ab
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Default-Portrait.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Default-Portrait@2x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Default-Portrait@2x.png
new file mode 100644
index 0000000..0ee2688
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Default-Portrait@2x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Default.png b/MonkeyApp/MonkeyApp.iOS/Resources/Default.png
new file mode 100644
index 0000000..b74643c
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Default.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Default@2x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Default@2x.png
new file mode 100644
index 0000000..dbd6bd3
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Default@2x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-60@2x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-60@2x.png
new file mode 100644
index 0000000..4b03c42
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-60@2x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-60@3x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-60@3x.png
new file mode 100644
index 0000000..b03ca1b
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-60@3x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-76.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-76.png
new file mode 100644
index 0000000..587982e
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-76.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-76@2x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-76@2x.png
new file mode 100644
index 0000000..cd4e2c8
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-76@2x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small-40.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small-40.png
new file mode 100644
index 0000000..6acff94
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small-40.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small-40@2x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small-40@2x.png
new file mode 100644
index 0000000..b833aac
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small-40@2x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small-40@3x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small-40@3x.png
new file mode 100644
index 0000000..ab8654e
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small-40@3x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small.png
new file mode 100644
index 0000000..33db7e7
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small@2x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small@2x.png
new file mode 100644
index 0000000..bf45e25
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small@2x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small@3x.png b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small@3x.png
new file mode 100644
index 0000000..7ad3891
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/Resources/Icon-Small@3x.png differ
diff --git a/MonkeyApp/MonkeyApp.iOS/Resources/LaunchScreen.storyboard b/MonkeyApp/MonkeyApp.iOS/Resources/LaunchScreen.storyboard
new file mode 100644
index 0000000..a639c2f
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.iOS/Resources/LaunchScreen.storyboard
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MonkeyApp/MonkeyApp.iOS/app.config b/MonkeyApp/MonkeyApp.iOS/app.config
new file mode 100644
index 0000000..ececa7d
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.iOS/app.config
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp.iOS/iTunesArtwork b/MonkeyApp/MonkeyApp.iOS/iTunesArtwork
new file mode 100644
index 0000000..94c8ebd
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/iTunesArtwork differ
diff --git a/MonkeyApp/MonkeyApp.iOS/iTunesArtwork@2x b/MonkeyApp/MonkeyApp.iOS/iTunesArtwork@2x
new file mode 100644
index 0000000..fa2ebf7
Binary files /dev/null and b/MonkeyApp/MonkeyApp.iOS/iTunesArtwork@2x differ
diff --git a/MonkeyApp/MonkeyApp.iOS/packages.config b/MonkeyApp/MonkeyApp.iOS/packages.config
new file mode 100644
index 0000000..451ffa0
--- /dev/null
+++ b/MonkeyApp/MonkeyApp.iOS/packages.config
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp/App.cs b/MonkeyApp/MonkeyApp/App.cs
new file mode 100644
index 0000000..ddd0831
--- /dev/null
+++ b/MonkeyApp/MonkeyApp/App.cs
@@ -0,0 +1,34 @@
+using MonkeyApp.View;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using Xamarin.Forms;
+
+namespace MonkeyApp
+{
+ public class App : Application
+ {
+ public App()
+ {
+ // The root page of your application
+ MainPage = new NavigationPage(new MonkeyListPage());
+ }
+
+ protected override void OnStart()
+ {
+ // Handle when your app starts
+ }
+
+ protected override void OnSleep()
+ {
+ // Handle when your app sleeps
+ }
+
+ protected override void OnResume()
+ {
+ // Handle when your app resumes
+ }
+ }
+}
diff --git a/MonkeyApp/MonkeyApp/GettingStarted.Xamarin b/MonkeyApp/MonkeyApp/GettingStarted.Xamarin
new file mode 100644
index 0000000..f31b009
--- /dev/null
+++ b/MonkeyApp/MonkeyApp/GettingStarted.Xamarin
@@ -0,0 +1,4 @@
+
+ GS\XF\CS\App\GettingStarted.html
+ false
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp/Model/Monkey.cs b/MonkeyApp/MonkeyApp/Model/Monkey.cs
new file mode 100644
index 0000000..ebab530
--- /dev/null
+++ b/MonkeyApp/MonkeyApp/Model/Monkey.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MonkeyApp.Model
+{
+ public class Monkey
+ {
+ public string Name { get; set; }
+ public string Location { get; set; }
+ public string Details { get; set; }
+ public string Image { get; set; }
+ public int Population { get; set; }
+ }
+}
diff --git a/MonkeyApp/MonkeyApp/MonkeyApp.csproj b/MonkeyApp/MonkeyApp/MonkeyApp.csproj
new file mode 100644
index 0000000..96db603
--- /dev/null
+++ b/MonkeyApp/MonkeyApp/MonkeyApp.csproj
@@ -0,0 +1,100 @@
+
+
+
+
+ 10.0
+ Debug
+ AnyCPU
+ {6A88882F-8257-4429-8DCA-7761FCD8804C}
+ Library
+ Properties
+ MonkeyApp
+ MonkeyApp
+ v4.5
+ Profile78
+ 512
+ {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+
+
+
+
+ MonkeyListPage.xaml
+
+
+
+
+ ..\..\packages\Newtonsoft.Json.7.0.1\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll
+ True
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.dll
+ True
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll
+ True
+
+
+ ..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\portable-win+net45+wp80+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Core.dll
+ True
+
+
+ ..\..\packages\Xamarin.Forms.1.3.3.6323\lib\portable-win+net45+wp80+MonoAndroid10+MonoTouch10+Xamarin.iOS10\Xamarin.Forms.Xaml.dll
+ True
+
+
+
+
+
+
+
+
+
+ MSBuild:UpdateDesignTimeXaml
+ Designer
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp/Properties/AssemblyInfo.cs b/MonkeyApp/MonkeyApp/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..fe6ee87
--- /dev/null
+++ b/MonkeyApp/MonkeyApp/Properties/AssemblyInfo.cs
@@ -0,0 +1,30 @@
+using System.Resources;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("MonkeyApp")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("MonkeyApp")]
+[assembly: AssemblyCopyright("Copyright © 2014")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+[assembly: NeutralResourcesLanguage("en")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/MonkeyApp/MonkeyApp/View/MonkeyListPage.xaml b/MonkeyApp/MonkeyApp/View/MonkeyListPage.xaml
new file mode 100644
index 0000000..357e8e0
--- /dev/null
+++ b/MonkeyApp/MonkeyApp/View/MonkeyListPage.xaml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MonkeyApp/MonkeyApp/View/MonkeyListPage.xaml.cs b/MonkeyApp/MonkeyApp/View/MonkeyListPage.xaml.cs
new file mode 100644
index 0000000..f1fe827
--- /dev/null
+++ b/MonkeyApp/MonkeyApp/View/MonkeyListPage.xaml.cs
@@ -0,0 +1,48 @@
+using MonkeyApp.ViewModel;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+using Xamarin.Forms;
+
+namespace MonkeyApp.View
+{
+ public partial class MonkeyListPage : ContentPage
+ {
+ MonkeyListViewModel vm;
+ public MonkeyListPage()
+ {
+ InitializeComponent();
+
+ vm = new MonkeyListViewModel();
+ BindingContext = vm;
+
+ ButtonGetMonkeys.Clicked += async (sender, args) =>
+ {
+ ButtonGetMonkeys.IsEnabled = false;
+
+ Exception ex = null;
+
+ try
+ {
+ await vm.GetMonkeysAsync();
+ }
+ catch (Exception e)
+ {
+ ex = e;
+ }
+
+ if (ex != null)
+ {
+ await DisplayAlert("Error", "Unable to get monkeys: " + ex.Message, "OK");
+ }
+
+ ButtonGetMonkeys.IsEnabled = true;
+
+ };
+
+ }
+ }
+}
diff --git a/MonkeyApp/MonkeyApp/ViewModel/MonkeyListViewModel.cs b/MonkeyApp/MonkeyApp/ViewModel/MonkeyListViewModel.cs
new file mode 100644
index 0000000..8909939
--- /dev/null
+++ b/MonkeyApp/MonkeyApp/ViewModel/MonkeyListViewModel.cs
@@ -0,0 +1,78 @@
+using MonkeyApp.Model;
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Linq;
+using System.Net.Http;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MonkeyApp.ViewModel
+{
+ public class MonkeyListViewModel : INotifyPropertyChanged
+ {
+ public ObservableCollection Monkeys { get; set; }
+
+ public MonkeyListViewModel()
+ {
+ Monkeys = new ObservableCollection();
+ }
+
+
+ bool busy;
+
+ public bool IsBusy
+ {
+ get { return busy; }
+ set
+ {
+ if (busy == value)
+ return;
+
+ busy = value;
+ OnPropertyChanged("IsBusy");
+ }
+ }
+
+ public async Task GetMonkeysAsync()
+ {
+ if (IsBusy)
+ return;
+
+ try
+ {
+ IsBusy = true;
+
+ var client = new HttpClient();
+ var json = await client.GetStringAsync("http://montemagno.com/monkeys.json");
+
+ var list = JsonConvert.DeserializeObject>(json);
+ foreach (var item in list)
+ {
+ Monkeys.Add(item);
+ }
+
+ }
+ finally
+ {
+ IsBusy = false;
+ }
+ }
+
+
+ public event PropertyChangedEventHandler PropertyChanged;
+
+ public void OnPropertyChanged(string name)
+ {
+ var changed = PropertyChanged;
+ if (changed == null)
+ return;
+
+ changed(this, new PropertyChangedEventArgs(name));
+ }
+
+
+ }
+}
diff --git a/MonkeyApp/MonkeyApp/packages.config b/MonkeyApp/MonkeyApp/packages.config
new file mode 100644
index 0000000..1f58ed0
--- /dev/null
+++ b/MonkeyApp/MonkeyApp/packages.config
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file