From 3b060674976054987de9bdffe9dcd614200d896c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Su=C3=A1rez?= Date: Fri, 16 Jul 2021 19:52:41 +0200 Subject: [PATCH] TipCalc sample --- TipCalc/TipCalc.sln | 35 ++++++ TipCalc/TipCalc/Directory.Build.targets | 26 ++++ .../TipCalc.WinUI/Platforms/Windows/App.xaml | 8 ++ .../Platforms/Windows/App.xaml.cs | 33 ++++++ .../Platforms/Windows/Package.appxmanifest | 58 +++++++++ .../Platforms/Windows/app.manifest | 15 +++ .../Properties/launchSettings.json | 7 ++ .../TipCalc.WinUI/TipCalc.WinUI.csproj | 61 ++++++++++ TipCalc/TipCalc/TipCalc/App.xaml | 7 ++ TipCalc/TipCalc/TipCalc/App.xaml.cs | 14 +++ .../TipCalc/DoubleRoundingConverter.cs | 33 ++++++ .../TipCalc/DoubleToStringConverter.cs | 32 +++++ .../Platforms/Android/AndroidManifest.xml | 6 + .../TipCalc/Platforms/Android/MainActivity.cs | 11 ++ .../Platforms/Android/MainApplication.cs | 16 +++ .../Android/Resources/values/colors.xml | 6 + .../Android/Resources/values/styles.xml | 16 +++ .../Platforms/MacCatalyst/AppDelegate.cs | 10 ++ .../TipCalc/Platforms/MacCatalyst/Info.plist | 32 +++++ .../TipCalc/Platforms/MacCatalyst/Program.cs | 15 +++ .../TipCalc/Platforms/iOS/AppDelegate.cs | 10 ++ .../TipCalc/Platforms/iOS/Entitlements.plist | 6 + .../TipCalc/TipCalc/Platforms/iOS/Info.plist | 34 ++++++ .../TipCalc/TipCalc/Platforms/iOS/Program.cs | 15 +++ .../Platforms/iOS/Resources/LaunchScreen.xib | 43 +++++++ .../Resources/Fonts/OpenSans-Regular.ttf | Bin 0 -> 96932 bytes .../TipCalc/Resources/Images/dotnet_bot.svg | 93 +++++++++++++++ TipCalc/TipCalc/TipCalc/Resources/appicon.svg | 4 + .../TipCalc/TipCalc/Resources/appiconfg.svg | 8 ++ TipCalc/TipCalc/TipCalc/Startup.cs | 22 ++++ TipCalc/TipCalc/TipCalc/TipCalc.csproj | 47 ++++++++ TipCalc/TipCalc/TipCalc/TipCalcModel.cs | 111 ++++++++++++++++++ TipCalc/TipCalc/TipCalc/TipCalcPage.xaml | 57 +++++++++ TipCalc/TipCalc/TipCalc/TipCalcPage.xaml.cs | 10 ++ 34 files changed, 901 insertions(+) create mode 100644 TipCalc/TipCalc.sln create mode 100644 TipCalc/TipCalc/Directory.Build.targets create mode 100644 TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/App.xaml create mode 100644 TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/App.xaml.cs create mode 100644 TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/Package.appxmanifest create mode 100644 TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/app.manifest create mode 100644 TipCalc/TipCalc/TipCalc.WinUI/Properties/launchSettings.json create mode 100644 TipCalc/TipCalc/TipCalc.WinUI/TipCalc.WinUI.csproj create mode 100644 TipCalc/TipCalc/TipCalc/App.xaml create mode 100644 TipCalc/TipCalc/TipCalc/App.xaml.cs create mode 100644 TipCalc/TipCalc/TipCalc/DoubleRoundingConverter.cs create mode 100644 TipCalc/TipCalc/TipCalc/DoubleToStringConverter.cs create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/Android/AndroidManifest.xml create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/Android/MainActivity.cs create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/Android/MainApplication.cs create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/Android/Resources/values/colors.xml create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/Android/Resources/values/styles.xml create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/MacCatalyst/AppDelegate.cs create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/MacCatalyst/Info.plist create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/MacCatalyst/Program.cs create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/iOS/AppDelegate.cs create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/iOS/Entitlements.plist create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/iOS/Info.plist create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/iOS/Program.cs create mode 100644 TipCalc/TipCalc/TipCalc/Platforms/iOS/Resources/LaunchScreen.xib create mode 100644 TipCalc/TipCalc/TipCalc/Resources/Fonts/OpenSans-Regular.ttf create mode 100644 TipCalc/TipCalc/TipCalc/Resources/Images/dotnet_bot.svg create mode 100644 TipCalc/TipCalc/TipCalc/Resources/appicon.svg create mode 100644 TipCalc/TipCalc/TipCalc/Resources/appiconfg.svg create mode 100644 TipCalc/TipCalc/TipCalc/Startup.cs create mode 100644 TipCalc/TipCalc/TipCalc/TipCalc.csproj create mode 100644 TipCalc/TipCalc/TipCalc/TipCalcModel.cs create mode 100644 TipCalc/TipCalc/TipCalc/TipCalcPage.xaml create mode 100644 TipCalc/TipCalc/TipCalc/TipCalcPage.xaml.cs diff --git a/TipCalc/TipCalc.sln b/TipCalc/TipCalc.sln new file mode 100644 index 0000000..7282709 --- /dev/null +++ b/TipCalc/TipCalc.sln @@ -0,0 +1,35 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31220.234 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TipCalc", "TipCalc\TipCalc\TipCalc.csproj", "{F06E1181-6049-43CA-B314-F42A3292ABBD}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TipCalc.WinUI", "TipCalc\TipCalc.WinUI\TipCalc.WinUI.csproj", "{252AD965-64C4-4852-95F7-9D378231998E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F06E1181-6049-43CA-B314-F42A3292ABBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F06E1181-6049-43CA-B314-F42A3292ABBD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F06E1181-6049-43CA-B314-F42A3292ABBD}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {F06E1181-6049-43CA-B314-F42A3292ABBD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F06E1181-6049-43CA-B314-F42A3292ABBD}.Release|Any CPU.Build.0 = Release|Any CPU + {F06E1181-6049-43CA-B314-F42A3292ABBD}.Release|Any CPU.Deploy.0 = Release|Any CPU + {252AD965-64C4-4852-95F7-9D378231998E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {252AD965-64C4-4852-95F7-9D378231998E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {252AD965-64C4-4852-95F7-9D378231998E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {252AD965-64C4-4852-95F7-9D378231998E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {252AD965-64C4-4852-95F7-9D378231998E}.Release|Any CPU.Build.0 = Release|Any CPU + {252AD965-64C4-4852-95F7-9D378231998E}.Release|Any CPU.Deploy.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {61F7FB11-1E47-470C-91E2-47F8143E1572} + EndGlobalSection +EndGlobal diff --git a/TipCalc/TipCalc/Directory.Build.targets b/TipCalc/TipCalc/Directory.Build.targets new file mode 100644 index 0000000..b5eda5f --- /dev/null +++ b/TipCalc/TipCalc/Directory.Build.targets @@ -0,0 +1,26 @@ + + + + + <_KeepLaunchProfiles>true + + + + + + + + + + + + + + false + + + + + + + diff --git a/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/App.xaml b/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/App.xaml new file mode 100644 index 0000000..49f4667 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/App.xaml.cs b/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/App.xaml.cs new file mode 100644 index 0000000..9477522 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/App.xaml.cs @@ -0,0 +1,33 @@ +using Microsoft.Maui; +using Microsoft.UI.Xaml; +using Windows.ApplicationModel; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace TipCalc.WinUI +{ + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + public partial class App : MauiWinUIApplication + { + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + public App() + { + this.InitializeComponent(); + } + + protected override IStartup OnCreateStartup() => new Startup(); + + protected override void OnLaunched(LaunchActivatedEventArgs args) + { + base.OnLaunched(args); + + Microsoft.Maui.Essentials.Platform.OnLaunched(args); + } + } +} diff --git a/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/Package.appxmanifest b/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..bc2f925 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,58 @@ + + + + + + + + TipCalc + Microsoft + Assets\appiconStoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/app.manifest b/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/app.manifest new file mode 100644 index 0000000..ed152c2 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc.WinUI/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/TipCalc/TipCalc/TipCalc.WinUI/Properties/launchSettings.json b/TipCalc/TipCalc/TipCalc.WinUI/Properties/launchSettings.json new file mode 100644 index 0000000..68fea2a --- /dev/null +++ b/TipCalc/TipCalc/TipCalc.WinUI/Properties/launchSettings.json @@ -0,0 +1,7 @@ +{ + "profiles": { + "TipCalc.WinUI": { + "commandName": "MsixPackage" + } + } +} \ No newline at end of file diff --git a/TipCalc/TipCalc/TipCalc.WinUI/TipCalc.WinUI.csproj b/TipCalc/TipCalc/TipCalc.WinUI/TipCalc.WinUI.csproj new file mode 100644 index 0000000..29961b3 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc.WinUI/TipCalc.WinUI.csproj @@ -0,0 +1,61 @@ + + + + net6.0-windows10.0.19041 + win-x64 + WinExe + 10.0.17763.0 + true + true + TipCalc + + + true + MSIX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/TipCalc/TipCalc/TipCalc/App.xaml b/TipCalc/TipCalc/TipCalc/App.xaml new file mode 100644 index 0000000..85185cc --- /dev/null +++ b/TipCalc/TipCalc/TipCalc/App.xaml @@ -0,0 +1,7 @@ + + diff --git a/TipCalc/TipCalc/TipCalc/App.xaml.cs b/TipCalc/TipCalc/TipCalc/App.xaml.cs new file mode 100644 index 0000000..0cf5914 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc/App.xaml.cs @@ -0,0 +1,14 @@ +using Application = Microsoft.Maui.Controls.Application; + +namespace TipCalc +{ + public partial class App : Application + { + public App() + { + InitializeComponent(); + + MainPage = new TipCalcPage(); + } + } +} diff --git a/TipCalc/TipCalc/TipCalc/DoubleRoundingConverter.cs b/TipCalc/TipCalc/TipCalc/DoubleRoundingConverter.cs new file mode 100644 index 0000000..0677984 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc/DoubleRoundingConverter.cs @@ -0,0 +1,33 @@ +using Microsoft.Maui.Controls; +using System; +using System.Globalization; + +namespace TipCalc +{ + public class DoubleRoundingConverter : IValueConverter + { + public object Convert(object value, Type targetType, + object parameter, CultureInfo culture) + { + return Round((double)value, parameter); + } + + public object ConvertBack(object value, Type targetType, + object parameter, CultureInfo culture) + { + return Round((double)value, parameter); + } + + double Round(double number, object parameter) + { + double precision = 1; + + // Assume parameter is string encoding precision. + if (parameter != null) + { + precision = Double.Parse((string)parameter); + } + return precision * Math.Round(number / precision); + } + } +} diff --git a/TipCalc/TipCalc/TipCalc/DoubleToStringConverter.cs b/TipCalc/TipCalc/TipCalc/DoubleToStringConverter.cs new file mode 100644 index 0000000..3b5ed15 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc/DoubleToStringConverter.cs @@ -0,0 +1,32 @@ +using Microsoft.Maui.Controls; +using System; +using System.Globalization; + +namespace TipCalc +{ + public class DoubleToStringConverter : IValueConverter + { + public object Convert(object value, Type targetType, + object parameter, CultureInfo culture) + { + // Assumes value is double. + double number = (double)value; + + // Return empty string for a zero (good for Entry views). + if (number == 0) + { + return ""; + } + + return number.ToString(); + } + + public object ConvertBack(object value, Type targetType, + object parameter, CultureInfo culture) + { + double number = 0; + Double.TryParse((string)value, out number); + return number; + } + } +} diff --git a/TipCalc/TipCalc/TipCalc/Platforms/Android/AndroidManifest.xml b/TipCalc/TipCalc/TipCalc/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..85bd4d5 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TipCalc/TipCalc/TipCalc/Platforms/Android/MainActivity.cs b/TipCalc/TipCalc/TipCalc/Platforms/Android/MainActivity.cs new file mode 100644 index 0000000..445fe35 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc/Platforms/Android/MainActivity.cs @@ -0,0 +1,11 @@ +using Android.App; +using Android.Content.PM; +using Microsoft.Maui; + +namespace TipCalc +{ + [Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize)] + public class MainActivity : MauiAppCompatActivity + { + } +} \ No newline at end of file diff --git a/TipCalc/TipCalc/TipCalc/Platforms/Android/MainApplication.cs b/TipCalc/TipCalc/TipCalc/Platforms/Android/MainApplication.cs new file mode 100644 index 0000000..82679d2 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc/Platforms/Android/MainApplication.cs @@ -0,0 +1,16 @@ +using System; +using Android.App; +using Android.Runtime; +using Microsoft.Maui; + +namespace TipCalc +{ + [Application] + public class MainApplication : MauiApplication + { + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + } +} \ No newline at end of file diff --git a/TipCalc/TipCalc/TipCalc/Platforms/Android/Resources/values/colors.xml b/TipCalc/TipCalc/TipCalc/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..c04d749 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/TipCalc/TipCalc/TipCalc/Platforms/Android/Resources/values/styles.xml b/TipCalc/TipCalc/TipCalc/Platforms/Android/Resources/values/styles.xml new file mode 100644 index 0000000..b749b60 --- /dev/null +++ b/TipCalc/TipCalc/TipCalc/Platforms/Android/Resources/values/styles.xml @@ -0,0 +1,16 @@ + + + + + +