diff --git a/src/UniGetUI.Avalonia/Assets/Images/Empty_inbox.png b/src/UniGetUI.Avalonia/Assets/Images/Empty_inbox.png new file mode 100644 index 0000000000..ffbaac8dfe Binary files /dev/null and b/src/UniGetUI.Avalonia/Assets/Images/Empty_inbox.png differ diff --git a/src/UniGetUI.Avalonia/Assets/Images/Trophee.png b/src/UniGetUI.Avalonia/Assets/Images/Trophee.png new file mode 100644 index 0000000000..50b5fead8b Binary files /dev/null and b/src/UniGetUI.Avalonia/Assets/Images/Trophee.png differ diff --git a/src/UniGetUI.Avalonia/Assets/Images/jetpack_Maurice2-blue.png b/src/UniGetUI.Avalonia/Assets/Images/jetpack_Maurice2-blue.png deleted file mode 100644 index 82b85dd7f3..0000000000 Binary files a/src/UniGetUI.Avalonia/Assets/Images/jetpack_Maurice2-blue.png and /dev/null differ diff --git a/src/UniGetUI.Avalonia/Assets/Images/launcher.png b/src/UniGetUI.Avalonia/Assets/Images/launcher.png new file mode 100644 index 0000000000..e4a5da88d9 Binary files /dev/null and b/src/UniGetUI.Avalonia/Assets/Images/launcher.png differ diff --git a/src/UniGetUI.Avalonia/Assets/Images/relax.png b/src/UniGetUI.Avalonia/Assets/Images/relax.png deleted file mode 100644 index eac5cabd52..0000000000 Binary files a/src/UniGetUI.Avalonia/Assets/Images/relax.png and /dev/null differ diff --git a/src/UniGetUI.Avalonia/Converters/ScaleClampConverter.cs b/src/UniGetUI.Avalonia/Converters/ScaleClampConverter.cs new file mode 100644 index 0000000000..8efa532c19 --- /dev/null +++ b/src/UniGetUI.Avalonia/Converters/ScaleClampConverter.cs @@ -0,0 +1,36 @@ +using System; +using System.Globalization; +using Avalonia.Data.Converters; + +namespace UniGetUI.Avalonia.Converters; + +/// +/// Multiplies a bound double (typically a container dimension) by a fraction and clamps the +/// result to an upper bound, so an element can scale down with its container yet never grow +/// past a sensible maximum. The converter parameter is "fraction|max" (e.g. "0.5|240"). +/// +public sealed class ScaleClampConverter : IValueConverter +{ + public object? Convert(object? value, Type targetType, object? parameter, CultureInfo culture) + { + if (value is not double available || double.IsNaN(available) || available <= 0) + return 0.0; + + double fraction = 1.0; + double max = double.PositiveInfinity; + + if (parameter is string param) + { + string[] parts = param.Split('|'); + if (parts.Length > 0 && double.TryParse(parts[0], NumberStyles.Float, CultureInfo.InvariantCulture, out double f)) + fraction = f; + if (parts.Length > 1 && double.TryParse(parts[1], NumberStyles.Float, CultureInfo.InvariantCulture, out double m)) + max = m; + } + + return Math.Min(available * fraction, max); + } + + public object ConvertBack(object? value, Type targetType, object? parameter, CultureInfo culture) + => throw new NotSupportedException(); +} diff --git a/src/UniGetUI.Avalonia/UniGetUI.Avalonia.csproj b/src/UniGetUI.Avalonia/UniGetUI.Avalonia.csproj index b726bfe034..685eca163d 100644 --- a/src/UniGetUI.Avalonia/UniGetUI.Avalonia.csproj +++ b/src/UniGetUI.Avalonia/UniGetUI.Avalonia.csproj @@ -179,9 +179,10 @@ - - + + + diff --git a/src/UniGetUI.Avalonia/Views/SoftwarePages/AbstractPackagesPage.axaml b/src/UniGetUI.Avalonia/Views/SoftwarePages/AbstractPackagesPage.axaml index ddbcee8c5c..2b6d104507 100644 --- a/src/UniGetUI.Avalonia/Views/SoftwarePages/AbstractPackagesPage.axaml +++ b/src/UniGetUI.Avalonia/Views/SoftwarePages/AbstractPackagesPage.axaml @@ -5,6 +5,7 @@ xmlns:peers="clr-namespace:Avalonia.Automation.Peers;assembly=Avalonia.Controls" xmlns:vm="using:UniGetUI.Avalonia.ViewModels.Pages" xmlns:controls="using:UniGetUI.Avalonia.Views.Controls" + xmlns:conv="using:UniGetUI.Avalonia.Converters" xmlns:pkg="using:UniGetUI.PackageEngine.PackageClasses" xmlns:t="using:UniGetUI.Avalonia.MarkupExtensions" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" @@ -91,6 +92,10 @@ + + + + @@ -484,7 +489,7 @@ - + - diff --git a/src/UniGetUI.Avalonia/Views/SoftwarePages/PackageBundlesPage.cs b/src/UniGetUI.Avalonia/Views/SoftwarePages/PackageBundlesPage.cs index 1e7e9b7531..8e73029c96 100644 --- a/src/UniGetUI.Avalonia/Views/SoftwarePages/PackageBundlesPage.cs +++ b/src/UniGetUI.Avalonia/Views/SoftwarePages/PackageBundlesPage.cs @@ -62,7 +62,7 @@ public PackageBundlesPage() : base(new PackagesPageData DisableFilterOnQueryChange = false, DisableReload = true, NoPackages_BackgroundText = CoreTools.Translate("Add packages or open an existing package bundle"), - NoPackages_ImagePath = "avares://UniGetUI/Assets/Images/maurice_penseur.png", + NoPackages_ImagePath = "avares://UniGetUI/Assets/Images/Empty_inbox.png", NoPackages_SourcesText = CoreTools.Translate("Add packages to start"), NoPackages_SubtitleText_Base = CoreTools.Translate("The current bundle has no packages. Add some packages to get started"), MainSubtitle_StillLoading = CoreTools.Translate("Loading packages"), diff --git a/src/UniGetUI.Avalonia/Views/SoftwarePages/SoftwareUpdatesPage.cs b/src/UniGetUI.Avalonia/Views/SoftwarePages/SoftwareUpdatesPage.cs index 495d649679..594f750560 100644 --- a/src/UniGetUI.Avalonia/Views/SoftwarePages/SoftwareUpdatesPage.cs +++ b/src/UniGetUI.Avalonia/Views/SoftwarePages/SoftwareUpdatesPage.cs @@ -43,7 +43,7 @@ public SoftwareUpdatesPage() : base(new PackagesPageData DisableFilterOnQueryChange = false, DisableReload = false, NoPackages_BackgroundText = CoreTools.Translate("Hooray! No updates were found."), - NoPackages_ImagePath = "avares://UniGetUI/Assets/Images/relax.png", + NoPackages_ImagePath = "avares://UniGetUI/Assets/Images/Trophee.png", NoPackages_SourcesText = CoreTools.Translate("Everything is up to date"), NoPackages_SubtitleText_Base = CoreTools.Translate("Everything is up to date"), MainSubtitle_StillLoading = CoreTools.Translate("Loading packages"),