├── Chapter02 ├── HelloWorld │ ├── HelloWorld.Skia.Wpf │ │ ├── Program.cs │ │ └── HelloWorld.Skia.Wpf.csproj │ ├── HelloWorld.macOS │ │ ├── Assets.xcassets │ │ │ ├── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ ├── AppIcon-16.png │ │ │ │ ├── AppIcon-32.png │ │ │ │ ├── AppIcon-128.png │ │ │ │ ├── AppIcon-256.png │ │ │ │ ├── AppIcon-512.png │ │ │ │ ├── AppIcon-128@2x.png │ │ │ │ ├── AppIcon-16@2x.png │ │ │ │ ├── AppIcon-256@2x.png │ │ │ │ ├── AppIcon-32@2x.png │ │ │ │ └── AppIcon-512@2x.png │ │ │ └── unologo.imageset │ │ │ │ └── unoplatform.jpg │ │ ├── Resources │ │ │ └── Fonts │ │ │ │ └── uno-fluentui-assets.ttf │ │ ├── Entitlements.plist │ │ ├── Main.cs │ │ ├── Info.plist │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ ├── HelloWorld.UWP │ │ ├── Assets │ │ │ ├── StoreLogo.png │ │ │ ├── SplashScreen.scale-200.png │ │ │ ├── LockScreenLogo.scale-200.png │ │ │ ├── Square44x44Logo.scale-200.png │ │ │ ├── Wide310x150Logo.scale-200.png │ │ │ └── Square150x150Logo.scale-200.png │ │ └── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── Default.rd.xml │ ├── HelloWorld.Wasm │ │ ├── WasmScripts │ │ │ └── AppManifest.js │ │ ├── Assets │ │ │ └── SplashScreen.png │ │ ├── LinkerConfig.xml │ │ ├── Program.cs │ │ └── Properties │ │ │ └── launchSettings.json │ ├── HelloWorld.Skia.Tizen │ │ ├── shared │ │ │ └── res │ │ │ │ └── Icon.png │ │ ├── Assets │ │ │ └── Fonts │ │ │ │ └── uno-fluentui-assets.ttf │ │ ├── Program.cs │ │ ├── tizen-manifest.xml │ │ └── HelloWorld.Skia.Tizen.csproj │ ├── HelloWorld.Droid │ │ ├── Resources │ │ │ ├── drawable │ │ │ │ └── Icon.png │ │ │ └── values │ │ │ │ ├── Strings.xml │ │ │ │ └── Styles.xml │ │ ├── Assets │ │ │ ├── Fonts │ │ │ │ └── uno-fluentui-assets.ttf │ │ │ └── AboutAssets.txt │ │ ├── Properties │ │ │ ├── AndroidManifest.xml │ │ │ └── AssemblyInfo.cs │ │ ├── MainActivity.cs │ │ └── Main.cs │ ├── HelloWorld.iOS │ │ ├── Resources │ │ │ ├── Default-568h@2x.png │ │ │ ├── SplashScreen@2x.png │ │ │ ├── SplashScreen@3x.png │ │ │ └── Fonts │ │ │ │ └── uno-fluentui-assets.ttf │ │ ├── Entitlements.plist │ │ ├── Media.xcassets │ │ │ ├── AppIcons.appiconset │ │ │ │ ├── iPad-76x76@2x.png │ │ │ │ ├── iPad-84x84@2x.png │ │ │ │ ├── iPhone-20x20@2x.png │ │ │ │ ├── iPhone-20x20@3x.png │ │ │ │ ├── iPhone-40x40@3x.png │ │ │ │ ├── iPhone-60x60@2x.png │ │ │ │ └── ios-marketing-1024x1024@1x.png │ │ │ └── LaunchImages.launchimage │ │ │ │ └── Contents.json │ │ ├── Main.cs │ │ └── Properties │ │ │ └── AssemblyInfo.cs │ ├── HelloWorld.Skia.Wpf.Host │ │ ├── App.config │ │ ├── Assets │ │ │ └── Fonts │ │ │ │ └── uno-fluentui-assets.ttf │ │ ├── Properties │ │ │ ├── Settings.settings │ │ │ └── Settings.Designer.cs │ │ ├── App.xaml.cs │ │ ├── App.xaml │ │ ├── MainWindow.xaml │ │ ├── MainWindow.xaml.cs │ │ └── HelloWorld.Skia.Wpf.Host.csproj │ ├── HelloWorld.Skia.Gtk │ │ ├── Assets │ │ │ └── Fonts │ │ │ │ └── uno-fluentui-assets.ttf │ │ ├── Program.cs │ │ └── HelloWorld.Skia.Gtk.csproj │ └── HelloWorld.Shared │ │ ├── App.xaml │ │ ├── MainPage.xaml.cs │ │ ├── Assets │ │ └── SharedAssets.md │ │ ├── HelloWorld.Shared.shproj │ │ ├── MainPage.xaml │ │ └── HelloWorld.Shared.projitems └── HelloWorld.Helpers │ ├── Greetings.cs │ └── HelloWorld.Helpers.csproj ├── Chapter03 ├── ResourcePlanner.macOS │ ├── Assets.xcassets │ │ ├── Contents.json │ │ ├── AppIcon.appiconset │ │ │ ├── AppIcon-128.png │ │ │ ├── AppIcon-16.png │ │ │ ├── AppIcon-256.png │ │ │ ├── AppIcon-32.png │ │ │ ├── AppIcon-512.png │ │ │ ├── AppIcon-16@2x.png │ │ │ ├── AppIcon-32@2x.png │ │ │ ├── AppIcon-128@2x.png │ │ │ ├── AppIcon-256@2x.png │ │ │ └── AppIcon-512@2x.png │ │ └── unologo.imageset │ │ │ └── unoplatform.jpg │ ├── Resources │ │ └── Fonts │ │ │ └── uno-fluentui-assets.ttf │ ├── Entitlements.plist │ ├── Main.cs │ ├── Info.plist │ └── Properties │ │ └── AssemblyInfo.cs ├── ResourcePlanner.UWP │ ├── Assets │ │ ├── StoreLogo.png │ │ ├── SplashScreen.scale-200.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Square150x150Logo.scale-200.png │ └── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml ├── ResourcePlanner.Wasm │ ├── Assets │ │ └── SplashScreen.png │ ├── WasmScripts │ │ └── AppManifest.js │ ├── Program.cs │ ├── LinkerConfig.xml │ └── Properties │ │ └── launchSettings.json └── ResourcePlanner.Shared │ ├── App.xaml │ ├── ViewModels │ └── IssueListViewModel.cs │ ├── Models │ └── IssuesRepository.cs │ ├── Views │ ├── ExportIssueView.xaml.cs │ └── IssueListView.xaml.cs │ ├── MainPage.xaml.cs │ ├── Assets │ └── SharedAssets.md │ └── ResourcePlanner.Shared.shproj ├── WebApi └── UnoBookRail.WebApi │ ├── Properties │ ├── serviceDependencies.json │ └── launchSettings.json │ ├── appsettings.Development.json │ ├── appsettings.json │ ├── .config │ └── dotnet-tools.json │ ├── wwwroot │ └── index.html │ ├── UnoBookRail.WebApi.csproj │ ├── Controllers │ ├── StationsController.cs │ └── QuickReportsController.cs │ └── Program.cs ├── Chapter06 ├── Dashboard.UWP │ ├── Assets │ │ ├── StoreLogo.png │ │ ├── SplashScreen.scale-200.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square44x44Logo.scale-200.png │ │ └── Wide310x150Logo.scale-200.png │ └── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml ├── Dashboard.Wasm │ ├── Assets │ │ └── SplashScreen.png │ ├── WasmScripts │ │ └── AppManifest.js │ ├── LinkerConfig.xml │ ├── Program.cs │ └── Properties │ │ └── launchSettings.json ├── Dashboard.Shared │ ├── Views │ │ ├── HourlySales.cs │ │ ├── PersonCount.cs │ │ ├── FinancePage.xaml.cs │ │ ├── NetworkPage.xaml │ │ └── OperationsPage.xaml.cs │ ├── App.xaml │ ├── MainPage.xaml │ ├── Assets │ │ └── SharedAssets.md │ ├── Dashboard.Shared.shproj │ └── MainPage.xaml.cs └── readme.md ├── Chapter04 ├── NetworkAssist.UWP │ ├── Assets │ │ ├── StoreLogo.png │ │ ├── SplashScreen.scale-200.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Square150x150Logo.scale-200.png │ └── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml ├── NetworkAssist.Droid │ ├── Resources │ │ ├── drawable │ │ │ └── Icon.png │ │ └── values │ │ │ ├── Strings.xml │ │ │ └── Styles.xml │ ├── Assets │ │ ├── Fonts │ │ │ └── uno-fluentui-assets.ttf │ │ └── AboutAssets.txt │ ├── MainActivity.cs │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ └── Main.cs ├── NetworkAssist.iOS │ ├── Resources │ │ ├── Default-568h@2x.png │ │ ├── SplashScreen@2x.png │ │ ├── SplashScreen@3x.png │ │ └── Fonts │ │ │ └── uno-fluentui-assets.ttf │ ├── Entitlements.plist │ ├── Media.xcassets │ │ ├── AppIcons.appiconset │ │ │ ├── iPad-76x76@2x.png │ │ │ ├── iPad-84x84@2x.png │ │ │ ├── iPhone-20x20@2x.png │ │ │ ├── iPhone-20x20@3x.png │ │ │ ├── iPhone-40x40@3x.png │ │ │ ├── iPhone-60x60@2x.png │ │ │ └── ios-marketing-1024x1024@1x.png │ │ └── LaunchImages.launchimage │ │ │ └── Contents.json │ ├── Main.cs │ └── Properties │ │ └── AssemblyInfo.cs └── NetworkAssist.Shared │ ├── ViewModels │ └── StationArrivalDetails.cs │ ├── Converters │ └── CupertinoButtonColorConverter.cs │ ├── Assets │ └── SharedAssets.md │ ├── NetworkAssist.Shared.shproj │ ├── App.xaml │ ├── Views │ └── ArrivalsControl.xaml.cs │ └── MainPage.xaml.cs ├── Chapter05 ├── DigitalTicket.Shared │ ├── Assets │ │ ├── AppIcon.png │ │ ├── SplashScreen.png │ │ └── SharedAssets.md │ ├── App.xaml │ ├── Views │ │ ├── SettingsPage.xaml.cs │ │ ├── OwnedTicketsPage.xaml.cs │ │ └── SettingsPage.xaml │ ├── ViewModels │ │ ├── JourneyBookingOption.cs │ │ ├── OwnedTicket.cs │ │ └── NavigationViewModel.cs │ ├── Utils │ │ └── LocalizedResources.cs │ ├── Models │ │ └── SettingsStore.cs │ └── DigitalTicket.Shared.shproj ├── DigitalTicket.UWP │ ├── Assets │ │ ├── StoreLogo.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Wide310x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square44x44Logo.targetsize-16.png │ │ ├── Square44x44Logo.targetsize-24.png │ │ ├── Square44x44Logo.targetsize-256.png │ │ ├── Square44x44Logo.targetsize-32.png │ │ ├── Square44x44Logo.targetsize-48.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-24.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ │ └── Square44x44Logo.altform-lightunplated_targetsize-48.png │ └── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml ├── DigitalTicket.Droid │ ├── Resources │ │ ├── drawable │ │ │ ├── Icon.png │ │ │ ├── SplashScreen.png │ │ │ └── splash.xml │ │ └── values │ │ │ ├── Strings.xml │ │ │ └── Styles.xml │ ├── Assets │ │ ├── Fonts │ │ │ └── uno-fluentui-assets.ttf │ │ └── AboutAssets.txt │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ ├── MainActivity.cs │ └── Main.cs └── DigitalTicket.iOS │ ├── Resources │ ├── Default-568h@2x.png │ ├── SplashScreen@2x.png │ ├── SplashScreen@3x.png │ └── Fonts │ │ └── uno-fluentui-assets.ttf │ ├── Entitlements.plist │ ├── Media.xcassets │ ├── AppIcons.appiconset │ │ ├── iPad-76x76@2x.png │ │ ├── iPad-84x84@2x.png │ │ ├── iPhone-20x20@2x.png │ │ ├── iPhone-20x20@3x.png │ │ ├── iPhone-40x40@3x.png │ │ ├── iPhone-60x60@2x.png │ │ └── ios-marketing-1024x1024@1x.png │ └── LaunchImages.launchimage │ │ └── Contents.json │ ├── Main.cs │ └── Properties │ └── AssemblyInfo.cs ├── SharedLibrary ├── UnoBookRail.Common │ ├── Issues │ │ ├── IssueType.cs │ │ ├── Urgency.cs │ │ └── Issue.cs │ ├── Network │ │ ├── PlatformDirections.cs │ │ ├── Branch.cs │ │ ├── CompassDirection.cs │ │ ├── Arrivals.cs │ │ ├── Station.cs │ │ └── ArrivalDetail.cs │ ├── UnoBookRail.Common.csproj │ ├── ITimeAbstraction.cs │ ├── Tickets │ │ ├── PricingOption.cs │ │ ├── PricingOptionType.cs │ │ ├── TicketBooking.cs │ │ └── Ticket.cs │ ├── DefaultTimeAbstraction.cs │ ├── Auth │ │ ├── Role.cs │ │ ├── SignInResponse.cs │ │ └── User.cs │ └── Mapping │ │ └── TrainInfo.cs └── UnoBookRail.Common.Tests │ ├── TestTime.cs │ └── UnoBookRail.Common.Tests.csproj ├── Chapter07 ├── UnoAutomatedTestsApp.UWP │ ├── Assets │ │ ├── StoreLogo.png │ │ ├── SplashScreen.scale-200.png │ │ ├── LockScreenLogo.scale-200.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Square150x150Logo.scale-200.png │ └── Properties │ │ ├── AssemblyInfo.cs │ │ └── Default.rd.xml ├── UnoAutomatedTestsApp.Wasm │ ├── Assets │ │ └── SplashScreen.png │ ├── WasmScripts │ │ └── AppManifest.js │ ├── LinkerConfig.xml │ ├── Program.cs │ └── Properties │ │ └── launchSettings.json ├── UnoAutomatedTestsApp.Droid │ ├── Resources │ │ ├── drawable │ │ │ └── Icon.png │ │ └── values │ │ │ ├── Strings.xml │ │ │ └── Styles.xml │ ├── VerifyLoginRenders_teardown.png │ ├── VerifySigningInWorks_teardown.png │ ├── Assets │ │ ├── Fonts │ │ │ └── uno-fluentui-assets.ttf │ │ └── AboutAssets.txt │ ├── VerifyInvalidCredentialsHaveErrorMessage_teardown.png │ ├── VerifyButtonIsEnabledWithUsernameAndPassword_teardown.png │ ├── Properties │ │ ├── AndroidManifest.xml │ │ └── AssemblyInfo.cs │ ├── MainActivity.cs │ └── Main.cs ├── UnoAutomatedTestsApp.iOS │ ├── Resources │ │ ├── Default-568h@2x.png │ │ ├── SplashScreen@2x.png │ │ ├── SplashScreen@3x.png │ │ └── Fonts │ │ │ └── uno-fluentui-assets.ttf │ ├── Entitlements.plist │ ├── Media.xcassets │ │ ├── AppIcons.appiconset │ │ │ ├── iPad-76x76@2x.png │ │ │ ├── iPad-84x84@2x.png │ │ │ ├── iPhone-20x20@2x.png │ │ │ ├── iPhone-20x20@3x.png │ │ │ ├── iPhone-40x40@3x.png │ │ │ ├── iPhone-60x60@2x.png │ │ │ └── ios-marketing-1024x1024@1x.png │ │ └── LaunchImages.launchimage │ │ │ └── Contents.json │ ├── Main.cs │ └── Properties │ │ └── AssemblyInfo.cs ├── UnoAutomatedTestsApp.UWPUnitTests │ ├── Assets │ │ ├── UnitTestApp-StoreLogo.png │ │ ├── UnitTestApp-SplashScreen.scale-200.png │ │ ├── UnitTestApp-LockScreenLogo.scale-200.png │ │ ├── UnitTestApp-Square44x44Logo.scale-200.png │ │ ├── UnitTestApp-Wide310x150Logo.scale-200.png │ │ ├── UnitTestApp-Square150x150Logo.scale-200.png │ │ └── UnitTestApp-Square44x44Logo.targetsize-24_altform-unplated.png │ ├── UnitTestApp.xaml │ ├── DemoUtilsTests.cs │ └── Properties │ │ ├── AssemblyInfo.cs │ │ └── TestsDefault.rd.xml ├── UnoAutomatedTestsApp.Shared │ ├── DemoUtils.cs │ ├── App.xaml │ ├── Assets │ │ └── SharedAssets.md │ └── UnoAutomatedTestsApp.Shared.shproj ├── UnoAutomatedTestsApp.UITests │ ├── Constants.cs │ └── UnoAutomatedTestsApp.UITests.csproj └── UnoAutomatedTestsApp.UWPUITests │ └── UnoAutomatedTestsApp.UWPUITests.csproj └── LICENSE /Chapter02/HelloWorld/HelloWorld.Skia.Wpf/Program.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace HelloWorld.Skia.Gtk 3 | { 4 | } 5 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/Properties/serviceDependencies.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "apis1": { 4 | "type": "apis" 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /Chapter06/Dashboard.UWP/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter06/Dashboard.UWP/Assets/StoreLogo.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.UWP/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.UWP/Assets/StoreLogo.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/Assets/AppIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.Shared/Assets/AppIcon.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/StoreLogo.png -------------------------------------------------------------------------------- /Chapter06/Dashboard.Wasm/Assets/SplashScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter06/Dashboard.Wasm/Assets/SplashScreen.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.UWP/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.UWP/Assets/StoreLogo.png -------------------------------------------------------------------------------- /Chapter06/Dashboard.Wasm/WasmScripts/AppManifest.js: -------------------------------------------------------------------------------- 1 | var UnoAppManifest = { 2 | 3 | splashScreenImage: "Assets/SplashScreen.png", 4 | splashScreenColor: "#fff", 5 | displayName: "Dashboard" 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Wasm/Assets/SplashScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.Wasm/Assets/SplashScreen.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/Assets/SplashScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.Shared/Assets/SplashScreen.png -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Issues/IssueType.cs: -------------------------------------------------------------------------------- 1 | namespace UnoBookRail.Common.Issues 2 | { 3 | public enum IssueType 4 | { 5 | Train, 6 | Station, 7 | Other 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Network/PlatformDirections.cs: -------------------------------------------------------------------------------- 1 | namespace UnoBookRail.Common.Network 2 | { 3 | public enum PlatformDirections 4 | { 5 | EastWest, 6 | NorthSouth, 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.UWP/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.UWP/Assets/StoreLogo.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Wasm/WasmScripts/AppManifest.js: -------------------------------------------------------------------------------- 1 | var UnoAppManifest = { 2 | 3 | splashScreenImage: "Assets/SplashScreen.png", 4 | splashScreenColor: "#fff", 5 | displayName: "ResourcePlanner" 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Droid/Resources/drawable/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.Droid/Resources/drawable/Icon.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Resources/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Resources/Default-568h@2x.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Resources/SplashScreen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Resources/SplashScreen@2x.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Resources/SplashScreen@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Resources/SplashScreen@3x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/Resources/drawable/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.Droid/Resources/drawable/Icon.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Resources/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Resources/Default-568h@2x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Resources/SplashScreen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Resources/SplashScreen@2x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Resources/SplashScreen@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Resources/SplashScreen@3x.png -------------------------------------------------------------------------------- /Chapter06/Dashboard.UWP/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter06/Dashboard.UWP/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWP/Assets/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWP/Assets/StoreLogo.png -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Issues/Urgency.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace UnoBookRail.Common.Issues 3 | { 4 | public enum Urgency 5 | { 6 | Critical, 7 | Medium, 8 | Low 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/UnoBookRail.Common.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Wasm/WasmScripts/AppManifest.js: -------------------------------------------------------------------------------- 1 | var UnoAppManifest = { 2 | 3 | splashScreenImage: "Assets/SplashScreen.png", 4 | splashScreenColor: "#0078D7", 5 | displayName: "HelloWorld" 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.UWP/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter06/Dashboard.UWP/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Wasm/Assets/SplashScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.Wasm/Assets/SplashScreen.png -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/ITimeAbstraction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace UnoBookRail.Common 4 | { 5 | public interface ITimeAbstraction 6 | { 7 | DateTimeOffset GetNow(); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Network/Branch.cs: -------------------------------------------------------------------------------- 1 | namespace UnoBookRail.Common.Network 2 | { 3 | public enum Branch 4 | { 5 | MainLine, 6 | NorthBranch, 7 | SouthBranch, 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Tizen/shared/res/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.Skia.Tizen/shared/res/Icon.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Wasm/Assets/SplashScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.Wasm/Assets/SplashScreen.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.UWP/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.UWP/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /Chapter06/Dashboard.UWP/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter06/Dashboard.UWP/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter06/Dashboard.UWP/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter06/Dashboard.UWP/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter06/Dashboard.UWP/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter06/Dashboard.UWP/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Wasm/WasmScripts/AppManifest.js: -------------------------------------------------------------------------------- 1 | var UnoAppManifest = { 2 | 3 | splashScreenImage: "Assets/SplashScreen.png", 4 | splashScreenColor: "#fff", 5 | displayName: "UnoAutomatedTestsApp" 6 | 7 | } 8 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.UWP/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.UWP/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.UWP/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.UWP/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.UWP/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.UWP/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.UWP/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.UWP/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/Resources/drawable/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.Droid/Resources/drawable/Icon.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Resources/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Resources/Default-568h@2x.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Resources/SplashScreen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Resources/SplashScreen@2x.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Resources/SplashScreen@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Resources/SplashScreen@3x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Droid/Resources/drawable/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.Droid/Resources/drawable/Icon.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Resources/Default-568h@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Resources/Default-568h@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Resources/SplashScreen@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Resources/SplashScreen@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Resources/SplashScreen@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Resources/SplashScreen@3x.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.UWP/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.UWP/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.UWP/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.UWP/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.UWP/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.UWP/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Droid/Assets/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.Droid/Assets/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.UWP/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.UWP/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Resources/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Resources/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/Assets/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.Droid/Assets/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/Resources/drawable/SplashScreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.Droid/Resources/drawable/SplashScreen.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Resources/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Resources/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Tickets/PricingOption.cs: -------------------------------------------------------------------------------- 1 | namespace UnoBookRail.Common.Tickets 2 | { 3 | public class PricingOption 4 | { 5 | public PricingOptionType OptionType; 6 | public string Price; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.UWP/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.UWP/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.UWP/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.UWP/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/VerifyLoginRenders_teardown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.Droid/VerifyLoginRenders_teardown.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWP/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWP/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.UWP/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.UWP/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.UWP/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.UWP/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.UWP/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.UWP/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Resources/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Resources/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Droid/Resources/values/Strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hello World, Click Me! 4 | NetworkAssist 5 | 6 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/Resources/values/Strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hello World, Click Me! 4 | DigitalTicket 5 | 6 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/VerifySigningInWorks_teardown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.Droid/VerifySigningInWorks_teardown.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWP/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWP/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWP/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWP/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWP/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWP/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Network/CompassDirection.cs: -------------------------------------------------------------------------------- 1 | namespace UnoBookRail.Common.Network 2 | { 3 | public enum CompassDirection 4 | { 5 | East, 6 | West, 7 | North, 8 | South, 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Droid/Assets/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.Droid/Assets/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Droid/Resources/values/Strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hello World, Click Me! 4 | HelloWorld 5 | 6 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.UWP/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.UWP/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/Assets/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.Droid/Assets/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWP/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWP/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Resources/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Resources/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Gtk/Assets/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.Skia.Gtk/Assets/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Resources/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Resources/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Resources/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Resources/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-StoreLogo.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Tizen/Assets/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.Skia.Tizen/Assets/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/Resources/values/Strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hello World, Click Me! 4 | UnoAutomatedTestsApp 5 | 6 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/Assets/Fonts/uno-fluentui-assets.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/Assets/Fonts/uno-fluentui-assets.ttf -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Entitlements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/unologo.imageset/unoplatform.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/unologo.imageset/unoplatform.jpg -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Shared/DemoUtils.cs: -------------------------------------------------------------------------------- 1 | namespace UnoAutomatedTestsApp 2 | { 3 | public class DemoUtils 4 | { 5 | public static bool IsEven(int number) 6 | { 7 | return number % 2 == 0; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft": "Warning", 6 | "Microsoft.Hosting.Lifetime": "Information" 7 | } 8 | }, 9 | "AllowedHosts": "*" 10 | } 11 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/unologo.imageset/unoplatform.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/unologo.imageset/unoplatform.jpg -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter03/ResourcePlanner.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-24.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPad-76x76@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPad-84x84@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-SplashScreen.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld.Helpers/Greetings.cs: -------------------------------------------------------------------------------- 1 | namespace HelloWorld.Helpers 2 | { 3 | public class Greetings 4 | { 5 | public static string GetStandardGreeting() 6 | { 7 | return "Hello from a cross platform library!"; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPhone-20x20@3x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPhone-40x40@3x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/iPhone-60x60@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-128@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-16@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-256@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-32@2x.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.macOS/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.UWP/Assets/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/VerifyInvalidCredentialsHaveErrorMessage_teardown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.Droid/VerifyInvalidCredentialsHaveErrorMessage_teardown.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter04/NetworkAssist.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter05/DigitalTicket.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/VerifyButtonIsEnabledWithUsernameAndPassword_teardown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.Droid/VerifyButtonIsEnabledWithUsernameAndPassword_teardown.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/AppIcons.appiconset/ios-marketing-1024x1024@1x.png -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/DefaultTimeAbstraction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace UnoBookRail.Common 4 | { 5 | public class DefaultTimeAbstraction : ITimeAbstraction 6 | { 7 | public DateTimeOffset GetNow() 8 | { 9 | return DateTimeOffset.Now; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Creating-Cross-Platform-C-Sharp-Applications-with-Uno-Platform/HEAD/Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Assets/UnitTestApp-Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Main.cs: -------------------------------------------------------------------------------- 1 | using AppKit; 2 | 3 | namespace HelloWorld.macOS 4 | { 5 | static class MainClass 6 | { 7 | static void Main(string[] args) 8 | { 9 | NSApplication.Init(); 10 | NSApplication.SharedApplication.Delegate = new App(); 11 | NSApplication.Main(args); 12 | } 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Main.cs: -------------------------------------------------------------------------------- 1 | using AppKit; 2 | 3 | namespace ResourcePlanner.macOS 4 | { 5 | static class MainClass 6 | { 7 | static void Main(string[] args) 8 | { 9 | NSApplication.Init(); 10 | NSApplication.SharedApplication.Delegate = new App(); 11 | NSApplication.Main(args); 12 | } 13 | } 14 | } 15 | 16 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/UnitTestApp.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Tickets/PricingOptionType.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace UnoBookRail.Common.Tickets 3 | { 4 | public enum PricingOptionType 5 | { 6 | AdultSingleTrip, 7 | AdultRoundTrip, 8 | ChildSingleTrip, 9 | ChildRoundTrip, 10 | Plus65SingleTrip, 11 | Plus65RoundTrip, 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Shared/Views/HourlySales.cs: -------------------------------------------------------------------------------- 1 | namespace Dashboard.Views 2 | { 3 | public class HourlySales 4 | { 5 | public HourlySales(string hour, double totalSales) 6 | { 7 | Hour = hour; 8 | TotalSales = totalSales; 9 | } 10 | 11 | public string Hour { get; set; } 12 | 13 | public double TotalSales { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common.Tests/TestTime.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace UnoBookRail.Common.Tests 4 | { 5 | public class TestTime : ITimeAbstraction 6 | { 7 | public DateTimeOffset Now { get; set; } = DateTimeOffset.Now; 8 | 9 | public DateTimeOffset GetNow() 10 | { 11 | return Now; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Tizen/Program.cs: -------------------------------------------------------------------------------- 1 | using Tizen.Applications; 2 | using Uno.UI.Runtime.Skia; 3 | 4 | namespace HelloWorld.Skia.Tizen 5 | { 6 | class Program 7 | { 8 | static void Main(string[] args) 9 | { 10 | var host = new TizenHost(() => new HelloWorld.App(), args); 11 | host.Run(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Auth/Role.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace UnoBookRail.Common.Auth 6 | { 7 | public enum Role 8 | { 9 | Unknown, 10 | HR, 11 | PR, 12 | IT, 13 | Accounting, 14 | Drivers, 15 | Engineering, 16 | Cleaning 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/.config/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "dotnet-ef": { 6 | "version": "5.0.5", 7 | "commands": [ 8 | "dotnet-ef" 9 | ] 10 | }, 11 | "swashbuckle.aspnetcore.cli": { 12 | "version": "5.6.3", 13 | "commands": [ 14 | "swagger" 15 | ] 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Droid/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Wasm/LinkerConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Wasm/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | 4 | namespace Dashboard.Wasm 5 | { 6 | public class Program 7 | { 8 | private static App _app; 9 | 10 | static int Main(string[] args) 11 | { 12 | Windows.UI.Xaml.Application.Start(_ => _app = new App()); 13 | 14 | return 0; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Wasm/LinkerConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Wasm/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | 4 | namespace ResourcePlanner.Wasm 5 | { 6 | public class Program 7 | { 8 | private static App _app; 9 | 10 | static int Main(string[] args) 11 | { 12 | Windows.UI.Xaml.Application.Start(_ => _app = new App()); 13 | 14 | return 0; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Wasm/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | 4 | namespace HelloWorld.Wasm 5 | { 6 | public class Program 7 | { 8 | private static App _app; 9 | 10 | static int Main(string[] args) 11 | { 12 | Windows.UI.Xaml.Application.Start(_ => _app = new App()); 13 | 14 | return 0; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Wasm/LinkerConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Wasm/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | 4 | namespace UnoAutomatedTestsApp.Wasm 5 | { 6 | public class Program 7 | { 8 | private static App _app; 9 | 10 | static int Main(string[] args) 11 | { 12 | Windows.UI.Xaml.Application.Start(_ => _app = new App()); 13 | 14 | return 0; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace NetworkAssist.iOS 4 | { 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, typeof(App)); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace DigitalTicket.iOS 4 | { 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, typeof(App)); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Auth/SignInResponse.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace UnoBookRail.Common.Auth 4 | { 5 | public class SignInResponse 6 | { 7 | public bool IsSuccessful { get; internal set; } = false; 8 | 9 | public List Messages { get; internal set; } = new List(); 10 | 11 | public User UserDetails { get; internal set; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Shared/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace HelloWorld.iOS 4 | { 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, typeof(App)); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Shared/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Shared/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/DemoUtilsTests.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.VisualStudio.TestTools.UnitTesting; 2 | 3 | namespace UnoAutomatedTestsApp.UWPUnitTests 4 | { 5 | [TestClass] 6 | public class DemoUtilsTests 7 | { 8 | [TestMethod] 9 | public void VerifyEvenNumberIsEven() 10 | { 11 | Assert.IsTrue(DemoUtils.IsEven(2), "Number 2 should be even"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.iOS/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace UnoAutomatedTestsApp.iOS 4 | { 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, typeof(App)); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Shared/ViewModels/IssueListViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnoBookRail.Common.Issues; 3 | 4 | namespace ResourcePlanner.ViewModels 5 | { 6 | public class IssueListViewModel 7 | { 8 | 9 | public readonly IList Issues; 10 | 11 | public IssueListViewModel(IList issues) 12 | { 13 | this.Issues = issues; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Shared/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Wasm/LinkerConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Droid/Resources/values/Styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Droid/Resources/values/Styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace HelloWorld.WPF.Host 10 | { 11 | /// 12 | /// Interaction logic for App.xaml 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Shared/ViewModels/StationArrivalDetails.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnoBookRail.Common.Network; 3 | 4 | namespace NetworkAssist.ViewModels 5 | { 6 | public class StationArrivalDetails : List 7 | { 8 | public StationArrivalDetails(string platform) 9 | { 10 | Platform = platform; 11 | } 12 | 13 | public string Platform { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/Resources/values/Styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/App.xaml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/wwwroot/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UnoBookRail 6 | 7 | 8 |

Creating Cross-Platform C# Applications with Uno

9 |

This is an instance of the Web API from github.com/PacktPublishing/Creating-cross-platform-applications-with-Uno

10 | 11 | 12 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/Resources/drawable/splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Droid/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Widget; 3 | using Android.OS; 4 | using Android.Content.PM; 5 | using Android.Views; 6 | 7 | namespace NetworkAssist.Droid 8 | { 9 | [Activity( 10 | MainLauncher = true, 11 | ConfigurationChanges = global::Uno.UI.ActivityHelper.AllConfigChanges, 12 | WindowSoftInputMode = SoftInput.AdjustPan | SoftInput.StateHidden 13 | )] 14 | public class MainActivity : Windows.UI.Xaml.ApplicationActivity 15 | { 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Widget; 3 | using Android.OS; 4 | using Android.Content.PM; 5 | using Android.Views; 6 | 7 | namespace DigitalTicket.Droid 8 | { 9 | [Activity( 10 | MainLauncher = true, 11 | ConfigurationChanges = global::Uno.UI.ActivityHelper.AllConfigChanges, 12 | WindowSoftInputMode = SoftInput.AdjustPan | SoftInput.StateHidden 13 | )] 14 | public class MainActivity : Windows.UI.Xaml.ApplicationActivity 15 | { 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Droid/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Widget; 3 | using Android.OS; 4 | using Android.Content.PM; 5 | using Android.Views; 6 | 7 | namespace HelloWorld.Droid 8 | { 9 | [Activity( 10 | MainLauncher = true, 11 | ConfigurationChanges = global::Uno.UI.ActivityHelper.AllConfigChanges, 12 | WindowSoftInputMode = SoftInput.AdjustPan | SoftInput.StateHidden 13 | )] 14 | public class MainActivity : Windows.UI.Xaml.ApplicationActivity 15 | { 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/Views/SettingsPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using DigitalTicket.ViewModels; 2 | using Windows.UI.Xaml.Controls; 3 | 4 | namespace DigitalTicket.Views 5 | { 6 | public sealed partial class SettingsPage : Page 7 | { 8 | private SettingsViewModel settingsVM = new SettingsViewModel(); 9 | 10 | public SettingsPage() 11 | { 12 | 13 | InitializeComponent(); 14 | 15 | LanguagesComboBox.ItemsSource = settingsVM.LanguageOptions; 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/Resources/values/Styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/MainActivity.cs: -------------------------------------------------------------------------------- 1 | using Android.App; 2 | using Android.Widget; 3 | using Android.OS; 4 | using Android.Content.PM; 5 | using Android.Views; 6 | 7 | namespace UnoAutomatedTestsApp.Droid 8 | { 9 | [Activity( 10 | MainLauncher = true, 11 | ConfigurationChanges = global::Uno.UI.ActivityHelper.AllConfigChanges, 12 | WindowSoftInputMode = SoftInput.AdjustPan | SoftInput.StateHidden 13 | )] 14 | public class MainActivity : Windows.UI.Xaml.ApplicationActivity 15 | { 16 | } 17 | } 18 | 19 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Mapping/TrainInfo.cs: -------------------------------------------------------------------------------- 1 | using UnoBookRail.Common.Network; 2 | 3 | namespace UnoBookRail.Common.Mapping 4 | { 5 | public class TrainInfo 6 | { 7 | public CompassDirection Direction { get; set; } 8 | public int StationLeft { get; set; } 9 | public int StationApproaching { get; set; } 10 | public bool Delayed { get; set; } 11 | public (float X, float Y) MapPosition { get; set; } 12 | public bool AtStation => StationLeft == StationApproaching; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Shared/Models/IssuesRepository.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using UnoBookRail.Common.Issues; 3 | 4 | namespace ResourcePlanner.Models 5 | { 6 | public class IssuesRepository 7 | { 8 | private static List issues = new List(); 9 | 10 | public static List GetAllIssues() 11 | { 12 | return issues; 13 | } 14 | 15 | public static void AddIssue(Issue issue) 16 | { 17 | issues.Add(issue); 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/UnoBookRail.WebApi.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0 5 | b2df05ef-5446-4005-97c0-cf1ae361f753 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Auth/User.cs: -------------------------------------------------------------------------------- 1 | namespace UnoBookRail.Common.Auth 2 | { 3 | public class User 4 | { 5 | public string Identifier { get; internal set; } 6 | 7 | public string FirstName { get; internal set; } 8 | 9 | public string Surname { get; internal set; } 10 | 11 | public bool IsAdmin { get; internal set; } = false; 12 | 13 | public Role Role { get; internal set; } = Role.Unknown; 14 | 15 | public string FormattedName => $"{FirstName}. {Surname} ({Identifier})"; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/Controllers/StationsController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | using UnoBookRail.Common.Network; 3 | 4 | namespace UnoBookRail.WebApi.Controllers 5 | { 6 | [ApiController] 7 | [Route("[controller]")] 8 | public class StationsController : ControllerBase 9 | { 10 | public StationsController() 11 | { 12 | } 13 | 14 | [HttpGet] 15 | public Arrivals GetNextArrivals(int stationId) 16 | { 17 | return new Stations().GetNextArrivals(stationId); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Shared/Views/PersonCount.cs: -------------------------------------------------------------------------------- 1 | namespace Dashboard.Views 2 | { 3 | public class PersonCount 4 | { 5 | public PersonCount(string hour, double child, double adult, double senior) 6 | { 7 | Hour = hour; 8 | Children = child; 9 | Adults = adult; 10 | Seniors = senior; 11 | } 12 | 13 | public string Hour { get; set; } 14 | public double Children { get; set; } 15 | public double Adults { get; set; } 16 | public double Seniors { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Tickets/TicketBooking.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using UnoBookRail.Common.Auth; 5 | 6 | namespace UnoBookRail.Common.Tickets 7 | { 8 | public class TicketBooking 9 | { 10 | public static Ticket BookPricingOption(PricingOption option, User user, string startStation, string endStation) 11 | { 12 | return new Ticket(option.OptionType, user.Identifier, option.Price, DateTime.UtcNow.ToString() + "secret", startStation, endStation); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/MainWindow.xaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Shared/Views/FinancePage.xaml.cs: -------------------------------------------------------------------------------- 1 | 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using UnoBookRail.Common.DashboardData; 5 | using Windows.UI.Xaml.Controls; 6 | 7 | namespace Dashboard.Views 8 | { 9 | public sealed partial class FinancePage : Page 10 | { 11 | public FinancePage() 12 | { 13 | this.InitializeComponent(); 14 | } 15 | 16 | public List DailySales 17 | => FinanceInfo.DailySales.Select(s => new HourlySales(s.Hour, s.Sales)).ToList(); 18 | 19 | public string TrendArrows => FinanceInfo.TrendArrows; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/ViewModels/JourneyBookingOption.cs: -------------------------------------------------------------------------------- 1 | using DigitalTicket.Utils; 2 | using UnoBookRail.Common.Tickets; 3 | 4 | namespace DigitalTicket.ViewModels 5 | { 6 | public class JourneyBookingOption 7 | { 8 | public readonly string Title; 9 | 10 | public readonly string Price; 11 | 12 | public readonly PricingOption Option; 13 | 14 | public JourneyBookingOption(PricingOption option) 15 | { 16 | Title = LocalizedResources.GetString(option.OptionType.ToString() + "Label"); 17 | Price = option.Price; 18 | Option = option; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UITests/Constants.cs: -------------------------------------------------------------------------------- 1 | using Uno.UITest.Helpers.Queries; 2 | 3 | namespace UnoAutomatedTestsApp.UITests 4 | { 5 | public class Constants 6 | { 7 | public readonly static string WebAssemblyDefaultUri = "http://localhost:50190/"; 8 | public readonly static string iOSAppName = "UnoBook.UnoAutomatedTestsApp"; 9 | public readonly static string AndroidAppName = "UnoBook.UnoAutomatedTestsApp"; 10 | public readonly static string iOSDeviceNameOrId = "iPad Pro (12.9-inch) (3rd generation)"; 11 | 12 | public readonly static Platform CurrentPlatform = Platform.Android; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Gtk/Program.cs: -------------------------------------------------------------------------------- 1 | using GLib; 2 | using System; 3 | using Uno.UI.Runtime.Skia; 4 | 5 | namespace HelloWorld.Skia.Gtk 6 | { 7 | class Program 8 | { 9 | static void Main(string[] args) 10 | { 11 | ExceptionManager.UnhandledException += delegate (UnhandledExceptionArgs expArgs) 12 | { 13 | Console.WriteLine("GLIB UNHANDLED EXCEPTION" + expArgs.ExceptionObject.ToString()); 14 | expArgs.ExitApplication = true; 15 | }; 16 | 17 | var host = new GtkHost(() => new App(), args); 18 | 19 | host.Run(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Shared/Views/NetworkPage.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/Views/OwnedTicketsPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using DigitalTicket.ViewModels; 2 | using System.Linq; 3 | using Windows.UI.Xaml; 4 | using Windows.UI.Xaml.Controls; 5 | 6 | 7 | namespace DigitalTicket.Views 8 | { 9 | public sealed partial class OwnedTicketsPage : Page 10 | { 11 | private OwnedTicketsViewModel ownedTicketsVM = new OwnedTicketsViewModel(); 12 | 13 | public OwnedTicketsPage() 14 | { 15 | this.InitializeComponent(); 16 | 17 | if (ownedTicketsVM.Tickets.Count != 0) 18 | { 19 | NoTicketsLabel.Visibility = Visibility.Collapsed; 20 | } 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUITests/UnoAutomatedTestsApp.UWPUITests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Network/Arrivals.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | 4 | namespace UnoBookRail.Common.Network 5 | { 6 | public class Arrivals 7 | { 8 | public int ForStationId { get; set; } 9 | 10 | public DateTimeOffset Timestamp { get; set; } = DateTimeOffset.Now; 11 | 12 | public string DirectionOneName { get; set; } 13 | 14 | public List DirectionOneDetails { get; set; } = new List(); 15 | 16 | public string DirectionTwoName { get; set; } 17 | 18 | public List DirectionTwoDetails { get; set; } = new List(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Shared/Views/OperationsPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Linq; 3 | using UnoBookRail.Common.DashboardData; 4 | using Windows.UI.Xaml.Controls; 5 | 6 | namespace Dashboard.Views 7 | { 8 | public sealed partial class OperationsPage : Page 9 | { 10 | public OperationsPage() 11 | { 12 | this.InitializeComponent(); 13 | } 14 | 15 | public string PsngrCount => OperationsInfo.CurrentPassengers; 16 | 17 | private List Passengers 18 | => OperationsInfo.Passengers.Select(p 19 | => new PersonCount(p.Hour, p.Children, p.Adults, p.Seniors)).ToList(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Droid/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"); -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/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"); -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/Utils/LocalizedResources.cs: -------------------------------------------------------------------------------- 1 | using Windows.ApplicationModel.Resources; 2 | 3 | namespace DigitalTicket.Utils 4 | { 5 | public static class LocalizedResources 6 | { 7 | private static ResourceLoader cachedResourceLoader; 8 | public static string GetString(string name) 9 | { 10 | if (cachedResourceLoader == null) 11 | { 12 | cachedResourceLoader = ResourceLoader.GetForViewIndependentUse(); 13 | } 14 | if (cachedResourceLoader != null) 15 | { 16 | return cachedResourceLoader.GetString(name); 17 | } 18 | return null; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Droid/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"); -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/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"); -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UITests/UnoAutomatedTestsApp.UITests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net47 5 | 8.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common.Tests/UnoBookRail.Common.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net5.0 5 | 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Shared/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using Windows.UI.Xaml; 2 | using Windows.UI.Xaml.Controls; 3 | 4 | namespace HelloWorld 5 | { 6 | public sealed partial class MainPage : Page 7 | { 8 | public MainPage() 9 | { 10 | this.InitializeComponent(); 11 | } 12 | 13 | private void ChangeTextButton_Click(object sender, RoutedEventArgs e) 14 | { 15 | #if __ANDROID__ || __IOS__ 16 | helloTextBlock.Text = "Hello from C# on mobile!"; 17 | #elif HAS_UNO_WASM || __WASM__ 18 | helloTextBlock.Text = "Hello from C# on WASM!"; 19 | #else 20 | helloTextBlock.Text = HelloWorld.Helpers.Greetings.GetStandardGreeting(); 21 | #endif 22 | } 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Tizen/tizen-manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | Icon.png 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Wasm/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:52846/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "Dashboard.Wasm": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "environmentVariables": { 22 | "ASPNETCORE_ENVIRONMENT": "Development" 23 | }, 24 | "applicationUrl": "http://localhost:5000" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Chapter06/readme.md: -------------------------------------------------------------------------------- 1 | # Chapter 6 sample - Dashboard 2 | 3 | The solution for this chapter also includes a reference to the source code from [github.com/syncfusion/Uno.SfChart](https://github.com/syncfusion/Uno.SfChart). 4 | 5 | To compile this example, you'll need both projects cloned to the same root directory, as is shown in the image below. 6 | 7 | ![both repositories cloned to the same local root directory](https://user-images.githubusercontent.com/189547/121353454-c9b53100-c925-11eb-80c3-fba5d7211f57.png) 8 | 9 | _It doesn't need to be this exact path, and you can have other repos there too._ 10 | 11 | Without this, the relative path to the SfChart project will be invalid. 12 | 13 | Also, be sure to update the version of `Uno.UI` referenced by the `Syncfusion.SfChart.Uno` project. 14 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | [assembly: AssemblyTitle("UnoAutomatedTestsApp.UWPUnitTests")] 6 | [assembly: AssemblyDescription("")] 7 | [assembly: AssemblyConfiguration("")] 8 | [assembly: AssemblyCompany("")] 9 | [assembly: AssemblyProduct("UnoAutomatedTestsApp.UWPUnitTests")] 10 | [assembly: AssemblyCopyright("Copyright © 2021")] 11 | [assembly: AssemblyTrademark("")] 12 | [assembly: AssemblyCulture("")] 13 | [assembly: AssemblyMetadata("TargetPlatform","UAP")] 14 | 15 | // [assembly: AssemblyVersion("1.0.*")] 16 | [assembly: AssemblyVersion("1.0.0.0")] 17 | [assembly: AssemblyFileVersion("1.0.0.0")] 18 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Wasm/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:54498/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "HelloWorld.Wasm": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "environmentVariables": { 22 | "ASPNETCORE_ENVIRONMENT": "Development" 23 | }, 24 | "applicationUrl": "http://localhost:5000" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/Views/SettingsPage.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Wasm/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:50190/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "UnoAutomatedTestsApp.Wasm": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "environmentVariables": { 22 | "ASPNETCORE_ENVIRONMENT": "Development" 23 | }, 24 | "applicationUrl": "http://localhost:5000" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Droid/Properties/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Wasm/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:63270/", 7 | "sslPort": 44394 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "ResourcePlanner.Wasm": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "environmentVariables": { 22 | "ASPNETCORE_ENVIRONMENT": "Development" 23 | }, 24 | "applicationUrl": "https://localhost:5001;http://localhost:5000" 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/Models/SettingsStore.cs: -------------------------------------------------------------------------------- 1 | using Windows.Storage; 2 | 3 | namespace DigitalTicket.Models 4 | { 5 | public static class SettingsStore 6 | { 7 | private const string AppLanguageKey = "Settings.AppLanguage"; 8 | 9 | public static void StoreAppLanguageOption(string appTheme) 10 | { 11 | ApplicationData.Current.LocalSettings.Values[AppLanguageKey] = appTheme.ToString(); 12 | } 13 | 14 | public static string GetAppLanguageOption() 15 | { 16 | if (ApplicationData.Current.LocalSettings.Values.Keys.Contains(AppLanguageKey)) 17 | { 18 | return ApplicationData.Current.LocalSettings.Values[AppLanguageKey].ToString(); 19 | } 20 | 21 | return "SystemDefault"; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/Program.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Hosting; 2 | using Microsoft.Extensions.Configuration; 3 | using Microsoft.Extensions.Hosting; 4 | using Microsoft.Extensions.Logging; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using System.Threading.Tasks; 9 | 10 | namespace UnoBookRail.WebApi 11 | { 12 | public class Program 13 | { 14 | public static void Main(string[] args) 15 | { 16 | CreateHostBuilder(args).Build().Run(); 17 | } 18 | 19 | public static IHostBuilder CreateHostBuilder(string[] args) => 20 | Host.CreateDefaultBuilder(args) 21 | .ConfigureWebHostDefaults(webBuilder => 22 | { 23 | webBuilder.UseStartup(); 24 | }); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Shared/Converters/CupertinoButtonColorConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml.Data; 3 | 4 | namespace NetworkAssist.Converters 5 | { 6 | public class CupertinoButtonColorConverter : IValueConverter 7 | { 8 | public object Convert(object value, Type targetType, object parameter, string language) 9 | { 10 | if (value?.ToString() == parameter?.ToString()) 11 | { 12 | return App.Current.Resources["CupertinoBlueBrush"]; 13 | } 14 | else 15 | { 16 | return App.Current.Resources["CupertinoSecondaryGrayBrush"]; 17 | } 18 | } 19 | 20 | public object ConvertBack(object value, Type targetType, object parameter, string language) 21 | => throw new NotImplementedException(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Shared/Views/ExportIssueView.xaml.cs: -------------------------------------------------------------------------------- 1 | using ResourcePlanner.ViewModels; 2 | using System; 3 | using Windows.UI.Xaml; 4 | using Windows.UI.Xaml.Controls; 5 | 6 | namespace ResourcePlanner.Views 7 | { 8 | public sealed partial class ExportIssueView : UserControl 9 | { 10 | 11 | private ExportIssueViewModel exportIssueVM; 12 | 13 | public ExportIssueView(ExportIssueViewModel viewModel) 14 | { 15 | this.exportIssueVM = viewModel; 16 | this.InitializeComponent(); 17 | 18 | #if __WASM__ 19 | this.WASMDownloadLink.MimeType = "application/pdf"; 20 | var bytes = exportIssueVM.GeneratePDF(); 21 | var b64 = Convert.ToBase64String(bytes); 22 | this.WASMDownloadLink.SetBase64Content(b64); 23 | #endif 24 | } 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/Controllers/QuickReportsController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Http; 2 | using Microsoft.AspNetCore.Mvc; 3 | using System.Threading.Tasks; 4 | 5 | namespace UnoBookRail.WebApi.Controllers 6 | { 7 | [ApiController] 8 | [Route("[controller]")] 9 | public class QuickReportsController : ControllerBase 10 | { 11 | public QuickReportsController() 12 | { 13 | } 14 | 15 | [HttpPost("Create")] 16 | public async Task> CreateReport([FromForm] IFormFile imageFile, [FromForm] string location, [FromForm] string information) 17 | { 18 | // A real app would do something with the provided data 19 | System.Diagnostics.Debug.WriteLine($"{imageFile} {location} {information}"); 20 | 21 | return await Task.FromResult>("success"); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Tickets/Ticket.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace UnoBookRail.Common.Tickets 4 | { 5 | public class Ticket 6 | { 7 | public readonly PricingOptionType Type; 8 | public readonly string UserID; 9 | public readonly string Price; 10 | public readonly DateTime CreationTime; 11 | public readonly string TicketID; 12 | public readonly string StartStation; 13 | public readonly string EndStation; 14 | 15 | public Ticket(PricingOptionType type, string userID, string price, string ticketID, string startStation, string endStation) 16 | { 17 | Type = type; 18 | UserID = userID; 19 | Price = price; 20 | CreationTime = DateTime.Now; 21 | TicketID = ticketID; 22 | StartStation = startStation; 23 | EndStation = endStation; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | using System.Windows; 7 | using System.Windows.Controls; 8 | using System.Windows.Data; 9 | using System.Windows.Documents; 10 | using System.Windows.Input; 11 | using System.Windows.Media; 12 | using System.Windows.Media.Imaging; 13 | using System.Windows.Navigation; 14 | using System.Windows.Shapes; 15 | 16 | namespace HelloWorld.WPF.Host 17 | { 18 | /// 19 | /// Interaction logic for MainWindow.xaml 20 | /// 21 | public partial class MainWindow : Window 22 | { 23 | public MainWindow() 24 | { 25 | InitializeComponent(); 26 | 27 | root.Content = new global::Uno.UI.Skia.Platform.WpfHost(Dispatcher, () => new HelloWorld.App()); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf/HelloWorld.Skia.Wpf.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /WebApi/UnoBookRail.WebApi/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "http://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:2554", 8 | "sslPort": 44302 9 | } 10 | }, 11 | "profiles": { 12 | "IIS Express": { 13 | "commandName": "IISExpress", 14 | "launchBrowser": true, 15 | "launchUrl": "swagger", 16 | "environmentVariables": { 17 | "ASPNETCORE_ENVIRONMENT": "Development" 18 | } 19 | }, 20 | "UnoBookRail.WebApi": { 21 | "commandName": "Project", 22 | "dotnetRunMessages": "true", 23 | "launchBrowser": true, 24 | "launchUrl": "swagger", 25 | "applicationUrl": "https://localhost:5001;http://localhost:5000", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/HelloWorld.Skia.Wpf.Host.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WinExe 5 | Exe 6 | netcoreapp3.1 7 | true 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Shared/MainPage.xaml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Network/Station.cs: -------------------------------------------------------------------------------- 1 | namespace UnoBookRail.Common.Network 2 | { 3 | public class Station 4 | { 5 | public Station() 6 | { 7 | } 8 | 9 | public Station(int id, string name, Branch branch, (float x, float y) pos, bool isTerminus = false) 10 | { 11 | Id = id; 12 | Name = name; 13 | Branch = branch; 14 | MapPosition = pos; 15 | IsTerminus = isTerminus; 16 | } 17 | 18 | public int Id { get; internal set; } 19 | 20 | public string Name { get; internal set; } 21 | 22 | public bool IsTerminus { get; internal set; } 23 | 24 | public Branch Branch { get; internal set; } 25 | 26 | public (float X, float Y) MapPosition { get; internal set; } 27 | 28 | public PlatformDirections Directions 29 | => Branch == Branch.MainLine ? PlatformDirections.EastWest 30 | : PlatformDirections.NorthSouth; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Shared/Views/IssueListView.xaml.cs: -------------------------------------------------------------------------------- 1 | using Windows.UI.Xaml.Controls; 2 | using ResourcePlanner.ViewModels; 3 | using Microsoft.Toolkit.Uwp.UI.Controls; 4 | using UnoBookRail.Common.Issues; 5 | 6 | // The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236 7 | 8 | namespace ResourcePlanner.Views 9 | { 10 | public sealed partial class IssueListView : UserControl 11 | { 12 | private IssueListViewModel issueListVM; 13 | private NavigationViewModel navigationVM; 14 | public IssueListView(IssueListViewModel viewModel, NavigationViewModel navigationViewModel) 15 | { 16 | this.issueListVM = viewModel; 17 | this.navigationVM = navigationViewModel; 18 | this.InitializeComponent(); 19 | } 20 | 21 | private void IssueList_SelectionChanged(object sender, SelectionChangedEventArgs e) 22 | { 23 | navigationVM.SetSelectedIssue((sender as DataGrid).SelectedItem as Issue); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/ViewModels/OwnedTicket.cs: -------------------------------------------------------------------------------- 1 | using DigitalTicket.Utils; 2 | using SQLite; 3 | using System.Windows.Input; 4 | using UnoBookRail.Common.Tickets; 5 | 6 | namespace DigitalTicket.ViewModels 7 | { 8 | public class OwnedTicket 9 | { 10 | [PrimaryKey, AutoIncrement] 11 | public int DBId { get; set; } 12 | public string TicketName => LocalizedResources.GetString(Type.ToString() + "Label"); 13 | public PricingOptionType Type { get; set; } 14 | public string TicketID { get; set; } 15 | public string StartStation { get; set; } 16 | public string EndStation { get; set; } 17 | 18 | public ICommand ShowQRCodeCommand; 19 | 20 | // Constructor used by SQLite 21 | public OwnedTicket() { } 22 | 23 | public OwnedTicket(Ticket ticket) 24 | { 25 | Type = ticket.Type; 26 | TicketID = ticket.TicketID; 27 | StartStation = ticket.StartStation; 28 | EndStation = ticket.EndStation; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Issues/Issue.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using UnoBookRail.Common.Auth; 5 | 6 | namespace UnoBookRail.Common.Issues 7 | { 8 | public class Issue 9 | { 10 | public IssueType IssueType { get; set; } 11 | 12 | // Issue type 'Train' 13 | public string TrainNumber { get; set; } 14 | 15 | // Issue type 'Station' 16 | public string StationName { get; set; } 17 | 18 | // Issue type 'Other' 19 | public string Location { get; set; } 20 | 21 | public string Title { get; set; } 22 | public string Description { get; set; } 23 | public Urgency Urgency { get; set; } 24 | public bool IsOpen { get; set; } 25 | public DateTime OpenDate { get; set; } 26 | public User OpenedBy { get; set; } 27 | public DateTime CloseDate { get; set; } 28 | public string CloseDateReadable => IsOpen ? "-" : CloseDate.ToString(); 29 | public User ClosedBy { get; set; } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld.Helpers/HelloWorld.Helpers.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | uap10.0.17763;netstandard2.0;xamarinios10;xamarinmac20;MonoAndroid11.0;monoandroid10.0 9 | 10 | true 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | %(Filename) 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Shared/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using ResourcePlanner.ViewModels; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Runtime.InteropServices.WindowsRuntime; 7 | using Windows.Foundation; 8 | using Windows.Foundation.Collections; 9 | using Windows.UI.Xaml; 10 | using Windows.UI.Xaml.Controls; 11 | using Windows.UI.Xaml.Controls.Primitives; 12 | using Windows.UI.Xaml.Data; 13 | using Windows.UI.Xaml.Input; 14 | using Windows.UI.Xaml.Media; 15 | using Windows.UI.Xaml.Navigation; 16 | 17 | // The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 18 | 19 | namespace ResourcePlanner 20 | { 21 | /// 22 | /// An empty page that can be used on its own or navigated to within a Frame. 23 | /// 24 | public sealed partial class MainPage : Page 25 | { 26 | private NavigationViewModel navigationVM = new NavigationViewModel(); 27 | 28 | public MainPage() 29 | { 30 | this.InitializeComponent(); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Shared/Assets/SharedAssets.md: -------------------------------------------------------------------------------- 1 | See documentation about assets here : https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md 2 | 3 | # Here is a cheat sheet: 4 | 5 | 1. Add the image file to the `Assets` directory of a shared project. 6 | 2. Set the build action to `Content`. 7 | 3. (Recommended) Provide an asset for various scales/dpi 8 | 9 | ## Examples 10 | 11 | ``` 12 | \Assets\Images\logo.scale-100.png 13 | \Assets\Images\logo.scale-200.png 14 | \Assets\Images\logo.scale-400.png 15 | 16 | \Assets\Images\scale-100\logo.png 17 | \Assets\Images\scale-200\logo.png 18 | \Assets\Images\scale\400\logo.png 19 | ``` 20 | 21 | ## Table of scales 22 | 23 | | Scale | UWP | iOS | Android | 24 | |-------|:-----------:|:--------:|:-------:| 25 | | `100` | scale-100 | @1x | mdpi | 26 | | `125` | scale-125 | N/A | N/A | 27 | | `150` | scale-150 | N/A | hdpi | 28 | | `200` | scale-200 | @2x | xhdpi | 29 | | `300` | scale-300 | @3x | xxhdpi | 30 | | `400` | scale-400 | N/A | xxxhdpi | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Shared/Assets/SharedAssets.md: -------------------------------------------------------------------------------- 1 | See documentation about assets here : https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md 2 | 3 | # Here is a cheat sheet: 4 | 5 | 1. Add the image file to the `Assets` directory of a shared project. 6 | 2. Set the build action to `Content`. 7 | 3. (Recommended) Provide an asset for various scales/dpi 8 | 9 | ## Examples 10 | 11 | ``` 12 | \Assets\Images\logo.scale-100.png 13 | \Assets\Images\logo.scale-200.png 14 | \Assets\Images\logo.scale-400.png 15 | 16 | \Assets\Images\scale-100\logo.png 17 | \Assets\Images\scale-200\logo.png 18 | \Assets\Images\scale\400\logo.png 19 | ``` 20 | 21 | ## Table of scales 22 | 23 | | Scale | UWP | iOS | Android | 24 | |-------|:-----------:|:--------:|:-------:| 25 | | `100` | scale-100 | @1x | mdpi | 26 | | `125` | scale-125 | N/A | N/A | 27 | | `150` | scale-150 | N/A | hdpi | 28 | | `200` | scale-200 | @2x | xhdpi | 29 | | `300` | scale-300 | @3x | xxhdpi | 30 | | `400` | scale-400 | N/A | xxxhdpi | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/Assets/SharedAssets.md: -------------------------------------------------------------------------------- 1 | See documentation about assets here : https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md 2 | 3 | # Here is a cheat sheet: 4 | 5 | 1. Add the image file to the `Assets` directory of a shared project. 6 | 2. Set the build action to `Content`. 7 | 3. (Recommended) Provide an asset for various scales/dpi 8 | 9 | ## Examples 10 | 11 | ``` 12 | \Assets\Images\logo.scale-100.png 13 | \Assets\Images\logo.scale-200.png 14 | \Assets\Images\logo.scale-400.png 15 | 16 | \Assets\Images\scale-100\logo.png 17 | \Assets\Images\scale-200\logo.png 18 | \Assets\Images\scale\400\logo.png 19 | ``` 20 | 21 | ## Table of scales 22 | 23 | | Scale | UWP | iOS | Android | 24 | |-------|:-----------:|:--------:|:-------:| 25 | | `100` | scale-100 | @1x | mdpi | 26 | | `125` | scale-125 | N/A | N/A | 27 | | `150` | scale-150 | N/A | hdpi | 28 | | `200` | scale-200 | @2x | xhdpi | 29 | | `300` | scale-300 | @3x | xxhdpi | 30 | | `400` | scale-400 | N/A | xxxhdpi | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Shared/Assets/SharedAssets.md: -------------------------------------------------------------------------------- 1 | See documentation about assets here : https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md 2 | 3 | # Here is a cheat sheet: 4 | 5 | 1. Add the image file to the `Assets` directory of a shared project. 6 | 2. Set the build action to `Content`. 7 | 3. (Recommended) Provide an asset for various scales/dpi 8 | 9 | ## Examples 10 | 11 | ``` 12 | \Assets\Images\logo.scale-100.png 13 | \Assets\Images\logo.scale-200.png 14 | \Assets\Images\logo.scale-400.png 15 | 16 | \Assets\Images\scale-100\logo.png 17 | \Assets\Images\scale-200\logo.png 18 | \Assets\Images\scale\400\logo.png 19 | ``` 20 | 21 | ## Table of scales 22 | 23 | | Scale | UWP | iOS | Android | 24 | |-------|:-----------:|:--------:|:-------:| 25 | | `100` | scale-100 | @1x | mdpi | 26 | | `125` | scale-125 | N/A | N/A | 27 | | `150` | scale-150 | N/A | hdpi | 28 | | `200` | scale-200 | @2x | xhdpi | 29 | | `300` | scale-300 | @3x | xxhdpi | 30 | | `400` | scale-400 | N/A | xxxhdpi | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Shared/Assets/SharedAssets.md: -------------------------------------------------------------------------------- 1 | See documentation about assets here : https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md 2 | 3 | # Here is a cheat sheet: 4 | 5 | 1. Add the image file to the `Assets` directory of a shared project. 6 | 2. Set the build action to `Content`. 7 | 3. (Recommended) Provide an asset for various scales/dpi 8 | 9 | ## Examples 10 | 11 | ``` 12 | \Assets\Images\logo.scale-100.png 13 | \Assets\Images\logo.scale-200.png 14 | \Assets\Images\logo.scale-400.png 15 | 16 | \Assets\Images\scale-100\logo.png 17 | \Assets\Images\scale-200\logo.png 18 | \Assets\Images\scale\400\logo.png 19 | ``` 20 | 21 | ## Table of scales 22 | 23 | | Scale | UWP | iOS | Android | 24 | |-------|:-----------:|:--------:|:-------:| 25 | | `100` | scale-100 | @1x | mdpi | 26 | | `125` | scale-125 | N/A | N/A | 27 | | `150` | scale-150 | N/A | hdpi | 28 | | `200` | scale-200 | @2x | xhdpi | 29 | | `300` | scale-300 | @3x | xxhdpi | 30 | | `400` | scale-400 | N/A | xxxhdpi | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Shared/Assets/SharedAssets.md: -------------------------------------------------------------------------------- 1 | See documentation about assets here : https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md 2 | 3 | # Here is a cheat sheet: 4 | 5 | 1. Add the image file to the `Assets` directory of a shared project. 6 | 2. Set the build action to `Content`. 7 | 3. (Recommended) Provide an asset for various scales/dpi 8 | 9 | ## Examples 10 | 11 | ``` 12 | \Assets\Images\logo.scale-100.png 13 | \Assets\Images\logo.scale-200.png 14 | \Assets\Images\logo.scale-400.png 15 | 16 | \Assets\Images\scale-100\logo.png 17 | \Assets\Images\scale-200\logo.png 18 | \Assets\Images\scale\400\logo.png 19 | ``` 20 | 21 | ## Table of scales 22 | 23 | | Scale | UWP | iOS | Android | 24 | |-------|:-----------:|:--------:|:-------:| 25 | | `100` | scale-100 | @1x | mdpi | 26 | | `125` | scale-125 | N/A | N/A | 27 | | `150` | scale-150 | N/A | hdpi | 28 | | `200` | scale-200 | @2x | xhdpi | 29 | | `300` | scale-300 | @3x | xxhdpi | 30 | | `400` | scale-400 | N/A | xxxhdpi | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.Shared/Dashboard.Shared.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6279c845-92f8-4333-ab99-3d213163593c 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Packt 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Shared/HelloWorld.Shared.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6279c845-92f8-4333-ab99-3d213163593c 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.Shared/ResourcePlanner.Shared.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6279c845-92f8-4333-ab99-3d213163593c 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Shared/NetworkAssist.Shared.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6279c845-92f8-4333-ab99-3d213163593c 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Shared/DigitalTicket.Shared.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6279c845-92f8-4333-ab99-3d213163593c 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /SharedLibrary/UnoBookRail.Common/Network/ArrivalDetail.cs: -------------------------------------------------------------------------------- 1 | namespace UnoBookRail.Common.Network 2 | { 3 | public class ArrivalDetail 4 | { 5 | public ArrivalDetail() 6 | { 7 | } 8 | 9 | public ArrivalDetail(string destination, string timeDue, int minsUntilDue) 10 | { 11 | Destination = destination; 12 | TimeDue = timeDue; 13 | MinutesUntilDue = minsUntilDue; 14 | } 15 | 16 | public string Destination { get; set; } 17 | 18 | public string TimeDue { get; set; } 19 | 20 | public int MinutesUntilDue { get; set; } 21 | 22 | public string DisplayedTime 23 | { 24 | get 25 | { 26 | if (MinutesUntilDue < 2) 27 | { 28 | return "Due"; 29 | } 30 | else if (MinutesUntilDue > 10) 31 | { 32 | return TimeDue; 33 | } 34 | else 35 | { 36 | return $"{MinutesUntilDue} mins"; 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Shared/UnoAutomatedTestsApp.Shared.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6279c845-92f8-4333-ab99-3d213163593c 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Chapter06/Dashboard.UWP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Dashboard.UWP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Dashboard.UWP")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] 30 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.UWP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("HelloWorld.UWP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("HelloWorld.UWP")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] 30 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.macOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | HelloWorld.macOS 7 | CFBundleIdentifier 8 | com.companyname.HelloWorld-macOS 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1 13 | LSMinimumSystemVersion 14 | 10.11 15 | CFBundleDevelopmentRegion 16 | en 17 | CFBundleInfoDictionaryVersion 18 | 6.0 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | NSHumanReadableCopyright 24 | ${AuthorCopyright:HtmlEncode} 25 | NSPrincipalClass 26 | NSApplication 27 | XSAppIconAssets 28 | Assets.xcassets/AppIcon.appiconset 29 | ATSApplicationFontsPath 30 | Fonts/uno-fluentui-assets.ttf 31 | 32 | 33 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.macOS/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleName 6 | ResourcePlanner.macOS 7 | CFBundleIdentifier 8 | com.companyname.ResourcePlanner-macOS 9 | CFBundleShortVersionString 10 | 1.0 11 | CFBundleVersion 12 | 1 13 | LSMinimumSystemVersion 14 | 10.11 15 | CFBundleDevelopmentRegion 16 | en 17 | CFBundleInfoDictionaryVersion 18 | 6.0 19 | CFBundlePackageType 20 | APPL 21 | CFBundleSignature 22 | ???? 23 | NSHumanReadableCopyright 24 | ${AuthorCopyright:HtmlEncode} 25 | NSPrincipalClass 26 | NSApplication 27 | XSAppIconAssets 28 | Assets.xcassets/AppIcon.appiconset 29 | ATSApplicationFontsPath 30 | Fonts/uno-fluentui-assets.ttf 31 | 32 | 33 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.UWP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("NetworkAssist.UWP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("NetworkAssist.UWP")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] 30 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.UWP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("DigitalTicket.UWP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("DigitalTicket.UWP")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] 30 | -------------------------------------------------------------------------------- /Chapter03/ResourcePlanner.UWP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("ResourcePlanner.UWP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("ResourcePlanner.UWP")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] 30 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Shared/App.xaml: -------------------------------------------------------------------------------- 1 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.UWP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("UnoAutomatedTestsApp.UWP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("UnoAutomatedTestsApp.UWP")] 13 | [assembly: AssemblyCopyright("Copyright © 2021")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] 30 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Droid/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("HelloWorld.Droid")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("HelloWorld.Droid")] 14 | [assembly: AssemblyCopyright("Copyright © 2021")] 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 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Droid/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("NetworkAssist.Droid")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("NetworkAssist.Droid")] 14 | [assembly: AssemblyCopyright("Copyright © 2021")] 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 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/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("DigitalTicket.Droid")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("DigitalTicket.Droid")] 14 | [assembly: AssemblyCopyright("Copyright © 2021")] 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 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Skia.Wpf.Host/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | 12 | namespace HelloWorld.WPF.Host.Properties 13 | { 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 17 | { 18 | 19 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 20 | 21 | public static Settings Default 22 | { 23 | get 24 | { 25 | return defaultInstance; 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/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("UnoAutomatedTestsApp.Droid")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("UnoAutomatedTestsApp.Droid")] 14 | [assembly: AssemblyCopyright("Copyright © 2021")] 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 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Droid/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using Android.App; 7 | using Android.Content; 8 | using Android.OS; 9 | using Android.Runtime; 10 | using Android.Views; 11 | using Android.Widget; 12 | using Com.Nostra13.Universalimageloader.Core; 13 | using Windows.UI.Xaml.Media; 14 | 15 | namespace NetworkAssist.Droid 16 | { 17 | [global::Android.App.ApplicationAttribute( 18 | Label = "@string/ApplicationName", 19 | LargeHeap = true, 20 | HardwareAccelerated = true, 21 | Theme = "@style/AppTheme" 22 | )] 23 | public class Application : Windows.UI.Xaml.NativeApplication 24 | { 25 | public Application(IntPtr javaReference, JniHandleOwnership transfer) 26 | : base(() => new App(), javaReference, transfer) 27 | { 28 | ConfigureUniversalImageLoader(); 29 | } 30 | 31 | private void ConfigureUniversalImageLoader() 32 | { 33 | // Create global configuration and initialize ImageLoader with this config 34 | ImageLoaderConfiguration config = new ImageLoaderConfiguration 35 | .Builder(Context) 36 | .Build(); 37 | 38 | ImageLoader.Instance.Init(config); 39 | 40 | ImageSource.DefaultImageLoader = ImageLoader.Instance.LoadImageAsync; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Chapter05/DigitalTicket.Droid/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using Android.App; 7 | using Android.Content; 8 | using Android.OS; 9 | using Android.Runtime; 10 | using Android.Views; 11 | using Android.Widget; 12 | using Com.Nostra13.Universalimageloader.Core; 13 | using Windows.UI.Xaml.Media; 14 | 15 | namespace DigitalTicket.Droid 16 | { 17 | [global::Android.App.ApplicationAttribute( 18 | Label = "@string/ApplicationName", 19 | LargeHeap = true, 20 | HardwareAccelerated = true, 21 | Theme = "@style/AppTheme" 22 | )] 23 | public class Application : Windows.UI.Xaml.NativeApplication 24 | { 25 | public Application(IntPtr javaReference, JniHandleOwnership transfer) 26 | : base(() => new App(), javaReference, transfer) 27 | { 28 | ConfigureUniversalImageLoader(); 29 | } 30 | 31 | private void ConfigureUniversalImageLoader() 32 | { 33 | // Create global configuration and initialize ImageLoader with this config 34 | ImageLoaderConfiguration config = new ImageLoaderConfiguration 35 | .Builder(Context) 36 | .Build(); 37 | 38 | ImageLoader.Instance.Init(config); 39 | 40 | ImageSource.DefaultImageLoader = ImageLoader.Instance.LoadImageAsync; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Droid/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using Android.App; 7 | using Android.Content; 8 | using Android.OS; 9 | using Android.Runtime; 10 | using Android.Views; 11 | using Android.Widget; 12 | using Com.Nostra13.Universalimageloader.Core; 13 | using Windows.UI.Xaml.Media; 14 | 15 | namespace HelloWorld.Droid 16 | { 17 | [global::Android.App.ApplicationAttribute( 18 | Label = "@string/ApplicationName", 19 | LargeHeap = true, 20 | HardwareAccelerated = true, 21 | Theme = "@style/AppTheme" 22 | )] 23 | public class Application : Windows.UI.Xaml.NativeApplication 24 | { 25 | public Application(IntPtr javaReference, JniHandleOwnership transfer) 26 | : base(() => new App(), javaReference, transfer) 27 | { 28 | ConfigureUniversalImageLoader(); 29 | } 30 | 31 | private void ConfigureUniversalImageLoader() 32 | { 33 | // Create global configuration and initialize ImageLoader with this config 34 | ImageLoaderConfiguration config = new ImageLoaderConfiguration 35 | .Builder(Context) 36 | .Build(); 37 | 38 | ImageLoader.Instance.Init(config); 39 | 40 | ImageSource.DefaultImageLoader = ImageLoader.Instance.LoadImageAsync; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Chapter07/UnoAutomatedTestsApp.Droid/Main.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | 6 | using Android.App; 7 | using Android.Content; 8 | using Android.OS; 9 | using Android.Runtime; 10 | using Android.Views; 11 | using Android.Widget; 12 | using Com.Nostra13.Universalimageloader.Core; 13 | using Windows.UI.Xaml.Media; 14 | 15 | namespace UnoAutomatedTestsApp.Droid 16 | { 17 | [global::Android.App.ApplicationAttribute( 18 | Label = "@string/ApplicationName", 19 | LargeHeap = true, 20 | HardwareAccelerated = true, 21 | Theme = "@style/AppTheme" 22 | )] 23 | public class Application : Windows.UI.Xaml.NativeApplication 24 | { 25 | public Application(IntPtr javaReference, JniHandleOwnership transfer) 26 | : base(() => new App(), javaReference, transfer) 27 | { 28 | ConfigureUniversalImageLoader(); 29 | } 30 | 31 | private void ConfigureUniversalImageLoader() 32 | { 33 | // Create global configuration and initialize ImageLoader with this config 34 | ImageLoaderConfiguration config = new ImageLoaderConfiguration 35 | .Builder(Context) 36 | .Build(); 37 | 38 | ImageLoader.Instance.Init(config); 39 | 40 | ImageSource.DefaultImageLoader = ImageLoader.Instance.LoadImageAsync; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Shared/Views/ArrivalsControl.xaml.cs: -------------------------------------------------------------------------------- 1 | using NetworkAssist.ViewModels; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.IO; 5 | using System.Linq; 6 | using System.Runtime.InteropServices.WindowsRuntime; 7 | using UnoBookRail.Common.Network; 8 | using Windows.Foundation; 9 | using Windows.Foundation.Collections; 10 | using Windows.UI.Xaml; 11 | using Windows.UI.Xaml.Controls; 12 | using Windows.UI.Xaml.Controls.Primitives; 13 | using Windows.UI.Xaml.Data; 14 | using Windows.UI.Xaml.Input; 15 | using Windows.UI.Xaml.Media; 16 | using Windows.UI.Xaml.Navigation; 17 | 18 | namespace NetworkAssist.Views 19 | { 20 | public sealed partial class ArrivalsControl : UserControl 21 | { 22 | private ArrivalsViewModel VM { get; set; } 23 | 24 | public ArrivalsControl() 25 | { 26 | InitializeComponent(); 27 | VM = new ArrivalsViewModel(); 28 | } 29 | 30 | // Doing this in Code-behind because of https://github.com/unoplatform/uno/issues/5792 31 | private async void OnStationListSelectionChanged(object sender, SelectionChangedEventArgs e) 32 | { 33 | if ((sender as ComboBox).SelectedItem is Station selectedStn) 34 | { 35 | await VM.LoadArrivalsDataAsync(selectedStn.Id); 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Chapter04/NetworkAssist.Shared/MainPage.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Runtime.InteropServices.WindowsRuntime; 6 | using Windows.Foundation; 7 | using Windows.Foundation.Collections; 8 | using Windows.UI.Xaml; 9 | using Windows.UI.Xaml.Controls; 10 | using Windows.UI.Xaml.Controls.Primitives; 11 | using Windows.UI.Xaml.Data; 12 | using Windows.UI.Xaml.Input; 13 | using Windows.UI.Xaml.Media; 14 | using Windows.UI.Xaml.Navigation; 15 | 16 | namespace NetworkAssist 17 | { 18 | /// 19 | /// An empty page that can be used on its own or navigated to within a Frame. 20 | /// 21 | public sealed partial class MainPage : Page 22 | { 23 | public MainPage() 24 | { 25 | this.InitializeComponent(); 26 | } 27 | public void ShowArrivals(object sender, RoutedEventArgs args) 28 | { 29 | Arrivals.Visibility = Visibility.Visible; 30 | QuickReport.Visibility = Visibility.Collapsed; 31 | } 32 | public void ShowQuickReport(object sender, RoutedEventArgs args) 33 | { 34 | Arrivals.Visibility = Visibility.Collapsed; 35 | QuickReport.Visibility = Visibility.Visible; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Chapter02/HelloWorld/HelloWorld.Shared/MainPage.xaml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |