mirror of
				https://github.com/yattee/yattee.git
				synced 2025-10-31 12:41:57 +00:00 
			
		
		
		
	Layout fixes
This commit is contained in:
		| @@ -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) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Arkadiusz Fal
					Arkadiusz Fal