mirror of
https://github.com/yattee/yattee.git
synced 2025-10-25 00:38:12 +00:00
Minor fixes, split files into folders
This commit is contained in:
73
tvOS/Options/OptionsView.swift
Normal file
73
tvOS/Options/OptionsView.swift
Normal file
@@ -0,0 +1,73 @@
|
||||
import Defaults
|
||||
import SwiftUI
|
||||
|
||||
struct OptionsView: View {
|
||||
@EnvironmentObject<NavigationState> private var navigationState
|
||||
|
||||
@Default(.layout) private var layout
|
||||
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
|
||||
var body: some View {
|
||||
HStack {
|
||||
VStack {
|
||||
HStack {
|
||||
Spacer()
|
||||
|
||||
VStack(alignment: .leading) {
|
||||
Spacer()
|
||||
|
||||
tabSelectionOptions
|
||||
|
||||
CoverSectionView("View Options") {
|
||||
CoverSectionRowView("Show videos as") { nextLayoutButton }
|
||||
}
|
||||
|
||||
CoverSectionView(divider: false) {
|
||||
CoverSectionRowView("Close View Options") { Button("Close") { dismiss() } }
|
||||
}
|
||||
|
||||
Spacer()
|
||||
}
|
||||
.frame(maxWidth: 800)
|
||||
|
||||
Spacer()
|
||||
}
|
||||
|
||||
Spacer()
|
||||
}
|
||||
}
|
||||
.background(.thinMaterial)
|
||||
}
|
||||
|
||||
var tabSelectionOptions: some View {
|
||||
VStack {
|
||||
switch navigationState.tabSelection {
|
||||
case .search:
|
||||
SearchOptionsView()
|
||||
|
||||
default:
|
||||
EmptyView()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var nextLayoutButton: some View {
|
||||
Button(layout.name) {
|
||||
self.layout = layout.next()
|
||||
}
|
||||
.contextMenu {
|
||||
ForEach(ListingLayout.allCases) { layout in
|
||||
Button(layout.name) {
|
||||
Defaults[.layout] = layout
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct OptionsView_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
OptionsView()
|
||||
}
|
||||
}
|
||||
64
tvOS/Options/SearchOptionsView.swift
Normal file
64
tvOS/Options/SearchOptionsView.swift
Normal file
@@ -0,0 +1,64 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user