From 49aa6a5a726ca5b40a080d5083dfdab6562ae286 Mon Sep 17 00:00:00 2001 From: "EU\\amosekr" Date: Fri, 21 Nov 2025 17:11:12 +0530 Subject: [PATCH 1/2] Memory leakage on modus controls #452 --- DemoApp/DemoApp/DemoApp.csproj | 8 +- DemoApp/DemoApp/Views/ModalSamplePage.xaml.cs | 2 +- DemoApp/DemoApp/Views/ToastSamplePage.xaml | 12 +- DemoApp/DemoApp/Views/ToastSamplePage.xaml.cs | 2 +- .../Controls/Button/TMButton.xaml | 4 +- .../Controls/Button/TMButtonStyles.xaml | 163 --------- .../Controls/Button/TMButtonStyles.xaml.cs | 10 - .../Controls/DropDown/DropDownContents.xaml | 9 +- .../Controls/DropDown/DropDownStyles.xaml | 21 -- .../Controls/DropDown/DropDownStyles.xaml.cs | 9 - .../Controls/DropDown/TMDropDown.xaml | 11 +- .../Controls/DropDown/TMDropDown.xaml.cs | 22 +- .../Controls/Label/ControlLabel.xaml | 6 +- .../Controls/Label/ControlLabelStyles.xaml | 12 - .../Controls/Label/ControlLabelStyles.xaml.cs | 9 - .../Controls/TMInput/BaseInput.xaml | 10 +- .../Controls/TMInput/BaseInput.xaml.cs | 20 +- .../Controls/TMInput/TMInput.xaml.cs | 25 +- .../Controls/TMInput/TMInputStyles.xaml | 88 ----- .../Controls/TMInput/TMInputStyles.xaml.cs | 10 - .../Controls/TMSwitch/TMSwitch.xaml | 8 +- .../Controls/TMSwitch/TMSwitchStyles.xaml | 30 -- .../Controls/TMSwitch/TMSwitchStyles.xaml.cs | 10 - .../Controls/Toast/TMToast.cs | 2 +- .../Controls/Toast/TMToastContents.xaml | 29 +- .../Controls/Toast/TMToastContents.xaml.cs | 12 +- .../Controls/Toast/TMToastStyles.xaml | 51 --- .../Controls/Toast/TMToastStyles.xaml.cs | 10 - Trimble.Modus.Components/Enums/ToastTheme.cs | 14 +- .../Handlers/EntryHandler.cs | 4 +- .../Helpers/ThemeManager.cs | 8 +- .../Styles/ModusStyles.xaml | 335 ++++++++++++++++++ .../Styles/ModusStyles.xaml.cs | 9 + .../Trimble.Modus.Components.csproj | 27 +- 34 files changed, 464 insertions(+), 538 deletions(-) delete mode 100644 Trimble.Modus.Components/Controls/Button/TMButtonStyles.xaml delete mode 100644 Trimble.Modus.Components/Controls/Button/TMButtonStyles.xaml.cs delete mode 100644 Trimble.Modus.Components/Controls/DropDown/DropDownStyles.xaml delete mode 100644 Trimble.Modus.Components/Controls/DropDown/DropDownStyles.xaml.cs delete mode 100644 Trimble.Modus.Components/Controls/Label/ControlLabelStyles.xaml delete mode 100644 Trimble.Modus.Components/Controls/Label/ControlLabelStyles.xaml.cs delete mode 100644 Trimble.Modus.Components/Controls/TMInput/TMInputStyles.xaml delete mode 100644 Trimble.Modus.Components/Controls/TMInput/TMInputStyles.xaml.cs delete mode 100644 Trimble.Modus.Components/Controls/TMSwitch/TMSwitchStyles.xaml delete mode 100644 Trimble.Modus.Components/Controls/TMSwitch/TMSwitchStyles.xaml.cs delete mode 100644 Trimble.Modus.Components/Controls/Toast/TMToastStyles.xaml delete mode 100644 Trimble.Modus.Components/Controls/Toast/TMToastStyles.xaml.cs create mode 100644 Trimble.Modus.Components/Styles/ModusStyles.xaml create mode 100644 Trimble.Modus.Components/Styles/ModusStyles.xaml.cs diff --git a/DemoApp/DemoApp/DemoApp.csproj b/DemoApp/DemoApp/DemoApp.csproj index 0d09e3d3..3a1a439b 100644 --- a/DemoApp/DemoApp/DemoApp.csproj +++ b/DemoApp/DemoApp/DemoApp.csproj @@ -1,8 +1,8 @@  - net8.0-android;net8.0-ios;net8.0-maccatalyst - $(TargetFrameworks);net8.0-windows10.0.19041.0 + net9.0-android;net9.0-ios;net9.0-maccatalyst + $(TargetFrameworks);net9.0-windows10.0.19041.0 Exe @@ -14,8 +14,8 @@ DemoApp - - com.trimble.ModusMAUI + + com.trimble.ModusMAUI 4ca86287-676e-49cb-9a5d-75d22c1b3771 1.0.0 diff --git a/DemoApp/DemoApp/Views/ModalSamplePage.xaml.cs b/DemoApp/DemoApp/Views/ModalSamplePage.xaml.cs index 41e88a55..a21c70bd 100644 --- a/DemoApp/DemoApp/Views/ModalSamplePage.xaml.cs +++ b/DemoApp/DemoApp/Views/ModalSamplePage.xaml.cs @@ -66,7 +66,7 @@ private void ShowModalClicked(object sender, EventArgs e) catch (Exception ex) { TMToast tMToast = new(ex.Message); - tMToast.theme = ToastTheme.Danger; + tMToast.theme = ToastTheme.DangerToast; tMToast.Show(); } } diff --git a/DemoApp/DemoApp/Views/ToastSamplePage.xaml b/DemoApp/DemoApp/Views/ToastSamplePage.xaml index be26a039..6098674a 100644 --- a/DemoApp/DemoApp/Views/ToastSamplePage.xaml +++ b/DemoApp/DemoApp/Views/ToastSamplePage.xaml @@ -34,12 +34,12 @@ - Dark - Primary - Secondary - Danger - Warning - Success + DarkToast + PrimaryToast + SecondaryToast + DangerToast + WarningToast + SuccessToast diff --git a/DemoApp/DemoApp/Views/ToastSamplePage.xaml.cs b/DemoApp/DemoApp/Views/ToastSamplePage.xaml.cs index 9298ceb1..3c7e8289 100644 --- a/DemoApp/DemoApp/Views/ToastSamplePage.xaml.cs +++ b/DemoApp/DemoApp/Views/ToastSamplePage.xaml.cs @@ -9,7 +9,7 @@ public partial class ToastSamplePage : ContentPage public ToastSamplePage() { InitializeComponent(); - toastPicker.SelectedItem = ToastTheme.Default; + toastPicker.SelectedItem = ToastTheme.DefaultToast; } private void OnToastActionTapped(object sender, EventArgs e) diff --git a/Trimble.Modus.Components/Controls/Button/TMButton.xaml b/Trimble.Modus.Components/Controls/Button/TMButton.xaml index df4036cc..30bb7954 100644 --- a/Trimble.Modus.Components/Controls/Button/TMButton.xaml +++ b/Trimble.Modus.Components/Controls/Button/TMButton.xaml @@ -9,9 +9,9 @@ HorizontalOptions="Start"> - + diff --git a/Trimble.Modus.Components/Controls/Button/TMButtonStyles.xaml b/Trimble.Modus.Components/Controls/Button/TMButtonStyles.xaml deleted file mode 100644 index 8d885be7..00000000 --- a/Trimble.Modus.Components/Controls/Button/TMButtonStyles.xaml +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/Trimble.Modus.Components/Controls/Button/TMButtonStyles.xaml.cs b/Trimble.Modus.Components/Controls/Button/TMButtonStyles.xaml.cs deleted file mode 100644 index ab20b4bc..00000000 --- a/Trimble.Modus.Components/Controls/Button/TMButtonStyles.xaml.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Trimble.Modus.Components; - -public partial class TMButtonStyles : ResourceDictionary -{ - public TMButtonStyles() - { - InitializeComponent(); - } -} - diff --git a/Trimble.Modus.Components/Controls/DropDown/DropDownContents.xaml b/Trimble.Modus.Components/Controls/DropDown/DropDownContents.xaml index a7d5edcd..83c4d7f4 100644 --- a/Trimble.Modus.Components/Controls/DropDown/DropDownContents.xaml +++ b/Trimble.Modus.Components/Controls/DropDown/DropDownContents.xaml @@ -5,14 +5,7 @@ xmlns:local="clr-namespace:Trimble.Modus.Components" x:Class="Trimble.Modus.Components.DropDownContents" BackgroundColor="{DynamicResource Transparent}" - Title="DropDownPopupPage"> - - - - - - - + Title="DropDownPopupPage"> - - - - - diff --git a/Trimble.Modus.Components/Controls/DropDown/DropDownStyles.xaml.cs b/Trimble.Modus.Components/Controls/DropDown/DropDownStyles.xaml.cs deleted file mode 100644 index 2b04f577..00000000 --- a/Trimble.Modus.Components/Controls/DropDown/DropDownStyles.xaml.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Trimble.Modus.Components; - -public partial class DropDownStyles : ResourceDictionary -{ - public DropDownStyles() - { - InitializeComponent(); - } -} diff --git a/Trimble.Modus.Components/Controls/DropDown/TMDropDown.xaml b/Trimble.Modus.Components/Controls/DropDown/TMDropDown.xaml index a5a7f330..83af92e3 100644 --- a/Trimble.Modus.Components/Controls/DropDown/TMDropDown.xaml +++ b/Trimble.Modus.Components/Controls/DropDown/TMDropDown.xaml @@ -9,16 +9,13 @@ xmlns:converters="clr-namespace:Trimble.Modus.Components.Converters"> - - - - - + + + IsVisible="{Binding TitleText, Converter={StaticResource IsStringNotNullOrEmptyConverter}}"/> - - - - + + - - - - diff --git a/Trimble.Modus.Components/Controls/Label/ControlLabelStyles.xaml.cs b/Trimble.Modus.Components/Controls/Label/ControlLabelStyles.xaml.cs deleted file mode 100644 index edd19da5..00000000 --- a/Trimble.Modus.Components/Controls/Label/ControlLabelStyles.xaml.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Trimble.Modus.Components; - -public partial class ControlLabelStyles : ResourceDictionary -{ - public ControlLabelStyles() - { - InitializeComponent(); - } -} diff --git a/Trimble.Modus.Components/Controls/TMInput/BaseInput.xaml b/Trimble.Modus.Components/Controls/TMInput/BaseInput.xaml index b0f5be2c..2517077d 100644 --- a/Trimble.Modus.Components/Controls/TMInput/BaseInput.xaml +++ b/Trimble.Modus.Components/Controls/TMInput/BaseInput.xaml @@ -6,13 +6,9 @@ xmlns:Modus="clr-namespace:Trimble.Modus.Components" xmlns:converters="clr-namespace:Trimble.Modus.Components.Converters"> - - - - - - - + + + - - - - - - - - - - - - - - diff --git a/Trimble.Modus.Components/Controls/TMInput/TMInputStyles.xaml.cs b/Trimble.Modus.Components/Controls/TMInput/TMInputStyles.xaml.cs deleted file mode 100644 index 736ae248..00000000 --- a/Trimble.Modus.Components/Controls/TMInput/TMInputStyles.xaml.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Trimble.Modus.Components; - -public partial class TMInputStyles : ResourceDictionary -{ - public TMInputStyles() - { - InitializeComponent(); - } -} - diff --git a/Trimble.Modus.Components/Controls/TMSwitch/TMSwitch.xaml b/Trimble.Modus.Components/Controls/TMSwitch/TMSwitch.xaml index f90032f3..26526609 100644 --- a/Trimble.Modus.Components/Controls/TMSwitch/TMSwitch.xaml +++ b/Trimble.Modus.Components/Controls/TMSwitch/TMSwitch.xaml @@ -5,13 +5,7 @@ xmlns:local="clr-namespace:Trimble.Modus.Components" x:Name="tmSwitch" x:Class="Trimble.Modus.Components.TMSwitch"> - - - - - - - + - - - - - - diff --git a/Trimble.Modus.Components/Controls/TMSwitch/TMSwitchStyles.xaml.cs b/Trimble.Modus.Components/Controls/TMSwitch/TMSwitchStyles.xaml.cs deleted file mode 100644 index 3d663cfa..00000000 --- a/Trimble.Modus.Components/Controls/TMSwitch/TMSwitchStyles.xaml.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Trimble.Modus.Components; - -public partial class TMSwitchStyles : ResourceDictionary -{ - public TMSwitchStyles() - { - InitializeComponent(); - } -} - diff --git a/Trimble.Modus.Components/Controls/Toast/TMToast.cs b/Trimble.Modus.Components/Controls/Toast/TMToast.cs index cbe541e4..ad1184ba 100644 --- a/Trimble.Modus.Components/Controls/Toast/TMToast.cs +++ b/Trimble.Modus.Components/Controls/Toast/TMToast.cs @@ -11,7 +11,7 @@ public class TMToast #endregion #region Public Properties private Action? action = null; - public ToastTheme theme = ToastTheme.Default; + public ToastTheme theme = ToastTheme.DefaultToast; public bool isDismissable = true; #endregion public TMToast(string message, string actionButtonText = null, Action? action = null) diff --git a/Trimble.Modus.Components/Controls/Toast/TMToastContents.xaml b/Trimble.Modus.Components/Controls/Toast/TMToastContents.xaml index 8b057cb9..531d1811 100644 --- a/Trimble.Modus.Components/Controls/Toast/TMToastContents.xaml +++ b/Trimble.Modus.Components/Controls/Toast/TMToastContents.xaml @@ -9,38 +9,31 @@ CloseWhenBackgroundIsClicked="False" BackgroundInputTransparent="True"> - - - - - - - + - - + HorizontalOptions="Fill" ColumnDefinitions="auto, *, auto, auto"> -