mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-10 20:57:21 -04:00
Multi select improvements
This commit is contained in:
parent
a289dbc9da
commit
909043d38f
@ -44,8 +44,27 @@ enum LibraryState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final class LibraryViewModel: ObservableObject {
|
final class LibraryViewModel: ObservableObject {
|
||||||
@Published var selectedZimFile: ZimFile?
|
@Published var selectedZimFile: ZimFile? {
|
||||||
@Published var multiSelectedZimFiles = Set<ZimFile>()
|
didSet {
|
||||||
|
if let selectedZimFile {
|
||||||
|
multiSelectedZimFiles = Set([selectedZimFile])
|
||||||
|
} else {
|
||||||
|
multiSelectedZimFiles.removeAll()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Published var multiSelectedZimFiles = Set<ZimFile>() {
|
||||||
|
didSet {
|
||||||
|
switch multiSelectedZimFiles.count {
|
||||||
|
case 0 where selectedZimFile != nil:
|
||||||
|
selectedZimFile = nil
|
||||||
|
case 1 where selectedZimFile == nil:
|
||||||
|
selectedZimFile = multiSelectedZimFiles.first
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@MainActor @Published private(set) var error: Error?
|
@MainActor @Published private(set) var error: Error?
|
||||||
/// Note: due to multiple instances of LibraryViewModel,
|
/// Note: due to multiple instances of LibraryViewModel,
|
||||||
/// this `state` should not be changed directly, modify the `process.state` instead
|
/// this `state` should not be changed directly, modify the `process.state` instead
|
||||||
|
@ -149,9 +149,6 @@ struct LibraryZimFileContext<Content: View>: View {
|
|||||||
content
|
content
|
||||||
.gesture(TapGesture().modifiers(.command).onEnded({ value in
|
.gesture(TapGesture().modifiers(.command).onEnded({ value in
|
||||||
viewModel.toggleMultiSelect(of: zimFile)
|
viewModel.toggleMultiSelect(of: zimFile)
|
||||||
if viewModel.multiSelectedZimFiles.count > 0 {
|
|
||||||
viewModel.selectedZimFile = nil
|
|
||||||
}
|
|
||||||
}))
|
}))
|
||||||
.gesture(TapGesture().onEnded({ _ in
|
.gesture(TapGesture().onEnded({ _ in
|
||||||
viewModel.selectedZimFile = zimFile
|
viewModel.selectedZimFile = zimFile
|
||||||
|
@ -63,10 +63,6 @@ struct ZimFilesOpened: View {
|
|||||||
}
|
}
|
||||||
.onChange(of: zimFiles.count) { _ in
|
.onChange(of: zimFiles.count) { _ in
|
||||||
viewModel.selectedZimFile = zimFiles.first // makes sure we also nil out, if all ZIMs were unlinked
|
viewModel.selectedZimFile = zimFiles.first // makes sure we also nil out, if all ZIMs were unlinked
|
||||||
viewModel.multiSelectedZimFiles.removeAll()
|
|
||||||
}
|
|
||||||
.onDisappear {
|
|
||||||
viewModel.multiSelectedZimFiles.removeAll()
|
|
||||||
}
|
}
|
||||||
// not using OpenFileButton here, because it does not work on iOS/iPadOS 15 when this view is in a modal
|
// not using OpenFileButton here, because it does not work on iOS/iPadOS 15 when this view is in a modal
|
||||||
.fileImporter(
|
.fileImporter(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user