2024-05-29 13:02:08 -07:00
|
|
|
|
|
|
|
import GRDB
|
|
|
|
import GRDBQuery
|
|
|
|
import Foundation
|
|
|
|
import SwiftUI
|
|
|
|
|
|
|
|
struct NaviBar: View {
|
2024-05-31 10:04:43 -07:00
|
|
|
@ObservedObject var paneConnector: PaneConnector
|
2024-05-29 13:02:08 -07:00
|
|
|
|
|
|
|
@Query(RibbonRequest(dir: .prev, groupId: 1)) private var backRibbon: [Ribbon]
|
|
|
|
@Query(RibbonRequest(dir: .next, groupId: 1)) private var nextRibbon: [Ribbon]
|
2024-06-03 15:26:56 -07:00
|
|
|
|
2024-05-29 13:02:08 -07:00
|
|
|
@Query(SelectedRibbonRequest()) private var selectedRibbon: [Ribbon]
|
|
|
|
@Environment(\.appDatabase) private var appDatabase
|
|
|
|
|
2024-05-31 10:04:43 -07:00
|
|
|
|
2024-05-29 13:02:08 -07:00
|
|
|
var body: some View {
|
2024-06-07 08:24:33 -07:00
|
|
|
var iconSize = CGFloat(25)
|
2024-05-29 13:02:08 -07:00
|
|
|
VStack {
|
2024-06-07 08:24:33 -07:00
|
|
|
HStack(spacing: 30) {
|
2024-05-29 13:02:08 -07:00
|
|
|
BackArrow()
|
2024-06-07 08:24:33 -07:00
|
|
|
.frame(width: iconSize, height: iconSize)
|
2024-05-29 13:02:08 -07:00
|
|
|
.background(Color(red: 0.1, green: 0.1, blue: 0.1))
|
2024-06-03 15:26:56 -07:00
|
|
|
.if(paneConnector.hasMoved) { $0.foregroundColor(Color.black) }
|
|
|
|
.if(!paneConnector.hasMoved) { $0.foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4))) }
|
2024-05-29 13:02:08 -07:00
|
|
|
.onTapGesture {
|
2024-05-31 10:04:43 -07:00
|
|
|
Task {
|
|
|
|
var br = backRibbon[0]
|
2024-06-03 15:26:56 -07:00
|
|
|
var sr = selectedRibbon[0]
|
2024-05-31 10:04:43 -07:00
|
|
|
|
|
|
|
do {
|
2024-06-03 15:26:56 -07:00
|
|
|
if paneConnector.hasMoved {
|
2024-06-03 20:08:35 -07:00
|
|
|
print("has moved")
|
2024-06-03 15:26:56 -07:00
|
|
|
|
|
|
|
let updatedRibbon = try await createUndoState(selectedRibbon: sr,
|
2024-06-03 20:08:35 -07:00
|
|
|
appDatabase: appDatabase,
|
|
|
|
paneConnector: paneConnector)
|
2024-06-03 15:26:56 -07:00
|
|
|
goToRibbon(selectedRibbon: sr,
|
|
|
|
destRibbon: sr,
|
|
|
|
appDatabase: appDatabase,
|
|
|
|
paneConnector: paneConnector,
|
2024-06-03 20:08:35 -07:00
|
|
|
loading: false)
|
2024-06-03 15:26:56 -07:00
|
|
|
} else {
|
2024-06-03 20:08:35 -07:00
|
|
|
if backRibbon.count == 0 {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
2024-06-03 15:26:56 -07:00
|
|
|
try await appDatabase.undoRibbon(&sr)
|
|
|
|
|
|
|
|
goToRibbon(selectedRibbon: sr,
|
|
|
|
destRibbon: br,
|
|
|
|
appDatabase: appDatabase,
|
|
|
|
paneConnector: paneConnector,
|
2024-06-03 20:08:35 -07:00
|
|
|
loading: false)
|
2024-06-03 15:26:56 -07:00
|
|
|
}
|
|
|
|
|
2024-05-31 10:04:43 -07:00
|
|
|
} catch {
|
2024-06-03 20:08:35 -07:00
|
|
|
print("Back Arrow Error info: \(error)")
|
2024-05-31 10:04:43 -07:00
|
|
|
}
|
|
|
|
}
|
2024-05-29 13:02:08 -07:00
|
|
|
}
|
|
|
|
|
2024-06-07 08:24:33 -07:00
|
|
|
BookmarkIcon()
|
|
|
|
.frame(width: iconSize, height: iconSize)
|
|
|
|
.background(Color(red: 0.1, green: 0.1, blue: 0.1))
|
|
|
|
.foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4)))
|
|
|
|
|
2024-05-29 13:02:08 -07:00
|
|
|
ForwardArrow()
|
2024-06-07 08:24:33 -07:00
|
|
|
.frame(width: iconSize, height: iconSize)
|
2024-05-29 13:02:08 -07:00
|
|
|
.background(Color(red: 0.1, green: 0.1, blue: 0.1))
|
|
|
|
.foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4)))
|
2024-06-03 20:08:35 -07:00
|
|
|
.onTapGesture {
|
|
|
|
if nextRibbon.count == 0 {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
Task {
|
|
|
|
var sr = selectedRibbon[0]
|
|
|
|
var nr = nextRibbon[0]
|
|
|
|
try await appDatabase.redoRibbon(&sr)
|
|
|
|
|
|
|
|
goToRibbon(selectedRibbon: sr,
|
|
|
|
destRibbon: nr,
|
|
|
|
appDatabase: appDatabase,
|
|
|
|
paneConnector: paneConnector,
|
|
|
|
loading: false)
|
|
|
|
}
|
|
|
|
}
|
2024-06-07 08:24:33 -07:00
|
|
|
|
|
|
|
// Rectangle()
|
|
|
|
// .fill(Color(red: 0.1, green: 0.1, blue: 0.1))
|
|
|
|
// .frame(width: iconSize, height: iconSize)
|
|
|
|
|
|
|
|
// BackArrow()
|
|
|
|
// .frame(width: iconSize, height: iconSize)
|
|
|
|
// .background(Color(red: 0.1, green: 0.1, blue: 0.1))
|
|
|
|
|
|
|
|
// BookmarkIcon()
|
|
|
|
// .frame(width: iconSize, height: iconSize)
|
|
|
|
// .background(Color(red: 0.1, green: 0.1, blue: 0.1))
|
|
|
|
// .foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4)))
|
|
|
|
|
|
|
|
// ForwardArrow()
|
|
|
|
// .frame(width: iconSize, height: iconSize)
|
|
|
|
// .background(Color(red: 0.1, green: 0.1, blue: 0.1))
|
|
|
|
// .foregroundColor(Color(UIColor(red: 0.30, green: 0.30, blue: 0.30, alpha: 0.4)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-05-29 13:02:08 -07:00
|
|
|
}
|
|
|
|
.cornerRadius(5)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|