From 2fcbe94e6fdd56907d8d632163565db3a4238b25 Mon Sep 17 00:00:00 2001 From: Arkadiusz Fal Date: Thu, 4 Nov 2021 00:14:09 +0100 Subject: [PATCH] Show keywords setting --- Shared/Defaults.swift | 3 +- Shared/Player/VideoDetails.swift | 35 ++++++------ Shared/Settings/PlaybackSettings.swift | 73 +++++++++++++++----------- 3 files changed, 65 insertions(+), 46 deletions(-) diff --git a/Shared/Defaults.swift b/Shared/Defaults.swift index 326c3630..72c4e175 100644 --- a/Shared/Defaults.swift +++ b/Shared/Defaults.swift @@ -13,7 +13,7 @@ enum PlayerSidebarSetting: String, CaseIterable, Defaults.Serializable { } } -extension Defaults.Keys { +extension Defaults.Keys { static let invidiousInstanceID = "default-invidious-instance" static let pipedInstanceID = "default-piped-instance" static let privateAccountID = "default-private-invidious-account" @@ -53,6 +53,7 @@ extension Defaults.Keys { static let quality = Key("quality", default: .hd720pFirstThenBest) static let playerSidebar = Key("playerSidebar", default: PlayerSidebarSetting.defaultValue) + static let showKeywords = Key("showKeywords", default: false) static let recentlyOpened = Key<[RecentItem]>("recentlyOpened", default: []) diff --git a/Shared/Player/VideoDetails.swift b/Shared/Player/VideoDetails.swift index 40d1b926..086d2f60 100644 --- a/Shared/Player/VideoDetails.swift +++ b/Shared/Player/VideoDetails.swift @@ -1,3 +1,4 @@ +import Defaults import Foundation import SwiftUI @@ -25,6 +26,8 @@ struct VideoDetails: View { @EnvironmentObject private var playlists @EnvironmentObject private var subscriptions + @Default(.showKeywords) private var showKeywords + init( sidebarQueue: Binding? = nil, fullScreen: Binding? = nil @@ -338,25 +341,27 @@ struct VideoDetails: View { .foregroundColor(.secondary) } - ScrollView(.horizontal, showsIndicators: showScrollIndicators) { - HStack { - ForEach(video.keywords, id: \.self) { keyword in - HStack(alignment: .center, spacing: 0) { - Text("#") - .font(.system(size: 11).bold()) + if showKeywords { + ScrollView(.horizontal, showsIndicators: showScrollIndicators) { + HStack { + ForEach(video.keywords, id: \.self) { keyword in + HStack(alignment: .center, spacing: 0) { + Text("#") + .font(.system(size: 11).bold()) - Text(keyword) - .frame(maxWidth: 500) + Text(keyword) + .frame(maxWidth: 500) + } + .font(.caption) + .foregroundColor(.white) + .padding(.vertical, 4) + .padding(.horizontal, 8) + .background(Color("VideoDetailLikesSymbolColor")) + .mask(RoundedRectangle(cornerRadius: 3)) } - .font(.caption) - .foregroundColor(.white) - .padding(.vertical, 4) - .padding(.horizontal, 8) - .background(Color("VideoDetailLikesSymbolColor")) - .mask(RoundedRectangle(cornerRadius: 3)) } + .padding(.bottom, 10) } - .padding(.bottom, 10) } } } diff --git a/Shared/Settings/PlaybackSettings.swift b/Shared/Settings/PlaybackSettings.swift index 5777dc3f..ff241925 100644 --- a/Shared/Settings/PlaybackSettings.swift +++ b/Shared/Settings/PlaybackSettings.swift @@ -4,6 +4,7 @@ import SwiftUI struct PlaybackSettings: View { @Default(.quality) private var quality @Default(.playerSidebar) private var playerSidebar + @Default(.showKeywords) private var showKeywords #if os(iOS) private var idiom: UIUserInterfaceIdiom { @@ -12,6 +13,18 @@ struct PlaybackSettings: View { #endif var body: some View { + qualitySection + + #if !os(tvOS) + playerSection + #endif + + #if os(macOS) + Spacer() + #endif + } + + private var qualitySection: some View { Section(header: Text("Quality")) { Picker("Quality", selection: $quality) { ForEach(Stream.ResolutionSetting.allCases, id: \.self) { resolution in @@ -26,40 +39,40 @@ struct PlaybackSettings: View { .pickerStyle(.inline) #endif } - - #if os(iOS) - if idiom == .pad { - playerSidebarSection - } - #elseif os(macOS) - playerSidebarSection - #endif - - #if os(macOS) - Spacer() - #endif } - private var playerSidebarSection: some View { - Section(header: Text("Player Sidebar")) { - Picker("Player Sidebar", selection: $playerSidebar) { - #if os(macOS) - Text("Show").tag(PlayerSidebarSetting.always) - #endif - - #if os(iOS) - Text("Show when space permits").tag(PlayerSidebarSetting.whenFits) - #endif - - Text("Hide").tag(PlayerSidebarSetting.never) - } - .labelsHidden() - + private var playerSection: some View { + Section(header: Text("Player")) { #if os(iOS) - .pickerStyle(.automatic) - #elseif os(tvOS) - .pickerStyle(.inline) + if idiom == .pad { + sidebarPicker + } + #elseif os(macOS) + sidebarPicker #endif + + Toggle("Show video keywords", isOn: $showKeywords) } } + + private var sidebarPicker: some View { + Picker("Sidebar", selection: $playerSidebar) { + #if os(macOS) + Text("Show sidebar").tag(PlayerSidebarSetting.always) + #endif + + #if os(iOS) + Text("Show sidebar when space permits").tag(PlayerSidebarSetting.whenFits) + #endif + + Text("Hide sidebar").tag(PlayerSidebarSetting.never) + } + .labelsHidden() + + #if os(iOS) + .pickerStyle(.automatic) + #elseif os(tvOS) + .pickerStyle(.inline) + #endif + } }