feat: show aspects and shipping in saved listings detail panel
Adds postage/shipping-cost display, item specifics (aspects) panel, and Relist button stub to the SavedListingsView detail panel. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -305,6 +305,26 @@
|
||||
</TextBlock.Inlines>
|
||||
</TextBlock>
|
||||
|
||||
<!-- Postage + shipping cost -->
|
||||
<TextBlock x:Name="DetailPostage"
|
||||
FontSize="12" Margin="0,4,0,0"
|
||||
Foreground="{DynamicResource MahApps.Brushes.Gray3}"
|
||||
Visibility="Collapsed"/>
|
||||
|
||||
<!-- Item specifics (aspects) -->
|
||||
<Border x:Name="DetailAspectsPanel" Visibility="Collapsed"
|
||||
Margin="0,8,0,0" Padding="8,6" CornerRadius="3"
|
||||
BorderBrush="{DynamicResource MahApps.Brushes.Gray7}" BorderThickness="1">
|
||||
<StackPanel>
|
||||
<TextBlock Text="Item Specifics" FontSize="11" FontWeight="SemiBold"
|
||||
Foreground="{DynamicResource MahApps.Brushes.Gray4}"
|
||||
Margin="0,0,0,4"/>
|
||||
<TextBlock x:Name="DetailAspectsText"
|
||||
FontSize="11" TextWrapping="Wrap"
|
||||
Foreground="{DynamicResource MahApps.Brushes.Gray3}"/>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<!-- Description -->
|
||||
<TextBlock Text="DESCRIPTION" Style="{StaticResource DetailLabel}"/>
|
||||
<Border BorderThickness="1" CornerRadius="4" Padding="10,8"
|
||||
@@ -371,6 +391,12 @@
|
||||
</StackPanel>
|
||||
</Button.Content>
|
||||
</Button>
|
||||
<Button x:Name="RelistBtn"
|
||||
Content="Relist on eBay"
|
||||
Click="RelistBtn_Click"
|
||||
Margin="0,0,8,6"
|
||||
Style="{DynamicResource MahApps.Styles.Button.Square.Accent}"
|
||||
Height="34" Padding="14,0" FontSize="12"/>
|
||||
</WrapPanel>
|
||||
|
||||
</StackPanel>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
@@ -16,6 +17,8 @@ public partial class SavedListingsView : UserControl
|
||||
private PriceLookupService? _priceLookup;
|
||||
private SavedListing? _selected;
|
||||
|
||||
public event Action<SavedListing>? RelistRequested;
|
||||
|
||||
// Edit mode working state
|
||||
private List<string> _editPhotoPaths = new();
|
||||
private List<string> _pendingDeletes = new();
|
||||
@@ -286,6 +289,42 @@ public partial class SavedListingsView : UserControl
|
||||
DetailConditionRow.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
// Postage + shipping
|
||||
if (listing.Postage == PostageOption.FreePostage)
|
||||
{
|
||||
DetailPostage.Text = "Postage: Free";
|
||||
DetailPostage.Visibility = Visibility.Visible;
|
||||
}
|
||||
else if (listing.Postage == PostageOption.CollectionOnly)
|
||||
{
|
||||
DetailPostage.Text = "Postage: Collection Only";
|
||||
DetailPostage.Visibility = Visibility.Visible;
|
||||
}
|
||||
else if (listing.ShippingCost > 0)
|
||||
{
|
||||
var label = listing.Postage.ToString()
|
||||
.Replace("RoyalMail", "Royal Mail ")
|
||||
.Replace("Tracked", "Tracked ");
|
||||
DetailPostage.Text = $"Postage: {label} — £{listing.ShippingCost:F2}";
|
||||
DetailPostage.Visibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
DetailPostage.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
// Aspects
|
||||
if (listing.Aspects.Count > 0)
|
||||
{
|
||||
DetailAspectsText.Text = string.Join(" • ",
|
||||
listing.Aspects.Select(kv => $"{kv.Key}: {kv.Value}"));
|
||||
DetailAspectsPanel.Visibility = Visibility.Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
DetailAspectsPanel.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
// Photos strip
|
||||
DetailPhotosPanel.Children.Clear();
|
||||
foreach (var path in listing.PhotoPaths)
|
||||
@@ -339,6 +378,8 @@ public partial class SavedListingsView : UserControl
|
||||
EmptyDetail.Visibility = Visibility.Visible;
|
||||
DetailPanel.Visibility = Visibility.Collapsed;
|
||||
DetailPanel.Opacity = 0;
|
||||
DetailPostage.Visibility = Visibility.Collapsed;
|
||||
DetailAspectsPanel.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
private static void OpenImage(string path)
|
||||
@@ -762,4 +803,9 @@ public partial class SavedListingsView : UserControl
|
||||
ClearDetail();
|
||||
RefreshList();
|
||||
}
|
||||
|
||||
private void RelistBtn_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
// TODO: implement in Task 5
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user