More search UI improvements across all the platforms

This commit is contained in:
Arkadiusz Fal
2021-09-26 19:40:25 +02:00
parent 4e0d7b60f7
commit f9396985c9
16 changed files with 241 additions and 197 deletions

View File

@@ -43,7 +43,7 @@ struct AddToPlaylistView: View {
CoverSectionRowView {
Button("Add", action: addToPlaylist)
.disabled(currentPlaylist == nil)
.disabled(currentPlaylist.isNil)
}
}

View File

@@ -1,64 +0,0 @@
import Defaults
import SwiftUI
struct SearchOptionsView: View {
@Default(.searchSortOrder) private var searchSortOrder
@Default(.searchDate) private var searchDate
@Default(.searchDuration) private var searchDuration
var body: some View {
CoverSectionView("Search Options") {
CoverSectionRowView("Sort By") { searchSortOrderButton }
CoverSectionRowView("Upload date") { searchDateButton }
CoverSectionRowView("Duration") { searchDurationButton }
}
}
var searchSortOrderButton: some View {
Button(self.searchSortOrder.name) {
self.searchSortOrder = self.searchSortOrder.next()
}
.contextMenu {
ForEach(SearchQuery.SortOrder.allCases) { sortOrder in
Button(sortOrder.name) {
self.searchSortOrder = sortOrder
}
}
}
}
var searchDateButton: some View {
Button(self.searchDate?.name ?? "All") {
self.searchDate = self.searchDate == nil ? SearchQuery.Date.allCases.first : self.searchDate!.next(nilAtEnd: true)
}
.contextMenu {
ForEach(SearchQuery.Date.allCases) { searchDate in
Button(searchDate.name) {
self.searchDate = searchDate
}
}
Button("Reset") {
self.searchDate = nil
}
}
}
var searchDurationButton: some View {
Button(self.searchDuration?.name ?? "All") {
self.searchDuration = self.searchDuration == nil ? SearchQuery.Duration.allCases.first : self.searchDuration!.next(nilAtEnd: true)
}
.contextMenu {
ForEach(SearchQuery.Duration.allCases) { searchDuration in
Button(searchDuration.name) {
self.searchDuration = searchDuration
}
}
Button("Reset") {
self.searchDuration = nil
}
}
}
}

View File

@@ -17,8 +17,6 @@ struct OptionsView: View {
VStack(alignment: .leading) {
Spacer()
tabSelectionOptions
CoverSectionView("View Options") {
CoverSectionRowView("Show videos as") { nextLayoutButton }
}
@@ -42,18 +40,6 @@ struct OptionsView: View {
.background(.thinMaterial)
}
var tabSelectionOptions: some View {
VStack {
switch navigation.tabSelection {
case .search:
SearchOptionsView()
default:
EmptyView()
}
}
}
var nextLayoutButton: some View {
Button(layout.name) {
self.layout = layout.next()

View File

@@ -4,7 +4,7 @@ import SwiftUI
struct TVNavigationView: View {
@EnvironmentObject<NavigationModel> private var navigation
@EnvironmentObject<PlaybackModel> private var playback
@EnvironmentObject<Recents> private var recents
@EnvironmentObject<RecentsModel> private var recents
@EnvironmentObject<SearchModel> private var search
@State private var showingOptions = false
@@ -34,16 +34,6 @@ struct TVNavigationView: View {
.tag(TabSelection.playlists)
SearchView()
.searchable(text: $search.queryText) {
ForEach(search.querySuggestions.collection, id: \.self) { suggestion in
Text(suggestion)
.searchCompletion(suggestion)
}
}
.onChange(of: search.queryText) { newQuery in
search.loadSuggestions(newQuery)
search.changeQuery { query in query.query = newQuery }
}
.tabItem { Image(systemName: "magnifyingglass") }
.tag(TabSelection.search)
}