diff --git a/Natsurainko.FluentLauncher (Package)/BundleArtifacts/Upload/x64.txt b/Natsurainko.FluentLauncher (Package)/BundleArtifacts/Upload/x64.txt index 3c4f085d..93519fb2 100644 --- a/Natsurainko.FluentLauncher (Package)/BundleArtifacts/Upload/x64.txt +++ b/Natsurainko.FluentLauncher (Package)/BundleArtifacts/Upload/x64.txt @@ -1,9 +1,9 @@ -MainPackage=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.3.0_x64.msix -SymbolPackage=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.3.0\Natsurainko.FluentLauncher (Package)_2.1.3.0_x64.appxsym -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.3.0_language-ru.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.3.0_language-zh-hans.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.3.0_language-zh-hant.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.3.0_scale-100.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.3.0_scale-125.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.3.0_scale-150.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.3.0_scale-400.msix +MainPackage=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.4.0_x64.msix +SymbolPackage=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.4.0\Natsurainko.FluentLauncher (Package)_2.1.4.0_x64.appxsym +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.4.0_language-ru.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.4.0_language-zh-hans.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.4.0_language-zh-hant.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.4.0_scale-100.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.4.0_scale-125.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.4.0_scale-150.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Upload\Natsurainko.FluentLauncher (Package)_2.1.4.0_scale-400.msix diff --git a/Natsurainko.FluentLauncher (Package)/BundleArtifacts/x64.txt b/Natsurainko.FluentLauncher (Package)/BundleArtifacts/x64.txt index 99dc743f..644cf06f 100644 --- a/Natsurainko.FluentLauncher (Package)/BundleArtifacts/x64.txt +++ b/Natsurainko.FluentLauncher (Package)/BundleArtifacts/x64.txt @@ -1,9 +1,9 @@ -MainPackage=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.3.0_x64.msix -SymbolPackage=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\obj\x64\Release\Symbols\Natsurainko.FluentLauncher (Package)_2.1.3.0_x64.appxsym -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.3.0_language-ru.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.3.0_language-zh-hans.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.3.0_language-zh-hant.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.3.0_scale-100.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.3.0_scale-125.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.3.0_scale-150.msix -ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.3.0_scale-400.msix +MainPackage=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.4.0_x64.msix +SymbolPackage=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\obj\x64\Release\Symbols\Natsurainko.FluentLauncher (Package)_2.1.4.0_x64.appxsym +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.4.0_language-ru.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.4.0_language-zh-hans.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.4.0_language-zh-hant.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.4.0_scale-100.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.4.0_scale-125.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.4.0_scale-150.msix +ResourcePack=D:\Git\fluentlauncher-preview-edition\Natsurainko.FluentLauncher (Package)\bin\x64\Release\Natsurainko.FluentLauncher (Package)_2.1.4.0_scale-400.msix diff --git a/Natsurainko.FluentLauncher (Package)/Package.appxmanifest b/Natsurainko.FluentLauncher (Package)/Package.appxmanifest index 5ab952db..c72629b4 100644 --- a/Natsurainko.FluentLauncher (Package)/Package.appxmanifest +++ b/Natsurainko.FluentLauncher (Package)/Package.appxmanifest @@ -9,7 +9,7 @@ + Version="2.1.4.0" /> Natsurianko.FluentLauncher @@ -34,7 +34,7 @@ Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$"> +{ + public static readonly DependencyProperty SetComboBoxWidthFromItemsProperty = + DependencyProperty.RegisterAttached + ( + "SetComboBoxWidthFromItems", + typeof(bool), + typeof(SetComboBoxWidthFromItemsBehavior), + new PropertyMetadata(false, OnSetComboBoxWidthFromItemsPropertyChanged) + ); + + public bool SetComboBoxWidthFromItems + { + get => (bool)GetValue(SetComboBoxWidthFromItemsProperty); + set => SetValue(SetComboBoxWidthFromItemsProperty, value); + } + + protected override void OnAttached() + { + AssociatedObject.Loaded += OnComboBoxLoaded; + AssociatedObject.Items.VectorChanged += Items_VectorChanged; + } + + public void Items_VectorChanged(IObservableVector sender, IVectorChangedEventArgs e) + { + SetComboBoxWidth(AssociatedObject); + } + + private static void OnComboBoxLoaded(object sender, RoutedEventArgs e) + { + SetComboBoxWidth((ComboBox)sender); + } + + private static void OnSetComboBoxWidthFromItemsPropertyChanged( + DependencyObject dpo, + DependencyPropertyChangedEventArgs e) + { + SetComboBoxWidthFromItemsBehavior behavior = (SetComboBoxWidthFromItemsBehavior)dpo; + ComboBox comboBox = behavior.AssociatedObject; + + bool newValue = (bool)e.NewValue; + bool oldValue = (bool)e.OldValue; + + if (comboBox != null && newValue != oldValue) + { + if (newValue == true) + { + comboBox.Loaded += OnComboBoxLoaded; + comboBox.Items.VectorChanged += behavior.Items_VectorChanged; + + } + else + { + comboBox.Loaded -= OnComboBoxLoaded; + comboBox.Items.VectorChanged -= behavior.Items_VectorChanged; + } + } + } + + /// + /// Set the width of a ComboBox to the longest item in its drop down menu + /// + /// Target + private static void SetComboBoxWidth(ComboBox comboBox) + { + // Open ComboBox drop down and prepare ItemContainerGenerator + comboBox.IsDropDownOpen = true; + comboBox.ItemContainerGenerator.StartAt(new GeneratorPosition(0, 0), GeneratorDirection.Forward, true); + + double maxWidth = 0; + ComboBoxItem? item; + while ((item = comboBox.ItemContainerGenerator.GenerateNext(out _) as ComboBoxItem) != null) + { + item.Measure(new Windows.Foundation.Size(double.PositiveInfinity, double.PositiveInfinity)); + var size = item.DesiredSize; + if (size.Width > maxWidth) + { + maxWidth = size.Width; + } + } + + maxWidth += 20; // This constant adds more space to include the drop down button and paddings + comboBox.Width = maxWidth > 70 ? maxWidth : 70; // Ensures a MinWidth of 70 when there is no content; Less width will result in issues with appearance + comboBox.ItemContainerGenerator.Stop(); + comboBox.IsDropDownOpen = false; + } +} diff --git a/Natsurainko.FluentLauncher/Models/LaunchArrangement.cs b/Natsurainko.FluentLauncher/Models/LaunchArrangement.cs index 6363299f..492892f7 100644 --- a/Natsurainko.FluentLauncher/Models/LaunchArrangement.cs +++ b/Natsurainko.FluentLauncher/Models/LaunchArrangement.cs @@ -22,6 +22,7 @@ using System.Threading.Tasks; using Windows.ApplicationModel; using Windows.ApplicationModel.DataTransfer; +using Windows.Storage; using WinUIEx; using GameCore = Natsurainko.FluentLauncher.Components.FluentCore.GameCore; using GameCoreLocator = Natsurainko.FluentLauncher.Components.FluentCore.GameCoreLocator; @@ -182,15 +183,7 @@ public static void StartNew(GameCore core) #if MICROSOFT_WINDOWSAPPSDK_SELFCONTAINED var authlibPath = Path.Combine(Directory.GetCurrentDirectory(), "Assets", "Libs", "authlib-injector-1.2.1.jar"); #else - var authlibPath = Path.Combine(App.StoragePath, "Libraries", "authlib-injector-1.2.1.jar"); - - if (!File.Exists(authlibPath)) - { - if (!Directory.Exists(Path.Combine(App.StoragePath, "Libraries"))) - Directory.CreateDirectory(Path.Combine(App.StoragePath, "Libraries")); - - File.Copy(Path.Combine(Package.Current.InstalledPath, "Natsurainko.FluentLauncher", "Assets", "Libs", "authlib-injector-1.2.1.jar"), authlibPath); - } + var authlibPath = (await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Libs/authlib-injector-1.2.1.jar"))).Path; #endif await foreach (var args in ((YggdrasilAccount)arrangement.LaunchSetting.Account).GetAuthlibArgumentsAsync(authlibPath)) arrangement.LaunchSetting.JvmSetting.AdvancedArguments.Add(args); diff --git a/Natsurainko.FluentLauncher/Views/Dialogs/MicrosoftAccountDialog.xaml b/Natsurainko.FluentLauncher/Views/Dialogs/MicrosoftAccountDialog.xaml index 42a638f3..8808ca2b 100644 --- a/Natsurainko.FluentLauncher/Views/Dialogs/MicrosoftAccountDialog.xaml +++ b/Natsurainko.FluentLauncher/Views/Dialogs/MicrosoftAccountDialog.xaml @@ -357,6 +357,7 @@ HorizontalAlignment="Right" VerticalAlignment="Top" Command="{Binding CancelClickCommand}" + Foreground="Black" Style="{ThemeResource AlternateCloseButtonStyle}" /> diff --git a/Natsurainko.FluentLauncher/Views/Pages/Guides/Account.xaml b/Natsurainko.FluentLauncher/Views/Pages/Guides/Account.xaml index ecccc75f..3ca0ec49 100644 --- a/Natsurainko.FluentLauncher/Views/Pages/Guides/Account.xaml +++ b/Natsurainko.FluentLauncher/Views/Pages/Guides/Account.xaml @@ -58,7 +58,6 @@ diff --git a/Natsurainko.FluentLauncher/Views/Pages/Guides/Basic.xaml b/Natsurainko.FluentLauncher/Views/Pages/Guides/Basic.xaml index b34b4125..f89d2c63 100644 --- a/Natsurainko.FluentLauncher/Views/Pages/Guides/Basic.xaml +++ b/Natsurainko.FluentLauncher/Views/Pages/Guides/Basic.xaml @@ -58,7 +58,6 @@ @@ -105,7 +104,6 @@ diff --git a/Natsurainko.FluentLauncher/Views/Pages/Settings/Launch.xaml b/Natsurainko.FluentLauncher/Views/Pages/Settings/Launch.xaml index 2bfc2468..e17c2f97 100644 --- a/Natsurainko.FluentLauncher/Views/Pages/Settings/Launch.xaml +++ b/Natsurainko.FluentLauncher/Views/Pages/Settings/Launch.xaml @@ -3,8 +3,10 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:animatedvisuals="using:Microsoft.UI.Xaml.Controls.AnimatedVisuals" + xmlns:behaviors="using:Natsurainko.FluentLauncher.Behaviors" xmlns:controls="using:Natsurainko.FluentLauncher.UserControls" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:i="using:Microsoft.Xaml.Interactivity" xmlns:local="using:Natsurainko.FluentLauncher.Views.Pages.Settings" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:vm="using:Natsurainko.FluentLauncher.ViewModels.Pages.Settings" @@ -41,19 +43,23 @@ - + + + + @@ -141,7 +147,7 @@ - + + + +