├── src
├── exercise1
│ ├── final
│ │ ├── People
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── App.xaml
│ │ │ ├── Models
│ │ │ │ └── Person.cs
│ │ │ ├── FileAccessHelper.cs
│ │ │ ├── People.csproj
│ │ │ ├── App.xaml.cs
│ │ │ ├── MainPage.xaml.cs
│ │ │ ├── PersonRepository.cs
│ │ │ └── MainPage.xaml
│ │ ├── People.iOS
│ │ │ ├── Resources
│ │ │ │ ├── Default.png
│ │ │ │ ├── Default@2x.png
│ │ │ │ ├── Default-568h@2x.png
│ │ │ │ ├── Default-Portrait.png
│ │ │ │ ├── Default-Portrait@2x.png
│ │ │ │ └── LaunchScreen.storyboard
│ │ │ ├── Assets.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ │ ├── Icon120.png
│ │ │ │ │ ├── Icon152.png
│ │ │ │ │ ├── Icon167.png
│ │ │ │ │ ├── Icon180.png
│ │ │ │ │ ├── Icon20.png
│ │ │ │ │ ├── Icon29.png
│ │ │ │ │ ├── Icon40.png
│ │ │ │ │ ├── Icon58.png
│ │ │ │ │ ├── Icon60.png
│ │ │ │ │ ├── Icon76.png
│ │ │ │ │ ├── Icon80.png
│ │ │ │ │ ├── Icon87.png
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ └── Contents.json
│ │ │ ├── Entitlements.plist
│ │ │ ├── Main.cs
│ │ │ ├── AppDelegate.cs
│ │ │ ├── Info.plist
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── People.iOS.csproj
│ │ ├── People.Android
│ │ │ ├── Resources
│ │ │ │ ├── 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
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ │ ├── icon.xml
│ │ │ │ │ └── icon_round.xml
│ │ │ │ ├── values
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── layout
│ │ │ │ │ ├── Main.axml
│ │ │ │ │ ├── Toolbar.axml
│ │ │ │ │ └── Tabbar.axml
│ │ │ │ └── AboutResources.txt
│ │ │ ├── Properties
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Assets
│ │ │ │ └── AboutAssets.txt
│ │ │ ├── MainActivity.cs
│ │ │ └── People.Android.csproj
│ │ └── People.sln
│ ├── start
│ │ ├── People
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── App.xaml
│ │ │ ├── FileAccessHelper.cs
│ │ │ ├── MainPage.xaml
│ │ │ ├── MainPage.xaml.cs
│ │ │ ├── People.csproj
│ │ │ └── App.xaml.cs
│ │ ├── People.iOS
│ │ │ ├── Resources
│ │ │ │ ├── Default.png
│ │ │ │ ├── Default@2x.png
│ │ │ │ ├── Default-568h@2x.png
│ │ │ │ ├── Default-Portrait.png
│ │ │ │ ├── Default-Portrait@2x.png
│ │ │ │ └── LaunchScreen.storyboard
│ │ │ ├── Assets.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ │ ├── Icon120.png
│ │ │ │ │ ├── Icon152.png
│ │ │ │ │ ├── Icon167.png
│ │ │ │ │ ├── Icon180.png
│ │ │ │ │ ├── Icon20.png
│ │ │ │ │ ├── Icon29.png
│ │ │ │ │ ├── Icon40.png
│ │ │ │ │ ├── Icon58.png
│ │ │ │ │ ├── Icon60.png
│ │ │ │ │ ├── Icon76.png
│ │ │ │ │ ├── Icon80.png
│ │ │ │ │ ├── Icon87.png
│ │ │ │ │ ├── Icon1024.png
│ │ │ │ │ └── Contents.json
│ │ │ ├── Entitlements.plist
│ │ │ ├── Main.cs
│ │ │ ├── AppDelegate.cs
│ │ │ ├── Info.plist
│ │ │ ├── Properties
│ │ │ │ └── AssemblyInfo.cs
│ │ │ └── People.iOS.csproj
│ │ ├── People.Android
│ │ │ ├── Resources
│ │ │ │ ├── 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
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ │ ├── icon.xml
│ │ │ │ │ └── icon_round.xml
│ │ │ │ ├── values
│ │ │ │ │ ├── colors.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ ├── layout
│ │ │ │ │ ├── Main.axml
│ │ │ │ │ ├── Toolbar.axml
│ │ │ │ │ └── Tabbar.axml
│ │ │ │ └── AboutResources.txt
│ │ │ ├── Properties
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ └── AssemblyInfo.cs
│ │ │ ├── Assets
│ │ │ │ └── AboutAssets.txt
│ │ │ ├── MainActivity.cs
│ │ │ └── People.Android.csproj
│ │ └── People.sln
│ └── assets
│ │ ├── MainPage.xaml.cs
│ │ ├── PersonRepository.cs
│ │ └── MainPage.xaml
└── exercise2
│ └── final
│ ├── People
│ ├── AssemblyInfo.cs
│ ├── App.xaml
│ ├── Models
│ │ └── Person.cs
│ ├── FileAccessHelper.cs
│ ├── People.csproj
│ ├── App.xaml.cs
│ ├── MainPage.xaml.cs
│ ├── PersonRepository.cs
│ └── MainPage.xaml
│ ├── People.iOS
│ ├── Resources
│ │ ├── Default.png
│ │ ├── Default@2x.png
│ │ ├── Default-568h@2x.png
│ │ ├── Default-Portrait.png
│ │ ├── Default-Portrait@2x.png
│ │ └── LaunchScreen.storyboard
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── Icon120.png
│ │ │ ├── Icon152.png
│ │ │ ├── Icon167.png
│ │ │ ├── Icon180.png
│ │ │ ├── Icon20.png
│ │ │ ├── Icon29.png
│ │ │ ├── Icon40.png
│ │ │ ├── Icon58.png
│ │ │ ├── Icon60.png
│ │ │ ├── Icon76.png
│ │ │ ├── Icon80.png
│ │ │ ├── Icon87.png
│ │ │ ├── Icon1024.png
│ │ │ └── Contents.json
│ ├── Entitlements.plist
│ ├── Main.cs
│ ├── AppDelegate.cs
│ ├── Info.plist
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── People.iOS.csproj
│ ├── People.Android
│ ├── Resources
│ │ ├── 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
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── icon.xml
│ │ │ └── icon_round.xml
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ ├── layout
│ │ │ ├── Main.axml
│ │ │ ├── Toolbar.axml
│ │ │ └── Tabbar.axml
│ │ └── AboutResources.txt
│ ├── Properties
│ │ ├── AndroidManifest.xml
│ │ └── AssemblyInfo.cs
│ ├── Assets
│ │ └── AboutAssets.txt
│ ├── MainActivity.cs
│ └── People.Android.csproj
│ └── People.sln
├── LICENSE-CODE
├── README.md
├── .gitignore
└── LICENSE
/src/exercise1/final/People/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms.Xaml;
2 |
3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
--------------------------------------------------------------------------------
/src/exercise1/start/People/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms.Xaml;
2 |
3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
--------------------------------------------------------------------------------
/src/exercise2/final/People/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Forms.Xaml;
2 |
3 | [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Resources/Default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Resources/Default.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Resources/Default@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Resources/Default@2x.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Resources/Default-568h@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Resources/Default-568h@2x.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Resources/Default-Portrait.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Resources/Default-Portrait.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-hdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-hdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-hdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-hdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-mdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-mdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Resources/Default-Portrait@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Resources/Default-Portrait@2x.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-xhdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-xxhdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-xhdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-xxhdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-xhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-xhdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-xxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-xxhdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-xxxhdpi/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-xxxhdpi/icon.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon120.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon152.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon167.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon180.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon20.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon29.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon40.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon58.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon60.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon76.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon80.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon87.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-hdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-hdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-mdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-mdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-hdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-hdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-mdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-mdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-hdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-hdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-mdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-mdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.iOS/Assets.xcassets/AppIcon.appiconset/Icon1024.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-xhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-xhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-xxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-xxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-xhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-xhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-xxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-xxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-xhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-xhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-xxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-xxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/final/People.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise1/start/People.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/MicrosoftDocs/mslearn-xamarin-store-data-sqlite/HEAD/src/exercise2/final/People.Android/Resources/mipmap-xxxhdpi/launcher_foreground.png
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Entitlements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/exercise1/final/People/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/exercise1/start/People/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/exercise2/final/People/App.xaml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-anydpi-v26/icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
8 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
8 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 | #3F51B5
5 | #303F9F
6 | #FF4081
7 |
8 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise1/final/People/Models/Person.cs:
--------------------------------------------------------------------------------
1 | using SQLite;
2 |
3 | namespace People.Models
4 | {
5 | [Table("people")]
6 | public class Person
7 | {
8 | [PrimaryKey, AutoIncrement]
9 | public int Id { get; set; }
10 | [MaxLength(250), Unique]
11 | public string Name { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/mipmap-anydpi-v26/icon_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise2/final/People/Models/Person.cs:
--------------------------------------------------------------------------------
1 | using SQLite;
2 |
3 | namespace People.Models
4 | {
5 | [Table("people")]
6 | public class Person
7 | {
8 | [PrimaryKey, AutoIncrement]
9 | public int Id { get; set; }
10 | [MaxLength(250), Unique]
11 | public string Name { get; set; }
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/exercise1/final/People/FileAccessHelper.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Essentials;
2 |
3 | namespace People
4 | {
5 | public class FileAccessHelper
6 | {
7 | public static string GetLocalFilePath(string filename)
8 | {
9 | return System.IO.Path.Combine(FileSystem.AppDataDirectory, filename);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/exercise1/start/People/FileAccessHelper.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Essentials;
2 |
3 | namespace People
4 | {
5 | public class FileAccessHelper
6 | {
7 | public static string GetLocalFilePath(string filename)
8 | {
9 | return System.IO.Path.Combine(FileSystem.AppDataDirectory, filename);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/exercise2/final/People/FileAccessHelper.cs:
--------------------------------------------------------------------------------
1 | using Xamarin.Essentials;
2 |
3 | namespace People
4 | {
5 | public class FileAccessHelper
6 | {
7 | public static string GetLocalFilePath(string filename)
8 | {
9 | return System.IO.Path.Combine(FileSystem.AppDataDirectory, filename);
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Properties/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/layout/Main.axml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/layout/Main.axml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/layout/Main.axml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/layout/Toolbar.axml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/layout/Toolbar.axml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/layout/Toolbar.axml:
--------------------------------------------------------------------------------
1 |
9 |
10 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace People.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace People.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/Main.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace People.iOS
9 | {
10 | public class Application
11 | {
12 | // This is the main entry point of the application.
13 | static void Main(string[] args)
14 | {
15 | // if you want to use a different Application Delegate class from "AppDelegate"
16 | // you can specify it here.
17 | UIApplication.Main(args, null, "AppDelegate");
18 | }
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/layout/Tabbar.axml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/layout/Tabbar.axml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/src/exercise1/start/People/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/layout/Tabbar.axml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.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 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.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 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.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 |
--------------------------------------------------------------------------------
/src/exercise1/start/People/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.ComponentModel;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using Xamarin.Forms;
8 |
9 | namespace People
10 | {
11 | // Learn more about making custom code visible in the Xamarin.Forms previewer
12 | // by visiting https://aka.ms/xamarinforms-previewer
13 | [DesignTimeVisible(true)]
14 | public partial class MainPage : ContentPage
15 | {
16 | public string Text
17 | {
18 | get { return textLabel.Text; }
19 | set { textLabel.Text = value; }
20 | }
21 |
22 | public MainPage()
23 | {
24 | InitializeComponent();
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/exercise1/assets/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using People.Models;
2 | using System;
3 | using Xamarin.Forms;
4 | using System.Collections.Generic;
5 |
6 | namespace People
7 | {
8 | public partial class MainPage : ContentPage
9 | {
10 | public MainPage()
11 | {
12 | InitializeComponent();
13 | }
14 |
15 | public void OnNewButtonClicked(object sender, EventArgs args)
16 | {
17 | statusMessage.Text = "";
18 |
19 | App.PersonRepo.AddNewPerson(newPerson.Text);
20 | statusMessage.Text = App.PersonRepo.StatusMessage;
21 | }
22 |
23 | public void OnGetButtonClicked(object sender, EventArgs args)
24 | {
25 | statusMessage.Text = "";
26 |
27 | List people = App.PersonRepo.GetAllPeople();
28 | peopleList.ItemsSource = people;
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/exercise1/final/People/People.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 |
7 |
8 |
9 | pdbonly
10 | true
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | MSBuild:Compile
22 |
23 |
24 | MSBuild:Compile
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/exercise1/start/People/People.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 |
7 |
8 |
9 | pdbonly
10 | true
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | MSBuild:Compile
22 |
23 |
24 | MSBuild:Compile
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/exercise2/final/People/People.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.0
5 | true
6 |
7 |
8 |
9 | pdbonly
10 | true
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | MSBuild:Compile
22 |
23 |
24 | MSBuild:Compile
25 |
26 |
27 |
--------------------------------------------------------------------------------
/src/exercise1/start/People/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using Xamarin.Forms;
7 |
8 | namespace People
9 | {
10 | public partial class App : Application
11 | {
12 | string dbPath => FileAccessHelper.GetLocalFilePath("people.db3");
13 |
14 | public App()
15 | {
16 | InitializeComponent();
17 |
18 | MainPage = new People.MainPage()
19 | {
20 | Text = dbPath,
21 | };
22 | }
23 |
24 | protected override void OnStart()
25 | {
26 | // Handle when your app starts
27 | }
28 |
29 | protected override void OnSleep()
30 | {
31 | // Handle when your app sleeps
32 | }
33 |
34 | protected override void OnResume()
35 | {
36 | // Handle when your app resumes
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/exercise1/final/People/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using Xamarin.Forms;
7 |
8 | namespace People
9 | {
10 | public partial class App : Application
11 | {
12 | string dbPath => FileAccessHelper.GetLocalFilePath("people.db3");
13 |
14 | public static PersonRepository PersonRepo { get; private set; }
15 |
16 | public App()
17 | {
18 | InitializeComponent();
19 |
20 | PersonRepo = new PersonRepository(dbPath);
21 |
22 | MainPage = new People.MainPage();
23 | }
24 |
25 | protected override void OnStart()
26 | {
27 | // Handle when your app starts
28 | }
29 |
30 | protected override void OnSleep()
31 | {
32 | // Handle when your app sleeps
33 | }
34 |
35 | protected override void OnResume()
36 | {
37 | // Handle when your app resumes
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/exercise2/final/People/App.xaml.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 |
6 | using Xamarin.Forms;
7 |
8 | namespace People
9 | {
10 | public partial class App : Application
11 | {
12 | string dbPath => FileAccessHelper.GetLocalFilePath("people.db3");
13 |
14 | public static PersonRepository PersonRepo { get; private set; }
15 |
16 | public App()
17 | {
18 | InitializeComponent();
19 |
20 | PersonRepo = new PersonRepository(dbPath);
21 |
22 | MainPage = new People.MainPage();
23 | }
24 |
25 | protected override void OnStart()
26 | {
27 | // Handle when your app starts
28 | }
29 |
30 | protected override void OnSleep()
31 | {
32 | // Handle when your app sleeps
33 | }
34 |
35 | protected override void OnResume()
36 | {
37 | // Handle when your app resumes
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/exercise1/final/People/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using People.Models;
2 | using System;
3 | using Xamarin.Forms;
4 | using System.Collections.Generic;
5 | using System.ComponentModel;
6 |
7 | namespace People
8 | {
9 | // Learn more about making custom code visible in the Xamarin.Forms previewer
10 | // by visiting https://aka.ms/xamarinforms-previewer
11 | [DesignTimeVisible(true)]
12 | public partial class MainPage : ContentPage
13 | {
14 | public MainPage()
15 | {
16 | InitializeComponent();
17 | }
18 |
19 | public void OnNewButtonClicked(object sender, EventArgs args)
20 | {
21 | statusMessage.Text = "";
22 |
23 | App.PersonRepo.AddNewPerson(newPerson.Text);
24 | statusMessage.Text = App.PersonRepo.StatusMessage;
25 | }
26 |
27 | public void OnGetButtonClicked(object sender, EventArgs args)
28 | {
29 | statusMessage.Text = "";
30 |
31 | List people = App.PersonRepo.GetAllPeople();
32 | peopleList.ItemsSource = people;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/exercise2/final/People/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | using People.Models;
2 | using System;
3 | using Xamarin.Forms;
4 | using System.Collections.Generic;
5 | using System.ComponentModel;
6 |
7 | namespace People
8 | {
9 | // Learn more about making custom code visible in the Xamarin.Forms previewer
10 | // by visiting https://aka.ms/xamarinforms-previewer
11 | [DesignTimeVisible(true)]
12 | public partial class MainPage : ContentPage
13 | {
14 | public MainPage()
15 | {
16 | InitializeComponent();
17 | }
18 |
19 | public async void OnNewButtonClicked(object sender, EventArgs args)
20 | {
21 | statusMessage.Text = "";
22 |
23 | await App.PersonRepo.AddNewPersonAsync(newPerson.Text);
24 | statusMessage.Text = App.PersonRepo.StatusMessage;
25 | }
26 |
27 | public async void OnGetButtonClicked(object sender, EventArgs args)
28 | {
29 | statusMessage.Text = "";
30 |
31 | List people = await App.PersonRepo.GetAllPeopleAsync();
32 | peopleList.ItemsSource = people;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/LICENSE-CODE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright (c) Microsoft Corporation
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
5 | associated documentation files (the "Software"), to deal in the Software without restriction,
6 | including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 | and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
8 | subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all copies or substantial
11 | portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
14 | NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
15 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
16 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
17 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace People.iOS
9 | {
10 | // The UIApplicationDelegate for the application. This class is responsible for launching the
11 | // User Interface of the application, as well as listening (and optionally responding) to
12 | // application events from iOS.
13 | [Register("AppDelegate")]
14 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
15 | {
16 | //
17 | // This method is invoked when the application has loaded and is ready to run. In this
18 | // method you should instantiate the window, load the UI into it and then make the window
19 | // visible.
20 | //
21 | // You have 17 seconds to return from this method, or iOS will terminate your application.
22 | //
23 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
24 | {
25 | global::Xamarin.Forms.Forms.Init();
26 | LoadApplication(new App());
27 |
28 | return base.FinishedLaunching(app, options);
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace People.iOS
9 | {
10 | // The UIApplicationDelegate for the application. This class is responsible for launching the
11 | // User Interface of the application, as well as listening (and optionally responding) to
12 | // application events from iOS.
13 | [Register("AppDelegate")]
14 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
15 | {
16 | //
17 | // This method is invoked when the application has loaded and is ready to run. In this
18 | // method you should instantiate the window, load the UI into it and then make the window
19 | // visible.
20 | //
21 | // You have 17 seconds to return from this method, or iOS will terminate your application.
22 | //
23 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
24 | {
25 | global::Xamarin.Forms.Forms.Init();
26 | LoadApplication(new App());
27 |
28 | return base.FinishedLaunching(app, options);
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/AppDelegate.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 |
5 | using Foundation;
6 | using UIKit;
7 |
8 | namespace People.iOS
9 | {
10 | // The UIApplicationDelegate for the application. This class is responsible for launching the
11 | // User Interface of the application, as well as listening (and optionally responding) to
12 | // application events from iOS.
13 | [Register("AppDelegate")]
14 | public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
15 | {
16 | //
17 | // This method is invoked when the application has loaded and is ready to run. In this
18 | // method you should instantiate the window, load the UI into it and then make the window
19 | // visible.
20 | //
21 | // You have 17 seconds to return from this method, or iOS will terminate your application.
22 | //
23 | public override bool FinishedLaunching(UIApplication app, NSDictionary options)
24 | {
25 | global::Xamarin.Forms.Forms.Init();
26 |
27 | LoadApplication(new App());
28 |
29 | return base.FinishedLaunching(app, options);
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/exercise1/assets/PersonRepository.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using People.Models;
5 | using SQLite;
6 |
7 | namespace People
8 | {
9 | public class PersonRepository
10 | {
11 | public string StatusMessage { get; set; }
12 |
13 | public PersonRepository(string dbPath)
14 | {
15 | // TODO: Initialize a new SQLiteConnection
16 | // TODO: Create the Person table
17 | }
18 |
19 | public void AddNewPerson(string name)
20 | {
21 | int result = 0;
22 | try
23 | {
24 | //basic validation to ensure a name was entered
25 | if (string.IsNullOrEmpty(name))
26 | throw new Exception("Valid name required");
27 |
28 | // TODO: insert a new person into the Person table
29 |
30 | StatusMessage = string.Format("{0} record(s) added [Name: {1})", result, name);
31 | }
32 | catch (Exception ex)
33 | {
34 | StatusMessage = string.Format("Failed to add {0}. Error: {1}", name, ex.Message);
35 | }
36 |
37 | }
38 |
39 | public List GetAllPeople()
40 | {
41 | // TODO: return a list of people saved to the Person table in the database
42 | }
43 | }
44 | }
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using Android.App;
4 | using Android.Content.PM;
5 | using Android.Runtime;
6 | using Android.Views;
7 | using Android.Widget;
8 | using Android.OS;
9 |
10 | namespace People.Droid
11 | {
12 | [Activity(Label = "People", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
13 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
14 | {
15 | protected override void OnCreate(Bundle savedInstanceState)
16 | {
17 | TabLayoutResource = Resource.Layout.Tabbar;
18 | ToolbarResource = Resource.Layout.Toolbar;
19 |
20 | base.OnCreate(savedInstanceState);
21 |
22 | Xamarin.Essentials.Platform.Init(this, savedInstanceState);
23 | global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
24 | LoadApplication(new App());
25 | }
26 | public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
27 | {
28 | Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
29 |
30 | base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using Android.App;
4 | using Android.Content.PM;
5 | using Android.Runtime;
6 | using Android.Views;
7 | using Android.Widget;
8 | using Android.OS;
9 |
10 | namespace People.Droid
11 | {
12 | [Activity(Label = "People", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
13 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
14 | {
15 | protected override void OnCreate(Bundle savedInstanceState)
16 | {
17 | TabLayoutResource = Resource.Layout.Tabbar;
18 | ToolbarResource = Resource.Layout.Toolbar;
19 |
20 | base.OnCreate(savedInstanceState);
21 |
22 | Xamarin.Essentials.Platform.Init(this, savedInstanceState);
23 | global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
24 | LoadApplication(new App());
25 | }
26 | public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
27 | {
28 | Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
29 |
30 | base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/MainActivity.cs:
--------------------------------------------------------------------------------
1 | using System;
2 |
3 | using Android.App;
4 | using Android.Content.PM;
5 | using Android.Runtime;
6 | using Android.Views;
7 | using Android.Widget;
8 | using Android.OS;
9 |
10 | namespace People.Droid
11 | {
12 | [Activity(Label = "People", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
13 | public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
14 | {
15 | protected override void OnCreate(Bundle savedInstanceState)
16 | {
17 | TabLayoutResource = Resource.Layout.Tabbar;
18 | ToolbarResource = Resource.Layout.Toolbar;
19 |
20 | base.OnCreate(savedInstanceState);
21 |
22 | Xamarin.Essentials.Platform.Init(this, savedInstanceState);
23 | global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
24 | LoadApplication(new App());
25 | }
26 | public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
27 | {
28 | Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
29 |
30 | base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/src/exercise1/final/People.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("People.Android")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("People.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 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.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("People.Android")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("People.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 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.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("People.Android")]
10 | [assembly: AssemblyDescription("")]
11 | [assembly: AssemblyConfiguration("")]
12 | [assembly: AssemblyCompany("")]
13 | [assembly: AssemblyProduct("People.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 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.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 | 11.2
25 | CFBundleDisplayName
26 | People
27 | CFBundleIdentifier
28 | com.companyname.People
29 | CFBundleVersion
30 | 1.0
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | CFBundleName
34 | People
35 | XSAppIconAssets
36 | Assets.xcassets/AppIcon.appiconset
37 |
38 |
39 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.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 | 11.2
25 | CFBundleDisplayName
26 | People
27 | CFBundleIdentifier
28 | com.companyname.People
29 | CFBundleVersion
30 | 1.0
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | CFBundleName
34 | People
35 | XSAppIconAssets
36 | Assets.xcassets/AppIcon.appiconset
37 |
38 |
39 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.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 | 11.2
25 | CFBundleDisplayName
26 | People
27 | CFBundleIdentifier
28 | com.companyname.People
29 | CFBundleVersion
30 | 1.0
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | CFBundleName
34 | People
35 | XSAppIconAssets
36 | Assets.xcassets/AppIcon.appiconset
37 |
38 |
39 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
26 |
27 |
30 |
31 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
26 |
27 |
30 |
31 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/Resources/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 |
7 |
26 |
27 |
30 |
31 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.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("People.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("People.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2019")]
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 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.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("People.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("People.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2019")]
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 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.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("People.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("People.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2019")]
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 |
--------------------------------------------------------------------------------
/src/exercise1/final/People/PersonRepository.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using People.Models;
5 | using SQLite;
6 |
7 | namespace People
8 | {
9 | public class PersonRepository
10 | {
11 | SQLiteConnection conn;
12 | public string StatusMessage { get; set; }
13 |
14 | public PersonRepository(string dbPath)
15 | {
16 | conn = new SQLiteConnection(dbPath);
17 | conn.CreateTable();
18 | }
19 |
20 | public void AddNewPerson(string name)
21 | {
22 | int result = 0;
23 | try
24 | {
25 | //basic validation to ensure a name was entered
26 | if (string.IsNullOrEmpty(name))
27 | throw new Exception("Valid name required");
28 |
29 | result = conn.Insert(new Person { Name = name });
30 |
31 | StatusMessage = string.Format("{0} record(s) added [Name: {1})", result, name);
32 | }
33 | catch (Exception ex)
34 | {
35 | StatusMessage = string.Format("Failed to add {0}. Error: {1}", name, ex.Message);
36 | }
37 | }
38 |
39 | public List GetAllPeople()
40 | {
41 | try
42 | {
43 | return conn.Table().ToList();
44 | }
45 | catch (Exception ex)
46 | {
47 | StatusMessage = string.Format("Failed to retrieve data. {0}", ex.Message);
48 | }
49 |
50 | return new List();
51 | }
52 | }
53 | }
--------------------------------------------------------------------------------
/src/exercise1/assets/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
22 |
23 |
26 |
27 |
29 |
30 |
33 |
34 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/src/exercise2/final/People/PersonRepository.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Threading.Tasks;
5 | using People.Models;
6 | using SQLite;
7 |
8 | namespace People
9 | {
10 | public class PersonRepository
11 | {
12 | SQLiteAsyncConnection conn;
13 | public string StatusMessage { get; set; }
14 |
15 | public PersonRepository(string dbPath)
16 | {
17 | conn = new SQLiteAsyncConnection(dbPath);
18 | conn.CreateTableAsync().Wait();
19 | }
20 |
21 | public async Task AddNewPersonAsync(string name)
22 | {
23 | int result = 0;
24 | try
25 | {
26 | //basic validation to ensure a name was entered
27 | if (string.IsNullOrEmpty(name))
28 | throw new Exception("Valid name required");
29 |
30 | result = await conn.InsertAsync(new Person { Name = name });
31 |
32 | StatusMessage = string.Format("{0} record(s) added [Name: {1})", result, name);
33 | }
34 | catch (Exception ex)
35 | {
36 | StatusMessage = string.Format("Failed to add {0}. Error: {1}", name, ex.Message);
37 | }
38 | }
39 |
40 | public async Task> GetAllPeopleAsync()
41 | {
42 | try
43 | {
44 | return await conn.Table().ToListAsync();
45 | }
46 | catch (Exception ex)
47 | {
48 | StatusMessage = string.Format("Failed to retrieve data. {0}", ex.Message);
49 | }
50 |
51 | return new List();
52 | }
53 | }
54 | }
--------------------------------------------------------------------------------
/src/exercise1/final/People/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
24 |
25 |
28 |
29 |
31 |
32 |
35 |
36 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/exercise2/final/People/MainPage.xaml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
24 |
25 |
28 |
29 |
31 |
32 |
35 |
36 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.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 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.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 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Microsoft Learn: Store local data with SQLite
2 |
3 | This project contains the source code for the [**Store local data with SQLite in a Xamarin.Forms app**](https://docs.microsoft.com/learn/modules/store-local-data-with-sqlite/) Microsoft Learn module.
4 |
5 | # Contributing
6 |
7 | This project welcomes contributions and suggestions. Most contributions require you to agree to a
8 | Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
9 | the rights to use your contribution. For details, visit https://cla.microsoft.com.
10 |
11 | When you submit a pull request, a CLA-bot will automatically determine whether you need to provide
12 | a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions
13 | provided by the bot. You will only need to do this once across all repos using our CLA.
14 |
15 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
16 | For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
17 | contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
18 |
19 | # Legal Notices
20 |
21 | Microsoft and any contributors grant you a license to the Microsoft documentation and other content
22 | in this repository under the [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/legalcode),
23 | see the [LICENSE](LICENSE) file, and grant you a license to any code in the repository under the [MIT License](https://opensource.org/licenses/MIT), see the
24 | [LICENSE-CODE](LICENSE-CODE) file.
25 |
26 | Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation
27 | may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries.
28 | The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks.
29 | Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.
30 |
31 | Privacy information can be found at https://privacy.microsoft.com/en-us/
32 |
33 | Microsoft and any contributors reserve all other rights, whether under their respective copyrights, patents,
34 | or trademarks, whether by implication, estoppel or otherwise.
35 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.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 |
40 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.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 |
40 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.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 |
40 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.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 | }
--------------------------------------------------------------------------------
/src/exercise1/start/People.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 | }
--------------------------------------------------------------------------------
/src/exercise2/final/People.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 | }
--------------------------------------------------------------------------------
/src/exercise1/final/People.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.28726.283
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "People.Android", "People.Android\People.Android.csproj", "{746CD883-629E-47C7-B5CA-C1E646AD3291}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "People.iOS", "People.iOS\People.iOS.csproj", "{B92F0639-E53E-450F-B748-CD18AD78ABEB}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "People", "People\People.csproj", "{587AD52F-E861-4359-93F9-0B5013BFE4A0}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Debug|iPhone = Debug|iPhone
16 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
17 | Release|Any CPU = Release|Any CPU
18 | Release|iPhone = Release|iPhone
19 | Release|iPhoneSimulator = Release|iPhoneSimulator
20 | EndGlobalSection
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
22 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
25 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhone.ActiveCfg = Debug|Any CPU
26 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhone.Build.0 = Debug|Any CPU
27 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhone.Deploy.0 = Debug|Any CPU
28 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
29 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
30 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
31 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|Any CPU.ActiveCfg = Release|Any CPU
32 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|Any CPU.Build.0 = Release|Any CPU
33 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|Any CPU.Deploy.0 = Release|Any CPU
34 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhone.ActiveCfg = Release|Any CPU
35 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhone.Build.0 = Release|Any CPU
36 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhone.Deploy.0 = Release|Any CPU
37 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
38 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
39 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
40 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
41 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
42 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|Any CPU.Deploy.0 = Debug|iPhoneSimulator
43 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhone.ActiveCfg = Debug|iPhone
44 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhone.Build.0 = Debug|iPhone
45 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhone.Deploy.0 = Debug|iPhone
46 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
47 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
48 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhoneSimulator.Deploy.0 = Debug|iPhoneSimulator
49 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|Any CPU.ActiveCfg = Release|iPhone
50 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|Any CPU.Build.0 = Release|iPhone
51 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|Any CPU.Deploy.0 = Release|iPhone
52 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhone.ActiveCfg = Release|iPhone
53 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhone.Build.0 = Release|iPhone
54 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhone.Deploy.0 = Release|iPhone
55 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
56 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
57 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhoneSimulator.Deploy.0 = Release|iPhoneSimulator
58 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
59 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
60 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
61 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
62 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhone.Build.0 = Debug|Any CPU
63 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhone.Deploy.0 = Debug|Any CPU
64 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
65 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
66 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
67 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
68 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|Any CPU.Build.0 = Release|Any CPU
69 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|Any CPU.Deploy.0 = Release|Any CPU
70 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhone.ActiveCfg = Release|Any CPU
71 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhone.Build.0 = Release|Any CPU
72 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhone.Deploy.0 = Release|Any CPU
73 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
74 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
75 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
76 | EndGlobalSection
77 | GlobalSection(SolutionProperties) = preSolution
78 | HideSolutionNode = FALSE
79 | EndGlobalSection
80 | GlobalSection(ExtensibilityGlobals) = postSolution
81 | SolutionGuid = {CA0EAF56-B10C-43A6-83E1-75D6B025061F}
82 | EndGlobalSection
83 | EndGlobal
84 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.28726.283
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "People.Android", "People.Android\People.Android.csproj", "{746CD883-629E-47C7-B5CA-C1E646AD3291}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "People.iOS", "People.iOS\People.iOS.csproj", "{B92F0639-E53E-450F-B748-CD18AD78ABEB}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "People", "People\People.csproj", "{587AD52F-E861-4359-93F9-0B5013BFE4A0}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Debug|iPhone = Debug|iPhone
16 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
17 | Release|Any CPU = Release|Any CPU
18 | Release|iPhone = Release|iPhone
19 | Release|iPhoneSimulator = Release|iPhoneSimulator
20 | EndGlobalSection
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
22 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
25 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhone.ActiveCfg = Debug|Any CPU
26 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhone.Build.0 = Debug|Any CPU
27 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhone.Deploy.0 = Debug|Any CPU
28 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
29 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
30 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
31 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|Any CPU.ActiveCfg = Release|Any CPU
32 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|Any CPU.Build.0 = Release|Any CPU
33 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|Any CPU.Deploy.0 = Release|Any CPU
34 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhone.ActiveCfg = Release|Any CPU
35 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhone.Build.0 = Release|Any CPU
36 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhone.Deploy.0 = Release|Any CPU
37 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
38 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
39 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
40 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
41 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
42 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|Any CPU.Deploy.0 = Debug|iPhoneSimulator
43 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhone.ActiveCfg = Debug|iPhone
44 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhone.Build.0 = Debug|iPhone
45 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhone.Deploy.0 = Debug|iPhone
46 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
47 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
48 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhoneSimulator.Deploy.0 = Debug|iPhoneSimulator
49 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|Any CPU.ActiveCfg = Release|iPhone
50 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|Any CPU.Build.0 = Release|iPhone
51 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|Any CPU.Deploy.0 = Release|iPhone
52 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhone.ActiveCfg = Release|iPhone
53 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhone.Build.0 = Release|iPhone
54 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhone.Deploy.0 = Release|iPhone
55 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
56 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
57 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhoneSimulator.Deploy.0 = Release|iPhoneSimulator
58 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
59 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
60 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
61 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
62 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhone.Build.0 = Debug|Any CPU
63 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhone.Deploy.0 = Debug|Any CPU
64 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
65 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
66 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
67 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
68 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|Any CPU.Build.0 = Release|Any CPU
69 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|Any CPU.Deploy.0 = Release|Any CPU
70 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhone.ActiveCfg = Release|Any CPU
71 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhone.Build.0 = Release|Any CPU
72 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhone.Deploy.0 = Release|Any CPU
73 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
74 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
75 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
76 | EndGlobalSection
77 | GlobalSection(SolutionProperties) = preSolution
78 | HideSolutionNode = FALSE
79 | EndGlobalSection
80 | GlobalSection(ExtensibilityGlobals) = postSolution
81 | SolutionGuid = {CA0EAF56-B10C-43A6-83E1-75D6B025061F}
82 | EndGlobalSection
83 | EndGlobal
84 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.28726.283
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "People.Android", "People.Android\People.Android.csproj", "{746CD883-629E-47C7-B5CA-C1E646AD3291}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "People.iOS", "People.iOS\People.iOS.csproj", "{B92F0639-E53E-450F-B748-CD18AD78ABEB}"
9 | EndProject
10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "People", "People\People.csproj", "{587AD52F-E861-4359-93F9-0B5013BFE4A0}"
11 | EndProject
12 | Global
13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
14 | Debug|Any CPU = Debug|Any CPU
15 | Debug|iPhone = Debug|iPhone
16 | Debug|iPhoneSimulator = Debug|iPhoneSimulator
17 | Release|Any CPU = Release|Any CPU
18 | Release|iPhone = Release|iPhone
19 | Release|iPhoneSimulator = Release|iPhoneSimulator
20 | EndGlobalSection
21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
22 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
23 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|Any CPU.Build.0 = Debug|Any CPU
24 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
25 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhone.ActiveCfg = Debug|Any CPU
26 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhone.Build.0 = Debug|Any CPU
27 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhone.Deploy.0 = Debug|Any CPU
28 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
29 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
30 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
31 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|Any CPU.ActiveCfg = Release|Any CPU
32 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|Any CPU.Build.0 = Release|Any CPU
33 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|Any CPU.Deploy.0 = Release|Any CPU
34 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhone.ActiveCfg = Release|Any CPU
35 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhone.Build.0 = Release|Any CPU
36 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhone.Deploy.0 = Release|Any CPU
37 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
38 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
39 | {746CD883-629E-47C7-B5CA-C1E646AD3291}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
40 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator
41 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator
42 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|Any CPU.Deploy.0 = Debug|iPhoneSimulator
43 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhone.ActiveCfg = Debug|iPhone
44 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhone.Build.0 = Debug|iPhone
45 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhone.Deploy.0 = Debug|iPhone
46 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
47 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
48 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Debug|iPhoneSimulator.Deploy.0 = Debug|iPhoneSimulator
49 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|Any CPU.ActiveCfg = Release|iPhone
50 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|Any CPU.Build.0 = Release|iPhone
51 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|Any CPU.Deploy.0 = Release|iPhone
52 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhone.ActiveCfg = Release|iPhone
53 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhone.Build.0 = Release|iPhone
54 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhone.Deploy.0 = Release|iPhone
55 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
56 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
57 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}.Release|iPhoneSimulator.Deploy.0 = Release|iPhoneSimulator
58 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
59 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
60 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
61 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhone.ActiveCfg = Debug|Any CPU
62 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhone.Build.0 = Debug|Any CPU
63 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhone.Deploy.0 = Debug|Any CPU
64 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
65 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
66 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Debug|iPhoneSimulator.Deploy.0 = Debug|Any CPU
67 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
68 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|Any CPU.Build.0 = Release|Any CPU
69 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|Any CPU.Deploy.0 = Release|Any CPU
70 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhone.ActiveCfg = Release|Any CPU
71 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhone.Build.0 = Release|Any CPU
72 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhone.Deploy.0 = Release|Any CPU
73 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
74 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
75 | {587AD52F-E861-4359-93F9-0B5013BFE4A0}.Release|iPhoneSimulator.Deploy.0 = Release|Any CPU
76 | EndGlobalSection
77 | GlobalSection(SolutionProperties) = preSolution
78 | HideSolutionNode = FALSE
79 | EndGlobalSection
80 | GlobalSection(ExtensibilityGlobals) = postSolution
81 | SolutionGuid = {CA0EAF56-B10C-43A6-83E1-75D6B025061F}
82 | EndGlobalSection
83 | EndGlobal
84 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.Android/People.Android.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {746CD883-629E-47C7-B5CA-C1E646AD3291}
7 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
8 | {c9e5eea5-ca05-42a1-839b-61506e0a37df}
9 | Library
10 | People.Droid
11 | People.Android
12 | True
13 | Resources\Resource.designer.cs
14 | Resource
15 | Properties\AndroidManifest.xml
16 | Resources
17 | Assets
18 | false
19 | v9.0
20 | true
21 | Xamarin.Android.Net.AndroidClientHandler
22 |
23 |
24 |
25 |
26 | true
27 | portable
28 | false
29 | bin\Debug
30 | DEBUG;
31 | prompt
32 | 4
33 | None
34 |
35 |
36 | true
37 | pdbonly
38 | true
39 | bin\Release
40 | prompt
41 | 4
42 | true
43 | false
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | 1.7.335
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 |
102 |
103 |
104 |
105 | {08D73E27-08FB-4257-A78B-FCCC752EF39D}
106 | People
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.Android/People.Android.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {746CD883-629E-47C7-B5CA-C1E646AD3291}
7 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
8 | {c9e5eea5-ca05-42a1-839b-61506e0a37df}
9 | Library
10 | People.Droid
11 | People.Android
12 | True
13 | Resources\Resource.designer.cs
14 | Resource
15 | Properties\AndroidManifest.xml
16 | Resources
17 | Assets
18 | false
19 | v9.0
20 | true
21 | Xamarin.Android.Net.AndroidClientHandler
22 |
23 |
24 |
25 |
26 | true
27 | portable
28 | false
29 | bin\Debug
30 | DEBUG;
31 | prompt
32 | 4
33 | None
34 |
35 |
36 | true
37 | pdbonly
38 | true
39 | bin\Release
40 | prompt
41 | 4
42 | true
43 | false
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | 1.7.335
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 |
102 |
103 |
104 |
105 | {08D73E27-08FB-4257-A78B-FCCC752EF39D}
106 | People
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.Android/People.Android.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | {746CD883-629E-47C7-B5CA-C1E646AD3291}
7 | {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
8 | {c9e5eea5-ca05-42a1-839b-61506e0a37df}
9 | Library
10 | People.Droid
11 | People.Android
12 | True
13 | Resources\Resource.designer.cs
14 | Resource
15 | Properties\AndroidManifest.xml
16 | Resources
17 | Assets
18 | false
19 | v9.0
20 | true
21 | Xamarin.Android.Net.AndroidClientHandler
22 |
23 |
24 |
25 |
26 | true
27 | portable
28 | false
29 | bin\Debug
30 | DEBUG;
31 | prompt
32 | 4
33 | None
34 |
35 |
36 | true
37 | pdbonly
38 | true
39 | bin\Release
40 | prompt
41 | 4
42 | true
43 | false
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | 1.7.335
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 |
102 |
103 |
104 |
105 | {08D73E27-08FB-4257-A78B-FCCC752EF39D}
106 | People
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/src/exercise1/final/People.iOS/People.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | iPhoneSimulator
6 | 8.0.30703
7 | 2.0
8 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}
9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | {6143fdea-f3c2-4a09-aafa-6e230626515e}
11 | Exe
12 | People.iOS
13 | Resources
14 | People.iOS
15 | true
16 | NSUrlSessionHandler
17 |
18 |
19 | true
20 | full
21 | false
22 | bin\iPhoneSimulator\Debug
23 | DEBUG
24 | prompt
25 | 4
26 | false
27 | x86_64
28 | None
29 | true
30 |
31 |
32 | none
33 | true
34 | bin\iPhoneSimulator\Release
35 | prompt
36 | 4
37 | None
38 | x86_64
39 | false
40 |
41 |
42 | true
43 | full
44 | false
45 | bin\iPhone\Debug
46 | DEBUG
47 | prompt
48 | 4
49 | false
50 | ARM64
51 | iPhone Developer
52 | true
53 | Entitlements.plist
54 |
55 |
56 | none
57 | true
58 | bin\iPhone\Release
59 | prompt
60 | 4
61 | ARM64
62 | false
63 | iPhone Developer
64 | Entitlements.plist
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 | false
77 |
78 |
79 | false
80 |
81 |
82 | false
83 |
84 |
85 | false
86 |
87 |
88 | false
89 |
90 |
91 | false
92 |
93 |
94 | false
95 |
96 |
97 | false
98 |
99 |
100 | false
101 |
102 |
103 | false
104 |
105 |
106 | false
107 |
108 |
109 | false
110 |
111 |
112 | false
113 |
114 |
115 | false
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 | 1.7.335
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | {08D73E27-08FB-4257-A78B-FCCC752EF39D}
137 | People
138 |
139 |
140 |
--------------------------------------------------------------------------------
/src/exercise1/start/People.iOS/People.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | iPhoneSimulator
6 | 8.0.30703
7 | 2.0
8 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}
9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | {6143fdea-f3c2-4a09-aafa-6e230626515e}
11 | Exe
12 | People.iOS
13 | Resources
14 | People.iOS
15 | true
16 | NSUrlSessionHandler
17 |
18 |
19 | true
20 | full
21 | false
22 | bin\iPhoneSimulator\Debug
23 | DEBUG
24 | prompt
25 | 4
26 | false
27 | x86_64
28 | None
29 | true
30 |
31 |
32 | none
33 | true
34 | bin\iPhoneSimulator\Release
35 | prompt
36 | 4
37 | None
38 | x86_64
39 | false
40 |
41 |
42 | true
43 | full
44 | false
45 | bin\iPhone\Debug
46 | DEBUG
47 | prompt
48 | 4
49 | false
50 | ARM64
51 | iPhone Developer
52 | true
53 | Entitlements.plist
54 |
55 |
56 | none
57 | true
58 | bin\iPhone\Release
59 | prompt
60 | 4
61 | ARM64
62 | false
63 | iPhone Developer
64 | Entitlements.plist
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 | false
77 |
78 |
79 | false
80 |
81 |
82 | false
83 |
84 |
85 | false
86 |
87 |
88 | false
89 |
90 |
91 | false
92 |
93 |
94 | false
95 |
96 |
97 | false
98 |
99 |
100 | false
101 |
102 |
103 | false
104 |
105 |
106 | false
107 |
108 |
109 | false
110 |
111 |
112 | false
113 |
114 |
115 | false
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 | 1.7.335
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | {08D73E27-08FB-4257-A78B-FCCC752EF39D}
137 | People
138 |
139 |
140 |
--------------------------------------------------------------------------------
/src/exercise2/final/People.iOS/People.iOS.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | iPhoneSimulator
6 | 8.0.30703
7 | 2.0
8 | {B92F0639-E53E-450F-B748-CD18AD78ABEB}
9 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
10 | {6143fdea-f3c2-4a09-aafa-6e230626515e}
11 | Exe
12 | People.iOS
13 | Resources
14 | People.iOS
15 | true
16 | NSUrlSessionHandler
17 |
18 |
19 | true
20 | full
21 | false
22 | bin\iPhoneSimulator\Debug
23 | DEBUG
24 | prompt
25 | 4
26 | false
27 | x86_64
28 | None
29 | true
30 |
31 |
32 | none
33 | true
34 | bin\iPhoneSimulator\Release
35 | prompt
36 | 4
37 | None
38 | x86_64
39 | false
40 |
41 |
42 | true
43 | full
44 | false
45 | bin\iPhone\Debug
46 | DEBUG
47 | prompt
48 | 4
49 | false
50 | ARM64
51 | iPhone Developer
52 | true
53 | Entitlements.plist
54 |
55 |
56 | none
57 | true
58 | bin\iPhone\Release
59 | prompt
60 | 4
61 | ARM64
62 | false
63 | iPhone Developer
64 | Entitlements.plist
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 | false
77 |
78 |
79 | false
80 |
81 |
82 | false
83 |
84 |
85 | false
86 |
87 |
88 | false
89 |
90 |
91 | false
92 |
93 |
94 | false
95 |
96 |
97 | false
98 |
99 |
100 | false
101 |
102 |
103 | false
104 |
105 |
106 | false
107 |
108 |
109 | false
110 |
111 |
112 | false
113 |
114 |
115 | false
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 | 1.7.335
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 | {08D73E27-08FB-4257-A78B-FCCC752EF39D}
137 | People
138 |
139 |
140 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.suo
8 | *.user
9 | *.userosscache
10 | *.sln.docstates
11 |
12 | # User-specific files (MonoDevelop/Xamarin Studio)
13 | *.userprefs
14 |
15 | # Build results
16 | [Dd]ebug/
17 | [Dd]ebugPublic/
18 | [Rr]elease/
19 | [Rr]eleases/
20 | x64/
21 | x86/
22 | bld/
23 | [Bb]in/
24 | [Oo]bj/
25 | [Ll]og/
26 |
27 | # Visual Studio 2015/2017 cache/options directory
28 | .vs/
29 | # Uncomment if you have tasks that create the project's static files in wwwroot
30 | #wwwroot/
31 |
32 | # Visual Studio 2017 auto generated files
33 | Generated\ Files/
34 |
35 | # MSTest test Results
36 | [Tt]est[Rr]esult*/
37 | [Bb]uild[Ll]og.*
38 |
39 | # NUNIT
40 | *.VisualState.xml
41 | TestResult.xml
42 |
43 | # Build Results of an ATL Project
44 | [Dd]ebugPS/
45 | [Rr]eleasePS/
46 | dlldata.c
47 |
48 | # Benchmark Results
49 | BenchmarkDotNet.Artifacts/
50 |
51 | # .NET Core
52 | project.lock.json
53 | project.fragment.lock.json
54 | artifacts/
55 | **/Properties/launchSettings.json
56 |
57 | # StyleCop
58 | StyleCopReport.xml
59 |
60 | # Files built by Visual Studio
61 | *_i.c
62 | *_p.c
63 | *_i.h
64 | *.ilk
65 | *.meta
66 | *.obj
67 | *.iobj
68 | *.pch
69 | *.pdb
70 | *.ipdb
71 | *.pgc
72 | *.pgd
73 | *.rsp
74 | *.sbr
75 | *.tlb
76 | *.tli
77 | *.tlh
78 | *.tmp
79 | *.tmp_proj
80 | *.log
81 | *.vspscc
82 | *.vssscc
83 | .builds
84 | *.pidb
85 | *.svclog
86 | *.scc
87 |
88 | # Chutzpah Test files
89 | _Chutzpah*
90 |
91 | # Visual C++ cache files
92 | ipch/
93 | *.aps
94 | *.ncb
95 | *.opendb
96 | *.opensdf
97 | *.sdf
98 | *.cachefile
99 | *.VC.db
100 | *.VC.VC.opendb
101 |
102 | # Visual Studio profiler
103 | *.psess
104 | *.vsp
105 | *.vspx
106 | *.sap
107 |
108 | # Visual Studio Trace Files
109 | *.e2e
110 |
111 | # TFS 2012 Local Workspace
112 | $tf/
113 |
114 | # Guidance Automation Toolkit
115 | *.gpState
116 |
117 | # ReSharper is a .NET coding add-in
118 | _ReSharper*/
119 | *.[Rr]e[Ss]harper
120 | *.DotSettings.user
121 |
122 | # JustCode is a .NET coding add-in
123 | .JustCode
124 |
125 | # TeamCity is a build add-in
126 | _TeamCity*
127 |
128 | # DotCover is a Code Coverage Tool
129 | *.dotCover
130 |
131 | # AxoCover is a Code Coverage Tool
132 | .axoCover/*
133 | !.axoCover/settings.json
134 |
135 | # Visual Studio code coverage results
136 | *.coverage
137 | *.coveragexml
138 |
139 | # NCrunch
140 | _NCrunch_*
141 | .*crunch*.local.xml
142 | nCrunchTemp_*
143 |
144 | # MightyMoose
145 | *.mm.*
146 | AutoTest.Net/
147 |
148 | # Web workbench (sass)
149 | .sass-cache/
150 |
151 | # Installshield output folder
152 | [Ee]xpress/
153 |
154 | # DocProject is a documentation generator add-in
155 | DocProject/buildhelp/
156 | DocProject/Help/*.HxT
157 | DocProject/Help/*.HxC
158 | DocProject/Help/*.hhc
159 | DocProject/Help/*.hhk
160 | DocProject/Help/*.hhp
161 | DocProject/Help/Html2
162 | DocProject/Help/html
163 |
164 | # Click-Once directory
165 | publish/
166 |
167 | # Publish Web Output
168 | *.[Pp]ublish.xml
169 | *.azurePubxml
170 | # Note: Comment the next line if you want to checkin your web deploy settings,
171 | # but database connection strings (with potential passwords) will be unencrypted
172 | *.pubxml
173 | *.publishproj
174 |
175 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
176 | # checkin your Azure Web App publish settings, but sensitive information contained
177 | # in these scripts will be unencrypted
178 | PublishScripts/
179 |
180 | # NuGet Packages
181 | *.nupkg
182 | # The packages folder can be ignored because of Package Restore
183 | **/[Pp]ackages/*
184 | # except build/, which is used as an MSBuild target.
185 | !**/[Pp]ackages/build/
186 | # Uncomment if necessary however generally it will be regenerated when needed
187 | #!**/[Pp]ackages/repositories.config
188 | # NuGet v3's project.json files produces more ignorable files
189 | *.nuget.props
190 | *.nuget.targets
191 |
192 | # Microsoft Azure Build Output
193 | csx/
194 | *.build.csdef
195 |
196 | # Microsoft Azure Emulator
197 | ecf/
198 | rcf/
199 |
200 | # Windows Store app package directories and files
201 | AppPackages/
202 | BundleArtifacts/
203 | Package.StoreAssociation.xml
204 | _pkginfo.txt
205 | *.appx
206 |
207 | # Visual Studio cache files
208 | # files ending in .cache can be ignored
209 | *.[Cc]ache
210 | # but keep track of directories ending in .cache
211 | !*.[Cc]ache/
212 |
213 | # Others
214 | ClientBin/
215 | ~$*
216 | *~
217 | *.dbmdl
218 | *.dbproj.schemaview
219 | *.jfm
220 | *.pfx
221 | *.publishsettings
222 | orleans.codegen.cs
223 |
224 | # Including strong name files can present a security risk
225 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
226 | #*.snk
227 |
228 | # Since there are multiple workflows, uncomment next line to ignore bower_components
229 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
230 | #bower_components/
231 |
232 | # RIA/Silverlight projects
233 | Generated_Code/
234 |
235 | # Backup & report files from converting an old project file
236 | # to a newer Visual Studio version. Backup files are not needed,
237 | # because we have git ;-)
238 | _UpgradeReport_Files/
239 | Backup*/
240 | UpgradeLog*.XML
241 | UpgradeLog*.htm
242 | ServiceFabricBackup/
243 | *.rptproj.bak
244 |
245 | # SQL Server files
246 | *.mdf
247 | *.ldf
248 | *.ndf
249 |
250 | # Business Intelligence projects
251 | *.rdl.data
252 | *.bim.layout
253 | *.bim_*.settings
254 | *.rptproj.rsuser
255 |
256 | # Microsoft Fakes
257 | FakesAssemblies/
258 |
259 | # GhostDoc plugin setting file
260 | *.GhostDoc.xml
261 |
262 | # Node.js Tools for Visual Studio
263 | .ntvs_analysis.dat
264 | node_modules/
265 |
266 | # Visual Studio 6 build log
267 | *.plg
268 |
269 | # Visual Studio 6 workspace options file
270 | *.opt
271 |
272 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
273 | *.vbw
274 |
275 | # Visual Studio LightSwitch build output
276 | **/*.HTMLClient/GeneratedArtifacts
277 | **/*.DesktopClient/GeneratedArtifacts
278 | **/*.DesktopClient/ModelManifest.xml
279 | **/*.Server/GeneratedArtifacts
280 | **/*.Server/ModelManifest.xml
281 | _Pvt_Extensions
282 |
283 | # Paket dependency manager
284 | .paket/paket.exe
285 | paket-files/
286 |
287 | # FAKE - F# Make
288 | .fake/
289 |
290 | # JetBrains Rider
291 | .idea/
292 | *.sln.iml
293 |
294 | # CodeRush
295 | .cr/
296 |
297 | # Python Tools for Visual Studio (PTVS)
298 | __pycache__/
299 | *.pyc
300 |
301 | # Cake - Uncomment if you are using it
302 | # tools/**
303 | # !tools/packages.config
304 |
305 | # Tabs Studio
306 | *.tss
307 |
308 | # Telerik's JustMock configuration file
309 | *.jmconfig
310 |
311 | # BizTalk build output
312 | *.btp.cs
313 | *.btm.cs
314 | *.odx.cs
315 | *.xsd.cs
316 |
317 | # OpenCover UI analysis results
318 | OpenCover/
319 |
320 | # Azure Stream Analytics local run output
321 | ASALocalRun/
322 |
323 | # MSBuild Binary and Structured Log
324 | *.binlog
325 |
326 | # NVidia Nsight GPU debugger configuration file
327 | *.nvuser
328 |
329 | # MFractors (Xamarin productivity tool) working folder
330 | .mfractor/
331 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Attribution 4.0 International
2 |
3 | =======================================================================
4 |
5 | Creative Commons Corporation ("Creative Commons") is not a law firm and
6 | does not provide legal services or legal advice. Distribution of
7 | Creative Commons public licenses does not create a lawyer-client or
8 | other relationship. Creative Commons makes its licenses and related
9 | information available on an "as-is" basis. Creative Commons gives no
10 | warranties regarding its licenses, any material licensed under their
11 | terms and conditions, or any related information. Creative Commons
12 | disclaims all liability for damages resulting from their use to the
13 | fullest extent possible.
14 |
15 | Using Creative Commons Public Licenses
16 |
17 | Creative Commons public licenses provide a standard set of terms and
18 | conditions that creators and other rights holders may use to share
19 | original works of authorship and other material subject to copyright
20 | and certain other rights specified in the public license below. The
21 | following considerations are for informational purposes only, are not
22 | exhaustive, and do not form part of our licenses.
23 |
24 | Considerations for licensors: Our public licenses are
25 | intended for use by those authorized to give the public
26 | permission to use material in ways otherwise restricted by
27 | copyright and certain other rights. Our licenses are
28 | irrevocable. Licensors should read and understand the terms
29 | and conditions of the license they choose before applying it.
30 | Licensors should also secure all rights necessary before
31 | applying our licenses so that the public can reuse the
32 | material as expected. Licensors should clearly mark any
33 | material not subject to the license. This includes other CC-
34 | licensed material, or material used under an exception or
35 | limitation to copyright. More considerations for licensors:
36 | wiki.creativecommons.org/Considerations_for_licensors
37 |
38 | Considerations for the public: By using one of our public
39 | licenses, a licensor grants the public permission to use the
40 | licensed material under specified terms and conditions. If
41 | the licensor's permission is not necessary for any reason--for
42 | example, because of any applicable exception or limitation to
43 | copyright--then that use is not regulated by the license. Our
44 | licenses grant only permissions under copyright and certain
45 | other rights that a licensor has authority to grant. Use of
46 | the licensed material may still be restricted for other
47 | reasons, including because others have copyright or other
48 | rights in the material. A licensor may make special requests,
49 | such as asking that all changes be marked or described.
50 | Although not required by our licenses, you are encouraged to
51 | respect those requests where reasonable. More_considerations
52 | for the public:
53 | wiki.creativecommons.org/Considerations_for_licensees
54 |
55 | =======================================================================
56 |
57 | Creative Commons Attribution 4.0 International Public License
58 |
59 | By exercising the Licensed Rights (defined below), You accept and agree
60 | to be bound by the terms and conditions of this Creative Commons
61 | Attribution 4.0 International Public License ("Public License"). To the
62 | extent this Public License may be interpreted as a contract, You are
63 | granted the Licensed Rights in consideration of Your acceptance of
64 | these terms and conditions, and the Licensor grants You such rights in
65 | consideration of benefits the Licensor receives from making the
66 | Licensed Material available under these terms and conditions.
67 |
68 |
69 | Section 1 -- Definitions.
70 |
71 | a. Adapted Material means material subject to Copyright and Similar
72 | Rights that is derived from or based upon the Licensed Material
73 | and in which the Licensed Material is translated, altered,
74 | arranged, transformed, or otherwise modified in a manner requiring
75 | permission under the Copyright and Similar Rights held by the
76 | Licensor. For purposes of this Public License, where the Licensed
77 | Material is a musical work, performance, or sound recording,
78 | Adapted Material is always produced where the Licensed Material is
79 | synched in timed relation with a moving image.
80 |
81 | b. Adapter's License means the license You apply to Your Copyright
82 | and Similar Rights in Your contributions to Adapted Material in
83 | accordance with the terms and conditions of this Public License.
84 |
85 | c. Copyright and Similar Rights means copyright and/or similar rights
86 | closely related to copyright including, without limitation,
87 | performance, broadcast, sound recording, and Sui Generis Database
88 | Rights, without regard to how the rights are labeled or
89 | categorized. For purposes of this Public License, the rights
90 | specified in Section 2(b)(1)-(2) are not Copyright and Similar
91 | Rights.
92 |
93 | d. Effective Technological Measures means those measures that, in the
94 | absence of proper authority, may not be circumvented under laws
95 | fulfilling obligations under Article 11 of the WIPO Copyright
96 | Treaty adopted on December 20, 1996, and/or similar international
97 | agreements.
98 |
99 | e. Exceptions and Limitations means fair use, fair dealing, and/or
100 | any other exception or limitation to Copyright and Similar Rights
101 | that applies to Your use of the Licensed Material.
102 |
103 | f. Licensed Material means the artistic or literary work, database,
104 | or other material to which the Licensor applied this Public
105 | License.
106 |
107 | g. Licensed Rights means the rights granted to You subject to the
108 | terms and conditions of this Public License, which are limited to
109 | all Copyright and Similar Rights that apply to Your use of the
110 | Licensed Material and that the Licensor has authority to license.
111 |
112 | h. Licensor means the individual(s) or entity(ies) granting rights
113 | under this Public License.
114 |
115 | i. Share means to provide material to the public by any means or
116 | process that requires permission under the Licensed Rights, such
117 | as reproduction, public display, public performance, distribution,
118 | dissemination, communication, or importation, and to make material
119 | available to the public including in ways that members of the
120 | public may access the material from a place and at a time
121 | individually chosen by them.
122 |
123 | j. Sui Generis Database Rights means rights other than copyright
124 | resulting from Directive 96/9/EC of the European Parliament and of
125 | the Council of 11 March 1996 on the legal protection of databases,
126 | as amended and/or succeeded, as well as other essentially
127 | equivalent rights anywhere in the world.
128 |
129 | k. You means the individual or entity exercising the Licensed Rights
130 | under this Public License. Your has a corresponding meaning.
131 |
132 |
133 | Section 2 -- Scope.
134 |
135 | a. License grant.
136 |
137 | 1. Subject to the terms and conditions of this Public License,
138 | the Licensor hereby grants You a worldwide, royalty-free,
139 | non-sublicensable, non-exclusive, irrevocable license to
140 | exercise the Licensed Rights in the Licensed Material to:
141 |
142 | a. reproduce and Share the Licensed Material, in whole or
143 | in part; and
144 |
145 | b. produce, reproduce, and Share Adapted Material.
146 |
147 | 2. Exceptions and Limitations. For the avoidance of doubt, where
148 | Exceptions and Limitations apply to Your use, this Public
149 | License does not apply, and You do not need to comply with
150 | its terms and conditions.
151 |
152 | 3. Term. The term of this Public License is specified in Section
153 | 6(a).
154 |
155 | 4. Media and formats; technical modifications allowed. The
156 | Licensor authorizes You to exercise the Licensed Rights in
157 | all media and formats whether now known or hereafter created,
158 | and to make technical modifications necessary to do so. The
159 | Licensor waives and/or agrees not to assert any right or
160 | authority to forbid You from making technical modifications
161 | necessary to exercise the Licensed Rights, including
162 | technical modifications necessary to circumvent Effective
163 | Technological Measures. For purposes of this Public License,
164 | simply making modifications authorized by this Section 2(a)
165 | (4) never produces Adapted Material.
166 |
167 | 5. Downstream recipients.
168 |
169 | a. Offer from the Licensor -- Licensed Material. Every
170 | recipient of the Licensed Material automatically
171 | receives an offer from the Licensor to exercise the
172 | Licensed Rights under the terms and conditions of this
173 | Public License.
174 |
175 | b. No downstream restrictions. You may not offer or impose
176 | any additional or different terms or conditions on, or
177 | apply any Effective Technological Measures to, the
178 | Licensed Material if doing so restricts exercise of the
179 | Licensed Rights by any recipient of the Licensed
180 | Material.
181 |
182 | 6. No endorsement. Nothing in this Public License constitutes or
183 | may be construed as permission to assert or imply that You
184 | are, or that Your use of the Licensed Material is, connected
185 | with, or sponsored, endorsed, or granted official status by,
186 | the Licensor or others designated to receive attribution as
187 | provided in Section 3(a)(1)(A)(i).
188 |
189 | b. Other rights.
190 |
191 | 1. Moral rights, such as the right of integrity, are not
192 | licensed under this Public License, nor are publicity,
193 | privacy, and/or other similar personality rights; however, to
194 | the extent possible, the Licensor waives and/or agrees not to
195 | assert any such rights held by the Licensor to the limited
196 | extent necessary to allow You to exercise the Licensed
197 | Rights, but not otherwise.
198 |
199 | 2. Patent and trademark rights are not licensed under this
200 | Public License.
201 |
202 | 3. To the extent possible, the Licensor waives any right to
203 | collect royalties from You for the exercise of the Licensed
204 | Rights, whether directly or through a collecting society
205 | under any voluntary or waivable statutory or compulsory
206 | licensing scheme. In all other cases the Licensor expressly
207 | reserves any right to collect such royalties.
208 |
209 |
210 | Section 3 -- License Conditions.
211 |
212 | Your exercise of the Licensed Rights is expressly made subject to the
213 | following conditions.
214 |
215 | a. Attribution.
216 |
217 | 1. If You Share the Licensed Material (including in modified
218 | form), You must:
219 |
220 | a. retain the following if it is supplied by the Licensor
221 | with the Licensed Material:
222 |
223 | i. identification of the creator(s) of the Licensed
224 | Material and any others designated to receive
225 | attribution, in any reasonable manner requested by
226 | the Licensor (including by pseudonym if
227 | designated);
228 |
229 | ii. a copyright notice;
230 |
231 | iii. a notice that refers to this Public License;
232 |
233 | iv. a notice that refers to the disclaimer of
234 | warranties;
235 |
236 | v. a URI or hyperlink to the Licensed Material to the
237 | extent reasonably practicable;
238 |
239 | b. indicate if You modified the Licensed Material and
240 | retain an indication of any previous modifications; and
241 |
242 | c. indicate the Licensed Material is licensed under this
243 | Public License, and include the text of, or the URI or
244 | hyperlink to, this Public License.
245 |
246 | 2. You may satisfy the conditions in Section 3(a)(1) in any
247 | reasonable manner based on the medium, means, and context in
248 | which You Share the Licensed Material. For example, it may be
249 | reasonable to satisfy the conditions by providing a URI or
250 | hyperlink to a resource that includes the required
251 | information.
252 |
253 | 3. If requested by the Licensor, You must remove any of the
254 | information required by Section 3(a)(1)(A) to the extent
255 | reasonably practicable.
256 |
257 | 4. If You Share Adapted Material You produce, the Adapter's
258 | License You apply must not prevent recipients of the Adapted
259 | Material from complying with this Public License.
260 |
261 |
262 | Section 4 -- Sui Generis Database Rights.
263 |
264 | Where the Licensed Rights include Sui Generis Database Rights that
265 | apply to Your use of the Licensed Material:
266 |
267 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right
268 | to extract, reuse, reproduce, and Share all or a substantial
269 | portion of the contents of the database;
270 |
271 | b. if You include all or a substantial portion of the database
272 | contents in a database in which You have Sui Generis Database
273 | Rights, then the database in which You have Sui Generis Database
274 | Rights (but not its individual contents) is Adapted Material; and
275 |
276 | c. You must comply with the conditions in Section 3(a) if You Share
277 | all or a substantial portion of the contents of the database.
278 |
279 | For the avoidance of doubt, this Section 4 supplements and does not
280 | replace Your obligations under this Public License where the Licensed
281 | Rights include other Copyright and Similar Rights.
282 |
283 |
284 | Section 5 -- Disclaimer of Warranties and Limitation of Liability.
285 |
286 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
287 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
288 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
289 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
290 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
291 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
292 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
293 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
294 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
295 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
296 |
297 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
298 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
299 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
300 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
301 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
302 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
303 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
304 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
305 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
306 |
307 | c. The disclaimer of warranties and limitation of liability provided
308 | above shall be interpreted in a manner that, to the extent
309 | possible, most closely approximates an absolute disclaimer and
310 | waiver of all liability.
311 |
312 |
313 | Section 6 -- Term and Termination.
314 |
315 | a. This Public License applies for the term of the Copyright and
316 | Similar Rights licensed here. However, if You fail to comply with
317 | this Public License, then Your rights under this Public License
318 | terminate automatically.
319 |
320 | b. Where Your right to use the Licensed Material has terminated under
321 | Section 6(a), it reinstates:
322 |
323 | 1. automatically as of the date the violation is cured, provided
324 | it is cured within 30 days of Your discovery of the
325 | violation; or
326 |
327 | 2. upon express reinstatement by the Licensor.
328 |
329 | For the avoidance of doubt, this Section 6(b) does not affect any
330 | right the Licensor may have to seek remedies for Your violations
331 | of this Public License.
332 |
333 | c. For the avoidance of doubt, the Licensor may also offer the
334 | Licensed Material under separate terms or conditions or stop
335 | distributing the Licensed Material at any time; however, doing so
336 | will not terminate this Public License.
337 |
338 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
339 | License.
340 |
341 |
342 | Section 7 -- Other Terms and Conditions.
343 |
344 | a. The Licensor shall not be bound by any additional or different
345 | terms or conditions communicated by You unless expressly agreed.
346 |
347 | b. Any arrangements, understandings, or agreements regarding the
348 | Licensed Material not stated herein are separate from and
349 | independent of the terms and conditions of this Public License.
350 |
351 |
352 | Section 8 -- Interpretation.
353 |
354 | a. For the avoidance of doubt, this Public License does not, and
355 | shall not be interpreted to, reduce, limit, restrict, or impose
356 | conditions on any use of the Licensed Material that could lawfully
357 | be made without permission under this Public License.
358 |
359 | b. To the extent possible, if any provision of this Public License is
360 | deemed unenforceable, it shall be automatically reformed to the
361 | minimum extent necessary to make it enforceable. If the provision
362 | cannot be reformed, it shall be severed from this Public License
363 | without affecting the enforceability of the remaining terms and
364 | conditions.
365 |
366 | c. No term or condition of this Public License will be waived and no
367 | failure to comply consented to unless expressly agreed to by the
368 | Licensor.
369 |
370 | d. Nothing in this Public License constitutes or may be interpreted
371 | as a limitation upon, or waiver of, any privileges and immunities
372 | that apply to the Licensor or You, including from the legal
373 | processes of any jurisdiction or authority.
374 |
375 |
376 | =======================================================================
377 |
378 | Creative Commons is not a party to its public
379 | licenses. Notwithstanding, Creative Commons may elect to apply one of
380 | its public licenses to material it publishes and in those instances
381 | will be considered the “Licensor.” The text of the Creative Commons
382 | public licenses is dedicated to the public domain under the CC0 Public
383 | Domain Dedication. Except for the limited purpose of indicating that
384 | material is shared under a Creative Commons public license or as
385 | otherwise permitted by the Creative Commons policies published at
386 | creativecommons.org/policies, Creative Commons does not authorize the
387 | use of the trademark "Creative Commons" or any other trademark or logo
388 | of Creative Commons without its prior written consent including,
389 | without limitation, in connection with any unauthorized modifications
390 | to any of its public licenses or any other arrangements,
391 | understandings, or agreements concerning use of licensed material. For
392 | the avoidance of doubt, this paragraph does not form part of the
393 | public licenses.
394 |
395 | Creative Commons may be contacted at creativecommons.org.
--------------------------------------------------------------------------------