diff --git a/src/CouponsApp.sln b/src/CouponsApp.sln new file mode 100644 index 0000000..e350cad --- /dev/null +++ b/src/CouponsApp.sln @@ -0,0 +1,27 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31611.283 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CouponsApp", "CouponsApp\CouponsApp.csproj", "{4127B869-B395-4B84-B5F5-31968AD7D82E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4127B869-B395-4B84-B5F5-31968AD7D82E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4127B869-B395-4B84-B5F5-31968AD7D82E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4127B869-B395-4B84-B5F5-31968AD7D82E}.Debug|Any CPU.Deploy.0 = Debug|Any CPU + {4127B869-B395-4B84-B5F5-31968AD7D82E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4127B869-B395-4B84-B5F5-31968AD7D82E}.Release|Any CPU.Build.0 = Release|Any CPU + {4127B869-B395-4B84-B5F5-31968AD7D82E}.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/src/CouponsApp/Controls/TabView.xaml b/src/CouponsApp/Controls/TabView.xaml index 3171fd8..0f2b294 100644 --- a/src/CouponsApp/Controls/TabView.xaml +++ b/src/CouponsApp/Controls/TabView.xaml @@ -88,6 +88,10 @@ + + + diff --git a/src/CouponsApp/Platforms/Android/AndroidManifest.xml b/src/CouponsApp/Platforms/Android/AndroidManifest.xml new file mode 100644 index 0000000..e9937ad --- /dev/null +++ b/src/CouponsApp/Platforms/Android/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/CouponsApp/Platforms/Android/MainActivity.cs b/src/CouponsApp/Platforms/Android/MainActivity.cs new file mode 100644 index 0000000..17e2639 --- /dev/null +++ b/src/CouponsApp/Platforms/Android/MainActivity.cs @@ -0,0 +1,10 @@ +using Android.App; +using Android.Content.PM; +using Android.OS; + +namespace CouponsApp; + +[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)] +public class MainActivity : MauiAppCompatActivity +{ +} diff --git a/src/CouponsApp/Platforms/Android/MainApplication.cs b/src/CouponsApp/Platforms/Android/MainApplication.cs new file mode 100644 index 0000000..23f4d0b --- /dev/null +++ b/src/CouponsApp/Platforms/Android/MainApplication.cs @@ -0,0 +1,15 @@ +using Android.App; +using Android.Runtime; + +namespace CouponsApp; + +[Application] +public class MainApplication : MauiApplication +{ + public MainApplication(IntPtr handle, JniHandleOwnership ownership) + : base(handle, ownership) + { + } + + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/src/CouponsApp/Platforms/Android/Resources/values/colors.xml b/src/CouponsApp/Platforms/Android/Resources/values/colors.xml new file mode 100644 index 0000000..c04d749 --- /dev/null +++ b/src/CouponsApp/Platforms/Android/Resources/values/colors.xml @@ -0,0 +1,6 @@ + + + #512BD4 + #2B0B98 + #2B0B98 + \ No newline at end of file diff --git a/src/CouponsApp/Platforms/MacCatalyst/AppDelegate.cs b/src/CouponsApp/Platforms/MacCatalyst/AppDelegate.cs new file mode 100644 index 0000000..6e5a016 --- /dev/null +++ b/src/CouponsApp/Platforms/MacCatalyst/AppDelegate.cs @@ -0,0 +1,9 @@ +using Foundation; + +namespace CouponsApp; + +[Register("AppDelegate")] +public class AppDelegate : MauiUIApplicationDelegate +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/src/CouponsApp/Platforms/MacCatalyst/Info.plist b/src/CouponsApp/Platforms/MacCatalyst/Info.plist new file mode 100644 index 0000000..c96dd0a --- /dev/null +++ b/src/CouponsApp/Platforms/MacCatalyst/Info.plist @@ -0,0 +1,30 @@ + + + + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/src/CouponsApp/Platforms/MacCatalyst/Program.cs b/src/CouponsApp/Platforms/MacCatalyst/Program.cs new file mode 100644 index 0000000..2d27e63 --- /dev/null +++ b/src/CouponsApp/Platforms/MacCatalyst/Program.cs @@ -0,0 +1,15 @@ +using ObjCRuntime; +using UIKit; + +namespace CouponsApp; + +public class Program +{ + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } +} diff --git a/src/CouponsApp/Platforms/Tizen/Main.cs b/src/CouponsApp/Platforms/Tizen/Main.cs new file mode 100644 index 0000000..8f9c0a1 --- /dev/null +++ b/src/CouponsApp/Platforms/Tizen/Main.cs @@ -0,0 +1,16 @@ +using System; +using Microsoft.Maui; +using Microsoft.Maui.Hosting; + +namespace CouponsApp; + +class Program : MauiApplication +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); + + static void Main(string[] args) + { + var app = new Program(); + app.Run(args); + } +} diff --git a/src/CouponsApp/Platforms/Tizen/tizen-manifest.xml b/src/CouponsApp/Platforms/Tizen/tizen-manifest.xml new file mode 100644 index 0000000..cfee87c --- /dev/null +++ b/src/CouponsApp/Platforms/Tizen/tizen-manifest.xml @@ -0,0 +1,15 @@ + + + + + + maui-appicon-placeholder + + + + + http://tizen.org/privilege/internet + + + + \ No newline at end of file diff --git a/src/CouponsApp/Platforms/Windows/App.xaml b/src/CouponsApp/Platforms/Windows/App.xaml new file mode 100644 index 0000000..cf96a76 --- /dev/null +++ b/src/CouponsApp/Platforms/Windows/App.xaml @@ -0,0 +1,8 @@ + + + diff --git a/src/CouponsApp/Platforms/Windows/App.xaml.cs b/src/CouponsApp/Platforms/Windows/App.xaml.cs new file mode 100644 index 0000000..e406034 --- /dev/null +++ b/src/CouponsApp/Platforms/Windows/App.xaml.cs @@ -0,0 +1,24 @@ +using Microsoft.UI.Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace CouponsApp.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 MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} + diff --git a/src/CouponsApp/Platforms/Windows/Package.appxmanifest b/src/CouponsApp/Platforms/Windows/Package.appxmanifest new file mode 100644 index 0000000..2bcb11e --- /dev/null +++ b/src/CouponsApp/Platforms/Windows/Package.appxmanifest @@ -0,0 +1,43 @@ + + + + + + + $placeholder$ + User Name + $placeholder$.png + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/CouponsApp/Platforms/Windows/app.manifest b/src/CouponsApp/Platforms/Windows/app.manifest new file mode 100644 index 0000000..619b6a0 --- /dev/null +++ b/src/CouponsApp/Platforms/Windows/app.manifest @@ -0,0 +1,15 @@ + + + + + + + + true/PM + PerMonitorV2, PerMonitor + + + diff --git a/src/CouponsApp/Platforms/iOS/AppDelegate.cs b/src/CouponsApp/Platforms/iOS/AppDelegate.cs new file mode 100644 index 0000000..6e5a016 --- /dev/null +++ b/src/CouponsApp/Platforms/iOS/AppDelegate.cs @@ -0,0 +1,9 @@ +using Foundation; + +namespace CouponsApp; + +[Register("AppDelegate")] +public class AppDelegate : MauiUIApplicationDelegate +{ + protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp(); +} diff --git a/src/CouponsApp/Platforms/iOS/Info.plist b/src/CouponsApp/Platforms/iOS/Info.plist new file mode 100644 index 0000000..0004a4f --- /dev/null +++ b/src/CouponsApp/Platforms/iOS/Info.plist @@ -0,0 +1,32 @@ + + + + + LSRequiresIPhoneOS + + UIDeviceFamily + + 1 + 2 + + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + XSAppIconAssets + Assets.xcassets/appicon.appiconset + + diff --git a/src/CouponsApp/Platforms/iOS/Program.cs b/src/CouponsApp/Platforms/iOS/Program.cs new file mode 100644 index 0000000..2d27e63 --- /dev/null +++ b/src/CouponsApp/Platforms/iOS/Program.cs @@ -0,0 +1,15 @@ +using ObjCRuntime; +using UIKit; + +namespace CouponsApp; + +public class Program +{ + // This is the main entry point of the application. + static void Main(string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main(args, null, typeof(AppDelegate)); + } +} diff --git a/src/CouponsApp/Properties/launchSettings.json b/src/CouponsApp/Properties/launchSettings.json new file mode 100644 index 0000000..edf8aad --- /dev/null +++ b/src/CouponsApp/Properties/launchSettings.json @@ -0,0 +1,8 @@ +{ + "profiles": { + "Windows Machine": { + "commandName": "MsixPackage", + "nativeDebugging": false + } + } +} \ No newline at end of file diff --git a/src/CouponsApp/Resources/AppIcon/appicon.svg b/src/CouponsApp/Resources/AppIcon/appicon.svg new file mode 100644 index 0000000..9d63b65 --- /dev/null +++ b/src/CouponsApp/Resources/AppIcon/appicon.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/src/CouponsApp/Resources/AppIcon/appiconfg.svg b/src/CouponsApp/Resources/AppIcon/appiconfg.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/src/CouponsApp/Resources/AppIcon/appiconfg.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/CouponsApp/Resources/Fonts/Poppins-Light.ttf b/src/CouponsApp/Resources/Fonts/Poppins-Light.ttf new file mode 100644 index 0000000..2ab0221 Binary files /dev/null and b/src/CouponsApp/Resources/Fonts/Poppins-Light.ttf differ diff --git a/src/CouponsApp/Resources/Fonts/Poppins-Medium.ttf b/src/CouponsApp/Resources/Fonts/Poppins-Medium.ttf new file mode 100644 index 0000000..e90e87e Binary files /dev/null and b/src/CouponsApp/Resources/Fonts/Poppins-Medium.ttf differ diff --git a/src/CouponsApp/Resources/Fonts/Poppins-Regular.ttf b/src/CouponsApp/Resources/Fonts/Poppins-Regular.ttf new file mode 100644 index 0000000..be06e7f Binary files /dev/null and b/src/CouponsApp/Resources/Fonts/Poppins-Regular.ttf differ diff --git a/src/CouponsApp/Resources/Fonts/Poppins-SemiBold.ttf b/src/CouponsApp/Resources/Fonts/Poppins-SemiBold.ttf new file mode 100644 index 0000000..dabf7c2 Binary files /dev/null and b/src/CouponsApp/Resources/Fonts/Poppins-SemiBold.ttf differ diff --git a/src/CouponsApp/Resources/Images/adidas.png b/src/CouponsApp/Resources/Images/adidas.png new file mode 100644 index 0000000..50b185a Binary files /dev/null and b/src/CouponsApp/Resources/Images/adidas.png differ diff --git a/src/CouponsApp/Resources/Images/apple.png b/src/CouponsApp/Resources/Images/apple.png new file mode 100644 index 0000000..71b7b01 Binary files /dev/null and b/src/CouponsApp/Resources/Images/apple.png differ diff --git a/src/CouponsApp/Resources/Images/back_icon.png b/src/CouponsApp/Resources/Images/back_icon.png new file mode 100644 index 0000000..111c6d2 Binary files /dev/null and b/src/CouponsApp/Resources/Images/back_icon.png differ diff --git a/src/CouponsApp/Resources/Images/chips.png b/src/CouponsApp/Resources/Images/chips.png new file mode 100644 index 0000000..0982721 Binary files /dev/null and b/src/CouponsApp/Resources/Images/chips.png differ diff --git a/src/CouponsApp/Resources/Images/coffee.png b/src/CouponsApp/Resources/Images/coffee.png new file mode 100644 index 0000000..359077e Binary files /dev/null and b/src/CouponsApp/Resources/Images/coffee.png differ diff --git a/src/CouponsApp/Resources/Images/domino.png b/src/CouponsApp/Resources/Images/domino.png new file mode 100644 index 0000000..4ffdbd6 Binary files /dev/null and b/src/CouponsApp/Resources/Images/domino.png differ diff --git a/src/CouponsApp/Resources/Images/donut.png b/src/CouponsApp/Resources/Images/donut.png new file mode 100644 index 0000000..8d34619 Binary files /dev/null and b/src/CouponsApp/Resources/Images/donut.png differ diff --git a/src/CouponsApp/Resources/Images/dotnet_bot.svg b/src/CouponsApp/Resources/Images/dotnet_bot.svg new file mode 100644 index 0000000..abfaff2 --- /dev/null +++ b/src/CouponsApp/Resources/Images/dotnet_bot.svg @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/CouponsApp/Resources/Images/dunkindonuts.png b/src/CouponsApp/Resources/Images/dunkindonuts.png new file mode 100644 index 0000000..eefb26a Binary files /dev/null and b/src/CouponsApp/Resources/Images/dunkindonuts.png differ diff --git a/src/CouponsApp/Resources/Images/goby.png b/src/CouponsApp/Resources/Images/goby.png new file mode 100644 index 0000000..723d8ad Binary files /dev/null and b/src/CouponsApp/Resources/Images/goby.png differ diff --git a/src/CouponsApp/Resources/Images/iphone.png b/src/CouponsApp/Resources/Images/iphone.png new file mode 100644 index 0000000..6b93b93 Binary files /dev/null and b/src/CouponsApp/Resources/Images/iphone.png differ diff --git a/src/CouponsApp/Resources/Images/mcdonalds.png b/src/CouponsApp/Resources/Images/mcdonalds.png new file mode 100644 index 0000000..12e2338 Binary files /dev/null and b/src/CouponsApp/Resources/Images/mcdonalds.png differ diff --git a/src/CouponsApp/Resources/Images/menu_icon.png b/src/CouponsApp/Resources/Images/menu_icon.png new file mode 100644 index 0000000..c2b3de0 Binary files /dev/null and b/src/CouponsApp/Resources/Images/menu_icon.png differ diff --git a/src/CouponsApp/Resources/Images/pizza.png b/src/CouponsApp/Resources/Images/pizza.png new file mode 100644 index 0000000..8747ede Binary files /dev/null and b/src/CouponsApp/Resources/Images/pizza.png differ diff --git a/src/CouponsApp/Resources/Images/ps5.png b/src/CouponsApp/Resources/Images/ps5.png new file mode 100644 index 0000000..bcaf064 Binary files /dev/null and b/src/CouponsApp/Resources/Images/ps5.png differ diff --git a/src/CouponsApp/Resources/Images/scan_icon.png b/src/CouponsApp/Resources/Images/scan_icon.png new file mode 100644 index 0000000..d9d1074 Binary files /dev/null and b/src/CouponsApp/Resources/Images/scan_icon.png differ diff --git a/src/CouponsApp/Resources/Images/search_icon.png b/src/CouponsApp/Resources/Images/search_icon.png new file mode 100644 index 0000000..2a6d42b Binary files /dev/null and b/src/CouponsApp/Resources/Images/search_icon.png differ diff --git a/src/CouponsApp/Resources/Images/send_icon.png b/src/CouponsApp/Resources/Images/send_icon.png new file mode 100644 index 0000000..6de9eea Binary files /dev/null and b/src/CouponsApp/Resources/Images/send_icon.png differ diff --git a/src/CouponsApp/Resources/Images/services_icon.png b/src/CouponsApp/Resources/Images/services_icon.png new file mode 100644 index 0000000..65cc158 Binary files /dev/null and b/src/CouponsApp/Resources/Images/services_icon.png differ diff --git a/src/CouponsApp/Resources/Images/shoes.png b/src/CouponsApp/Resources/Images/shoes.png new file mode 100644 index 0000000..8987e54 Binary files /dev/null and b/src/CouponsApp/Resources/Images/shoes.png differ diff --git a/src/CouponsApp/Resources/Images/sony.png b/src/CouponsApp/Resources/Images/sony.png new file mode 100644 index 0000000..5e5a5b9 Binary files /dev/null and b/src/CouponsApp/Resources/Images/sony.png differ diff --git a/src/CouponsApp/Resources/Images/starbucks.png b/src/CouponsApp/Resources/Images/starbucks.png new file mode 100644 index 0000000..daf154b Binary files /dev/null and b/src/CouponsApp/Resources/Images/starbucks.png differ diff --git a/src/CouponsApp/Resources/Images/toothbrush.png b/src/CouponsApp/Resources/Images/toothbrush.png new file mode 100644 index 0000000..e5e570c Binary files /dev/null and b/src/CouponsApp/Resources/Images/toothbrush.png differ diff --git a/src/CouponsApp/Resources/Raw/AboutAssets.txt b/src/CouponsApp/Resources/Raw/AboutAssets.txt new file mode 100644 index 0000000..15d6244 --- /dev/null +++ b/src/CouponsApp/Resources/Raw/AboutAssets.txt @@ -0,0 +1,15 @@ +Any raw assets you want to be deployed with your application can be placed in +this directory (and child directories). Deployment of the asset to your application +is automatically handled by the following `MauiAsset` Build Action within your `.csproj`. + + + +These files will be deployed with you package and will be accessible using Essentials: + + async Task LoadMauiAsset() + { + using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt"); + using var reader = new StreamReader(stream); + + var contents = reader.ReadToEnd(); + } diff --git a/src/CouponsApp/Resources/Splash/splash.svg b/src/CouponsApp/Resources/Splash/splash.svg new file mode 100644 index 0000000..21dfb25 --- /dev/null +++ b/src/CouponsApp/Resources/Splash/splash.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/src/CouponsApp/Resources/Styles/Colors.xaml b/src/CouponsApp/Resources/Styles/Colors.xaml new file mode 100644 index 0000000..245758b --- /dev/null +++ b/src/CouponsApp/Resources/Styles/Colors.xaml @@ -0,0 +1,44 @@ + + + + + #512BD4 + #DFD8F7 + #2B0B98 + White + Black + #E1E1E1 + #C8C8C8 + #ACACAC + #919191 + #6E6E6E + #404040 + #212121 + #141414 + + + + + + + + + + + + + + + #F7B548 + #FFD590 + #FFE5B9 + #28C2D1 + #7BDDEF + #C3F2F4 + #3E8EED + #72ACF1 + #A7CBF6 + + \ No newline at end of file diff --git a/src/CouponsApp/Resources/Styles/Styles.xaml b/src/CouponsApp/Resources/Styles/Styles.xaml new file mode 100644 index 0000000..1ec9d55 --- /dev/null +++ b/src/CouponsApp/Resources/Styles/Styles.xaml @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/CouponsApp/Services/CouponService.cs b/src/CouponsApp/Services/CouponService.cs new file mode 100644 index 0000000..6f3bfae --- /dev/null +++ b/src/CouponsApp/Services/CouponService.cs @@ -0,0 +1,105 @@ +using CouponsApp.Models; + +namespace CouponsApp.Services +{ + public class CouponService + { + static CouponService _instance; + + public static CouponService Instance + { + get + { + _instance ??= new CouponService(); + + return _instance; + } + } + + public List GetCoupons() + { + return new List + { + new Coupon + { + Id = 1, + Title = "McDonald's french", + Discount= -5.00, + CompanyLogo = "McDonalds.png", + Image = "Chips.png", + Color = Color.FromArgb("#FF4AA596") + }, + + new Coupon + { + Id = 2, + Title = "Donuts", + Discount= -0.50, + CompanyLogo = "DunkinDonuts.png", + Image = "Donut.png", + Color = Color.FromArgb("#FFE0E7F8"), + }, + + new Coupon + { + Id = 3, + Title= "Pizza", + Discount = -1.25, + CompanyLogo = "Domino.png", + Image = "Pizza.png", + Color = Color.FromArgb("#FFE5E3F2"), + }, + + new Coupon + { + Id = 4, + Title="iPhone", + Discount= -15, + CompanyLogo = "Apple.png", + Image= "iPhone.png", + Color= Color.FromArgb("#FFD7E2F1"), + }, + + new Coupon + { + Id = 5, + Title = "Cappuccino", + Discount = -10, + CompanyLogo = "Starbucks.png", + Image = "Coffee.png", + Color = Color.FromArgb("#FFEFE9EB") + }, + + new Coupon + { + Id = 6, + Title = "Shoes", + Discount = -30, + CompanyLogo = "Adidas.png", + Image = "Shoes.png", + Color = Color.FromArgb("#FFEBE9F1") + }, + + new Coupon + { + Id = 7, + Title = "Electric toothbrush", + Discount = -18, + CompanyLogo = "Goby.png", + Image = "Toothbrush.png", + Color = Color.FromArgb("#FFEDDCEE") + }, + + new Coupon + { + Id = 8, + Title = "Game Consoles", + Discount = -10, + CompanyLogo = "Sony.png", + Image = "PS5.png", + Color = Color.FromArgb("#FF191879") + }, + }; + } + } +} \ No newline at end of file diff --git a/src/CouponsApp/Services/DiscoverService.cs b/src/CouponsApp/Services/DiscoverService.cs new file mode 100644 index 0000000..06daf89 --- /dev/null +++ b/src/CouponsApp/Services/DiscoverService.cs @@ -0,0 +1,31 @@ +using CouponsApp.Models; + +namespace CouponsApp.Services +{ + public class DiscoverService + { + static DiscoverService _instance; + + public static DiscoverService Instance + { + get + { + _instance ??= new DiscoverService(); + + return _instance; + } + } + + public List GetDiscover() + { + return new List + { + new Discover { Title = "Most Favourites", CouponsCount = 28, Color = Color.FromArgb("#FFEAA833") }, + + new Discover { Title = "Newest", CouponsCount = 20, Color = Color.FromArgb("#FF40BAF6") }, + + new Discover { Title = "Supermarkets", CouponsCount = 56, Color = Color.FromArgb("#FFA7D5F8") }, + }; + } + } +} diff --git a/src/CouponsApp/ViewModels/CouponsViewModel.cs b/src/CouponsApp/ViewModels/CouponsViewModel.cs new file mode 100644 index 0000000..fe0edf7 --- /dev/null +++ b/src/CouponsApp/ViewModels/CouponsViewModel.cs @@ -0,0 +1,43 @@ +using CouponsApp.Models; +using CouponsApp.Services; +using System.Collections.ObjectModel; + +namespace CouponsApp.ViewModels +{ + public class CouponsViewModel : BindableObject + { + ObservableCollection _coupons; + ObservableCollection _discover; + + public CouponsViewModel() + { + LoadData(); + } + + public ObservableCollection Coupons + { + get { return _coupons; } + set + { + _coupons = value; + OnPropertyChanged(); + } + } + + public ObservableCollection Discover + { + get { return _discover; } + set + { + _discover = value; + OnPropertyChanged(); + } + } + + void LoadData() + { + Coupons = new ObservableCollection(CouponService.Instance.GetCoupons()); + Discover = new ObservableCollection(DiscoverService.Instance.GetDiscover()); + } + } +} diff --git a/src/CouponsApp/Views/CouponsView.xaml b/src/CouponsApp/Views/CouponsView.xaml new file mode 100644 index 0000000..ccdc96c --- /dev/null +++ b/src/CouponsApp/Views/CouponsView.xaml @@ -0,0 +1,192 @@ + + + + + + #EFF1F9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/CouponsApp/Views/CouponsView.xaml.cs b/src/CouponsApp/Views/CouponsView.xaml.cs new file mode 100644 index 0000000..305ba0f --- /dev/null +++ b/src/CouponsApp/Views/CouponsView.xaml.cs @@ -0,0 +1,20 @@ +namespace CouponsApp.Views +{ + public partial class CouponsView : ContentPage + { + public CouponsView() + { + InitializeComponent(); + } + + private void ViewCell_Appearing(object sender, EventArgs e) + { + + } + + private void ViewCell_Disappearing(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml b/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml new file mode 100644 index 0000000..595f604 --- /dev/null +++ b/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml.cs b/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml.cs new file mode 100644 index 0000000..51952a9 --- /dev/null +++ b/src/CouponsApp/Views/Templates/CouponItemTemplate.xaml.cs @@ -0,0 +1,10 @@ +namespace CouponsApp.Views.Templates +{ + public partial class CouponItemTemplate : ContentView + { + public CouponItemTemplate() + { + InitializeComponent(); + } + } +} \ No newline at end of file diff --git a/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml b/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml new file mode 100644 index 0000000..ce13d56 --- /dev/null +++ b/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml.cs b/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml.cs new file mode 100644 index 0000000..2bfcfcf --- /dev/null +++ b/src/CouponsApp/Views/Templates/DiscoverItemTemplate.xaml.cs @@ -0,0 +1,9 @@ +namespace CouponsApp.Views.Templates; + +public partial class DiscoverItemTemplate : ContentView +{ + public DiscoverItemTemplate() + { + InitializeComponent(); + } +} \ No newline at end of file