Public Access
Give the application a settings area built from what really exists
This commit is contained in:
1 parent
422d5ca10e
commit
c8507b44fe
42 files changed
+3810
-1083
No files matched your search
@@ -91,12 +91,13 @@
|
||||
|
||||
<Grid RowDefinitions="Auto,*,Auto,Auto">
|
||||
|
||||
<views:TitleBar Grid.Row="0" />
|
||||
<views:TitleBar Grid.Row="0" IsVisible="{Binding !IsSettingsMode}" />
|
||||
|
||||
<Panel Grid.Row="1">
|
||||
|
||||
<!-- The unlocked application. -->
|
||||
<Grid ColumnDefinitions="Auto,*" IsVisible="{Binding IsUnlocked}">
|
||||
<Grid ColumnDefinitions="Auto,*" IsVisible="{Binding IsUnlocked}"
|
||||
IsEnabled="{Binding !IsSettingsMode}">
|
||||
|
||||
<!--
|
||||
The window's own furniture, at 255 pixels — see NavRail.axaml's own v5b remark. It no longer sits
|
||||
@@ -176,13 +177,19 @@
|
||||
by a toggle inside the screen — see ShowFiles, and the rail's own switcher segment that
|
||||
calls it now; see NavRail.axaml.
|
||||
|
||||
Deliberately not given the session shell above: a bucket is not a host, has no terminal tab
|
||||
Deliberately not given the full session shell above: a bucket is not a host, has no terminal tab
|
||||
to be the other end of a cross-surface button, and pins nothing the sidebar's QUICK ACCESS
|
||||
could show. Wave B's own scope is the terminal and SFTP surfaces; S3 stays the plain screen it
|
||||
already was, and this is the recorded reason rather than an oversight.
|
||||
could show — so no tab row, no host header, no status bar and no sidebar. Wave B's own scope
|
||||
was the terminal and SFTP surfaces and left this plain; v5c-3 gives it the session shell's own
|
||||
LOOK without its machinery — a 26px padded column and the same bordered, radius-12 container —
|
||||
since design-notes/v5c-fidelity-notes.md calls for the fidelity pass here too, and there is
|
||||
nothing this screen does that needs the parts still withheld.
|
||||
-->
|
||||
<Panel IsVisible="{Binding IsBucketsScreen}">
|
||||
<views:TransfersScreen DataContext="{Binding Transfers}" />
|
||||
<Border Margin="26" BorderBrush="{StaticResource Border}" BorderThickness="1" CornerRadius="12"
|
||||
ClipToBounds="True">
|
||||
<views:TransfersScreen DataContext="{Binding Transfers}" />
|
||||
</Border>
|
||||
</Panel>
|
||||
|
||||
<!-- ============ KEYCHAIN ============ -->
|
||||
@@ -217,30 +224,21 @@
|
||||
<views:LogsScreen x:Name="LogsPane" DataContext="{Binding LogsScreen}" />
|
||||
</Panel>
|
||||
|
||||
<!-- ============ VAULTS ============ -->
|
||||
<!--
|
||||
Wrapped, for the reason the keychain and transfers screens are: the visibility is the shell's
|
||||
business and the data context is the vaults view model, and both on one element would resolve
|
||||
IsVaultsScreen against a type that does not have it.
|
||||
v5c-2: the VAULTS panel that used to live here is gone. ShellScreen.Vaults now only ever shows
|
||||
through settings mode's own SettingsVaultsPage — see MainWindowViewModel.ShowScreen, which
|
||||
redirects it into EnterSettings before Screen is ever set — so IsVaultsScreen being true also
|
||||
means IsSettingsMode is true, and this whole page-area Panel (bound to !IsSettingsMode, above)
|
||||
is already hidden behind SettingsView by then. A Panel here would never have been drawn.
|
||||
|
||||
Bound to Vaults, which is the vaults themselves and the people in them — not to Vault, which
|
||||
is one vault's contents and is what the keychain and hosts screens above draw.
|
||||
v5c-3: IMPORT left this Panel the same way, and for the same reason. Import.dc.html draws the
|
||||
importer inside the settings chrome — SettingsNav lit on Preferences, a "Back to preferences"
|
||||
titlebar rather than the ordinary rail and titlebar this Panel belongs to — so ImportScreen now
|
||||
lives in SettingsView.axaml behind MainWindowViewModel.IsImportOpen, beside the seven settings
|
||||
pages rather than among the screens here. See ShowScreen's own translation of
|
||||
ShellScreen.Import for what still reaches it: the Preferences page's own "OPEN IMPORTER" row,
|
||||
and anything else that names the same destination.
|
||||
-->
|
||||
<Panel IsVisible="{Binding IsVaultsScreen}">
|
||||
<views:VaultsScreen DataContext="{Binding Vaults}" />
|
||||
</Panel>
|
||||
|
||||
<!-- ============ PREFERENCES ============ -->
|
||||
<views:PreferencesScreen IsVisible="{Binding IsPreferencesScreen}" />
|
||||
|
||||
<!-- ============ IMPORT ============ -->
|
||||
<!--
|
||||
Reached from preferences rather than from the rail; see ShellScreen.Import. Wrapped, like
|
||||
the others whose data context is their own view model.
|
||||
-->
|
||||
<Panel IsVisible="{Binding IsImportScreen}">
|
||||
<views:ImportScreen x:Name="ImportPane" DataContext="{Binding ImportScreen}" />
|
||||
</Panel>
|
||||
|
||||
</Panel>
|
||||
|
||||
@@ -319,6 +317,22 @@
|
||||
</Panel>
|
||||
</Grid>
|
||||
|
||||
<!--
|
||||
v5c: the settings mode, which replaces the titlebar above and everything in this Panel below it with
|
||||
its own — see SettingsView.axaml and TitleBar's own IsVisible next to it in this file. Later in the
|
||||
Panel than the unlocked Grid, on the same reasoning the setup Border below gives for its own
|
||||
position: Avalonia z-order draws a later sibling over an earlier one, and SettingsView's own
|
||||
Background is opaque, so it covers the rail and the page area completely rather than needing them
|
||||
hidden out from under it. The unlocked Grid keeps IsEnabled bound to the negation above so a Tab
|
||||
press cannot walk keyboard focus into a control this mode has covered.
|
||||
|
||||
Earlier than the palette and the host-key decision, both further down this same Panel, so either can
|
||||
still interrupt settings mode exactly as it already interrupts every other screen — a host key that
|
||||
changes while the sync loop is running does not stop being worth answering because the window
|
||||
happens to be showing Settings.
|
||||
-->
|
||||
<views:SettingsView IsVisible="{Binding IsSettingsMode}" />
|
||||
|
||||
<!--
|
||||
Setup and unlock. Later in the Panel, so it is above the application content in Avalonia's z-order —
|
||||
which covers Avalonia-drawn content and nothing else. The terminal is collapsed rather than covered;
|
||||
@@ -476,11 +490,18 @@
|
||||
no DataContext yields UnsetValue, IsVisible falls back to true, and the previewer would show a banner
|
||||
announcing an update that does not exist.
|
||||
-->
|
||||
<views:UpdateBanner Grid.Row="2"
|
||||
DataContext="{Binding Updates}"
|
||||
IsVisible="{Binding IsBannerShowing, FallbackValue=False}" />
|
||||
<!--
|
||||
v5c: wrapped rather than given a third condition of its own — UpdateBanner sets its own DataContext to
|
||||
UpdateViewModel on this same element, so a binding against IsSettingsMode has to live on an ancestor
|
||||
whose context is still the shell. The design's settings titlebar has no room for this strip; hiding it
|
||||
here rather than teaching the banner about a mode it otherwise has no reason to know about.
|
||||
-->
|
||||
<Panel Grid.Row="2" IsVisible="{Binding !IsSettingsMode}">
|
||||
<views:UpdateBanner DataContext="{Binding Updates}"
|
||||
IsVisible="{Binding IsBannerShowing, FallbackValue=False}" />
|
||||
</Panel>
|
||||
|
||||
<views:StatusBar Grid.Row="3" />
|
||||
<views:StatusBar Grid.Row="3" IsVisible="{Binding !IsSettingsMode}" />
|
||||
|
||||
</Grid>
|
||||
|
||||
|
||||
Reference in new issue
Block a user