scroll bookmark works!
parent
111c6e395d
commit
e0f48e7841
|
@ -47,7 +47,7 @@ struct SelectedRibbonRequest: Queryable {
|
|||
var ret2 = try SelectedRibbon.fetchAll(db, sql: "SELECT * FROM selectedRibbon") // [Player]
|
||||
print(ret2)
|
||||
print("FETCH JOIN RIBBON")
|
||||
var ret = try Ribbon.fetchAll(db, sql: "SELECT ribbon.* FROM selectedRibbon join ribbon on selectedRibbon.ribbonId = ribbon.rowid") // [Player]
|
||||
var ret = try Ribbon.fetchAll(db, sql: "SELECT ribbon.* FROM selectedRibbon join ribbon on selectedRibbon.ribbonId = ribbon.rowid WHERE selectedRibbon.rowid = 1") // [Player]
|
||||
print(ret)
|
||||
return ret
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -15,7 +15,6 @@ let logger = Logger(subsystem: Bundle.main.bundleIdentifier!, category: "network
|
|||
// var curBook = "John"
|
||||
|
||||
extension UserDefaults {
|
||||
|
||||
public func optionalInt(forKey defaultName: String) -> Int? {
|
||||
let defaults = self
|
||||
if let value = defaults.value(forKey: defaultName) {
|
||||
|
@ -33,27 +32,7 @@ extension UserDefaults {
|
|||
}
|
||||
}
|
||||
|
||||
extension UINavigationController {
|
||||
override open func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
|
||||
let standard = UINavigationBarAppearance()
|
||||
standard.backgroundColor = .red //When you scroll or you have title (small one)
|
||||
|
||||
let compact = UINavigationBarAppearance()
|
||||
compact.backgroundColor = .green //compact-height
|
||||
|
||||
let scrollEdge = UINavigationBarAppearance()
|
||||
scrollEdge.backgroundColor = .blue //When you have large title
|
||||
|
||||
navigationBar.standardAppearance = standard
|
||||
navigationBar.compactAppearance = compact
|
||||
navigationBar.scrollEdgeAppearance = scrollEdge
|
||||
}
|
||||
}
|
||||
|
||||
struct BlueButtonStyle: ButtonStyle {
|
||||
|
||||
func makeBody(configuration: Self.Configuration) -> some View {
|
||||
configuration.label
|
||||
.font(.headline)
|
||||
|
@ -65,78 +44,12 @@ struct BlueButtonStyle: ButtonStyle {
|
|||
}
|
||||
}
|
||||
|
||||
struct PositionObservingView<Content: View>: View {
|
||||
var coordinateSpace: CoordinateSpace
|
||||
@Binding var position: CGPoint
|
||||
@ViewBuilder var content: () -> Content
|
||||
|
||||
var body: some View {
|
||||
content()
|
||||
.background(GeometryReader { geometry in
|
||||
Color.clear.preference(
|
||||
key: PreferenceKey.self,
|
||||
value: geometry.frame(in: coordinateSpace).origin
|
||||
)
|
||||
})
|
||||
.onPreferenceChange(PreferenceKey.self) { position in
|
||||
self.position = position
|
||||
// Print(self.position)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private extension PositionObservingView {
|
||||
struct PreferenceKey: SwiftUI.PreferenceKey {
|
||||
static var defaultValue: CGPoint { .zero }
|
||||
|
||||
static func reduce(value: inout CGPoint, nextValue: () -> CGPoint) {
|
||||
// No-op
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct OffsetObservingScrollView<Content: View>: View {
|
||||
var axes: Axis.Set = [.vertical]
|
||||
var showsIndicators = true
|
||||
@Binding var offset: CGPoint
|
||||
@ViewBuilder var content: () -> Content
|
||||
|
||||
// The name of our coordinate space doesn't have to be
|
||||
// stable between view updates (it just needs to be
|
||||
// consistent within this view), so we'll simply use a
|
||||
// plain UUID for it:
|
||||
private let coordinateSpaceName = UUID()
|
||||
|
||||
var body: some View {
|
||||
ScrollView(axes, showsIndicators: showsIndicators) {
|
||||
PositionObservingView(
|
||||
coordinateSpace: .named(coordinateSpaceName),
|
||||
position: Binding(
|
||||
get: { offset },
|
||||
set: { newOffset in
|
||||
offset = CGPoint(
|
||||
x: -newOffset.x,
|
||||
y: -newOffset.y
|
||||
)
|
||||
}
|
||||
),
|
||||
content: content
|
||||
)
|
||||
}
|
||||
.coordinateSpace(name: coordinateSpaceName)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
struct SwitchButton : View {
|
||||
var ribbon: Ribbon
|
||||
// var selectedRibbon: SelectedRibbon
|
||||
|
||||
@Binding var book : String
|
||||
@Binding var scrollView : UIScrollView?
|
||||
@Binding var scrollOffset : CGFloat
|
||||
@Binding var readOffset: CGPoint
|
||||
|
||||
@Environment(\.appDatabase) private var appDatabase
|
||||
|
||||
|
@ -146,23 +59,28 @@ struct SwitchButton : View {
|
|||
@State var saveOffset = CGFloat()
|
||||
var body: some View {
|
||||
// ForEach(sr) { selectedRibbon in
|
||||
Button(String(sr[0].id!) + " " + String(ribbon.scrollOffset),
|
||||
Button(String(sr[0].id!) + " " + String(ribbon.id!) + " " + String(ribbon.scrollOffset),
|
||||
// Button("meow",
|
||||
action: {
|
||||
Task {
|
||||
var selectedRibbon = sr[0]
|
||||
Print("SELECTED RIBBON", selectedRibbon)
|
||||
|
||||
scrollView!.contentOffset.y = CGFloat(2000)
|
||||
var saveScrollOffset = scrollView!.contentOffset.y
|
||||
|
||||
saveOffset = CGFloat(readOffset.y)
|
||||
Print("selected ribbon", selectedRibbon)
|
||||
Print("view ribbon", ribbon)
|
||||
var editedRibbon = selectedRibbon
|
||||
editedRibbon.scrollOffset = Int(saveScrollOffset)
|
||||
|
||||
_ = try await appDatabase.saveRibbon(&editedRibbon)
|
||||
_ = Print("editedRibbon", editedRibbon)
|
||||
_ = Print("ribbon", ribbon)
|
||||
|
||||
Print("ribbon offset saved")
|
||||
|
||||
if (selectedRibbon.id != ribbon.id!) {
|
||||
Print("switching")
|
||||
book = ribbon.book
|
||||
scrollOffset = CGFloat(ribbon.scrollOffset)
|
||||
scrollView!.contentOffset.y = CGFloat(ribbon.scrollOffset)
|
||||
// scrollOffset = CGFloat(1500)
|
||||
var updateSelectRibbon = SelectedRibbon(id: Int64(1), ribbonId: ribbon.id!)
|
||||
Print("Savingg")
|
||||
|
@ -174,15 +92,6 @@ struct SwitchButton : View {
|
|||
}
|
||||
}
|
||||
|
||||
Print("saveOffset", saveOffset)
|
||||
var editedRibbon = ribbon
|
||||
editedRibbon.scrollOffset = Int(saveOffset)
|
||||
|
||||
_ = try await appDatabase.saveRibbon(&editedRibbon)
|
||||
_ = Print("editedRibbon", editedRibbon)
|
||||
_ = Print("ribbon", ribbon)
|
||||
|
||||
Print("ribbon offset saved")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -256,10 +165,7 @@ struct ContentView: View {
|
|||
//ForEach(selectedRibbon) { sr in
|
||||
SwitchButton(ribbon: ribbon,
|
||||
book: $lines.book,
|
||||
scrollView:$thisScrollView,
|
||||
// selectedRibbon:selectedRibbon[0],
|
||||
scrollOffset: $scrollOffset,
|
||||
readOffset: $readOffset
|
||||
scrollView:$thisScrollView
|
||||
)
|
||||
.buttonStyle(BlueButtonStyle())
|
||||
//}
|
||||
|
@ -312,6 +218,7 @@ struct ContentView: View {
|
|||
|
||||
if (thisScrollView == nil) {
|
||||
thisScrollView = scrollView
|
||||
scrollView.contentOffset.y = CGFloat(selectedRibbon[0].scrollOffset)
|
||||
}
|
||||
|
||||
// scrollView.contentOffset.y = scrollOffset
|
||||
|
|
Loading…
Reference in New Issue