diff --git a/SIT.Manager/App.axaml b/SIT.Manager/App.axaml
index c2956aa1..c0d7465e 100644
--- a/SIT.Manager/App.axaml
+++ b/SIT.Manager/App.axaml
@@ -15,6 +15,6 @@
-
+
diff --git a/SIT.Manager/App.axaml.cs b/SIT.Manager/App.axaml.cs
index e14f4563..b282e386 100644
--- a/SIT.Manager/App.axaml.cs
+++ b/SIT.Manager/App.axaml.cs
@@ -39,6 +39,7 @@ public sealed partial class App : Application
///
public IServiceProvider Services { get; }
+ public App() : this([]) { }
public App(string[] args)
{
@@ -246,8 +247,7 @@ private Task ParseArguments(string[] args)
if (usernameValue != null && passwordValue != null)
{
- var dcvm = Services.GetService();
-
+ DirectConnectViewModel dcvm = Services.GetRequiredService();
await dcvm.ConnectToServer(addressValue, usernameValue, passwordValue);
}
diff --git a/SIT.Manager/Assets/Styles/Theme.axaml b/SIT.Manager/Assets/Styles/Theme.axaml
deleted file mode 100644
index b03cecd1..00000000
--- a/SIT.Manager/Assets/Styles/Theme.axaml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
- #FF7F7F7F
- #3399FFFF
- #FFFFFFFF
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/SIT.Manager/CrashApp.axaml b/SIT.Manager/CrashApp.axaml
index 5a6b9d3c..87ac3961 100644
--- a/SIT.Manager/CrashApp.axaml
+++ b/SIT.Manager/CrashApp.axaml
@@ -11,6 +11,6 @@
-
+
diff --git a/SIT.Manager/Localization/en-US.axaml b/SIT.Manager/Localization/en-US.axaml
index abd4f534..f2e416f7 100644
--- a/SIT.Manager/Localization/en-US.axaml
+++ b/SIT.Manager/Localization/en-US.axaml
@@ -72,7 +72,6 @@
Include Manager Logs
- Console Output
Start server.
Edit Server Config
Edit Server
@@ -326,7 +325,6 @@
Extracting file %1 (%2)
- Start Update
SIT Manager is updating for you please wait...
The app restart as soon as it has finished
Updating
diff --git a/SIT.Manager/Localization/ru-RU.axaml b/SIT.Manager/Localization/ru-RU.axaml
index b9cd354c..a873299f 100644
--- a/SIT.Manager/Localization/ru-RU.axaml
+++ b/SIT.Manager/Localization/ru-RU.axaml
@@ -72,7 +72,6 @@
Включить журналы менеджера
- Вывод консоли
Запустить сервер.
Редактировать конфигурацию сервера
Редактировать сервер
@@ -330,7 +329,6 @@
Извлечение файла %1 (%2)
- Начать обновление
Менеджер SIT обновляется, пожалуйста, подождите...
Приложение перезапустится сразу после завершения обновления
Обновление
diff --git a/SIT.Manager/Localization/uk-UA.axaml b/SIT.Manager/Localization/uk-UA.axaml
index 5d4e46db..e1ed944f 100644
--- a/SIT.Manager/Localization/uk-UA.axaml
+++ b/SIT.Manager/Localization/uk-UA.axaml
@@ -72,7 +72,6 @@
Включити журнали менеджера
- Виведення консолі
Запустити сервер.
Редагувати конфігурацію сервера
Редагувати сервер
@@ -331,7 +330,6 @@
Видобування файлу %1 (%2)
- Почати оновлення
Менеджер SIT оновлюється, будь ласка, зачекайте...
Застосунок перезапуститься, як тільки завершиться оновлення
Оновлення
diff --git a/SIT.Manager/Localization/zh-CN.axaml b/SIT.Manager/Localization/zh-CN.axaml
index f8cd8d88..b46eb053 100644
--- a/SIT.Manager/Localization/zh-CN.axaml
+++ b/SIT.Manager/Localization/zh-CN.axaml
@@ -72,7 +72,6 @@
包括管理器日志
- 控制台输出
启动服务器
编辑服务器配置
编辑服务器配置文件
@@ -331,7 +330,6 @@
提取文件 %1 (%2)
- 开始更新
SIT 管理器正在更新,请稍候...
更新完成后应用程序将重新启动
更新中
diff --git a/SIT.Manager/Localization/zh-HK.axaml b/SIT.Manager/Localization/zh-HK.axaml
index 590b0e22..040720b4 100644
--- a/SIT.Manager/Localization/zh-HK.axaml
+++ b/SIT.Manager/Localization/zh-HK.axaml
@@ -72,7 +72,6 @@
包括管理員日誌
- 控制臺輸出
啟動伺服器
編輯伺服器配置
編輯伺服器配置檔案
@@ -331,7 +330,6 @@
正在提取檔案 %1 (%2)
- 開始更新
SIT 管理器正在進行更新,請稍候...
更新完成後應用程式將重新啟動
更新中
diff --git a/SIT.Manager/Localization/zh-TW.axaml b/SIT.Manager/Localization/zh-TW.axaml
index 85eb59b6..a9f2dce7 100644
--- a/SIT.Manager/Localization/zh-TW.axaml
+++ b/SIT.Manager/Localization/zh-TW.axaml
@@ -72,7 +72,6 @@
包括管理員日誌
- 控制臺輸出
啟動伺服器
編輯伺服器設定
編輯伺服器設定檔
@@ -331,7 +330,6 @@
正在解壓縮檔案 %1 (%2)
- 開始更新
SIT 管理員正在更新,請稍候...
更新完成後應用程式將重新啟動
更新中
diff --git a/SIT.Manager/Theme/Assists/BoxShadowAssist.cs b/SIT.Manager/Theme/Assists/BoxShadowAssist.cs
new file mode 100644
index 00000000..4c9477fc
--- /dev/null
+++ b/SIT.Manager/Theme/Assists/BoxShadowAssist.cs
@@ -0,0 +1,105 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Media;
+
+namespace SIT.Manager.Theme.Assists;
+
+public static class BoxShadowAssist
+{
+ public static readonly AvaloniaProperty InsetProperty = AvaloniaProperty.RegisterAttached("Inset", typeof(BoxShadowAssist), false);
+ public static readonly AvaloniaProperty BlurProperty = AvaloniaProperty.RegisterAttached("Blur", typeof(BoxShadowAssist), 8);
+ public static readonly AvaloniaProperty OffsetXProperty = AvaloniaProperty.RegisterAttached("OffsetX", typeof(BoxShadowAssist), 1.5);
+ public static readonly AvaloniaProperty OffsetYProperty = AvaloniaProperty.RegisterAttached("OffsetY", typeof(BoxShadowAssist), 1.5);
+ public static readonly AvaloniaProperty ColorProperty = AvaloniaProperty.RegisterAttached("Color", typeof(BoxShadowAssist), new Color(0xF0, 0x00, 0x00, 0x00));
+ public static readonly AvaloniaProperty SpreadProperty = AvaloniaProperty.RegisterAttached("Spread", typeof(BoxShadowAssist), 4);
+
+ static BoxShadowAssist()
+ {
+ InsetProperty.Changed.Subscribe(InsetPropertyCallback);
+ BlurProperty.Changed.Subscribe(BlurPropertyCallback);
+ OffsetXProperty.Changed.Subscribe(OffsetXPropertyCallback);
+ OffsetYProperty.Changed.Subscribe(OffsetYPropertyCallback);
+ ColorProperty.Changed.Subscribe(ColorPropertyCallback);
+ SpreadProperty.Changed.Subscribe(SpreadPropertyCallback);
+ }
+
+
+ private static BoxShadows UpdateBoxShadow(bool inset, double blur, double offsetX, double offsetY, Color color, double spread)
+ {
+ return new BoxShadows(new()
+ {
+ IsInset = inset,
+ Blur = blur,
+ OffsetX = offsetX,
+ OffsetY = offsetY,
+ Color = color,
+ Spread = spread
+ });
+ }
+
+ private static void InsetPropertyCallback(AvaloniaPropertyChangedEventArgs args)
+ {
+ if (args.Sender is Border border)
+ {
+ border.BoxShadow = UpdateBoxShadow(args.NewValue.Value, GetBlur(args.Sender), GetOffsetX(args.Sender), GetOffsetY(args.Sender), GetColor(args.Sender), GetSpread(args.Sender));
+ }
+ }
+
+ private static void BlurPropertyCallback(AvaloniaPropertyChangedEventArgs args)
+ {
+ if (args.Sender is Border border)
+ {
+ border.BoxShadow = UpdateBoxShadow(GetInset(args.Sender), args.NewValue.Value, GetOffsetX(args.Sender), GetOffsetY(args.Sender), GetColor(args.Sender), GetSpread(args.Sender));
+ }
+ }
+
+ private static void OffsetXPropertyCallback(AvaloniaPropertyChangedEventArgs args)
+ {
+ if (args.Sender is Border border)
+ {
+ border.BoxShadow = UpdateBoxShadow(GetInset(args.Sender), GetBlur(args.Sender), args.NewValue.Value, GetOffsetY(args.Sender), GetColor(args.Sender), GetSpread(args.Sender));
+ }
+ }
+
+ private static void OffsetYPropertyCallback(AvaloniaPropertyChangedEventArgs args)
+ {
+ if (args.Sender is Border border)
+ {
+ border.BoxShadow = UpdateBoxShadow(GetInset(args.Sender), GetBlur(args.Sender), GetOffsetX(args.Sender), args.NewValue.Value, GetColor(args.Sender), GetSpread(args.Sender));
+ }
+ }
+
+ private static void ColorPropertyCallback(AvaloniaPropertyChangedEventArgs args)
+ {
+ if (args.Sender is Border border)
+ {
+ border.BoxShadow = UpdateBoxShadow(GetInset(args.Sender), GetBlur(args.Sender), GetOffsetX(args.Sender), GetOffsetY(args.Sender), args.NewValue.Value, GetSpread(args.Sender));
+ }
+ }
+
+ private static void SpreadPropertyCallback(AvaloniaPropertyChangedEventArgs args)
+ {
+ if (args.Sender is Border border)
+ {
+ border.BoxShadow = UpdateBoxShadow(GetInset(args.Sender), args.NewValue.Value, GetOffsetX(args.Sender), GetOffsetY(args.Sender), GetColor(args.Sender), args.NewValue.Value);
+ }
+ }
+
+ public static void SetInset(AvaloniaObject element, bool value) => element.SetValue(InsetProperty, value);
+ public static bool GetInset(AvaloniaObject element) => element.GetValue(InsetProperty);
+
+ public static void SeBlur(AvaloniaObject element, double value) => element.SetValue(BlurProperty, value);
+ public static double GetBlur(AvaloniaObject element) => element.GetValue(BlurProperty);
+
+ public static void SetOffsetX(AvaloniaObject element, double value) => element.SetValue(OffsetXProperty, value);
+ public static double GetOffsetX(AvaloniaObject element) => element.GetValue(OffsetXProperty);
+
+ public static void SetOffsetY(AvaloniaObject element, double value) => element.SetValue(OffsetYProperty, value);
+ public static double GetOffsetY(AvaloniaObject element) => element.GetValue(OffsetYProperty);
+
+ public static void SetColor(AvaloniaObject element, Color value) => element.SetValue(ColorProperty, value);
+ public static Color GetColor(AvaloniaObject element) => element.GetValue(ColorProperty);
+
+ public static void SetSpread(AvaloniaObject element, double value) => element.SetValue(SpreadProperty, value);
+ public static double GetSpread(AvaloniaObject element) => element.GetValue(SpreadProperty);
+}
diff --git a/SIT.Manager/Theme/Assists/Observable.cs b/SIT.Manager/Theme/Assists/Observable.cs
new file mode 100644
index 00000000..2f8d66c6
--- /dev/null
+++ b/SIT.Manager/Theme/Assists/Observable.cs
@@ -0,0 +1,12 @@
+using Avalonia.Reactive;
+using System;
+
+namespace SIT.Manager.Theme.Assists;
+
+public static class Observable
+{
+ public static IDisposable Subscribe(this IObservable source, Action action)
+ {
+ return source.Subscribe(new AnonymousObserver(action));
+ }
+}
diff --git a/SIT.Manager/Controls/ActivatableUserControl.cs b/SIT.Manager/Theme/Controls/ActivatableUserControl.cs
similarity index 95%
rename from SIT.Manager/Controls/ActivatableUserControl.cs
rename to SIT.Manager/Theme/Controls/ActivatableUserControl.cs
index 3dbf76a2..af8d8df2 100644
--- a/SIT.Manager/Controls/ActivatableUserControl.cs
+++ b/SIT.Manager/Theme/Controls/ActivatableUserControl.cs
@@ -2,7 +2,7 @@
using Avalonia.Controls;
using CommunityToolkit.Mvvm.ComponentModel;
-namespace SIT.Manager.Controls;
+namespace SIT.Manager.Theme.Controls;
public class ActivatableUserControl : UserControl
{
diff --git a/SIT.Manager/Theme/Controls/Card.axaml b/SIT.Manager/Theme/Controls/Card.axaml
new file mode 100644
index 00000000..b1229ee2
--- /dev/null
+++ b/SIT.Manager/Theme/Controls/Card.axaml
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SIT.Manager/Theme/Controls/Card.axaml.cs b/SIT.Manager/Theme/Controls/Card.axaml.cs
new file mode 100644
index 00000000..e30e0330
--- /dev/null
+++ b/SIT.Manager/Theme/Controls/Card.axaml.cs
@@ -0,0 +1,19 @@
+using Avalonia;
+using Avalonia.Controls;
+
+namespace SIT.Manager.Theme.Controls;
+
+public class Card : ContentControl
+{
+ public static readonly StyledProperty InsideClippingProperty =
+ AvaloniaProperty.Register(nameof(InsideClipping), true);
+
+ ///
+ /// Get or set the inside border clipping.
+ ///
+ public bool InsideClipping
+ {
+ get => GetValue(InsideClippingProperty);
+ set => SetValue(InsideClippingProperty, value);
+ }
+}
diff --git a/SIT.Manager/Controls/EmbeddedProcessWindow.cs b/SIT.Manager/Theme/Controls/EmbeddedProcessWindow.cs
similarity index 89%
rename from SIT.Manager/Controls/EmbeddedProcessWindow.cs
rename to SIT.Manager/Theme/Controls/EmbeddedProcessWindow.cs
index 6f420500..555f26f3 100644
--- a/SIT.Manager/Controls/EmbeddedProcessWindow.cs
+++ b/SIT.Manager/Theme/Controls/EmbeddedProcessWindow.cs
@@ -7,7 +7,7 @@
using System.Runtime.InteropServices;
using System.Threading.Tasks;
-namespace SIT.Manager.Controls;
+namespace SIT.Manager.Theme.Controls;
public class EmbeddedProcessWindow(Process p) : NativeControlHost
{
@@ -15,7 +15,7 @@ public class EmbeddedProcessWindow(Process p) : NativeControlHost
public int ExitCode => _p.ExitCode;
- public IntPtr ProcessWindowHandle { get; private set; }
+ public nint ProcessWindowHandle { get; private set; }
protected override void DestroyNativeControlCore(IPlatformHandle control)
{
@@ -65,11 +65,11 @@ protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e)
HandleRef handleRef = new(null, ProcessWindowHandle);
// set the new style of the schild window
- WindowsApi.SetWindowLongPtr(handleRef, -16, (IntPtr) style);
+ WindowsApi.SetWindowLongPtr(handleRef, -16, (nint) style);
// set the parent of the ProcessWindowHandle to be the main window's handle
- IntPtr parentHandle = ((Window) e.Root).TryGetPlatformHandle()?.Handle ?? 0;
- if (parentHandle != IntPtr.Zero)
+ nint parentHandle = ((Window) e.Root).TryGetPlatformHandle()?.Handle ?? 0;
+ if (parentHandle != nint.Zero)
{
WindowsApi.SetParent(ProcessWindowHandle, parentHandle);
}
@@ -92,7 +92,7 @@ public async Task StartProcess()
if (OperatingSystem.IsWindows())
{
// Wait until p.MainWindowHandle is non-zero
- while (_p.MainWindowHandle == IntPtr.Zero)
+ while (_p.MainWindowHandle == nint.Zero)
{
// Discard cached information about the process because MainWindowHandle might be cached.
_p.Refresh();
diff --git a/SIT.Manager/Controls/LoadingSpinner.axaml b/SIT.Manager/Theme/Controls/LoadingSpinner.axaml
similarity index 90%
rename from SIT.Manager/Controls/LoadingSpinner.axaml
rename to SIT.Manager/Theme/Controls/LoadingSpinner.axaml
index 8c9c78cb..484687d4 100644
--- a/SIT.Manager/Controls/LoadingSpinner.axaml
+++ b/SIT.Manager/Theme/Controls/LoadingSpinner.axaml
@@ -1,10 +1,10 @@
+ x:Class="SIT.Manager.Theme.Controls.LoadingSpinner">
-
\ No newline at end of file
+
diff --git a/SIT.Manager/Assets/Styles/SelectableTextBlock.axaml b/SIT.Manager/Theme/Styles/SelectableTextBlock.axaml
similarity index 64%
rename from SIT.Manager/Assets/Styles/SelectableTextBlock.axaml
rename to SIT.Manager/Theme/Styles/SelectableTextBlock.axaml
index 46f9bc23..d21a1463 100644
--- a/SIT.Manager/Assets/Styles/SelectableTextBlock.axaml
+++ b/SIT.Manager/Theme/Styles/SelectableTextBlock.axaml
@@ -2,11 +2,11 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-
+
-
\ No newline at end of file
+
diff --git a/SIT.Manager/Assets/Styles/TextBlock.axaml b/SIT.Manager/Theme/Styles/TextBlock.axaml
similarity index 73%
rename from SIT.Manager/Assets/Styles/TextBlock.axaml
rename to SIT.Manager/Theme/Styles/TextBlock.axaml
index 72d9ec0f..e21b4677 100644
--- a/SIT.Manager/Assets/Styles/TextBlock.axaml
+++ b/SIT.Manager/Theme/Styles/TextBlock.axaml
@@ -3,6 +3,7 @@
+
@@ -10,25 +11,21 @@
-
+
-
\ No newline at end of file
+
diff --git a/SIT.Manager/Theme/Theme.axaml b/SIT.Manager/Theme/Theme.axaml
new file mode 100644
index 00000000..dbb93255
--- /dev/null
+++ b/SIT.Manager/Theme/Theme.axaml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SIT.Manager/ViewModels/Installation/PatchViewModel.cs b/SIT.Manager/ViewModels/Installation/PatchViewModel.cs
index 1b8949d7..eb79a4c0 100644
--- a/SIT.Manager/ViewModels/Installation/PatchViewModel.cs
+++ b/SIT.Manager/ViewModels/Installation/PatchViewModel.cs
@@ -2,10 +2,10 @@
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.Extensions.Logging;
-using SIT.Manager.Controls;
using SIT.Manager.Interfaces;
using SIT.Manager.Models.Installation;
using SIT.Manager.Services;
+using SIT.Manager.Theme.Controls;
using System;
using System.Collections.Generic;
using System.IO;
diff --git a/SIT.Manager/ViewModels/MainViewModel.cs b/SIT.Manager/ViewModels/MainViewModel.cs
index 7adbc684..22a1edbf 100644
--- a/SIT.Manager/ViewModels/MainViewModel.cs
+++ b/SIT.Manager/ViewModels/MainViewModel.cs
@@ -75,6 +75,8 @@ public partial class MainViewModel : ObservableRecipient, IRecipient { UpdateAvailable = false; });
+ UpdateAppCommand = new AsyncRelayCommand(UpdateApp);
_managerConfigService.ConfigChanged += ManagerConfigService_ConfigChanged;
}
@@ -256,11 +259,20 @@ private async Task OpenUrlAsync(string url)
}
}
- [RelayCommand]
- private void UpdateButton()
+ private async Task UpdateApp()
{
- NavigateToPage(typeof(UpdatePage));
- UpdateAvailable = false;
+ ContentDialogResult updateRequestResult = await new ContentDialog()
+ {
+ Title = _localizationService.TranslateSource("UpdatePageViewModelUpdateConfirmationTitle"),
+ Content = _localizationService.TranslateSource("UpdatePageViewModelUpdateConfirmationDescription"),
+ PrimaryButtonText = _localizationService.TranslateSource("UpdatePageViewModelButtonYes"),
+ CloseButtonText = _localizationService.TranslateSource("UpdatePageViewModelButtonNo")
+ }.ShowAsync();
+ if (updateRequestResult == ContentDialogResult.Primary)
+ {
+ NavigateToPage(typeof(UpdatePage));
+ UpdateAvailable = false;
+ }
}
protected override async void OnActivated()
@@ -269,7 +281,14 @@ protected override async void OnActivated()
CheckInstallVersion();
+#if DEBUG
+ // Don't run update checks in debug builds just assume they exist
+ UpdateAvailable = true;
+ SitUpdateAvailable = true;
+ await Task.Delay(10);
+#else
await CheckForUpdate();
+#endif
}
protected override void OnPropertyChanging(PropertyChangingEventArgs e)
diff --git a/SIT.Manager/ViewModels/Play/CharacterSelectionViewModel.cs b/SIT.Manager/ViewModels/Play/CharacterSelectionViewModel.cs
index 4c8b702a..ae8e4aff 100644
--- a/SIT.Manager/ViewModels/Play/CharacterSelectionViewModel.cs
+++ b/SIT.Manager/ViewModels/Play/CharacterSelectionViewModel.cs
@@ -96,7 +96,6 @@ private async Task ReloadCharacterList()
SavedCharacterList.Clear();
try
{
- //TODO: This is currently listing *all* server characters. We should narrow this to saved only
List miniProfiles = await _serverService.GetMiniProfilesAsync(_connectedServer);
foreach (AkiMiniProfile profile in miniProfiles)
{
diff --git a/SIT.Manager/ViewModels/UpdatePageViewModel.cs b/SIT.Manager/ViewModels/UpdatePageViewModel.cs
index bab3f9e4..83b15585 100644
--- a/SIT.Manager/ViewModels/UpdatePageViewModel.cs
+++ b/SIT.Manager/ViewModels/UpdatePageViewModel.cs
@@ -1,7 +1,5 @@
using CommunityToolkit.Mvvm.ComponentModel;
-using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
-using FluentAvalonia.UI.Controls;
using SIT.Manager.Interfaces;
using SIT.Manager.Models.Installation;
using System;
@@ -9,10 +7,9 @@
namespace SIT.Manager.ViewModels;
-public partial class UpdatePageViewModel : ObservableObject
+public partial class UpdatePageViewModel : ObservableRecipient
{
private readonly IAppUpdaterService _appUpdaterService;
- private readonly ILocalizationService _localizationService;
private readonly Progress _updateProgress;
@@ -22,42 +19,43 @@ public partial class UpdatePageViewModel : ObservableObject
[ObservableProperty]
private bool _hasError = false;
- public IAsyncRelayCommand UpdateManagerCommand { get; }
-
- public UpdatePageViewModel(IAppUpdaterService appUpdaterService, ILocalizationService localizationService)
+ public UpdatePageViewModel(IAppUpdaterService appUpdaterService)
{
_appUpdaterService = appUpdaterService;
- _localizationService = localizationService;
_updateProgress = new Progress(prog => UpdateProgressPercentage = prog);
-
- UpdateManagerCommand = new AsyncRelayCommand(UpdateManager);
}
- private async Task UpdateManager()
+ private async Task DoUpdateApp()
{
- ContentDialogResult updateRequestResult = await new ContentDialog()
- {
- Title = _localizationService.TranslateSource("UpdatePageViewModelUpdateConfirmationTitle"),
- Content = _localizationService.TranslateSource("UpdatePageViewModelUpdateConfirmationDescription"),
- PrimaryButtonText = _localizationService.TranslateSource("UpdatePageViewModelButtonYes"),
- CloseButtonText = _localizationService.TranslateSource("UpdatePageViewModelButtonNo")
- }.ShowAsync();
+ Messenger.Send(new InstallationRunningMessage(true));
+ await Task.Delay(500);
- if (updateRequestResult == ContentDialogResult.Primary)
+#if DEBUG
+ // For debug builds don't actually allow the app to be updated and instead just mimic the action
+ for (int i = 0; i < 100; i++)
+ {
+ UpdateProgressPercentage = i;
+ await Task.Delay(Random.Shared.Next(1000));
+ }
+ Messenger.Send(new InstallationRunningMessage(false));
+#else
+ bool updateResult = await _appUpdaterService.Update(_updateProgress);
+ if (updateResult)
{
- WeakReferenceMessenger.Default.Send(new InstallationRunningMessage(true));
-
- bool updateResult = await _appUpdaterService.Update(_updateProgress);
- if (updateResult)
- {
- _appUpdaterService.RestartApp();
- }
- else
- {
- HasError = true;
- WeakReferenceMessenger.Default.Send(new InstallationRunningMessage(false));
- }
+ _appUpdaterService.RestartApp();
}
+ else
+ {
+ HasError = true;
+ Messenger.Send(new InstallationRunningMessage(false));
+ }
+#endif
+ }
+
+ protected override async void OnActivated()
+ {
+ base.OnActivated();
+ await DoUpdateApp();
}
}
diff --git a/SIT.Manager/Views/InstallPage.axaml b/SIT.Manager/Views/InstallPage.axaml
index 282743a6..7ebff483 100644
--- a/SIT.Manager/Views/InstallPage.axaml
+++ b/SIT.Manager/Views/InstallPage.axaml
@@ -11,20 +11,23 @@
x:DataType="vm:InstallPageViewModel">
-
+ Margin="0,0,8,0">
+
+
+
+
diff --git a/SIT.Manager/Views/InstallPage.axaml.cs b/SIT.Manager/Views/InstallPage.axaml.cs
index a9cfa39e..87767faf 100644
--- a/SIT.Manager/Views/InstallPage.axaml.cs
+++ b/SIT.Manager/Views/InstallPage.axaml.cs
@@ -1,5 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
-using SIT.Manager.Controls;
+using SIT.Manager.Theme.Controls;
using SIT.Manager.ViewModels;
namespace SIT.Manager.Views;
diff --git a/SIT.Manager/Views/Installation/CompleteView.axaml b/SIT.Manager/Views/Installation/CompleteView.axaml
index 42056251..18280183 100644
--- a/SIT.Manager/Views/Installation/CompleteView.axaml
+++ b/SIT.Manager/Views/Installation/CompleteView.axaml
@@ -2,37 +2,31 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:controls="clr-namespace:SIT.Manager.Theme.Controls"
xmlns:ui="using:FluentAvalonia.UI.Controls"
xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Installation"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="SIT.Manager.Views.Installation.CompleteView"
x:DataType="vm:CompleteViewModel">
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/SIT.Manager/Views/Installation/ConfigureServerView.axaml b/SIT.Manager/Views/Installation/ConfigureServerView.axaml
index ea636e67..2f59f457 100644
--- a/SIT.Manager/Views/Installation/ConfigureServerView.axaml
+++ b/SIT.Manager/Views/Installation/ConfigureServerView.axaml
@@ -3,8 +3,8 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="using:FluentAvalonia.UI.Controls"
- xmlns:controls="clr-namespace:SIT.Manager.Controls"
- xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Installation"
+ xmlns:controls="clr-namespace:SIT.Manager.Theme.Controls"
+ xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Installation"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="SIT.Manager.Views.Installation.ConfigureServerView"
x:DataType="vm:ConfigureServerViewModel">
@@ -14,114 +14,113 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+ VerticalAlignment="Center"/>
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/SIT.Manager/Views/Installation/ConfigureServerView.axaml.cs b/SIT.Manager/Views/Installation/ConfigureServerView.axaml.cs
index ed17403a..dec537ba 100644
--- a/SIT.Manager/Views/Installation/ConfigureServerView.axaml.cs
+++ b/SIT.Manager/Views/Installation/ConfigureServerView.axaml.cs
@@ -1,5 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
-using SIT.Manager.Controls;
+using SIT.Manager.Theme.Controls;
using SIT.Manager.ViewModels.Installation;
namespace SIT.Manager.Views.Installation;
diff --git a/SIT.Manager/Views/Installation/ConfigureSitView.axaml b/SIT.Manager/Views/Installation/ConfigureSitView.axaml
index 65ea376f..4f30e4c2 100644
--- a/SIT.Manager/Views/Installation/ConfigureSitView.axaml
+++ b/SIT.Manager/Views/Installation/ConfigureSitView.axaml
@@ -3,7 +3,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="using:FluentAvalonia.UI.Controls"
- xmlns:controls="clr-namespace:SIT.Manager.Controls"
+ xmlns:controls="clr-namespace:SIT.Manager.Theme.Controls"
xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Installation"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="SIT.Manager.Views.Installation.ConfigureSitView"
@@ -17,9 +17,10 @@
-
-
+
+
+
@@ -144,27 +145,29 @@
Margin="0,8,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
- Foreground="{DynamicResource TextControlForeground}"
+ Foreground="{DynamicResource AppSecondary}"
StrokeWidth="8"/>
-
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SIT.Manager/Views/Installation/ConfigureSitView.axaml.cs b/SIT.Manager/Views/Installation/ConfigureSitView.axaml.cs
index 04c549e5..5a280d91 100644
--- a/SIT.Manager/Views/Installation/ConfigureSitView.axaml.cs
+++ b/SIT.Manager/Views/Installation/ConfigureSitView.axaml.cs
@@ -1,5 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
-using SIT.Manager.Controls;
+using SIT.Manager.Theme.Controls;
using SIT.Manager.ViewModels.Installation;
namespace SIT.Manager.Views.Installation;
diff --git a/SIT.Manager/Views/Installation/InstallView.axaml b/SIT.Manager/Views/Installation/InstallView.axaml
index b7095282..baae1c43 100644
--- a/SIT.Manager/Views/Installation/InstallView.axaml
+++ b/SIT.Manager/Views/Installation/InstallView.axaml
@@ -2,12 +2,16 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:controls="clr-namespace:SIT.Manager.Theme.Controls"
xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Installation"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="SIT.Manager.Views.Installation.InstallView"
x:DataType="vm:InstallViewModel">
-
-
+
-
+
diff --git a/SIT.Manager/Views/Installation/InstallView.axaml.cs b/SIT.Manager/Views/Installation/InstallView.axaml.cs
index 16d07916..53176bf2 100644
--- a/SIT.Manager/Views/Installation/InstallView.axaml.cs
+++ b/SIT.Manager/Views/Installation/InstallView.axaml.cs
@@ -1,5 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
-using SIT.Manager.Controls;
+using SIT.Manager.Theme.Controls;
using SIT.Manager.ViewModels.Installation;
namespace SIT.Manager.Views.Installation;
diff --git a/SIT.Manager/Views/Installation/PatchView.axaml b/SIT.Manager/Views/Installation/PatchView.axaml
index ed264ab6..c228b24c 100644
--- a/SIT.Manager/Views/Installation/PatchView.axaml
+++ b/SIT.Manager/Views/Installation/PatchView.axaml
@@ -2,12 +2,14 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:controls="clr-namespace:SIT.Manager.Theme.Controls"
xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Installation"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="SIT.Manager.Views.Installation.PatchView"
x:DataType="vm:PatchViewModel">
-
+
-
+
-
+
@@ -120,6 +122,6 @@
Content="{DynamicResource PatchViewPatchingEndInstallButtonTitle}"/>
-
+
diff --git a/SIT.Manager/Views/Installation/PatchView.axaml.cs b/SIT.Manager/Views/Installation/PatchView.axaml.cs
index 71b16fdf..9aec3ad9 100644
--- a/SIT.Manager/Views/Installation/PatchView.axaml.cs
+++ b/SIT.Manager/Views/Installation/PatchView.axaml.cs
@@ -1,5 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
-using SIT.Manager.Controls;
+using SIT.Manager.Theme.Controls;
using SIT.Manager.ViewModels.Installation;
namespace SIT.Manager.Views.Installation;
diff --git a/SIT.Manager/Views/Installation/SelectView.axaml b/SIT.Manager/Views/Installation/SelectView.axaml
index b6acaa16..17d42cdb 100644
--- a/SIT.Manager/Views/Installation/SelectView.axaml
+++ b/SIT.Manager/Views/Installation/SelectView.axaml
@@ -2,6 +2,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:controls="clr-namespace:SIT.Manager.Theme.Controls"
xmlns:ui="using:FluentAvalonia.UI.Controls"
xmlns:im="clr-namespace:SIT.Manager.Models.Installation"
xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Installation"
@@ -20,12 +21,12 @@
-
+
-
-
+
+
-
-
+
-
-
-
-
+
+
+
-
+
diff --git a/SIT.Manager/Views/Installation/SelectView.axaml.cs b/SIT.Manager/Views/Installation/SelectView.axaml.cs
index 6ad59315..ae925f77 100644
--- a/SIT.Manager/Views/Installation/SelectView.axaml.cs
+++ b/SIT.Manager/Views/Installation/SelectView.axaml.cs
@@ -1,5 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
-using SIT.Manager.Controls;
+using SIT.Manager.Theme.Controls;
using SIT.Manager.ViewModels.Installation;
namespace SIT.Manager.Views.Installation;
diff --git a/SIT.Manager/Views/MainView.axaml b/SIT.Manager/Views/MainView.axaml
index 81b41f4c..a6b2026b 100644
--- a/SIT.Manager/Views/MainView.axaml
+++ b/SIT.Manager/Views/MainView.axaml
@@ -9,7 +9,7 @@
x:Class="SIT.Manager.Views.MainView"
x:DataType="vm:MainViewModel"
x:CompileBindings="True"
- Background="Black">
+ Background="{DynamicResource AppBlack}">
-
-
-
-
+
+
+
+
-
-
-
@@ -67,14 +91,13 @@
-
+ Background="{DynamicResource AppPrimary}">
-
-
-
-
+
+
+
-
+
-
+
-
+
diff --git a/SIT.Manager/Views/Play/CharacterSelectionView.axaml.cs b/SIT.Manager/Views/Play/CharacterSelectionView.axaml.cs
index 2b1554bb..0bad2503 100644
--- a/SIT.Manager/Views/Play/CharacterSelectionView.axaml.cs
+++ b/SIT.Manager/Views/Play/CharacterSelectionView.axaml.cs
@@ -1,5 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
-using SIT.Manager.Controls;
+using SIT.Manager.Theme.Controls;
using SIT.Manager.ViewModels.Play;
namespace SIT.Manager.Views.Play;
diff --git a/SIT.Manager/Views/Play/CharacterSummaryView.axaml b/SIT.Manager/Views/Play/CharacterSummaryView.axaml
index 43a7b9e1..a93c0912 100644
--- a/SIT.Manager/Views/Play/CharacterSummaryView.axaml
+++ b/SIT.Manager/Views/Play/CharacterSummaryView.axaml
@@ -2,12 +2,13 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:controls="clr-namespace:SIT.Manager.Theme.Controls"
xmlns:ui="using:FluentAvalonia.UI.Controls"
xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Play"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="SIT.Manager.Views.Play.CharacterSummaryView"
x:DataType="vm:CharacterSummaryViewModel">
-
+
-
+
diff --git a/SIT.Manager/Views/Play/CharacterSummaryView.axaml.cs b/SIT.Manager/Views/Play/CharacterSummaryView.axaml.cs
index 299769a3..e989f3e9 100644
--- a/SIT.Manager/Views/Play/CharacterSummaryView.axaml.cs
+++ b/SIT.Manager/Views/Play/CharacterSummaryView.axaml.cs
@@ -1,4 +1,4 @@
-using SIT.Manager.Controls;
+using SIT.Manager.Theme.Controls;
namespace SIT.Manager.Views.Play;
diff --git a/SIT.Manager/Views/Play/DirectConnectView.axaml b/SIT.Manager/Views/Play/DirectConnectView.axaml
index b5eaf7fa..a6f59fd1 100644
--- a/SIT.Manager/Views/Play/DirectConnectView.axaml
+++ b/SIT.Manager/Views/Play/DirectConnectView.axaml
@@ -2,15 +2,19 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:controls="clr-namespace:SIT.Manager.Controls"
+ xmlns:controls="clr-namespace:SIT.Manager.Theme.Controls"
xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Play"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:DataType="vm:DirectConnectViewModel"
x:Class="SIT.Manager.Views.Play.DirectConnectView">
-
-
+
+
-
+
@@ -48,7 +52,7 @@
-
+
-
+
diff --git a/SIT.Manager/Views/Play/DirectConnectView.axaml.cs b/SIT.Manager/Views/Play/DirectConnectView.axaml.cs
index 4a2d4933..58e1ceef 100644
--- a/SIT.Manager/Views/Play/DirectConnectView.axaml.cs
+++ b/SIT.Manager/Views/Play/DirectConnectView.axaml.cs
@@ -1,5 +1,5 @@
using Microsoft.Extensions.DependencyInjection;
-using SIT.Manager.Controls;
+using SIT.Manager.Theme.Controls;
using SIT.Manager.ViewModels.Play;
namespace SIT.Manager.Views.Play;
diff --git a/SIT.Manager/Views/Play/ServerSelectionView.axaml b/SIT.Manager/Views/Play/ServerSelectionView.axaml
index 7c5b0229..c0007fde 100644
--- a/SIT.Manager/Views/Play/ServerSelectionView.axaml
+++ b/SIT.Manager/Views/Play/ServerSelectionView.axaml
@@ -3,17 +3,16 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="using:FluentAvalonia.UI.Controls"
- xmlns:controls="clr-namespace:SIT.Manager.Controls"
+ xmlns:controls="clr-namespace:SIT.Manager.Theme.Controls"
xmlns:vm="clr-namespace:SIT.Manager.ViewModels.Play"
xmlns:pv="clr-namespace:SIT.Manager.Views.Play"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:DataType="vm:ServerSelectionViewModel"
x:Class="SIT.Manager.Views.Play.ServerSelectionView">
-
+ Margin="0,8">
+