gloss-ios/NaviBar.swift

117 lines
4.9 KiB
Swift
Raw Normal View History

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
var sr = selectedRibbon
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[0],
2024-06-03 20:08:35 -07:00
appDatabase: appDatabase,
paneConnector: paneConnector)
goToRibbon(selectedRibbon: sr[0],
destRibbon: sr[0],
2024-06-03 15:26:56 -07:00
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
}
try await appDatabase.undoRibbon(&sr[0])
2024-06-03 15:26:56 -07:00
goToRibbon(selectedRibbon: sr[0],
destRibbon: br[0],
2024-06-03 15:26:56 -07:00
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)
}
}
}