- tweak: loading popup thinks
* - tweak: change loading handle logic * - tweak: beautify loading thinks * - fix: speed thinks while downloading
This commit is contained in:
@@ -32,7 +32,7 @@ public partial class AddFavoriteViewModel : PopupViewModelBase
|
||||
[GenerateProperty] private ServerOverviewModel ServerOverviewModel { get; }
|
||||
[GenerateProperty] private DebugService DebugService { get; }
|
||||
[GenerateProperty] private FavoriteServerListProvider FavoriteServerListProvider { get; }
|
||||
public override string Title => LocalisationService.GetString("popup-add-favorite");
|
||||
public override string Title => LocalizationService.GetString("popup-add-favorite");
|
||||
public override bool IsClosable => true;
|
||||
|
||||
[ObservableProperty] private string _ipInput;
|
||||
@@ -43,7 +43,7 @@ public partial class AddFavoriteViewModel : PopupViewModelBase
|
||||
try
|
||||
{
|
||||
if(string.IsNullOrWhiteSpace(IpInput))
|
||||
throw new Exception(LocalisationService.GetString("popup-add-favorite-invalid-ip"));
|
||||
throw new Exception(LocalizationService.GetString("popup-add-favorite-invalid-ip"));
|
||||
|
||||
var uri = IpInput.ToRobustUrl();
|
||||
FavoriteServerListProvider.AddFavorite(uri);
|
||||
|
||||
@@ -12,7 +12,7 @@ public sealed partial class EditServerNameViewModel : PopupViewModelBase
|
||||
{
|
||||
[GenerateProperty] public override PopupMessageService PopupMessageService { get; }
|
||||
[GenerateProperty] public ConfigurationService ConfigurationService { get; }
|
||||
public override string Title => LocalisationService.GetString("popup-edit-name");
|
||||
public override string Title => LocalizationService.GetString("popup-edit-name");
|
||||
public override bool IsClosable => true;
|
||||
|
||||
[ObservableProperty] private string _ipInput;
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Nebula.Launcher.ViewModels.Popup;
|
||||
public sealed partial class ExceptionListViewModel : PopupViewModelBase
|
||||
{
|
||||
[GenerateProperty] public override PopupMessageService PopupMessageService { get; }
|
||||
public override string Title => LocalisationService.GetString("popup-exception");
|
||||
public override string Title => LocalizationService.GetString("popup-exception");
|
||||
public override bool IsClosable => true;
|
||||
|
||||
public ObservableCollection<Exception> Errors { get; } = new();
|
||||
|
||||
@@ -14,7 +14,7 @@ public partial class InfoPopupViewModel : PopupViewModelBase
|
||||
|
||||
[ObservableProperty] private string _infoText = "Test";
|
||||
|
||||
public override string Title => LocalisationService.GetString("popup-information");
|
||||
public override string Title => LocalizationService.GetString("popup-information");
|
||||
public bool IsInfoClosable { get; set; } = true;
|
||||
public override bool IsClosable => IsInfoClosable;
|
||||
|
||||
|
||||
@@ -45,6 +45,6 @@ public partial class IsLoginCredentialsNullPopupViewModel : PopupViewModelBase
|
||||
Dispose();
|
||||
}
|
||||
|
||||
public override string Title => LocalisationService.GetString("popup-login-credentials-warning");
|
||||
public override string Title => LocalizationService.GetString("popup-login-credentials-warning");
|
||||
public override bool IsClosable => true;
|
||||
}
|
||||
@@ -1,3 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using Nebula.Launcher.Services;
|
||||
using Nebula.Launcher.Views.Popup;
|
||||
@@ -9,82 +11,121 @@ namespace Nebula.Launcher.ViewModels.Popup;
|
||||
|
||||
[ViewModelRegister(typeof(LoadingContextView), false)]
|
||||
[ConstructGenerator]
|
||||
public sealed partial class LoadingContextViewModel : PopupViewModelBase, ILoadingHandler
|
||||
public sealed partial class LoadingContextViewModel : PopupViewModelBase, ILoadingHandlerFactory, IConnectionSpeedHandler
|
||||
{
|
||||
public ObservableCollection<LoadingContext> LoadingContexts { get; } = [];
|
||||
public ObservableCollection<double> Values { get; } = [];
|
||||
[ObservableProperty] private string _speedText = "";
|
||||
[ObservableProperty] private bool _showSpeed;
|
||||
[ObservableProperty] private int _loadingColumnSize = 2;
|
||||
[GenerateProperty] public override PopupMessageService PopupMessageService { get; }
|
||||
[GenerateProperty] public CancellationService CancellationService { get; }
|
||||
|
||||
[ObservableProperty] private int _currJobs;
|
||||
[ObservableProperty] private int _resolvedJobs;
|
||||
[ObservableProperty] private string _message = string.Empty;
|
||||
|
||||
public string LoadingName { get; set; } = LocalisationService.GetString("popup-loading");
|
||||
public string LoadingName { get; set; } = LocalizationService.GetString("popup-loading");
|
||||
public bool IsCancellable { get; set; } = true;
|
||||
public override bool IsClosable => false;
|
||||
|
||||
public override string Title => LoadingName;
|
||||
public override string Title => LocalizationService.GetString("popup-loading");
|
||||
|
||||
public void SetJobsCount(int count)
|
||||
public void Cancel()
|
||||
{
|
||||
CurrJobs = count;
|
||||
}
|
||||
|
||||
public int GetJobsCount()
|
||||
{
|
||||
return CurrJobs;
|
||||
}
|
||||
|
||||
public void SetResolvedJobsCount(int count)
|
||||
{
|
||||
ResolvedJobs = count;
|
||||
}
|
||||
|
||||
public int GetResolvedJobsCount()
|
||||
{
|
||||
return ResolvedJobs;
|
||||
}
|
||||
|
||||
public void SetLoadingMessage(string message)
|
||||
{
|
||||
Message = message + "\n" + Message;
|
||||
}
|
||||
|
||||
public void Cancel(){
|
||||
if(!IsCancellable) return;
|
||||
if (!IsCancellable) return;
|
||||
CancellationService.Cancel();
|
||||
Dispose();
|
||||
}
|
||||
|
||||
public void PasteSpeed(int speed)
|
||||
{
|
||||
if (Values.Count == 0)
|
||||
{
|
||||
ShowSpeed = true;
|
||||
LoadingColumnSize = 1;
|
||||
}
|
||||
SpeedText = FileLoadingFormater.FormatBytes(speed) + " / s";
|
||||
Values.Add(speed);
|
||||
if(Values.Count > 10) Values.RemoveAt(0);
|
||||
}
|
||||
|
||||
public ILoadingHandler CreateLoadingContext(ILoadingFormater? loadingFormater = null)
|
||||
{
|
||||
var instance = new LoadingContext(this, loadingFormater ?? DefaultLoadingFormater.Instance);
|
||||
LoadingContexts.Add(instance);
|
||||
return instance;
|
||||
}
|
||||
|
||||
public void RemoveContextInstance(LoadingContext loadingContext)
|
||||
{
|
||||
LoadingContexts.Remove(loadingContext);
|
||||
}
|
||||
|
||||
protected override void Initialise()
|
||||
{
|
||||
}
|
||||
|
||||
protected override void InitialiseInDesignMode()
|
||||
{
|
||||
SetJobsCount(5);
|
||||
SetResolvedJobsCount(2);
|
||||
string[] debugMessages = {
|
||||
"Debug: Starting phase 1...",
|
||||
"Debug: Loading assets...",
|
||||
"Debug: Connecting to server...",
|
||||
"Debug: Fetching user data...",
|
||||
"Debug: Applying configurations...",
|
||||
"Debug: Starting phase 2...",
|
||||
"Debug: Rendering UI...",
|
||||
"Debug: Preparing scene...",
|
||||
"Debug: Initializing components...",
|
||||
"Debug: Running diagnostics...",
|
||||
"Debug: Checking dependencies...",
|
||||
"Debug: Verifying files...",
|
||||
"Debug: Cleaning up cache...",
|
||||
"Debug: Finalizing setup...",
|
||||
"Debug: Setup complete.",
|
||||
"Debug: Ready for launch."
|
||||
};
|
||||
var context = CreateLoadingContext();
|
||||
context.SetJobsCount(5);
|
||||
context.SetResolvedJobsCount(2);
|
||||
context.SetLoadingMessage("message");
|
||||
|
||||
foreach (string message in debugMessages)
|
||||
var ctx1 = CreateLoadingContext(new FileLoadingFormater());
|
||||
ctx1.SetJobsCount(1020120);
|
||||
ctx1.SetResolvedJobsCount(12331);
|
||||
ctx1.SetLoadingMessage("File data");
|
||||
|
||||
for (var i = 0; i < 14; i++)
|
||||
{
|
||||
SetLoadingMessage(message);
|
||||
PasteSpeed(Random.Shared.Next(10000000));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed partial class LoadingContext : ObservableObject, ILoadingHandler
|
||||
{
|
||||
private readonly LoadingContextViewModel _master;
|
||||
private readonly ILoadingFormater _loadingFormater;
|
||||
public string LoadingText => _loadingFormater.Format(this);
|
||||
|
||||
[ObservableProperty] private string _message = string.Empty;
|
||||
[ObservableProperty] private long _currJobs;
|
||||
[ObservableProperty] private long _resolvedJobs;
|
||||
|
||||
public LoadingContext(LoadingContextViewModel master, ILoadingFormater loadingFormater)
|
||||
{
|
||||
_master = master;
|
||||
_loadingFormater = loadingFormater;
|
||||
}
|
||||
|
||||
public void SetJobsCount(long count)
|
||||
{
|
||||
CurrJobs = count;
|
||||
OnPropertyChanged(nameof(LoadingText));
|
||||
}
|
||||
|
||||
public long GetJobsCount()
|
||||
{
|
||||
return CurrJobs;
|
||||
}
|
||||
|
||||
public void SetResolvedJobsCount(long count)
|
||||
{
|
||||
ResolvedJobs = count;
|
||||
OnPropertyChanged(nameof(LoadingText));
|
||||
}
|
||||
|
||||
public long GetResolvedJobsCount()
|
||||
{
|
||||
return ResolvedJobs;
|
||||
}
|
||||
|
||||
public void SetLoadingMessage(string message)
|
||||
{
|
||||
Message = message;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_master.RemoveContextInstance(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ public partial class TfaViewModel : PopupViewModelBase
|
||||
{
|
||||
[GenerateProperty] public override PopupMessageService PopupMessageService { get; }
|
||||
[GenerateProperty] public AccountInfoViewModel AccountInfo { get; }
|
||||
public override string Title => LocalisationService.GetString("popup-twofa");
|
||||
public override string Title => LocalizationService.GetString("popup-twofa");
|
||||
public override bool IsClosable => true;
|
||||
|
||||
protected override void InitialiseInDesignMode()
|
||||
|
||||
Reference in New Issue
Block a user