Add the Key button to the Favourites tab
Favourites gains the same info button the Stations list has, last in the trailing toolbar group so it sits to the right of Edit. It stays visible when the list is empty, because the legend explains the prices and labels before anything is starred — Trends and Edit still hide with no favourites. The legend itself is now one view, KeySheetView, lifted out of StationsView's private computed property so both tabs present the same sheet and cannot drift apart. It lives in StationsView.swift because the key's row types are file-private there, which keeps the Xcode project untouched. Stations passes its selected fuel's tint and Favourites its active tab's, so the station-label pump badge matches the rows on screen; everything else — detents, the two nested sheets, and the -showKeySheet / -showBestValueInfo / -showImportantInfo QA launch hooks — behaves exactly as before.
This commit is contained in:
@@ -48,6 +48,14 @@ struct FavouritesView: View {
|
||||
/// Trends sheet (price history chart) presentation state.
|
||||
@State private var showTrends = false
|
||||
|
||||
/// The Key (legend) sheet — the same sheet the Stations tab presents, opened
|
||||
/// from the info button beside Edit.
|
||||
@State private var showKey = false
|
||||
/// The Key sheet's two nested sheets, owned here because its rows set them
|
||||
/// (same arrangement as StationsView, so the QA hooks behave identically).
|
||||
@State private var showBestValueInfo = false
|
||||
@State private var showImportantInformation = false
|
||||
|
||||
/// Station picked for the More-info sheet (tap action = showDetails).
|
||||
@State private var detailStation: FuelStation?
|
||||
|
||||
@@ -206,8 +214,8 @@ struct FavouritesView: View {
|
||||
}
|
||||
.navigationTitle(String(localized: "Favourites", comment: "Favourites tab title"))
|
||||
.toolbar {
|
||||
if !favourites.isEmpty {
|
||||
ToolbarItemGroup(placement: .topBarTrailing) {
|
||||
ToolbarItemGroup(placement: .topBarTrailing) {
|
||||
if !favourites.isEmpty {
|
||||
Button {
|
||||
showTrends = true
|
||||
} label: {
|
||||
@@ -216,8 +224,25 @@ struct FavouritesView: View {
|
||||
}
|
||||
EditButton()
|
||||
}
|
||||
// Same button and same slot as the Stations tab: last in the
|
||||
// group, so it sits to the right of Edit. Shown even with no
|
||||
// favourites — the legend explains the prices and labels, which
|
||||
// matter before anything is starred.
|
||||
Button {
|
||||
showKey = true
|
||||
} label: {
|
||||
Image(systemName: "info.circle")
|
||||
}
|
||||
.accessibilityLabel(String(localized: "Key", comment: "Key button accessibility label"))
|
||||
}
|
||||
}
|
||||
.sheet(isPresented: $showKey) {
|
||||
KeySheetView(
|
||||
fuelTint: activeFuel.tintColor,
|
||||
showBestValueInfo: $showBestValueInfo,
|
||||
showImportantInformation: $showImportantInformation
|
||||
)
|
||||
}
|
||||
.sheet(isPresented: $showTrends) {
|
||||
TrendsView(
|
||||
favourites: favourites,
|
||||
|
||||
Reference in New Issue
Block a user