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 | 
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 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/Chapter06/Dashboard.UWP/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Chapter03/ResourcePlanner.UWP/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Chapter04/NetworkAssist.UWP/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Chapter05/DigitalTicket.UWP/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Chapter07/UnoAutomatedTestsApp.UWPUnitTests/Properties/TestsDefault.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Chapter02/HelloWorld/HelloWorld.UWP/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Chapter07/UnoAutomatedTestsApp.UWP/Properties/Default.rd.xml:
--------------------------------------------------------------------------------
1 |
17 |
18 |
19 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Chapter02/HelloWorld/HelloWorld.Skia.Gtk/HelloWorld.Skia.Gtk.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | WinExe
5 | Exe
6 | net5.0
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Chapter06/Dashboard.Shared/MainPage.xaml.cs:
--------------------------------------------------------------------------------
1 | //using Microsoft.UI.Xaml.Controls;
2 | //using Page = Windows.UI.Xaml.Controls.Page;
3 |
4 | using Dashboard.Views;
5 | using System;
6 | using Windows.UI.Xaml.Controls;
7 |
8 | namespace Dashboard
9 | {
10 | public sealed partial class MainPage : Page
11 | {
12 | public MainPage()
13 | {
14 | this.InitializeComponent();
15 | InnerFrame.Navigate(typeof(FinancePage));
16 | }
17 |
18 | private void NavItemSelected(NavigationView sender, NavigationViewSelectionChangedEventArgs args)
19 | {
20 | var item = (args.SelectedItem as NavigationViewItem).Content.ToString();
21 |
22 | Type page = null;
23 |
24 | switch (item)
25 | {
26 | case "Finance":
27 | page = typeof(FinancePage);
28 | break;
29 | case "Operations":
30 | page = typeof(OperationsPage);
31 | break;
32 | case "Network":
33 | page = typeof(NetworkPage);
34 | break;
35 | }
36 |
37 | if (page != null && InnerFrame.CurrentSourcePageType != page)
38 | {
39 | InnerFrame.Navigate(page);
40 | }
41 | }
42 |
43 | private void NavBackRequested(object sender, NavigationViewBackRequestedEventArgs e)
44 | {
45 | InnerFrame.GoBack();
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Chapter04/NetworkAssist.iOS/Media.xcassets/LaunchImages.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "orientation": "portrait",
5 | "extent": "full-screen",
6 | "minimum-system-version": "7.0",
7 | "scale": "2x",
8 | "size": "640x960",
9 | "idiom": "iphone"
10 | },
11 | {
12 | "orientation": "portrait",
13 | "extent": "full-screen",
14 | "minimum-system-version": "7.0",
15 | "subtype": "retina4",
16 | "scale": "2x",
17 | "size": "640x1136",
18 | "idiom": "iphone"
19 | },
20 | {
21 | "orientation": "portrait",
22 | "extent": "full-screen",
23 | "minimum-system-version": "7.0",
24 | "scale": "1x",
25 | "size": "768x1024",
26 | "idiom": "ipad"
27 | },
28 | {
29 | "orientation": "landscape",
30 | "extent": "full-screen",
31 | "minimum-system-version": "7.0",
32 | "scale": "1x",
33 | "size": "1024x768",
34 | "idiom": "ipad"
35 | },
36 | {
37 | "orientation": "portrait",
38 | "extent": "full-screen",
39 | "minimum-system-version": "7.0",
40 | "scale": "2x",
41 | "size": "1536x2048",
42 | "idiom": "ipad"
43 | },
44 | {
45 | "orientation": "landscape",
46 | "extent": "full-screen",
47 | "minimum-system-version": "7.0",
48 | "scale": "2x",
49 | "size": "2048x1536",
50 | "idiom": "ipad"
51 | }
52 | ],
53 | "properties": {},
54 | "info": {
55 | "version": 1,
56 | "author": ""
57 | }
58 | }
--------------------------------------------------------------------------------
/Chapter05/DigitalTicket.iOS/Media.xcassets/LaunchImages.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "orientation": "portrait",
5 | "extent": "full-screen",
6 | "minimum-system-version": "7.0",
7 | "scale": "2x",
8 | "size": "640x960",
9 | "idiom": "iphone"
10 | },
11 | {
12 | "orientation": "portrait",
13 | "extent": "full-screen",
14 | "minimum-system-version": "7.0",
15 | "subtype": "retina4",
16 | "scale": "2x",
17 | "size": "640x1136",
18 | "idiom": "iphone"
19 | },
20 | {
21 | "orientation": "portrait",
22 | "extent": "full-screen",
23 | "minimum-system-version": "7.0",
24 | "scale": "1x",
25 | "size": "768x1024",
26 | "idiom": "ipad"
27 | },
28 | {
29 | "orientation": "landscape",
30 | "extent": "full-screen",
31 | "minimum-system-version": "7.0",
32 | "scale": "1x",
33 | "size": "1024x768",
34 | "idiom": "ipad"
35 | },
36 | {
37 | "orientation": "portrait",
38 | "extent": "full-screen",
39 | "minimum-system-version": "7.0",
40 | "scale": "2x",
41 | "size": "1536x2048",
42 | "idiom": "ipad"
43 | },
44 | {
45 | "orientation": "landscape",
46 | "extent": "full-screen",
47 | "minimum-system-version": "7.0",
48 | "scale": "2x",
49 | "size": "2048x1536",
50 | "idiom": "ipad"
51 | }
52 | ],
53 | "properties": {},
54 | "info": {
55 | "version": 1,
56 | "author": ""
57 | }
58 | }
--------------------------------------------------------------------------------
/Chapter02/HelloWorld/HelloWorld.iOS/Media.xcassets/LaunchImages.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "orientation": "portrait",
5 | "extent": "full-screen",
6 | "minimum-system-version": "7.0",
7 | "scale": "2x",
8 | "size": "640x960",
9 | "idiom": "iphone"
10 | },
11 | {
12 | "orientation": "portrait",
13 | "extent": "full-screen",
14 | "minimum-system-version": "7.0",
15 | "subtype": "retina4",
16 | "scale": "2x",
17 | "size": "640x1136",
18 | "idiom": "iphone"
19 | },
20 | {
21 | "orientation": "portrait",
22 | "extent": "full-screen",
23 | "minimum-system-version": "7.0",
24 | "scale": "1x",
25 | "size": "768x1024",
26 | "idiom": "ipad"
27 | },
28 | {
29 | "orientation": "landscape",
30 | "extent": "full-screen",
31 | "minimum-system-version": "7.0",
32 | "scale": "1x",
33 | "size": "1024x768",
34 | "idiom": "ipad"
35 | },
36 | {
37 | "orientation": "portrait",
38 | "extent": "full-screen",
39 | "minimum-system-version": "7.0",
40 | "scale": "2x",
41 | "size": "1536x2048",
42 | "idiom": "ipad"
43 | },
44 | {
45 | "orientation": "landscape",
46 | "extent": "full-screen",
47 | "minimum-system-version": "7.0",
48 | "scale": "2x",
49 | "size": "2048x1536",
50 | "idiom": "ipad"
51 | }
52 | ],
53 | "properties": {},
54 | "info": {
55 | "version": 1,
56 | "author": ""
57 | }
58 | }
--------------------------------------------------------------------------------
/Chapter07/UnoAutomatedTestsApp.iOS/Media.xcassets/LaunchImages.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "orientation": "portrait",
5 | "extent": "full-screen",
6 | "minimum-system-version": "7.0",
7 | "scale": "2x",
8 | "size": "640x960",
9 | "idiom": "iphone"
10 | },
11 | {
12 | "orientation": "portrait",
13 | "extent": "full-screen",
14 | "minimum-system-version": "7.0",
15 | "subtype": "retina4",
16 | "scale": "2x",
17 | "size": "640x1136",
18 | "idiom": "iphone"
19 | },
20 | {
21 | "orientation": "portrait",
22 | "extent": "full-screen",
23 | "minimum-system-version": "7.0",
24 | "scale": "1x",
25 | "size": "768x1024",
26 | "idiom": "ipad"
27 | },
28 | {
29 | "orientation": "landscape",
30 | "extent": "full-screen",
31 | "minimum-system-version": "7.0",
32 | "scale": "1x",
33 | "size": "1024x768",
34 | "idiom": "ipad"
35 | },
36 | {
37 | "orientation": "portrait",
38 | "extent": "full-screen",
39 | "minimum-system-version": "7.0",
40 | "scale": "2x",
41 | "size": "1536x2048",
42 | "idiom": "ipad"
43 | },
44 | {
45 | "orientation": "landscape",
46 | "extent": "full-screen",
47 | "minimum-system-version": "7.0",
48 | "scale": "2x",
49 | "size": "2048x1536",
50 | "idiom": "ipad"
51 | }
52 | ],
53 | "properties": {},
54 | "info": {
55 | "version": 1,
56 | "author": ""
57 | }
58 | }
--------------------------------------------------------------------------------
/Chapter02/HelloWorld/HelloWorld.Shared/HelloWorld.Shared.projitems:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
5 | true
6 | 6279c845-92f8-4333-ab99-3d213163593c
7 |
8 |
9 | HelloWorld
10 |
11 |
12 |
13 | Designer
14 | MSBuild:Compile
15 |
16 |
17 |
18 |
19 | App.xaml
20 |
21 |
22 | MainPage.xaml
23 |
24 |
25 |
26 |
27 | Designer
28 | MSBuild:Compile
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/Chapter05/DigitalTicket.Shared/ViewModels/NavigationViewModel.cs:
--------------------------------------------------------------------------------
1 | using DigitalTicket.Views;
2 | using Microsoft.Toolkit.Mvvm.ComponentModel;
3 | using Microsoft.UI.Xaml.Controls;
4 | using System;
5 |
6 | namespace DigitalTicket.ViewModels
7 | {
8 | public class NavigationViewModel : ObservableObject
9 | {
10 | private Type pageType;
11 | public Type PageType
12 | {
13 | get
14 | {
15 | return pageType;
16 | }
17 | set
18 | {
19 | SetProperty(ref pageType, value);
20 | PageTypeChanged?.Invoke(null, new EventArgs());
21 | }
22 | }
23 |
24 | public event EventHandler PageTypeChanged;
25 |
26 | public void NavigationView_SelectionChanged(NavigationView navigationView, NavigationViewSelectionChangedEventArgs args)
27 | {
28 | if (args.IsSettingsSelected)
29 | {
30 | PageType = typeof(SettingsPage);
31 | }
32 | else if(args.SelectedItem != null)
33 | {
34 | switch ((args.SelectedItem as NavigationViewItem).Tag.ToString())
35 | {
36 | case "JourneyPlanner":
37 | PageType = typeof(JourneyBookingPage);
38 | break;
39 | case "OwnedTickets":
40 | PageType = typeof(OwnedTicketsPage);
41 | break;
42 | }
43 | }
44 | }
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/Chapter02/HelloWorld/HelloWorld.Skia.Tizen/HelloWorld.Skia.Tizen.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | tizen50
6 | Exe
7 | $(DefineConstants);__TIZEN__;
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Chapter02/HelloWorld/HelloWorld.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("HelloWorld.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("HelloWorld.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("166de4ca-8f11-4ef9-bcf8-3e7834988e7d")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Chapter04/NetworkAssist.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("NetworkAssist.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("NetworkAssist.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("166de4ca-8f11-4ef9-bcf8-3e7834988e7d")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Chapter05/DigitalTicket.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("DigitalTicket.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("DigitalTicket.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("166de4ca-8f11-4ef9-bcf8-3e7834988e7d")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Chapter02/HelloWorld/HelloWorld.macOS/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.macOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("HelloWorld.macOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("166de4ca-8f11-4ef9-bcf8-3e7834988e7d")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Chapter03/ResourcePlanner.macOS/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.macOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("ResourcePlanner.macOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("166de4ca-8f11-4ef9-bcf8-3e7834988e7d")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/Chapter07/UnoAutomatedTestsApp.iOS/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("UnoAutomatedTestsApp.iOS")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("UnoAutomatedTestsApp.iOS")]
13 | [assembly: AssemblyCopyright("Copyright © 2021")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("166de4ca-8f11-4ef9-bcf8-3e7834988e7d")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------