diff --git a/SDLauncher UWP/App.xaml b/SDLauncher UWP/App.xaml index f02eee77..32a5b6de 100644 --- a/SDLauncher UWP/App.xaml +++ b/SDLauncher UWP/App.xaml @@ -25,6 +25,7 @@ + diff --git a/SDLauncher UWP/Dialogs/Login.xaml b/SDLauncher UWP/Dialogs/Login.xaml index f9dc090e..a5deca22 100644 --- a/SDLauncher UWP/Dialogs/Login.xaml +++ b/SDLauncher UWP/Dialogs/Login.xaml @@ -49,7 +49,7 @@ @@ -83,7 +83,6 @@ - @@ -243,16 +242,16 @@ - + - - - - + + + + diff --git a/SDLauncher UWP/Dialogs/Login.xaml.cs b/SDLauncher UWP/Dialogs/Login.xaml.cs index 5741476d..fa59d15b 100644 --- a/SDLauncher UWP/Dialogs/Login.xaml.cs +++ b/SDLauncher UWP/Dialogs/Login.xaml.cs @@ -61,7 +61,6 @@ private async void btnMSLogin_Click(object sender, RoutedEventArgs e) this.Hide(); _ = await MessageBox.Show("Error", "User canceld the login!", MessageBoxButtons.Ok); vars.session = tempsession; - vars.UserName = tempsession.Username; _ = this.ShowAsync(); } else if (result == MSLogin.Exceptions.NoAccount) @@ -69,7 +68,6 @@ private async void btnMSLogin_Click(object sender, RoutedEventArgs e) this.Hide(); _ = await MessageBox.Show("Error", "You don't have an Minecraft profile on that Microsoft account!", MessageBoxButtons.Ok); vars.session = tempsession; - vars.UserName = tempsession.Username; _ = this.ShowAsync(); } else if (result == MSLogin.Exceptions.ConnectFailed) @@ -79,14 +77,12 @@ private async void btnMSLogin_Click(object sender, RoutedEventArgs e) if (tempsession != null) { vars.session = tempsession; - vars.UserName = tempsession.Username; } _ = this.ShowAsync(); UpdateAccounts(); } else if (result == MSLogin.Exceptions.Success) { - vars.UserName = vars.session.Username; this.Hide(); } UI(true); @@ -100,7 +96,6 @@ private void btnMSLogout_Click(object sender, RoutedEventArgs e) private void UpdateSession(MSession session) { vars.session = session; - vars.UserName = session.Username.ToString(); this.Hide(); } @@ -193,7 +188,7 @@ private void LoginFromCache(object sender, RoutedEventArgs e) isSelectionMode = false; } } - if(vars.Accounts.Count == 1) + if (vars.Accounts.Count == 1) { isSelectionMode = false; } @@ -254,7 +249,6 @@ private void LogOutFromCache(object sender, RoutedEventArgs e) if (item.Count == vars.CurrentAccountCount) { vars.session = null; - vars.UserName = ""; vars.CurrentAccountCount = null; } @@ -275,7 +269,6 @@ private void LogOutFromCache(object sender, RoutedEventArgs e) if (item.Count == vars.CurrentAccountCount) { vars.session = null; - vars.UserName = ""; vars.CurrentAccountCount = null; } } @@ -284,7 +277,6 @@ private void LogOutFromCache(object sender, RoutedEventArgs e) if (item.Count == vars.CurrentAccountCount) { vars.session = null; - vars.UserName = ""; vars.CurrentAccountCount = null; } } @@ -318,7 +310,6 @@ void AddAccount(MSession session) vars.AccountsCount++; } vars.session = session; - vars.UserName = session.Username; vars.CurrentAccountCount = vars.AccountsCount; this.Hide(); } @@ -356,7 +347,7 @@ private void btnBack_Click(object sender, RoutedEventArgs e) gridChoose.Visibility = Visibility.Collapsed; gridSettingsOnline.Visibility = Visibility.Collapsed; } - + public string selectedSkinUUID; private void btnSettings_Click(object sender, RoutedEventArgs e) { if (sender is MenuFlyoutItem itm) @@ -368,8 +359,9 @@ private void btnSettings_Click(object sender, RoutedEventArgs e) if (item.Type == "Offline") { itmRename.IsEnabled = true; - imgBody.Source = new BitmapImage(new Uri("https://minotar.net/body/noob")); - prpSettings.ProfilePicture = new BitmapImage(new Uri("https://minotar.net/avatar/noob")); + imgBody.Source = new BitmapImage(new Uri("https://minotar.net/body/MHF_Steve")); + prpSettings.ProfilePicture = new BitmapImage(new Uri("https://minotar.net/helm/MHF_Steve")); + selectedSkinUUID = "MHF_Steve"; txtTypeSettings.Text = "Offline Account"; fnticoAcTypeSettings.Glyph = item.TypeIconGlyph; prpSettings.DisplayName = item.UserName; @@ -384,8 +376,10 @@ private void btnSettings_Click(object sender, RoutedEventArgs e) } else { - bodyImagesorce = "https://minotar.net/" + item.UUID; + imgBody.Source = new BitmapImage(new Uri("https://minotar.net/body/" + item.UUID)); + prpSettings.ProfilePicture = new BitmapImage(new Uri("https://minotar.net/helm/" + item.UUID)); itmRename.IsEnabled = false; + selectedSkinUUID = item.UUID; txtTypeSettings.Text = "Microsoft Account"; fnticoAcTypeSettings.Glyph = item.TypeIconGlyph; prpSettings.DisplayName = item.UserName; @@ -513,7 +507,6 @@ private void Rename(TextBox txtbx) if (vars.CurrentAccountCount == item.Count) { vars.session = MSession.GetOfflineSession(txtbxRename.Text); - vars.UserName = txtbxRename.Text; } item.UserName = txtbxRename.Text; txtSettingsPrpName.Text = txtbxRename.Text; @@ -747,7 +740,53 @@ private void btnDel_Click(object sender, RoutedEventArgs e) } } } + private async void mitDownloadSkin_Click(object sender, RoutedEventArgs e) + { + btnDownloadSkin.IsEnabled = false; + int taskID = LittleHelp.AddTask("Download image"); + try + { + string link = "https://minotar.net/"; + if (sender is MenuFlyoutItem mit) + { + switch (mit.Tag.ToString()) + { + case "Head": + link += "helm/" + selectedSkinUUID + "/1000"; + break; + case "Head3D": + link += "cube/" + selectedSkinUUID + "/1000"; + break; + case "Body": + link += "body/" + selectedSkinUUID + "/1000"; + break; + case "Skin": + link += "skin/" + selectedSkinUUID; + break; + } + var f = await Windows.Storage.DownloadsFolder.CreateFileAsync(mit.Tag.ToString() + selectedSkinUUID); + var path = f.Path; + f = null; + using (var client = new HttpClientDownloadWithProgress(link, path)) + { + client.ProgressChanged += (totalFileSize, totalBytesDownloaded, progressPercentage) => + { + if (progressPercentage == 100) + { + LittleHelp.CompleteTask(taskID,true); + client.Dispose(); + } + }; - + await client.StartDownload(); + } + } + } + catch + { + LittleHelp.CompleteTask(taskID, false); + } + btnDownloadSkin.IsEnabled = true; + } } } diff --git a/SDLauncher UWP/Helpers/Labrinth.cs b/SDLauncher UWP/Helpers/Labrinth.cs index f4782aff..0077f0fd 100644 --- a/SDLauncher UWP/Helpers/Labrinth.cs +++ b/SDLauncher UWP/Helpers/Labrinth.cs @@ -20,9 +20,9 @@ public static int AddTask(string name) { return vars.Launcher.TasksHelper.AddTask(name); } - public static void CompleteTask(int ID,bool? IsSuccess = null) + public static void CompleteTask(int ID,bool IsSuccess = true) { - vars.Launcher.TasksHelper.CompleteTask(ID); + vars.Launcher.TasksHelper.CompleteTask(ID,IsSuccess); } } public class Labrinth @@ -67,7 +67,7 @@ public async void DownloadMod(LabrinthResults.DownloadManager.File file,CmlLib.C else { this.MainUIChangeRequested(this, new SDLauncher.UIChangeRequestedEventArgs(true)); - LittleHelp.CompleteTask(DownloadTaskID); + LittleHelp.CompleteTask(DownloadTaskID,true); } } } @@ -83,19 +83,29 @@ private async void ModrinthDownload(string link,string folderdir, string fileNam CreationCollisionOption.ReplaceExisting); string path = file.Path; file = null; - using (var client = new HttpClientDownloadWithProgress(link, path)) + try { - client.ProgressChanged += (totalFileSize, totalBytesDownloaded, progressPercentage) => { - StatusChanged("Download " + fileName, new EventArgs()); - this.ProgressChanged(this, new SDLauncher.ProgressChangedEventArgs(currentProg: Convert.ToInt32(progressPercentage))); - if(progressPercentage == 100) + using (var client = new HttpClientDownloadWithProgress(link, path)) + { + client.ProgressChanged += (totalFileSize, totalBytesDownloaded, progressPercentage) => { - this.DownloadFileCompleted(); - client.Dispose(); - } - }; + StatusChanged("Download " + fileName, new EventArgs()); + this.ProgressChanged(this, new SDLauncher.ProgressChangedEventArgs(currentProg: Convert.ToInt32(progressPercentage))); + if (progressPercentage == 100) + { + this.DownloadFileCompleted(); + client.Dispose(); + LittleHelp.CompleteTask(DownloadTaskID); + } + }; - await client.StartDownload(); + await client.StartDownload(); + } + } + catch + { + DownloadFileCompleted(); + LittleHelp.CompleteTask(DownloadTaskID,false); } } @@ -108,7 +118,6 @@ private void DownloadFileCompleted() { StatusChanged("Ready", new EventArgs()); ProgressChanged(this, new SDLauncher.ProgressChangedEventArgs(currentProg:0)); - LittleHelp.CompleteTask(DownloadTaskID); MainUIChangeRequested(this, new SDLauncher.UIChangeRequestedEventArgs(true)); } public async Task Search(string name, int? limit = null, LabrinthResults.SearchSortOptions sortOptions = LabrinthResults.SearchSortOptions.Relevance, LabrinthResults.SearchCategories[] categories = null) @@ -159,7 +168,7 @@ private void DownloadFileCompleted() { StatusChanged("Ready", new EventArgs()); UI(true); - LittleHelp.CompleteTask(taskID); + LittleHelp.CompleteTask(taskID, false); return null; } } @@ -191,7 +200,7 @@ private void DownloadFileCompleted() { UI(true); } - LittleHelp.CompleteTask(taskID); + LittleHelp.CompleteTask(taskID,false); return null; } } @@ -215,7 +224,7 @@ private void DownloadFileCompleted() { StatusChanged("Ready", new EventArgs()); UI(true); - LittleHelp.CompleteTask(taskID); + LittleHelp.CompleteTask(taskID, false); return null; } } diff --git a/SDLauncher UWP/Helpers/MenuItemsCreator.cs b/SDLauncher UWP/Helpers/MenuItemsCreator.cs new file mode 100644 index 00000000..327f4e41 --- /dev/null +++ b/SDLauncher UWP/Helpers/MenuItemsCreator.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Controls; + +namespace SDLauncher_UWP.Helpers +{ + public class MenuItemsCreator + { + public enum MCType + { + Vanilla, + Fabric + } + public event EventHandler ItemInvoked = delegate { }; + public MenuFlyout CreateVersions() + { + var f = new MenuFlyout(); + f.Items.Add(GetFromStrings("1.19")); + f.Items.Add(GetFromStrings("1.18")); + f.Items.Add(GetFromStrings("1.17")); + f.Items.Add(GetFromStrings("1.16")); + f.Items.Add(GetFromStrings("1.15")); + f.Items.Add(GetFromStrings("1.12")); + f.Items.Add(GetFromStrings("1.11")); + f.Items.Add(GetFromStrings("1.10")); + f.Items.Add(GetFromStrings("1.9")); + f.Items.Add(GetFromStrings("1.8")); + f.Items.Add(GetFromStrings("1.7")); + f.Items.Add(GetFromStrings("1.6")); + f.Items.Add(GetFromStrings("1.5")); + f.Items.Add(GetFromStrings("1.4")); + f.Items.Add(GetFromStrings("1.3")); + f.Items.Add(GetFromStrings("1.2")); + f.Items.Add(GetFromStrings("1.1")); + return f; + } + public MenuFlyoutItemBase GetFromStrings(string ver) + { + var subVers = vars.Launcher.GetSubVersions(ver); + if (subVers.Count() > 1) + { + MenuFlyoutSubItem f = new MenuFlyoutSubItem(); + f.Text = ver; + foreach (var item in subVers) + { + f.Items.Add(ReturnMCWithFabric(item)); + } + return f; + } + else + { + return CreateItem(ver, "vaniila-" + ver); + } + } + public MenuFlyoutItemBase ReturnMCWithFabric(string ver) + { + string fabricVer = vars.Launcher.SearchFabric(ver); + if (string.IsNullOrEmpty(fabricVer)) + { + return CreateItem(ver, "vaniila-" + ver); + } + else + { + var i = new MenuFlyoutSubItem(); + i.Text = ver; + i.Items.Add(CreateItem(ver, "vaniila-" + ver)); + i.Items.Add(CreateItem("Fabric " + ver, "fabricMC-" + fabricVer)); + return i; + } + } + public MenuFlyoutItem CreateItem(string text, string tag) + { + var i = new MenuFlyoutItem { Text = text, Tag = tag }; + i.Click += MCVerClick; + return i; + } + + private void MCVerClick(object sender, RoutedEventArgs e) + { + if(sender is MenuFlyoutItem mit) + { + if (mit.Tag.ToString().StartsWith("fabricMC-")) + { + this.ItemInvoked(this, new ItemInvokedArgs(mit.Tag.ToString().Replace("fabricMC-", "").ToString(), mit.Text, MCType.Fabric)); + } + else if(mit.Tag.ToString().StartsWith("vanilla-")) + { + this.ItemInvoked(this, new ItemInvokedArgs(mit.Tag.ToString().Replace("vanilla-", "").ToString(), mit.Text, MCType.Vanilla)); + } + } + } + public class ItemInvokedArgs : EventArgs + { + public string Ver { get; private set; } + public string DisplayVer { get; private set; } + public MCType MCType { get; private set; } + public ItemInvokedArgs(string ver, string displayVer, MCType mCType) + { + Ver = ver; + DisplayVer = displayVer; + MCType = mCType; + } + } + } +} diff --git a/SDLauncher UWP/Helpers/SDLauncher.cs b/SDLauncher UWP/Helpers/SDLauncher.cs index 995b374f..07260a61 100644 --- a/SDLauncher UWP/Helpers/SDLauncher.cs +++ b/SDLauncher UWP/Helpers/SDLauncher.cs @@ -19,7 +19,7 @@ namespace SDLauncher_UWP.Helpers public class TasksHelper { public event EventHandler TaskAddRequested = delegate { }; - public event EventHandler TaskCompleteRequested = delegate { }; + public event EventHandler TaskCompleteRequested = delegate { }; public int AllTaksCount { get; private set; } = 0; public int AddTask(string name) { @@ -27,9 +27,19 @@ public int AddTask(string name) TaskAddRequested(this, new UserControls.Task(name, AllTaksCount)); return AllTaksCount; } - public void CompleteTask(int ID) + public void CompleteTask(int ID,bool success) { - TaskCompleteRequested(this, ID); + TaskCompleteRequested(this, new TaskCompletedEventArgs(ID,success)); + } + } + public class TaskCompletedEventArgs + { + public int ID; + public bool Success; + public TaskCompletedEventArgs(int iD, bool success) + { + ID = iD; + Success = success; } } public class SDLauncher @@ -66,10 +76,10 @@ public List FabricMCVerNames { get { - if (MCVersions != null) + if (FabricMCVersions != null) { List temp = new List(); - foreach (var item in MCVersions) + foreach (var item in FabricMCVersions) { temp.Add(item.Name); } @@ -123,7 +133,38 @@ private void Labrinth_MainUIChangeRequested(object sender, UIChangeRequestedEven { UI(e.UI); } - + public string SearchFabric(string ver) + { + try + { + var item = from t in FabricMCVerNames where t.EndsWith(ver) select t; + if (item != null) + { + return item.FirstOrDefault(); + } + else + { + return ""; + } + } + catch + { + return ""; + } + } + public string[] GetSubVersions(string ver) + { + var items = from t in MCVersions where t.Name.StartsWith(ver) select t.Name; + if (items != null) + { + var final = from t in items where t.Replace(ver,"").ToString().StartsWith(".") || t == ver select t; + return final.ToArray(); + } + else + { + return new List().ToArray(); + } + } private void SDLauncher_FileOrProgressChanged(object sender, ProgressChangedEventArgs e) { string stats = ""; @@ -213,20 +254,20 @@ public async Task LoadStore() { Status("Ready"); var s = await LoadStore(); - TasksHelper.CompleteTask(taskID); + TasksHelper.CompleteTask(taskID,true); return s; } else { Status("Ready"); - TasksHelper.CompleteTask(taskID); + TasksHelper.CompleteTask(taskID,false); return false; } } else { Status("Ready"); - TasksHelper.CompleteTask(taskID); + TasksHelper.CompleteTask(taskID,true); return true; } } @@ -259,10 +300,13 @@ public async Task LoadChangeLogs() html += await vars.Launcher.GetChangelog("1.18"); html += await vars.Launcher.GetChangelog("1.17.1"); html += await vars.Launcher.GetChangelog("1.16.5"); + TasksHelper.CompleteTask(taskID,true); + } + catch + { + TasksHelper.CompleteTask(taskID,false); } - catch { } ChangeLogsHTMLBody = html; - TasksHelper.CompleteTask(taskID); } public async Task GetChangelog(string version) { @@ -348,6 +392,7 @@ public async Task RefreshVersions() } Status(Localized.Ready); VersionsRefreshed(this, new EventArgs()); + TasksHelper.CompleteTask(taskID,true); } catch { @@ -366,8 +411,8 @@ public async Task RefreshVersions() { CoreApplication.Exit(); } + TasksHelper.CompleteTask(taskID,false); } - TasksHelper.CompleteTask(taskID); UI(true); } @@ -412,7 +457,7 @@ public async Task CheckFabric(string mcver, string modver, stri launchVer = modver; displayVer = displayver; Status("Ready"); - TasksHelper.CompleteTask(taskID); + TasksHelper.CompleteTask(taskID, true); return new FabricResponsoe(launchVer, displayVer, FabricResponsoe.Responses.ExistsOrCreated); } else @@ -421,12 +466,12 @@ public async Task CheckFabric(string mcver, string modver, stri { displayVer = mcver; launchVer = mcver; - TasksHelper.CompleteTask(taskID); + TasksHelper.CompleteTask(taskID, true); return new FabricResponsoe(launchVer, displayVer, FabricResponsoe.Responses.NeedMojangVer); } else { - TasksHelper.CompleteTask(taskID); + TasksHelper.CompleteTask(taskID,false); return new FabricResponsoe("", "Version", FabricResponsoe.Responses.NeedMojangVer); } } diff --git a/SDLauncher UWP/Helpers/SettingsDataManager.cs b/SDLauncher UWP/Helpers/SettingsDataManager.cs index ec6c1d70..6cab18d1 100644 --- a/SDLauncher UWP/Helpers/SettingsDataManager.cs +++ b/SDLauncher UWP/Helpers/SettingsDataManager.cs @@ -21,10 +21,18 @@ namespace SDLauncher_UWP.Helpers public class SettingsDataManager { - public async Task CreateSettingsFile(bool? Exit) + public async Task CreateSettingsFile(bool Exit = false,StorageFile file = null) { - var storagefile = await ApplicationData.Current.RoamingFolder.CreateFileAsync("settings.xml", CreationCollisionOption.ReplaceExisting); - using (IRandomAccessStream writestream = await storagefile.OpenAsync(FileAccessMode.ReadWrite)) + StorageFile storageFile; + if (file == null) + { + storageFile = await ApplicationData.Current.RoamingFolder.CreateFileAsync("settings.xml", CreationCollisionOption.ReplaceExisting); + } + else + { + storageFile = file; + } + using (IRandomAccessStream writestream = await storageFile.OpenAsync(FileAccessMode.ReadWrite)) { Stream s = writestream.AsStreamForWrite(); XmlWriterSettings settings = new XmlWriterSettings(); @@ -119,8 +127,8 @@ public async Task CreateSettingsFile(bool? Exit) writer.WriteStartElement("AutoLogin"); writer.WriteAttributeString("value", vars.autoLog.ToString()); writer.WriteEndElement(); - writer.WriteStartElement("UseOldVersionsSeletor"); - writer.WriteAttributeString("value", vars.UseOldVerSeletor.ToString()); + writer.WriteStartElement("VersionsSeletor"); + writer.WriteAttributeString("value", vars.VerSelectors.ToString()); writer.WriteEndElement(); writer.WriteStartElement("Discord"); writer.WriteAttributeString("IsPinned", vars.IsFixedDiscord.ToString()); @@ -134,7 +142,7 @@ public async Task CreateSettingsFile(bool? Exit) if (vars.showXMLOnClose) { - await Windows.System.Launcher.LaunchFileAsync(storagefile); + await Windows.System.Launcher.LaunchFileAsync(storageFile); vars.showXMLOnClose = false; } if (Exit == true) @@ -157,7 +165,7 @@ public async Task LoadSettingsFile() string hashcheck; string assetscheck; string autolog; - string oldVer; + string verselect; string fixDiscord; string gamelogs; string jvmWidth; @@ -197,8 +205,8 @@ public async Task LoadSettingsFile() tips = reader.GetAttribute("value"); reader.ReadToFollowing("AutoLogin"); autolog = reader.GetAttribute("value"); - reader.ReadToFollowing("UseOldVersionsSeletor"); - oldVer = reader.GetAttribute("value"); + reader.ReadToFollowing("VersionsSeletor"); + verselect = reader.GetAttribute("value"); reader.ReadToFollowing("Discord"); fixDiscord = reader.GetAttribute("IsPinned"); @@ -323,9 +331,9 @@ public async Task LoadSettingsFile() { fe.RequestedTheme = (ElementTheme)vars.Theme; } + vars.VerSelectors = (Views.VerSelectors)Enum.Parse(typeof(Views.VerSelectors),verselect); vars.ShowTips = tips == "True"; vars.HashCheck = hashcheck == "True"; - vars.UseOldVerSeletor = oldVer == "True"; vars.AutoClose = autoClose == "True"; vars.CustomBackground = isCustombg == "True"; vars.GameLogs = gamelogs == "True"; @@ -345,12 +353,11 @@ public async Task LoadSettingsFile() { if (item.UserName == "null") { - vars.UserName = ""; + vars.session = null; } else { - vars.UserName = item.UserName; - vars.session = MSession.GetOfflineSession(vars.UserName); + vars.session = MSession.GetOfflineSession(item.UserName); } } else diff --git a/SDLauncher UWP/SDLauncher UWP.csproj b/SDLauncher UWP/SDLauncher UWP.csproj index a0d67b5f..00b01072 100644 --- a/SDLauncher UWP/SDLauncher UWP.csproj +++ b/SDLauncher UWP/SDLauncher UWP.csproj @@ -146,6 +146,7 @@ + diff --git a/SDLauncher UWP/UserControls/StoreItemsCollection.xaml b/SDLauncher UWP/UserControls/StoreItemsCollection.xaml index c7a1d159..49e50a70 100644 --- a/SDLauncher UWP/UserControls/StoreItemsCollection.xaml +++ b/SDLauncher UWP/UserControls/StoreItemsCollection.xaml @@ -27,7 +27,7 @@ - + diff --git a/SDLauncher UWP/UserControls/TaskListView.xaml b/SDLauncher UWP/UserControls/TaskListView.xaml index d3a058e4..61560606 100644 --- a/SDLauncher UWP/UserControls/TaskListView.xaml +++ b/SDLauncher UWP/UserControls/TaskListView.xaml @@ -43,7 +43,7 @@ - + @@ -74,10 +74,10 @@ - + - + diff --git a/SDLauncher UWP/UserControls/TaskListView.xaml.cs b/SDLauncher UWP/UserControls/TaskListView.xaml.cs index 312b7eef..51d8973e 100644 --- a/SDLauncher UWP/UserControls/TaskListView.xaml.cs +++ b/SDLauncher UWP/UserControls/TaskListView.xaml.cs @@ -15,6 +15,7 @@ using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; using System.Collections.ObjectModel; +using Windows.UI; // The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236 @@ -49,7 +50,7 @@ public int AddTask(string name,int? ID = null) return (int)ID; } } - public bool CompleteTask(int id) + public bool CompleteTask(int id,bool success) { try { @@ -61,6 +62,14 @@ public bool CompleteTask(int id) { CurrentTasks.Remove(itm); itm.DateAdded = DateTime.Now; + if (!success) + { + itm.BorderBrush = new SolidColorBrush(Colors.Red); + } + else + { + itm.BorderBrush = new SolidColorBrush(Colors.Green); + } TasksCompleted.Add(itm); RefreshTasks(); return true; @@ -130,11 +139,16 @@ public class Task : INotifyPropertyChanged public Visibility RingVisibility { get { return ringVisibility; }set { ringVisibility = value;OnPropertyChanged(); } } public int ID { get; private set; } public DateTime DateAdded { get; set; } - public Task(string name, int iD) + public Brush BorderBrush { get { return BBrush; } set { BBrush = value; OnPropertyChanged(); } } + + private Brush BBrush; + + public Task(string name, int iD, Brush borderBrush = null) { Name = name; DateAdded = DateTime.Now; ID = iD; + BorderBrush = borderBrush; } private void OnPropertyChanged([CallerMemberName] string propertyName = null) { diff --git a/SDLauncher UWP/Views/BaseLauncherPage.xaml b/SDLauncher UWP/Views/BaseLauncherPage.xaml index 3caecd3b..9d7e98a8 100644 --- a/SDLauncher UWP/Views/BaseLauncherPage.xaml +++ b/SDLauncher UWP/Views/BaseLauncherPage.xaml @@ -9,9 +9,6 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:animatedvisuals="using:Microsoft.UI.Xaml.Controls.AnimatedVisuals" mc:Ignorable="d"> - - - @@ -31,7 +28,6 @@ CloseButtonStyle="{ThemeResource ButtonRevealStyle}" CloseButtonClick="tip_CloseButtonClick" Background="{ThemeResource AcrylicInAppFillColorDefaultBrush}" - Target="{x:Bind cmbxVer}" Title="Choose A version" Subtitle="There is avaible version 1.15 lower for now"> @@ -54,7 +50,7 @@ - + @@ -94,8 +90,9 @@ - - + + + diff --git a/SDLauncher UWP/Views/BaseLauncherPage.xaml.cs b/SDLauncher UWP/Views/BaseLauncherPage.xaml.cs index 267ce825..eb289917 100644 --- a/SDLauncher UWP/Views/BaseLauncherPage.xaml.cs +++ b/SDLauncher UWP/Views/BaseLauncherPage.xaml.cs @@ -54,15 +54,12 @@ public sealed partial class BaseLauncherPage : Page { public static string launchVer { get; set; } public ChangeLogsPage LogsPage { get; set; } + public MenuItemsCreator MCVerManager { get; set; } public StorePage StorePage { get; set; } public event EventHandler UIchanged = delegate { }; public BaseLauncherPage() { this.InitializeComponent(); - var timer = new DispatcherTimer(); - timer.Interval = new TimeSpan(0, 0, 0, 0, 1); - timer.Tick += Timer_Tick; - timer.Start(); vars.ThemeUpdated += Vars_ThemeUpdated; var s = new ServerTemplate("mc.hypixel.net", 25565); } @@ -90,7 +87,10 @@ public async void InitializeLauncher() { UI(false); int taskID = LittleHelp.AddTask("Initialize Launcher Core"); + Vars_SessionChanged(null, null); + Vars_VerSelctorChanged(null, null); navitmStore.IsEnabled = false; + vars.SessionChanged += Vars_SessionChanged; vars.Launcher.UIChangeRequested += Launcher_UIChangeRequested; vars.Launcher.VersionsRefreshed += Launcher_VersionsRefreshed; vars.Launcher.StatusChanged += Launcher_StatusChanged; @@ -98,10 +98,14 @@ public async void InitializeLauncher() vars.Launcher.OptiFine.DownloadCompleted += OptiFine_DownloadCompleted; vars.Launcher.GlacierClient.DownloadCompleted += GlacierClient_DownloadCompleted; vars.Launcher.VersionLoaderChanged += Launcher_VersionLoaderChanged; + vars.VerSelctorChanged += Vars_VerSelctorChanged; + MCVerManager = new MenuItemsCreator(); + MCVerManager.ItemInvoked += MCVerManager_ItemInvoked; LogsPage = new ChangeLogsPage(); navViewFrame.Content = LogsPage; LittleHelp.CompleteTask(taskID); await vars.Launcher.RefreshVersions(); + btnAdvMCVer.Flyout = MCVerManager.CreateVersions(); UI(true); if (await vars.Launcher.LoadStore() == true) { @@ -110,11 +114,78 @@ public async void InitializeLauncher() await vars.Launcher.LoadChangeLogs(); } + private async void MCVerManager_ItemInvoked(object sender, MenuItemsCreator.ItemInvokedArgs e) + { + if(vars.VerSelectors == VerSelectors.Advanced) + { + if(e.MCType == MenuItemsCreator.MCType.Vanilla) + { + launchVer = e.Ver; + btnAdvMCVer.Content = e.DisplayVer; + } + else + { + int taskID = LittleHelp.AddTask("Get Fabric"); + try + { + UI(false); + var fabric = vars.Launcher.FabricMCVersions.GetVersionMetadata(e.Ver); + await fabric.SaveAsync(vars.Launcher.Launcher.MinecraftPath); + UI(true); + btnAdvMCVer.Content = e.DisplayVer; + LittleHelp.CompleteTask(taskID, true); + } + catch + { + launchVer = ""; + btnAdvMCVer.Content = "Pick a Version"; + LittleHelp.CompleteTask(taskID, false); + } + } + } + } + + private void Vars_VerSelctorChanged(object sender, EventArgs e) + { + switch (vars.VerSelectors) + { + case VerSelectors.Normal: + btnAdvMCVer.Visibility = Visibility.Collapsed; + cmbxVer.Visibility = Visibility.Collapsed; + btnMCVer.Visibility = Visibility.Visible; + break; + case VerSelectors.Advanced: + btnAdvMCVer.Visibility = Visibility.Visible; + cmbxVer.Visibility = Visibility.Collapsed; + btnMCVer.Visibility = Visibility.Collapsed; + break; + case VerSelectors.Classic: + btnAdvMCVer.Visibility = Visibility.Collapsed; + cmbxVer.Visibility = Visibility.Visible; + btnMCVer.Visibility = Visibility.Collapsed; + break; + } + } + + private void Vars_SessionChanged(object sender, EventArgs e) + { + if (vars.session != null) + { + txtWelcome.Text = Localized.Welcome + ", " + vars.session.Username + "!"; + } + else + { + txtWelcome.Text = Localized.Welcome; + } + } + private void Launcher_VersionLoaderChanged(object sender, EventArgs e) { if (vars.Launcher.UseOfflineLoader) { btnMCVer.Visibility = Visibility.Collapsed; + btnAdvMCVer.Visibility = Visibility.Collapsed; + vars.VerSelectors = VerSelectors.Classic; cmbxVer.Visibility = Visibility.Visible; } } @@ -186,19 +257,22 @@ private void Launcher_UIChangeRequested(object sender, SDLauncher.UIChangeReques UI(e.UI); } - private void Timer_Tick(object sender, object e) + public void ShowTips() { - if (vars.ShowLaunchTips) + if(vars.VerSelectors == VerSelectors.Normal) { - vars.ShowLaunchTips = false; - tipVer.IsOpen = true; + tipVer.Target = btnMCVer; } - if (vars.UserName != null) + else if (vars.VerSelectors == VerSelectors.Classic) { - txtWelcome.Text = Localized.Welcome + ", " + vars.UserName + "!"; + tipVer.Target = cmbxVer; } + else + { + tipVer.Target = btnAdvMCVer; + } + tipVer.IsOpen = true; } - private async void BtnLaunch_Click(object sender, RoutedEventArgs e) { UI(false); @@ -221,10 +295,14 @@ private async void BtnLaunch_Click(object sender, RoutedEventArgs e) { btnMCVer.Focus(FocusState.Keyboard); } - else + else if(cmbxVer.Visibility == Visibility.Visible) { cmbxVer.Focus(FocusState.Keyboard); } + else + { + btnAdvMCVer.Focus(FocusState.Keyboard); + } return; } if (vars.MinRam == 0) { _ = await MessageBox.Show(Localized.Error, Localized.WrongRAM, MessageBoxButtons.Ok); return; } @@ -249,9 +327,16 @@ private async void BtnLaunch_Click(object sender, RoutedEventArgs e) l.JVMArguments = vars.JVMArgs.ToArray(); vars.Launcher.CreateToast(); int taskID = LittleHelp.AddTask("Launch Minecraft"); - var process = await vars.Launcher.Launcher.CreateProcessAsync(launchVer, l); + try + { + var process = await vars.Launcher.Launcher.CreateProcessAsync(launchVer, l); LittleHelp.CompleteTask(taskID); StartProcess(process); + } + catch + { + LittleHelp.CompleteTask(taskID, false); + } } catch (WebException) { @@ -333,19 +418,7 @@ private void CreateToast(string Title,string description,bool clearBefore) private void Page_Loaded(object sender, RoutedEventArgs e) { LogsPage.UpdateLogs(); - if (vars.Launcher.UseOfflineLoader) - return; - - if (vars.UseOldVerSeletor) - { - btnMCVer.Visibility = Visibility.Collapsed; - cmbxVer.Visibility = Visibility.Visible; - } - else - { - cmbxVer.Visibility = Visibility.Collapsed; - btnMCVer.Visibility = Visibility.Visible; - } + Vars_VerSelctorChanged(null, null); } private void tip_CloseButtonClick(TeachingTip sender, object args) @@ -369,7 +442,7 @@ private void MenuFlyoutItem_Click(object sender, RoutedEventArgs e) { flyVer.Hide(); } - if (sender is MenuFlyoutItem mitem && !vars.UseOldVerSeletor && !vars.Launcher.UseOfflineLoader) + if (sender is MenuFlyoutItem mitem && vars.VerSelectors == VerSelectors.Normal && !vars.Launcher.UseOfflineLoader) { VersionCheck(mitem); } @@ -445,6 +518,7 @@ private async void VersionCheck(MenuFlyoutItem item) } } // + public string SearchFabric(string ver) { var item = from t in vars.Launcher.FabricMCVersions where t.Name.EndsWith(ver) select t; @@ -504,7 +578,7 @@ private void OptiFineFinish(OptFineVerReturns returned) private void cmbxVer_SelectionChanged(object sender, SelectionChangedEventArgs e) { - if (vars.UseOldVerSeletor || vars.Launcher.UseOfflineLoader) + if (vars.VerSelectors == VerSelectors.Classic || vars.Launcher.UseOfflineLoader) { launchVer = cmbxVer.SelectedItem.ToString(); } diff --git a/SDLauncher UWP/Views/MainPage.xaml.cs b/SDLauncher UWP/Views/MainPage.xaml.cs index 1cd21c9b..12301f0f 100644 --- a/SDLauncher UWP/Views/MainPage.xaml.cs +++ b/SDLauncher UWP/Views/MainPage.xaml.cs @@ -32,7 +32,6 @@ #pragma warning disable CS8305 // Type is for evaluation purposes only and is subject to change or removal in future updates. #pragma warning disable CS8305 // Type is for evaluation purposes only and is subject to change or removal in future updates. -// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409 namespace SDLauncher_UWP { @@ -50,18 +49,53 @@ public MainPage() settingsPage.UpdateBGRequested += SettingsPage_UpdateBGRequested; settingsPage.BackRequested += SettingsPage_BackRequested; launcher.UIchanged += Launcher_UIchanged; - launcher.InitializeLauncher(); vars.Launcher.TasksHelper.TaskAddRequested += TasksHelper_TaskAddRequested; vars.Launcher.TasksHelper.TaskCompleteRequested += TasksHelper_TaskCompleteRequested; ; - if(!string.IsNullOrEmpty(vars.BackgroundImagePath)) + vars.BackgroundUpdatd += Vars_BackgroundUpdatd; + vars.SessionChanged += Vars_SessionChanged; + Vars_SessionChanged(null, null); + Vars_BackgroundUpdatd(null, null); + if (!string.IsNullOrEmpty(vars.BackgroundImagePath)) { settingsPage.GetAndSetBG(); } } - private void TasksHelper_TaskCompleteRequested(object sender, int e) + private void Vars_SessionChanged(object sender, EventArgs e) { - tasks.CompleteTask(e); + if (vars.session != null) + { + txtUsername.Text = vars.session.Username; + txtLogin.Text = vars.session.Username; + prpFly.DisplayName = vars.session.Username; + prpLogin.DisplayName = vars.session.Username; + btnLogin.Tag = "Change"; + } + else + { + txtUsername.Text = Localizer.GetLocalizedString("MainPage_Login"); + txtLogin.Text = Localizer.GetLocalizedString("MainPage_Login"); + prpFly.DisplayName = ""; + prpLogin.DisplayName = ""; + btnLogin.Tag = "Login"; + } + } + + private void Vars_BackgroundUpdatd(object sender, EventArgs e) + { + if (vars.CustomBackground) + { + imgBack.ImageSource = vars.BackgroundImage; + } + else + { + Page_ActualThemeChanged(this, new EventArgs()); + } + } + + private void TasksHelper_TaskCompleteRequested(object sender, TaskCompletedEventArgs e) + { + tasks.CompleteTask(e.ID,e.Success); } private void TasksHelper_TaskAddRequested(object sender, UserControls.Task e) @@ -126,6 +160,7 @@ private async void Page_Loaded(object sender, RoutedEventArgs e) { await MessageBox.Show(Localized.Error, Localized.RamFailed, MessageBoxButtons.Ok); } + launcher.InitializeLauncher(); } private void SettingsPage_BackRequested(object sender, EventArgs e) @@ -152,43 +187,6 @@ private void Page_Loading(FrameworkElement sender, object args) coreTitleBar.LayoutMetricsChanged += CoreTitleBar_LayoutMetricsChanged; coreTitleBar.IsVisibleChanged += CoreTitleBar_IsVisibleChanged; Window.Current.Activated += Current_Activated; - DispatcherTimer timer = new DispatcherTimer(); - timer.Interval = new TimeSpan(0, 0, 0, 0, 1); - timer.Tick += Timer_Tick; - timer.Start(); - } - BitmapImage bg; - private async void Timer_Tick(object sender, object e) - { - if (!string.IsNullOrEmpty(vars.UserName)) - { - txtUsername.Text = vars.UserName; - txtLogin.Text = vars.UserName; - prpFly.DisplayName = vars.UserName; - prpLogin.DisplayName = vars.UserName; - btnLogin.Tag = "Change"; - } - else - { - txtUsername.Text = Localizer.GetLocalizedString("MainPage_Login"); - txtLogin.Text = Localizer.GetLocalizedString("MainPage_Login"); - prpFly.DisplayName = ""; - prpLogin.DisplayName = ""; - btnLogin.Tag = "Login"; - } - if (vars.closing) - { - vars.closing = false; - await settings.CreateSettingsFile(true); - } - if (vars.CustomBackground) - { - if (bg != vars.BackgroundImage) - { - imgBack.ImageSource = vars.BackgroundImage; - bg = vars.BackgroundImage; - } - } } private void CoreTitleBar_LayoutMetricsChanged(CoreApplicationViewTitleBar sender, object args) @@ -227,7 +225,7 @@ private void btnSettings_Click(object sender, RoutedEventArgs e) { loginFly.Hide(); btnBack.Visibility = Visibility.Visible; - pnlTitle.Margin = new Thickness(50, pnlTitle.Margin.Top, pnlTitle.Margin.Right, pnlTitle.Margin.Bottom); + pnlTitle.Margin = new Thickness(40, pnlTitle.Margin.Top, pnlTitle.Margin.Right, pnlTitle.Margin.Bottom); MainFrame.Content = settingsPage; settingsPage.ScrollteToTop(); } @@ -257,17 +255,11 @@ private void btnBack_Click(object sender, RoutedEventArgs e) private void MainFrame_Navigated(object sender, NavigationEventArgs e) { - if (MainFrame.CanGoBack) - { - } - else - { - } } private void tipacc_CloseButtonClick(Microsoft.UI.Xaml.Controls.TeachingTip sender, object args) { - vars.ShowLaunchTips = true; + launcher.ShowTips(); } private void Page_ActualThemeChanged(FrameworkElement sender, object args) diff --git a/SDLauncher UWP/Views/SettingsPage.xaml b/SDLauncher UWP/Views/SettingsPage.xaml index 7d464f1e..352c2132 100644 --- a/SDLauncher UWP/Views/SettingsPage.xaml +++ b/SDLauncher UWP/Views/SettingsPage.xaml @@ -49,12 +49,17 @@ - + - + + + Classic + Normal + Advanced + + - @@ -106,7 +111,7 @@ - + @@ -116,7 +121,7 @@ - + @@ -150,7 +155,7 @@ - + Light @@ -159,7 +164,7 @@ - + Default @@ -201,11 +206,15 @@ Based on CMLLib by AlphaBs - + - -