|
1 | 1 | using System; |
2 | 2 | using System.Threading.Tasks; |
| 3 | +using Avalonia; |
| 4 | +using Avalonia.Controls; |
3 | 5 | using Avalonia.Interactivity; |
4 | 6 | using AvaloniaControls.Controls; |
5 | 7 | using AvaloniaControls.Models; |
|
10 | 12 | using TrackerCouncil.Smz3.Data.ViewModels; |
11 | 13 | using TrackerCouncil.Smz3.Shared.Enums; |
12 | 14 | using TrackerCouncil.Smz3.Shared.Models; |
| 15 | +using Dispatcher = Avalonia.Threading.Dispatcher; |
13 | 16 |
|
14 | 17 | namespace TrackerCouncil.Smz3.UI.Views; |
15 | 18 |
|
16 | 19 | public partial class GenerationSettingsWindow : ScalableWindow |
17 | 20 | { |
18 | | - private GenerationSettingsWindowService? _generationSettingsWindowService; |
19 | | - private IServiceProvider? _serviceProvider; |
20 | | - private IStatGenerator? _statGenerator; |
21 | | - private GenerationWindowViewModel? _model; |
| 21 | + private readonly GenerationSettingsWindowService? _generationSettingsWindowService; |
| 22 | + private readonly IServiceProvider? _serviceProvider; |
| 23 | + private readonly GenerationWindowViewModel? _model; |
22 | 24 |
|
23 | 25 | public GenerationSettingsWindow() |
24 | 26 | { |
25 | 27 | InitializeComponent(); |
26 | 28 | DataContext = new GenerationWindowViewModel(); |
27 | 29 | } |
28 | 30 |
|
29 | | - public GenerationSettingsWindow(GenerationSettingsWindowService generationSettingsWindowService, IServiceProvider serviceProvider, IStatGenerator statGenerator) |
| 31 | + public GenerationSettingsWindow(GenerationSettingsWindowService generationSettingsWindowService, IServiceProvider serviceProvider) |
30 | 32 | { |
31 | 33 | _generationSettingsWindowService = generationSettingsWindowService; |
32 | 34 | _serviceProvider = serviceProvider; |
33 | | - _statGenerator = statGenerator; |
34 | 35 | InitializeComponent(); |
35 | 36 | DataContext = BasicPanel.Data = _model = _generationSettingsWindowService.GetViewModel(); |
36 | 37 | BasicPanel.SetServices(serviceProvider, generationSettingsWindowService); |
@@ -60,7 +61,7 @@ public void EnableImportMode(ParsedRomDetails importDetails) |
60 | 61 | { |
61 | 62 | _model.Basic.CanSetMsu = false; |
62 | 63 | } |
63 | | - |
| 64 | + |
64 | 65 | _model.IsImportMode = true; |
65 | 66 | _model.ImportDetails = importDetails; |
66 | 67 | } |
@@ -117,7 +118,7 @@ private async Task GenerateRom() |
117 | 118 |
|
118 | 119 | window.ShowDialog(); |
119 | 120 |
|
120 | | - window.Closed += (sender, args) => |
| 121 | + window.Closed += (_, _) => |
121 | 122 | { |
122 | 123 | if (generatedRom.Rom != null) |
123 | 124 | { |
@@ -152,12 +153,12 @@ private void GenerateStatsMenuItem_OnClick(object? sender, RoutedEventArgs e) |
152 | 153 | var statGenerator = _serviceProvider.GetRequiredService<IStatGenerator>(); |
153 | 154 | var statWindow = new ProgressWindow(this, "Generating stats test"); |
154 | 155 |
|
155 | | - statGenerator.StatProgressUpdated += (o, args) => |
| 156 | + statGenerator.StatProgressUpdated += (_, args) => |
156 | 157 | { |
157 | 158 | statWindow.Report(args.Current / (double)args.Total); |
158 | 159 | }; |
159 | 160 |
|
160 | | - statGenerator.StatsCompleted += (o, args) => |
| 161 | + statGenerator.StatsCompleted += (_, args) => |
161 | 162 | { |
162 | 163 | statWindow.Close(); |
163 | 164 | var messageWindow = new MessageWindow(new MessageWindowRequest() |
@@ -190,7 +191,7 @@ private void SavePresetMenuItem_OnClick(object? sender, RoutedEventArgs e) |
190 | 191 | DisplayTextBox = true, |
191 | 192 | }); |
192 | 193 |
|
193 | | - window.Closed += (o, args) => |
| 194 | + window.Closed += (_, _) => |
194 | 195 | { |
195 | 196 | if (window.DialogResult?.PressedAcceptButton != true) |
196 | 197 | { |
@@ -229,5 +230,35 @@ private void BasicPanel_OnDisplayed(object? sender, EventArgs e) |
229 | 230 | { |
230 | 231 | _generationSettingsWindowService?.UpdateSummaryText(); |
231 | 232 | } |
| 233 | + |
| 234 | + private void TopLevel_OnOpened(object? sender, EventArgs e) |
| 235 | + { |
| 236 | + var val = Avalonia.VisualTree |
| 237 | + .VisualExtensions |
| 238 | + .GetTransformedBounds(this); |
| 239 | + |
| 240 | + // Fix window on smaller displays |
| 241 | + if (val is { Bounds.Height: < 750 }) |
| 242 | + { |
| 243 | + Height = val.Value.Bounds.Height - 100; |
| 244 | + var grid = this.Find<Grid>("MainGrid")!; |
| 245 | + grid.IsVisible = false; |
| 246 | + Task.Run(async () => |
| 247 | + { |
| 248 | + await Task.Delay(TimeSpan.FromSeconds(0.25)); |
| 249 | + Dispatcher.UIThread.Invoke(() => |
| 250 | + { |
| 251 | + grid.IsVisible = true; |
| 252 | + }); |
| 253 | + |
| 254 | + }); |
| 255 | + } |
| 256 | + |
| 257 | + if (Position.Y is < 0 and > -200) |
| 258 | + { |
| 259 | + var newPos = new PixelPoint(Position.X, 0); |
| 260 | + Position = newPos; |
| 261 | + } |
| 262 | + } |
232 | 263 | } |
233 | 264 |
|
0 commit comments