feat(ui): unified tab bar with icons on desktop and mobile

Replace the mobile-only custom bottom Grid nav bar with a single styled
TabStrip that works the same on both platforms: icon + label headers,
gray background, UniformGrid for equal-width columns.
Also adds the 📷 scan button in the Send address field (visible on mobile,
triggers ScanQrCommand wired in the previous commit).
This commit is contained in:
2026-06-15 10:19:38 +02:00
parent bfee0dde03
commit 53ecd701c0
+17 -63
View File
@@ -185,7 +185,7 @@
</ScrollViewer>
<!-- ============ PANNELLO WALLET ============ -->
<Grid Grid.Row="1" RowDefinitions="Auto,*,Auto" IsVisible="{Binding IsWalletOpen}" Margin="16">
<Grid Grid.Row="1" RowDefinitions="Auto,*" IsVisible="{Binding IsWalletOpen}" Margin="16">
<!-- Testata: saldo + rete. Connetti/sincronizza è automatico; chiudi
wallet è in File. Lo stato connessione è nella barra in basso. -->
@@ -201,10 +201,9 @@
TabStripPlacement="Top">
<TabControl.Styles>
<!-- Su mobile nascondiamo il TabStrip integrato (barra custom sotto) -->
<Style Selector="TabStrip">
<Setter Property="IsVisible" Value="{Binding !IsMobile}"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="Background" Value="{DynamicResource SystemControlBackgroundChromeMediumBrush}"/>
<Setter Property="ItemsPanel">
<ItemsPanelTemplate>
<UniformGrid Rows="1"/>
@@ -215,7 +214,7 @@
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Padding" Value="6,8"/>
<Setter Property="Padding" Value="4,8"/>
</Style>
</TabControl.Styles>
@@ -224,7 +223,7 @@
<TabItem.Header>
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="≡" FontSize="19" HorizontalAlignment="Center"
IsVisible="{Binding IsMobile}"/>
/>
<TextBlock Text="{Binding Loc[tab.history]}" FontSize="12"
HorizontalAlignment="Center"/>
</StackPanel>
@@ -273,7 +272,7 @@
<TabItem.Header>
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="↑" FontSize="19" HorizontalAlignment="Center"
IsVisible="{Binding IsMobile}"/>
/>
<TextBlock Text="{Binding Loc[tab.send]}" FontSize="12"
HorizontalAlignment="Center"/>
</StackPanel>
@@ -292,8 +291,16 @@
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
<TextBox PlaceholderText="{Binding Loc[send.to]}" Text="{Binding SendTo}"
<Grid ColumnDefinitions="*,Auto">
<TextBox Grid.Column="0"
PlaceholderText="{Binding Loc[send.to]}" Text="{Binding SendTo}"
FontFamily="monospace"/>
<Button Grid.Column="1" Margin="6,0,0,0" Padding="10,0"
Content="📷" FontSize="20"
IsVisible="{Binding IsMobile}"
Command="{Binding ScanQrCommand}"
ToolTip.Tip="{Binding Loc[send.scan]}"/>
</Grid>
<!-- Desktop: riga amount + fee in 4 colonne -->
<Grid ColumnDefinitions="*,Auto,Auto,Auto" IsVisible="{Binding IsDesktop}">
<TextBox Grid.Column="0" PlaceholderText="{Binding Loc[send.amount]}"
@@ -338,7 +345,7 @@
<TabItem.Header>
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="↓" FontSize="19" HorizontalAlignment="Center"
IsVisible="{Binding IsMobile}"/>
/>
<TextBlock Text="{Binding Loc[tab.receive]}" FontSize="12"
HorizontalAlignment="Center"/>
</StackPanel>
@@ -380,7 +387,7 @@
<TabItem.Header>
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="⊙" FontSize="19" HorizontalAlignment="Center"
IsVisible="{Binding IsMobile}"/>
/>
<TextBlock Text="{Binding Loc[tab.addresses]}" FontSize="12"
HorizontalAlignment="Center"/>
</StackPanel>
@@ -438,7 +445,7 @@
<TabItem.Header>
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="⊕" FontSize="19" HorizontalAlignment="Center"
IsVisible="{Binding IsMobile}"/>
/>
<TextBlock Text="{Binding Loc[tab.contacts]}" FontSize="12"
HorizontalAlignment="Center"/>
</StackPanel>
@@ -510,59 +517,6 @@
</TabControl>
<!-- Barra di navigazione custom mobile: 5 colonne uguali, sempre centrata -->
<Grid Grid.Row="2"
ColumnDefinitions="*,*,*,*,*"
IsVisible="{Binding IsMobile}"
Background="{DynamicResource SystemControlBackgroundChromeMediumBrush}"
Margin="-16,4,-16,0">
<Button Grid.Column="0"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
Background="Transparent" Padding="4,8"
Command="{Binding SelectTabCommand}" CommandParameter="0">
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="≡" FontSize="19" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding Loc[tab.history]}" FontSize="11" HorizontalAlignment="Center"/>
</StackPanel>
</Button>
<Button Grid.Column="1"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
Background="Transparent" Padding="4,8"
Command="{Binding SelectTabCommand}" CommandParameter="1">
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="↑" FontSize="19" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding Loc[tab.send]}" FontSize="11" HorizontalAlignment="Center"/>
</StackPanel>
</Button>
<Button Grid.Column="2"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
Background="Transparent" Padding="4,8"
Command="{Binding SelectTabCommand}" CommandParameter="2">
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="↓" FontSize="19" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding Loc[tab.receive]}" FontSize="11" HorizontalAlignment="Center"/>
</StackPanel>
</Button>
<Button Grid.Column="3"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
Background="Transparent" Padding="4,8"
Command="{Binding SelectTabCommand}" CommandParameter="3">
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="⊙" FontSize="19" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding Loc[tab.addresses]}" FontSize="11" HorizontalAlignment="Center"/>
</StackPanel>
</Button>
<Button Grid.Column="4"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Center"
Background="Transparent" Padding="4,8"
Command="{Binding SelectTabCommand}" CommandParameter="4">
<StackPanel Spacing="2" HorizontalAlignment="Center">
<TextBlock Text="⊕" FontSize="19" HorizontalAlignment="Center"/>
<TextBlock Text="{Binding Loc[tab.contacts]}" FontSize="11" HorizontalAlignment="Center"/>
</StackPanel>
</Button>
</Grid>
</Grid>
<!-- Barra di stato: messaggio a sinistra, stato connessione a destra.