mirror of
https://github.com/yattee/yattee.git
synced 2024-11-09 15:58:20 +00:00
Layout fixes
This commit is contained in:
parent
eb1e440ed2
commit
eb9924bd4a
@ -26,14 +26,21 @@ struct HomeView: View {
|
||||
var body: some View {
|
||||
BrowserPlayerControls {
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
if showOpenActionsInHome {
|
||||
HStack {
|
||||
#if os(tvOS)
|
||||
OpenVideosButton(text: "Open Video", imageSystemName: "globe") {
|
||||
NavigationModel.shared.presentingOpenVideos = true
|
||||
HStack {
|
||||
#if os(tvOS)
|
||||
Group {
|
||||
if showOpenActionsInHome {
|
||||
OpenVideosButton(text: "Open Video", imageSystemName: "globe") {
|
||||
NavigationModel.shared.presentingOpenVideos = true
|
||||
}
|
||||
}
|
||||
.frame(maxWidth: 600)
|
||||
#else
|
||||
OpenVideosButton(text: "Settings", imageSystemName: "gear") {
|
||||
NavigationModel.shared.presentingSettings = true
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
if showOpenActionsInHome {
|
||||
OpenVideosButton(text: "Files", imageSystemName: "folder") {
|
||||
NavigationModel.shared.presentingFileImporter = true
|
||||
}
|
||||
@ -44,19 +51,19 @@ struct HomeView: View {
|
||||
NavigationModel.shared.presentingOpenVideos = true
|
||||
}
|
||||
.frame(maxWidth: 40)
|
||||
#endif
|
||||
}
|
||||
#if os(iOS)
|
||||
.padding(.top, RefreshControl.navigationBarTitleDisplayMode == .inline ? 15 : 0)
|
||||
#else
|
||||
.padding(.top, 15)
|
||||
#endif
|
||||
#if os(tvOS)
|
||||
.padding(.horizontal, 40)
|
||||
#else
|
||||
.padding(.horizontal, 15)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#if os(iOS)
|
||||
.padding(.top, RefreshControl.navigationBarTitleDisplayMode == .inline ? 15 : 0)
|
||||
#else
|
||||
.padding(.top, 15)
|
||||
#endif
|
||||
#if os(tvOS)
|
||||
.padding(.horizontal, 40)
|
||||
#else
|
||||
.padding(.horizontal, 15)
|
||||
#endif
|
||||
|
||||
if !accounts.current.isNil, showFavoritesInHome {
|
||||
#if os(tvOS)
|
||||
@ -112,7 +119,6 @@ struct HomeView: View {
|
||||
#if os(tvOS)
|
||||
.edgesIgnoringSafeArea(.horizontal)
|
||||
#else
|
||||
.onDrop(of: [UTType.text], delegate: DropFavoriteOutside(current: $dragging))
|
||||
.navigationTitle("Home")
|
||||
#endif
|
||||
#if os(macOS)
|
||||
|
@ -84,6 +84,16 @@ struct ContentView: View {
|
||||
.environmentObject(navigation)
|
||||
}
|
||||
)
|
||||
.background(
|
||||
EmptyView().sheet(isPresented: $navigation.presentingSettings) {
|
||||
SettingsView()
|
||||
.environmentObject(accounts)
|
||||
.environmentObject(instances)
|
||||
.environmentObject(settings)
|
||||
.environmentObject(navigation)
|
||||
.environmentObject(player)
|
||||
}
|
||||
)
|
||||
#if !os(tvOS)
|
||||
.fileImporter(
|
||||
isPresented: $navigation.presentingFileImporter,
|
||||
@ -134,16 +144,6 @@ struct ContentView: View {
|
||||
.environmentObject(playlists)
|
||||
}
|
||||
)
|
||||
.background(
|
||||
EmptyView().sheet(isPresented: $navigation.presentingSettings) {
|
||||
SettingsView()
|
||||
.environmentObject(accounts)
|
||||
.environmentObject(instances)
|
||||
.environmentObject(settings)
|
||||
.environmentObject(navigation)
|
||||
.environmentObject(player)
|
||||
}
|
||||
)
|
||||
#endif
|
||||
.background(
|
||||
EmptyView().sheet(isPresented: $navigation.presentingOpenVideos) {
|
||||
|
@ -120,7 +120,9 @@ struct BrowsingSettings: View {
|
||||
|
||||
private var interfaceSettings: some View {
|
||||
Section(header: SettingsHeader(text: "Interface".localized())) {
|
||||
Toggle("Show Open Videos toolbar button", isOn: $showOpenActionsToolbarItem)
|
||||
#if !os(tvOS)
|
||||
Toggle("Show Open Videos toolbar button", isOn: $showOpenActionsToolbarItem)
|
||||
#endif
|
||||
#if os(iOS)
|
||||
Toggle("Lock portrait mode", isOn: $lockPortraitWhenBrowsing)
|
||||
.onChange(of: lockPortraitWhenBrowsing) { lock in
|
||||
|
@ -10,51 +10,69 @@ struct EditFavorites: View {
|
||||
|
||||
var body: some View {
|
||||
Group {
|
||||
List {
|
||||
Section(header: Text("Favorites")) {
|
||||
if favorites.isEmpty {
|
||||
Text("Favorites is empty")
|
||||
.foregroundColor(.secondary)
|
||||
}
|
||||
ForEach(favorites) { item in
|
||||
HStack {
|
||||
Text(label(item))
|
||||
|
||||
Spacer()
|
||||
HStack(spacing: 30) {
|
||||
Button {
|
||||
model.moveUp(item)
|
||||
} label: {
|
||||
Label("Move Up", systemImage: "arrow.up")
|
||||
}
|
||||
|
||||
Button {
|
||||
model.moveDown(item)
|
||||
} label: {
|
||||
Label("Move Down", systemImage: "arrow.down")
|
||||
}
|
||||
|
||||
Button {
|
||||
model.remove(item)
|
||||
} label: {
|
||||
Label("Remove", systemImage: "trash")
|
||||
}
|
||||
}
|
||||
#if !os(tvOS)
|
||||
.buttonStyle(.borderless)
|
||||
#endif
|
||||
}
|
||||
#if os(tvOS)
|
||||
ScrollView {
|
||||
VStack {
|
||||
editor
|
||||
}
|
||||
}
|
||||
#if os(tvOS)
|
||||
.padding(.trailing, 40)
|
||||
#endif
|
||||
.frame(width: 1000)
|
||||
#else
|
||||
List {
|
||||
editor
|
||||
}
|
||||
#endif
|
||||
}
|
||||
.navigationTitle("Favorites")
|
||||
}
|
||||
|
||||
#if os(tvOS)
|
||||
Divider()
|
||||
.padding(20)
|
||||
#endif
|
||||
var editor: some View {
|
||||
Group {
|
||||
Section(header: Text("Favorites")) {
|
||||
if favorites.isEmpty {
|
||||
Text("Favorites is empty")
|
||||
.foregroundColor(.secondary)
|
||||
}
|
||||
ForEach(favorites) { item in
|
||||
HStack {
|
||||
Text(label(item))
|
||||
|
||||
Spacer()
|
||||
HStack(spacing: 30) {
|
||||
Button {
|
||||
model.moveUp(item)
|
||||
} label: {
|
||||
Label("Move Up", systemImage: "arrow.up")
|
||||
}
|
||||
|
||||
Button {
|
||||
model.moveDown(item)
|
||||
} label: {
|
||||
Label("Move Down", systemImage: "arrow.down")
|
||||
}
|
||||
|
||||
Button {
|
||||
model.remove(item)
|
||||
} label: {
|
||||
Label("Remove", systemImage: "trash")
|
||||
}
|
||||
}
|
||||
#if !os(tvOS)
|
||||
.buttonStyle(.borderless)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#if os(tvOS)
|
||||
.padding(.trailing, 40)
|
||||
#endif
|
||||
|
||||
#if os(tvOS)
|
||||
Divider()
|
||||
.padding(20)
|
||||
#endif
|
||||
|
||||
if !model.addableItems().isEmpty {
|
||||
Section(header: Text("Available")) {
|
||||
ForEach(model.addableItems()) { item in
|
||||
HStack {
|
||||
@ -70,6 +88,9 @@ struct EditFavorites: View {
|
||||
.font(.system(size: 30))
|
||||
#endif
|
||||
}
|
||||
#if !os(tvOS)
|
||||
.buttonStyle(.borderless)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -77,13 +98,8 @@ struct EditFavorites: View {
|
||||
.padding(.trailing, 40)
|
||||
#endif
|
||||
}
|
||||
.labelStyle(.iconOnly)
|
||||
.frame(alignment: .leading)
|
||||
#if os(tvOS)
|
||||
.frame(width: 1000)
|
||||
#endif
|
||||
}
|
||||
.navigationTitle("Favorites")
|
||||
.labelStyle(.iconOnly)
|
||||
}
|
||||
|
||||
func label(_ item: FavoriteItem) -> String {
|
||||
@ -97,9 +113,9 @@ struct EditFavorites: View {
|
||||
|
||||
struct EditFavorites_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
NavigationView {
|
||||
EditFavorites()
|
||||
}
|
||||
.injectFixtureEnvironmentObjects()
|
||||
// NavigationView {
|
||||
EditFavorites()
|
||||
// }
|
||||
.injectFixtureEnvironmentObjects()
|
||||
}
|
||||
}
|
||||
|
@ -97,9 +97,7 @@ struct SettingsView: View {
|
||||
#else
|
||||
NavigationView {
|
||||
settingsList
|
||||
#if os(tvOS)
|
||||
.navigationBarHidden(true)
|
||||
#endif
|
||||
.navigationTitle("Settings")
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@ -115,14 +113,6 @@ struct SettingsView: View {
|
||||
#endif
|
||||
|
||||
Section {
|
||||
#if os(tvOS)
|
||||
NavigationLink {
|
||||
EditFavorites()
|
||||
} label: {
|
||||
Label("Favorites", systemImage: "heart.fill")
|
||||
}
|
||||
#endif
|
||||
|
||||
NavigationLink {
|
||||
BrowsingSettings()
|
||||
} label: {
|
||||
@ -195,7 +185,6 @@ struct SettingsView: View {
|
||||
}
|
||||
#endif
|
||||
}
|
||||
.navigationTitle("Settings")
|
||||
.toolbar {
|
||||
ToolbarItem(placement: .navigationBarLeading) {
|
||||
#if !os(tvOS)
|
||||
@ -217,9 +206,9 @@ struct SettingsView: View {
|
||||
private var windowHeight: Double {
|
||||
switch selection {
|
||||
case nil:
|
||||
return accounts.isEmpty ? 680 : 520
|
||||
return accounts.isEmpty ? 680 : 580
|
||||
case .browsing:
|
||||
return 520
|
||||
return 580
|
||||
case .player:
|
||||
return 680
|
||||
case .quality:
|
||||
|
@ -4,6 +4,12 @@ import SDWebImageSwiftUI
|
||||
import SwiftUI
|
||||
|
||||
struct VideoBanner: View {
|
||||
#if os(tvOS)
|
||||
static let titleAppend = ""
|
||||
#else
|
||||
static let titleAppend = "\n"
|
||||
#endif
|
||||
|
||||
let video: Video?
|
||||
var playbackTime: CMTime?
|
||||
var videoDuration: TimeInterval?
|
||||
@ -27,7 +33,7 @@ struct VideoBanner: View {
|
||||
Group {
|
||||
if let video {
|
||||
HStack(alignment: .top) {
|
||||
Text(video.displayTitle + "\n")
|
||||
Text(video.displayTitle + Self.titleAppend)
|
||||
if video.isLocal, let fileExtension = video.localStreamFileExtension {
|
||||
Spacer()
|
||||
Text(fileExtension)
|
||||
|
@ -7,12 +7,12 @@ struct OpenVideosButton: View {
|
||||
|
||||
var body: some View {
|
||||
Button(action: action) {
|
||||
HStack {
|
||||
HStack(spacing: 8) {
|
||||
if let imageSystemName {
|
||||
Image(systemName: imageSystemName)
|
||||
}
|
||||
if let text {
|
||||
Text(text ?? "")
|
||||
Text(text)
|
||||
.fontWeight(.bold)
|
||||
}
|
||||
}
|
||||
|
@ -50,10 +50,6 @@ struct TVNavigationView: View {
|
||||
.tabItem { Image(systemName: "magnifyingglass") }
|
||||
.tag(TabSelection.search)
|
||||
}
|
||||
|
||||
LazyView(SettingsView())
|
||||
.tabItem { Image(systemName: "gear") }
|
||||
.tag(TabSelection.settings)
|
||||
}
|
||||
}
|
||||
.fullScreenCover(isPresented: $navigation.presentingAddToPlaylist) {
|
||||
|
Loading…
Reference in New Issue
Block a user