Layout fixes

This commit is contained in:
Arkadiusz Fal 2022-11-12 02:39:44 +01:00
parent eb1e440ed2
commit eb9924bd4a
8 changed files with 117 additions and 102 deletions

View File

@ -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)

View File

@ -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) {

View File

@ -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

View File

@ -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()
}
}

View File

@ -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:

View File

@ -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)

View File

@ -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)
}
}

View File

@ -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) {