From 84dcfeb6ffdb7dd0760bef3f9196241c1fd049c1 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 6 Mar 2026 11:20:46 +0000
Subject: [PATCH 1/4] Initial plan
From 0a4fdeb26b016bc1ae82eb5dcf388570b92cc28b Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 6 Mar 2026 11:26:59 +0000
Subject: [PATCH 2/4] Revamp SupportPage with modern tile-based layout
Co-authored-by: StuartFerguson <16325469+StuartFerguson@users.noreply.github.com>
---
.../Pages/Support/SupportPage.xaml | 87 +++++++++++--------
.../Pages/Support/SupportPage.xaml.cs | 59 ++++++++++++-
2 files changed, 108 insertions(+), 38 deletions(-)
diff --git a/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml b/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml
index 858b6a53d..b264453c7 100644
--- a/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml
+++ b/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml
@@ -3,49 +3,66 @@
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="TransactionProcessor.Mobile.Pages.Support.SupportPage"
xmlns:common="clr-namespace:TransactionProcessor.Mobile.Pages.Common"
- xmlns:controls="clr-namespace:TransactionProcessor.Mobile.Controls"
- xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
Shell.NavBarIsVisible="False"
- x:Name="Support">
+ Padding="0">
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
+
-
+
+
-
-
-
-
-
\ No newline at end of file
diff --git a/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs b/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs
index 03a88f392..3b8e335bf 100644
--- a/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs
+++ b/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs
@@ -12,8 +12,61 @@ public SupportPage(SupportPageViewModel vm) {
BindingContext = vm;
}
- //protected override async void OnAppearing() {
- //SupportPageViewModel vm = MauiProgram.Container.Services.GetRequiredService();
- //}
+ protected override void OnAppearing() {
+ base.OnAppearing();
+ this.LoadSupportOptions(this.viewModel);
+ }
+
+ private void LoadSupportOptions(SupportPageViewModel viewModel) {
+ this.SupportOptionsList.Children.Clear();
+
+ var options = new List<(String Title, String Icon, String AutomationId, ICommand Command)>
+ {
+ ("Upload Logs", "supportbutton.svg", "UploadLogsButton", viewModel.UploadLogsCommand),
+ ("View Logs", "reportbutton.svg", "ViewLogsButton", viewModel.ViewLogsCommand),
+ };
+
+ foreach (var option in options) {
+ Frame tile = this.CreateSupportTile(option.Title, option.Icon, option.AutomationId, option.Command);
+ this.SupportOptionsList.Children.Add(tile);
+ }
+ }
+
+ private Frame CreateSupportTile(String title, String iconSource, String automationId, ICommand command) {
+ Frame tile = new Frame();
+ tile.SetDynamicResource(VisualElement.StyleProperty, "SelectionTileFrame");
+ tile.AutomationId = automationId;
+
+ Image icon = new Image
+ {
+ Source = iconSource,
+ HeightRequest = 36,
+ WidthRequest = 36,
+ HorizontalOptions = LayoutOptions.Center
+ };
+
+ Label nameLabel = new Label
+ {
+ Text = title,
+ HorizontalTextAlignment = TextAlignment.Center,
+ HorizontalOptions = LayoutOptions.Center,
+ FontAttributes = FontAttributes.Bold,
+ FontSize = 13
+ };
+ nameLabel.SetDynamicResource(Label.TextColorProperty, "support");
+
+ tile.Content = new VerticalStackLayout
+ {
+ Spacing = 8,
+ HorizontalOptions = LayoutOptions.Center,
+ Children = { icon, nameLabel }
+ };
+
+ TapGestureRecognizer tapGesture = new TapGestureRecognizer();
+ tapGesture.Command = command;
+ tile.GestureRecognizers.Add(tapGesture);
+
+ return tile;
+ }
}
}
\ No newline at end of file
From 0ce115aa31443dff0c057594302f16dd5f89dc24 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 6 Mar 2026 11:49:53 +0000
Subject: [PATCH 3/4] Fix CS0246: add missing using System.Windows.Input for
ICommand
Co-authored-by: StuartFerguson <16325469+StuartFerguson@users.noreply.github.com>
---
TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs | 1 +
1 file changed, 1 insertion(+)
diff --git a/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs b/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs
index 3b8e335bf..8d2ce83d0 100644
--- a/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs
+++ b/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs
@@ -1,3 +1,4 @@
+using System.Windows.Input;
using TransactionProcessor.Mobile.BusinessLogic.ViewModels.Support;
using TransactionProcessor.Mobile.Pages.Common;
From 4a9bde49bdff229ced181365b7dd1f39c20ea6f2 Mon Sep 17 00:00:00 2001
From: Stuart Ferguson
Date: Fri, 6 Mar 2026 11:55:35 +0000
Subject: [PATCH 4/4] :|
---
.../Pages/Support/SupportPage.xaml.cs | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs b/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs
index 8d2ce83d0..8842d68d7 100644
--- a/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs
+++ b/TransactionProcessor.Mobile/Pages/Support/SupportPage.xaml.cs
@@ -1,4 +1,5 @@
using System.Windows.Input;
+using CommunityToolkit.Mvvm.Input;
using TransactionProcessor.Mobile.BusinessLogic.ViewModels.Support;
using TransactionProcessor.Mobile.Pages.Common;
@@ -21,7 +22,8 @@ protected override void OnAppearing() {
private void LoadSupportOptions(SupportPageViewModel viewModel) {
this.SupportOptionsList.Children.Clear();
- var options = new List<(String Title, String Icon, String AutomationId, ICommand Command)>
+ var options = new List<(String Title, String Icon, String AutomationId, IRelayCommand Command)>
+
{
("Upload Logs", "supportbutton.svg", "UploadLogsButton", viewModel.UploadLogsCommand),
("View Logs", "reportbutton.svg", "ViewLogsButton", viewModel.ViewLogsCommand),
@@ -33,7 +35,7 @@ private void LoadSupportOptions(SupportPageViewModel viewModel) {
}
}
- private Frame CreateSupportTile(String title, String iconSource, String automationId, ICommand command) {
+ private Frame CreateSupportTile(String title, String iconSource, String automationId, IRelayCommand command) {
Frame tile = new Frame();
tile.SetDynamicResource(VisualElement.StyleProperty, "SelectionTileFrame");
tile.AutomationId = automationId;