6
6
using Avalonia . Layout ;
7
7
using Avalonia . Media ;
8
8
using Avalonia . Platform . Storage ;
9
+ using FluentAvalonia . UI . Controls ;
9
10
using MsBox . Avalonia ;
10
- using UnityHubNative . Net ;
11
11
12
12
namespace UnityHubNative . Net ;
13
13
@@ -30,6 +30,9 @@ class MainWindow : Window
30
30
private static MenuItem s_removeFromListMenuItem ;
31
31
private static MenuItem s_revealInFileExplorerMenuItem ;
32
32
private static MenuItem s_openInDifferentVersionMenuItem ;
33
+ private static CheckBox s_transparentCheckbox ;
34
+ private static CheckBox s_acrylicCheckbox ;
35
+ private static DockPanel s_transparentPanel ;
33
36
34
37
public MainWindow ( object data )
35
38
{
@@ -39,11 +42,9 @@ public MainWindow(object data)
39
42
Content = CreateContent ( ) ;
40
43
ReloadEverything ( ) ;
41
44
SizeToContent = SizeToContent . WidthAndHeight ;
42
- TransparencyLevelHint =
43
- [
44
- WindowTransparencyLevel . Mica ,
45
- ] ;
46
- Background = Brushes . Transparent ;
45
+ SetupBackground ( ) ;
46
+ ActualThemeVariantChanged += ( _ , _ ) => SetupBackground ( ) ;
47
+
47
48
#if DEBUG
48
49
this . AttachDevTools ( ) ;
49
50
#endif
@@ -57,8 +58,9 @@ protected override void OnKeyDown(KeyEventArgs e)
57
58
{
58
59
if ( ! s_projectSearchBoxAutoComplete . IsKeyboardFocusWithin )
59
60
{
60
- s_projectSearchBoxAutoComplete . Text += e . KeyModifiers == KeyModifiers . Shift ? e . Key . ToString ( ) : e . Key . ToString ( ) . ToLower ( ) ;
61
61
s_projectSearchBoxAutoComplete . Focus ( ) ;
62
+ s_projectSearchBoxAutoComplete . Text += e . KeyModifiers == KeyModifiers . Shift ? e . Key . ToString ( ) : e . Key . ToString ( ) . ToLower ( ) ;
63
+ s_projectSearchBoxAutoComplete . CaretIndex = s_projectSearchBoxAutoComplete . Text . Length ;
62
64
e . Handled = true ;
63
65
}
64
66
return ;
@@ -84,6 +86,22 @@ protected override void OnOpened(EventArgs e)
84
86
s_unityProjectsParent . ContainerFromIndex ( 0 ) ! . Focus ( ) ;
85
87
}
86
88
89
+ void SetupBackground ( )
90
+ {
91
+ if ( UnityHubNativeNetApp . Config . transparent )
92
+ {
93
+ TransparencyLevelHint =
94
+ [
95
+ UnityHubNativeNetApp . Config . acrylic ? WindowTransparencyLevel . AcrylicBlur : WindowTransparencyLevel . Mica ,
96
+ WindowTransparencyLevel . Blur ,
97
+ ] ;
98
+ #if Windows
99
+
100
+ Background = Brushes . Transparent ;
101
+ #endif
102
+ }
103
+ }
104
+
87
105
private static void ReloadEverything ( )
88
106
{
89
107
UnityHubUtils . LoadAll ( ) ;
@@ -332,11 +350,72 @@ private static void ReloadEverything()
332
350
} ,
333
351
] )
334
352
] )
353
+ } ,
354
+ new TabItem
355
+ {
356
+ Header = "Options" ,
357
+ Content = new DockPanel
358
+ {
359
+ LastChildFill = false
360
+ } . AddChildren
361
+ ( [
362
+ new SettingsExpander
363
+ {
364
+ Header = new DockPanel
365
+ {
366
+ LastChildFill = false
367
+ } . AddChildren
368
+ ( [
369
+ new TextBlock
370
+ {
371
+ Text = "Transparent Window" ,
372
+ VerticalAlignment = VerticalAlignment . Center ,
373
+ } . SetDock ( Dock . Left ) ,
374
+ s_transparentCheckbox = new CheckBox
375
+ {
376
+ IsChecked = UnityHubNativeNetApp . Config . transparent ,
377
+ VerticalAlignment = VerticalAlignment . Center ,
378
+ } . OnCheckChanged ( OnTransparencyCheckboxChanged ) . SetDock ( Dock . Right ) ,
379
+ ] ) . SetTooltip ( "Makes the window transparent. Uses Mica on Windows and the desktop's blur on Linux.\n Needs restart to take effect." ) ,
380
+ } . SetDock ( Dock . Top ) . AddItems
381
+ ( [
382
+ s_transparentPanel = new DockPanel
383
+ {
384
+ IsEnabled = UnityHubNativeNetApp . Config . transparent ,
385
+ LastChildFill = false ,
386
+ } . AddChildren
387
+ ( [
388
+ new TextBlock
389
+ {
390
+ Text = "Acrilyc" ,
391
+ VerticalAlignment = VerticalAlignment . Center ,
392
+ } . SetTooltip ( "Use Acrylic blur. Only works on Windows.\n Needs restart to take effect." ) . SetDock ( Dock . Left ) ,
393
+ s_acrylicCheckbox = new CheckBox
394
+ {
395
+ IsChecked = UnityHubNativeNetApp . Config . transparent ,
396
+ VerticalAlignment = VerticalAlignment . Center ,
397
+ } . OnCheckChanged ( OnAcrylicCheckboxChanged ) . SetDock ( Dock . Right )
398
+ ] )
399
+ ] )
400
+ ] )
335
401
}
336
402
] )
337
403
] )
338
404
] ) ;
339
405
406
+ private static void OnAcrylicCheckboxChanged ( )
407
+ {
408
+ UnityHubNativeNetApp . Config . acrylic = ! UnityHubNativeNetApp . Config . acrylic ;
409
+ UnityHubNativeNetApp . SaveConfig ( UnityHubNativeNetApp . Config ) ;
410
+ }
411
+
412
+ private static void OnTransparencyCheckboxChanged ( )
413
+ {
414
+ UnityHubNativeNetApp . Config . transparent = ! UnityHubNativeNetApp . Config . transparent ;
415
+ UnityHubNativeNetApp . SaveConfig ( UnityHubNativeNetApp . Config ) ;
416
+ s_transparentPanel . IsEnabled = UnityHubNativeNetApp . Config . transparent ;
417
+ }
418
+
340
419
private static Task < IEnumerable < object > > PopulateUnityProjectSearchAutoCompletion ( string ? filter , CancellationToken _ )
341
420
{
342
421
if ( filter == null )
0 commit comments