Skip to content

Commit d2ea437

Browse files
committed
feat: Better MainWindow layout
1 parent 77d54a1 commit d2ea437

4 files changed

Lines changed: 120 additions & 197 deletions

File tree

Nickvision.Application.WinUI/Views/MainWindow.xaml

Lines changed: 70 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
<Grid x:Name="MainGrid" Loaded="Window_Loaded">
1616
<Grid.RowDefinitions>
17-
<RowDefinition Height="Auto"/>
1817
<RowDefinition Height="Auto"/>
1918
<RowDefinition Height="Auto"/>
2019
<RowDefinition Height="*"/>
@@ -30,126 +29,13 @@
3029
</TitleBar.Content>
3130
</TitleBar>
3231

33-
<Grid Grid.Row="1">
34-
<Grid.ColumnDefinitions>
35-
<ColumnDefinition Width="Auto"/>
36-
<ColumnDefinition Width="*"/>
37-
<ColumnDefinition Width="Auto"/>
38-
</Grid.ColumnDefinitions>
39-
40-
<MenuBar Grid.Column="0">
41-
<MenuBarItem x:Name="MenuFile">
42-
<MenuFlyoutItem x:Name="MenuOpenFolder" Click="OpenFolder">
43-
<MenuFlyoutItem.Icon>
44-
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE838;"/>
45-
</MenuFlyoutItem.Icon>
46-
47-
<MenuFlyoutItem.KeyboardAccelerators>
48-
<KeyboardAccelerator Modifiers="Control" Key="O"/>
49-
</MenuFlyoutItem.KeyboardAccelerators>
50-
</MenuFlyoutItem>
51-
52-
<MenuFlyoutItem x:Name="MenuCloseFolder" Click="CloseFolder">
53-
<MenuFlyoutItem.Icon>
54-
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE8F6;"/>
55-
</MenuFlyoutItem.Icon>
56-
57-
<MenuFlyoutItem.KeyboardAccelerators>
58-
<KeyboardAccelerator Modifiers="Control" Key="W"/>
59-
</MenuFlyoutItem.KeyboardAccelerators>
60-
</MenuFlyoutItem>
61-
62-
<MenuFlyoutSeparator/>
63-
64-
<MenuFlyoutItem x:Name="MenuExit" Click="Exit">
65-
<MenuFlyoutItem.Icon>
66-
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE711;"/>
67-
</MenuFlyoutItem.Icon>
68-
69-
<MenuFlyoutItem.KeyboardAccelerators>
70-
<KeyboardAccelerator Modifiers="Menu" Key="F4"/>
71-
</MenuFlyoutItem.KeyboardAccelerators>
72-
</MenuFlyoutItem>
73-
</MenuBarItem>
74-
75-
<MenuBarItem x:Name="MenuEdit">
76-
<MenuFlyoutItem x:Name="MenuSettings" Click="Settings">
77-
<MenuFlyoutItem.Icon>
78-
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE713;"/>
79-
</MenuFlyoutItem.Icon>
80-
81-
<MenuFlyoutItem.KeyboardAccelerators>
82-
<KeyboardAccelerator Modifiers="Control" Key="Decimal"/>
83-
</MenuFlyoutItem.KeyboardAccelerators>
84-
</MenuFlyoutItem>
85-
</MenuBarItem>
86-
87-
<MenuBarItem x:Name="MenuHelp">
88-
<MenuFlyoutItem x:Name="MenuCheckForUpdates" Click="CheckForUpdates">
89-
<MenuFlyoutItem.Icon>
90-
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE895;"/>
91-
</MenuFlyoutItem.Icon>
92-
</MenuFlyoutItem>
93-
94-
<MenuFlyoutSeparator/>
95-
96-
<MenuFlyoutItem x:Name="MenuGitHubRepo" Click="GitHubRepo">
97-
<MenuFlyoutItem.Icon>
98-
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE943;"/>
99-
</MenuFlyoutItem.Icon>
100-
</MenuFlyoutItem>
101-
102-
<MenuFlyoutItem x:Name="MenuReportABug" Click="ReportABug">
103-
<MenuFlyoutItem.Icon>
104-
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xEBE8;"/>
105-
</MenuFlyoutItem.Icon>
106-
</MenuFlyoutItem>
107-
108-
<MenuFlyoutItem x:Name="MenuDiscussions" Click="Discussions">
109-
<MenuFlyoutItem.Icon>
110-
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE8BD;"/>
111-
</MenuFlyoutItem.Icon>
112-
</MenuFlyoutItem>
113-
114-
<MenuFlyoutSeparator/>
115-
116-
<MenuFlyoutItem x:Name="MenuAbout" Click="About">
117-
<MenuFlyoutItem.Icon>
118-
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE897;"/>
119-
</MenuFlyoutItem.Icon>
120-
121-
<MenuFlyoutItem.KeyboardAccelerators>
122-
<KeyboardAccelerator Modifiers="None" Key="F1"/>
123-
</MenuFlyoutItem.KeyboardAccelerators>
124-
</MenuFlyoutItem>
125-
</MenuBarItem>
126-
</MenuBar>
127-
128-
<Button x:Name="BtnProgress" Grid.Column="2" HorizontalAlignment="Right" Margin="0,0,6,0" Visibility="Collapsed">
129-
<Button.Content>
130-
<FontIcon x:Name="IconProgress" FontSize="18" FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE896;"/>
131-
</Button.Content>
132-
133-
<Button.Flyout>
134-
<Flyout x:Name="FlyoutProgress" Placement="Bottom">
135-
<nickvision:StatusPage x:Name="StsProgress" IsCompact="True">
136-
<nickvision:StatusPage.Child>
137-
<ProgressBar x:Name="BarProgress" Width="200"/>
138-
</nickvision:StatusPage.Child>
139-
</nickvision:StatusPage>
140-
</Flyout>
141-
</Button.Flyout>
142-
</Button>
143-
</Grid>
144-
145-
<InfoBar x:Name="InfoBar" Grid.Row="2" Margin="6,0,6,6" IsOpen="False">
32+
<InfoBar x:Name="InfoBar" Grid.Row="1" IsOpen="False">
14633
<InfoBar.ActionButton>
14734
<Button x:Name="BtnInfoBar" HorizontalAlignment="Right" Visibility="Collapsed"/>
14835
</InfoBar.ActionButton>
14936
</InfoBar>
15037

151-
<NavigationView x:Name="NavView" Grid.Row="3" PaneDisplayMode="LeftCompact" SelectionChanged="NavView_SelectionChanged"
152-
IsBackButtonVisible="Collapsed" IsPaneToggleButtonVisible="False" IsSettingsVisible="False">
38+
<NavigationView x:Name="NavView" Grid.Row="2" SelectionChanged="NavView_SelectionChanged" IsBackButtonVisible="Collapsed" IsPaneToggleButtonVisible="False" IsSettingsVisible="False">
15339
<NavigationView.MenuItems>
15440
<NavigationViewItem x:Name="NavItemHome" Tag="Home" IsSelected="True">
15541
<NavigationViewItem.Icon>
@@ -169,6 +55,74 @@
16955
</NavigationView.MenuItems>
17056

17157
<NavigationView.FooterMenuItems>
58+
<NavigationViewItem x:Name="NavItemUpdates" Visibility="Collapsed" SelectsOnInvoked="False" Tapped="NavItem_Tapped">
59+
<NavigationViewItem.Icon>
60+
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xEBD3;"/>
61+
</NavigationViewItem.Icon>
62+
63+
<NavigationViewItem.InfoBadge>
64+
<InfoBadge Style="{StaticResource AttentionDotInfoBadgeStyle}"/>
65+
</NavigationViewItem.InfoBadge>
66+
67+
<FlyoutBase.AttachedFlyout>
68+
<Flyout x:Name="FlyoutProgress">
69+
<nickvision:StatusPage x:Name="StsProgress" IsCompact="True">
70+
<nickvision:StatusPage.Child>
71+
<ProgressBar x:Name="BarProgress" Width="200"/>
72+
</nickvision:StatusPage.Child>
73+
</nickvision:StatusPage>
74+
</Flyout>
75+
</FlyoutBase.AttachedFlyout>
76+
</NavigationViewItem>
77+
78+
<NavigationViewItem x:Name="NavItemHelp" SelectsOnInvoked="False" Tapped="NavItem_Tapped">
79+
<NavigationViewItem.Icon>
80+
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE897;"/>
81+
</NavigationViewItem.Icon>
82+
83+
<FlyoutBase.AttachedFlyout>
84+
<MenuFlyout>
85+
<MenuFlyoutItem x:Name="MenuCheckForUpdates" Click="CheckForUpdates">
86+
<MenuFlyoutItem.Icon>
87+
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE895;"/>
88+
</MenuFlyoutItem.Icon>
89+
</MenuFlyoutItem>
90+
91+
<MenuFlyoutSeparator/>
92+
93+
<MenuFlyoutItem x:Name="MenuGitHubRepo" Click="GitHubRepo">
94+
<MenuFlyoutItem.Icon>
95+
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE943;"/>
96+
</MenuFlyoutItem.Icon>
97+
</MenuFlyoutItem>
98+
99+
<MenuFlyoutItem x:Name="MenuReportABug" Click="ReportABug">
100+
<MenuFlyoutItem.Icon>
101+
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xEBE8;"/>
102+
</MenuFlyoutItem.Icon>
103+
</MenuFlyoutItem>
104+
105+
<MenuFlyoutItem x:Name="MenuDiscussions" Click="Discussions">
106+
<MenuFlyoutItem.Icon>
107+
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE8BD;"/>
108+
</MenuFlyoutItem.Icon>
109+
</MenuFlyoutItem>
110+
111+
<MenuFlyoutSeparator/>
112+
113+
<MenuFlyoutItem x:Name="MenuAbout" Click="About">
114+
<MenuFlyoutItem.Icon>
115+
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE946;"/>
116+
</MenuFlyoutItem.Icon>
117+
118+
<MenuFlyoutItem.KeyboardAccelerators>
119+
<KeyboardAccelerator Modifiers="None" Key="F1"/>
120+
</MenuFlyoutItem.KeyboardAccelerators>
121+
</MenuFlyoutItem>
122+
</MenuFlyout>
123+
</FlyoutBase.AttachedFlyout>
124+
</NavigationViewItem>
125+
172126
<NavigationViewItem x:Name="NavItemSettings" Tag="Settings">
173127
<NavigationViewItem.Icon>
174128
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}" Glyph="&#xE713;"/>

Nickvision.Application.WinUI/Views/MainWindow.xaml.cs

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Microsoft.UI.Windowing;
22
using Microsoft.UI.Xaml;
33
using Microsoft.UI.Xaml.Controls;
4+
using Microsoft.UI.Xaml.Controls.Primitives;
45
using Microsoft.UI.Xaml.Input;
56
using Microsoft.Windows.Storage.Pickers;
67
using Nickvision.Application.Shared.Controllers;
@@ -83,20 +84,15 @@ public MainWindow(MainWindowController controller)
8384
AppWindow.Title = _controller.AppInfo.ShortName;
8485
TitleBar.Title = _controller.AppInfo.ShortName;
8586
TitleBar.Subtitle = _controller.AppInfo.Version!.IsPreview ? _controller.Translator._("Preview") : string.Empty;
86-
MenuFile.Title = _controller.Translator._("File");
87-
MenuOpenFolder.Text = _controller.Translator._("Open Folder");
88-
MenuCloseFolder.Text = _controller.Translator._("Close Folder");
89-
MenuExit.Text = _controller.Translator._("Exit");
90-
MenuEdit.Title = _controller.Translator._("Edit");
91-
MenuSettings.Text = _controller.Translator._("Settings");
92-
MenuHelp.Title = _controller.Translator._("Help");
87+
NavItemHome.Content = _controller.Translator._("Home");
88+
NavItemFolder.Content = _controller.Translator._("Folder");
89+
NavItemUpdates.Content = _controller.Translator._("Updating");
90+
NavItemHelp.Content = _controller.Translator._("Help");
9391
MenuCheckForUpdates.Text = _controller.Translator._("Check for Updates");
9492
MenuGitHubRepo.Text = _controller.Translator._("GitHub Repo");
9593
MenuReportABug.Text = _controller.Translator._("Report a Bug");
9694
MenuDiscussions.Text = _controller.Translator._("Discussions");
9795
MenuAbout.Text = _controller.Translator._("About {0}", _controller.AppInfo.ShortName!);
98-
NavItemHome.Content = _controller.Translator._("Home");
99-
NavItemFolder.Content = _controller.Translator._("Folder");
10096
NavItemSettings.Content = _controller.Translator._("Settings");
10197
StatusHome.Title = _controller.Greeting;
10298
StatusHome.Description = _controller.Translator._("Open a folder to get started");
@@ -147,6 +143,8 @@ private void NavView_SelectionChanged(NavigationView sender, NavigationViewSelec
147143
}
148144
}
149145

146+
private void NavItem_Tapped(object sender, TappedRoutedEventArgs e) => FlyoutBase.ShowAttachedFlyout(sender as FrameworkElement);
147+
150148
private void Controller_AppNotificationSent(object? sender, AppNotificationSentEventArgs args)
151149
{
152150
if (_notificationClickHandler is not null)
@@ -249,10 +247,6 @@ private async void OpenFolder(object sender, RoutedEventArgs e)
249247

250248
private void CloseFolder(object sender, RoutedEventArgs e) => _controller.CloseFolder();
251249

252-
private void Exit(object sender, RoutedEventArgs e) => Close();
253-
254-
private void Settings(object sender, RoutedEventArgs e) => NavItemSettings.IsSelected = true;
255-
256250
private async void CheckForUpdates(object sender, RoutedEventArgs e)
257251
{
258252
MenuCheckForUpdates.IsEnabled = false;
@@ -286,14 +280,11 @@ private async void WindowsUpdate(object sender, RoutedEventArgs e)
286280
if (p.Completed)
287281
{
288282
FlyoutProgress.Hide();
289-
BtnProgress.Visibility = Visibility.Collapsed;
290-
ToolTipService.SetToolTip(BtnProgress, string.Empty);
283+
NavItemUpdates.Visibility = Visibility.Collapsed;
291284
return;
292285
}
293286
var message = _controller.Translator._("Downloading update: {0}%", Math.Round(p.Percentage * 100));
294-
BtnProgress.Visibility = Visibility.Visible;
295-
ToolTipService.SetToolTip(BtnProgress, message);
296-
IconProgress.Glyph = "\uE896";
287+
NavItemUpdates.Visibility = Visibility.Visible;
297288
StsProgress.Description = message;
298289
BarProgress.Value = p.Percentage * 100;
299290
});

0 commit comments

Comments
 (0)