mirror of
https://github.com/yattee/yattee.git
synced 2024-11-10 00:08:21 +00:00
Settings for new features
This commit is contained in:
parent
3de18da7a7
commit
2ce903b6c3
@ -31,6 +31,7 @@ struct ChannelVideosView: View {
|
||||
@Namespace private var focusNamespace
|
||||
|
||||
@Default(.channelPlaylistListingStyle) private var channelPlaylistListingStyle
|
||||
@Default(.expandChannelDescription) private var expandChannelDescription
|
||||
|
||||
var presentedChannel: Channel? {
|
||||
store.item ?? channel ?? recents.presentedChannel
|
||||
@ -165,6 +166,8 @@ struct ChannelVideosView: View {
|
||||
}
|
||||
#endif
|
||||
.onAppear {
|
||||
descriptionExpanded = expandChannelDescription
|
||||
|
||||
if let channel,
|
||||
let cache = ChannelsCacheModel.shared.retrieve(channel.cacheKey),
|
||||
store.item.isNil
|
||||
|
@ -23,6 +23,7 @@ extension Defaults.Keys {
|
||||
|
||||
static let showHome = Key<Bool>("showHome", default: true)
|
||||
static let showOpenActionsInHome = Key<Bool>("showOpenActionsInHome", default: true)
|
||||
static let showQueueInHome = Key<Bool>("showQueueInHome", default: true)
|
||||
static let showOpenActionsToolbarItem = Key<Bool>("showOpenActionsToolbarItem", default: false)
|
||||
static let showFavoritesInHome = Key<Bool>("showFavoritesInHome", default: true)
|
||||
#if os(iOS)
|
||||
@ -35,6 +36,8 @@ extension Defaults.Keys {
|
||||
static let playerButtonSingleTapGesture = Key<PlayerTapGestureAction>("playerButtonSingleTapGesture", default: .togglePlayer)
|
||||
static let playerButtonDoubleTapGesture = Key<PlayerTapGestureAction>("playerButtonDoubleTapGesture", default: .togglePlayerVisibility)
|
||||
static let playerButtonShowsControlButtonsWhenMinimized = Key<Bool>("playerButtonShowsControlButtonsWhenMinimized", default: false)
|
||||
static let playerButtonIsExpanded = Key<Bool>("playerButtonIsExpanded", default: false)
|
||||
static let playerBarMaxWidth = Key<String>("playerBarMaxWidth", default: "600")
|
||||
|
||||
#if !os(tvOS)
|
||||
#if os(macOS)
|
||||
@ -48,6 +51,7 @@ extension Defaults.Keys {
|
||||
#if os(iOS)
|
||||
static let lockPortraitWhenBrowsing = Key<Bool>("lockPortraitWhenBrowsing", default: UIDevice.current.userInterfaceIdiom == .phone)
|
||||
#endif
|
||||
static let expandChannelDescription = Key<Bool>("expandChannelDescription", default: false)
|
||||
static let channelOnThumbnail = Key<Bool>("channelOnThumbnail", default: false)
|
||||
static let timeOnThumbnail = Key<Bool>("timeOnThumbnail", default: true)
|
||||
static let roundedThumbnails = Key<Bool>("roundedThumbnails", default: true)
|
||||
|
@ -27,6 +27,7 @@ struct HomeView: View {
|
||||
@Default(.homeHistoryItems) private var homeHistoryItems
|
||||
@Default(.showFavoritesInHome) private var showFavoritesInHome
|
||||
@Default(.showOpenActionsInHome) private var showOpenActionsInHome
|
||||
@Default(.showQueueInHome) private var showQueueInHome
|
||||
|
||||
private var navigation: NavigationModel { .shared }
|
||||
|
||||
@ -69,13 +70,14 @@ struct HomeView: View {
|
||||
.padding(.horizontal, 15)
|
||||
#endif
|
||||
|
||||
if showQueueInHome {
|
||||
QueueView()
|
||||
.padding(.vertical, 15)
|
||||
#if os(tvOS)
|
||||
.padding(.horizontal, 40)
|
||||
#else
|
||||
.padding(.horizontal, 15)
|
||||
#endif
|
||||
}
|
||||
|
||||
if !accounts.current.isNil, showFavoritesInHome {
|
||||
#if os(tvOS)
|
||||
|
@ -8,21 +8,24 @@ struct QueueView: View {
|
||||
var body: some View {
|
||||
LazyVStack {
|
||||
if !items.isEmpty {
|
||||
HStack {
|
||||
sectionLabel("Next in queue")
|
||||
Button {
|
||||
withAnimation {
|
||||
expanded.toggle()
|
||||
}
|
||||
} label: {
|
||||
HStack {
|
||||
sectionLabel(label)
|
||||
Spacer()
|
||||
Label("Show more", systemImage: expanded ? "chevron.up" : "chevron.down")
|
||||
.animation(nil, value: expanded)
|
||||
.foregroundColor(.accentColor)
|
||||
.imageScale(.large)
|
||||
.labelStyle(.iconOnly)
|
||||
}
|
||||
.opacity(items.count > 1 ? 1 : 0)
|
||||
}
|
||||
}
|
||||
.disabled(items.count < 2)
|
||||
|
||||
ForEach(limitedItems) { item in
|
||||
ContentItemView(item: .init(video: item.video))
|
||||
.environment(\.listingStyle, .list)
|
||||
@ -32,6 +35,15 @@ struct QueueView: View {
|
||||
}
|
||||
}
|
||||
}
|
||||
.padding(.vertical, items.isEmpty ? 0 : 15)
|
||||
}
|
||||
|
||||
var label: String {
|
||||
if items.count < 2 {
|
||||
return "Next in Queue"
|
||||
}
|
||||
|
||||
return "Next in Queue (\(items.count))"
|
||||
}
|
||||
|
||||
var limitedItems: [PlayerQueueItem] {
|
||||
|
@ -9,6 +9,8 @@ struct PlayerOverlayModifier: ViewModifier {
|
||||
@Environment(\.navigationStyle) private var navigationStyle
|
||||
|
||||
@Default(.playerButtonShowsControlButtonsWhenMinimized) private var controlsWhenMinimized
|
||||
@Default(.playerButtonIsExpanded) private var playerButtonIsExpanded
|
||||
@Default(.playerBarMaxWidth) private var playerBarMaxWidth
|
||||
|
||||
func body(content: Content) -> some View {
|
||||
content
|
||||
@ -23,10 +25,20 @@ struct PlayerOverlayModifier: ViewModifier {
|
||||
ControlsBar(fullScreen: .constant(false), expansionState: $expansionState, playerBar: true)
|
||||
.offset(x: expansionState == .mini && !controlsWhenMinimized ? 10 : 0, y: 0)
|
||||
.transition(.opacity)
|
||||
.frame(maxWidth: maxWidth, alignment: .trailing)
|
||||
.onAppear {
|
||||
if playerButtonIsExpanded {
|
||||
expansionState = .full
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.animation(.default, value: player.currentItem)
|
||||
}
|
||||
|
||||
var maxWidth: Double {
|
||||
playerBarMaxWidth == "0" ? .infinity : (Double(playerBarMaxWidth) ?? 600)
|
||||
}
|
||||
}
|
||||
|
||||
struct PlayerOverlayModifier_Previews: PreviewProvider {
|
||||
|
@ -17,6 +17,7 @@ struct BrowsingSettings: View {
|
||||
@Default(.timeOnThumbnail) private var timeOnThumbnail
|
||||
@Default(.showHome) private var showHome
|
||||
@Default(.showFavoritesInHome) private var showFavoritesInHome
|
||||
@Default(.showQueueInHome) private var showQueueInHome
|
||||
@Default(.showOpenActionsInHome) private var showOpenActionsInHome
|
||||
@Default(.showOpenActionsToolbarItem) private var showOpenActionsToolbarItem
|
||||
@Default(.homeHistoryItems) private var homeHistoryItems
|
||||
@ -24,6 +25,9 @@ struct BrowsingSettings: View {
|
||||
@Default(.playerButtonSingleTapGesture) private var playerButtonSingleTapGesture
|
||||
@Default(.playerButtonDoubleTapGesture) private var playerButtonDoubleTapGesture
|
||||
@Default(.playerButtonShowsControlButtonsWhenMinimized) private var playerButtonShowsControlButtonsWhenMinimized
|
||||
@Default(.playerButtonIsExpanded) private var playerButtonIsExpanded
|
||||
@Default(.playerBarMaxWidth) private var playerBarMaxWidth
|
||||
@Default(.expandChannelDescription) private var expandChannelDescription
|
||||
|
||||
@ObservedObject private var accounts = AccountsModel.shared
|
||||
|
||||
@ -86,6 +90,7 @@ struct BrowsingSettings: View {
|
||||
}
|
||||
#endif
|
||||
Toggle("Show Open Videos quick actions", isOn: $showOpenActionsInHome)
|
||||
Toggle("Show Next in Queue", isOn: $showQueueInHome)
|
||||
|
||||
#if os(iOS)
|
||||
HStack {
|
||||
@ -157,9 +162,21 @@ struct BrowsingSettings: View {
|
||||
#if !os(tvOS)
|
||||
private var playerBarSettings: some View {
|
||||
Section(header: SettingsHeader(text: "Player Bar".localized()), footer: playerBarFooter) {
|
||||
Toggle("Open expanded", isOn: $playerButtonIsExpanded)
|
||||
Toggle("Always show controls buttons", isOn: $playerButtonShowsControlButtonsWhenMinimized)
|
||||
playerBarGesturePicker("Single tap gesture", selection: $playerButtonSingleTapGesture)
|
||||
playerBarGesturePicker("Double tap gesture", selection: $playerButtonDoubleTapGesture)
|
||||
HStack {
|
||||
Text("Maximum width expanded")
|
||||
Spacer()
|
||||
TextField("Maximum width expanded", text: $playerBarMaxWidth)
|
||||
.frame(maxWidth: 100, alignment: .trailing)
|
||||
.multilineTextAlignment(.trailing)
|
||||
.labelsHidden()
|
||||
#if !os(macOS)
|
||||
.keyboardType(.numberPad)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -205,6 +222,8 @@ struct BrowsingSettings: View {
|
||||
|
||||
Toggle("Show anonymous accounts", isOn: $accountPickerDisplaysAnonymousAccounts)
|
||||
}
|
||||
|
||||
Toggle("Open channels with description expanded", isOn: $expandChannelDescription)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user