yattee/Shared/Player/Video Details/VideoDetailsTool.swift
2022-12-04 13:32:28 +01:00

47 lines
1.5 KiB
Swift

import Defaults
import Foundation
struct VideoDetailsTool: Identifiable {
static let all = [
Self(icon: "info.circle", name: "Info", page: .info),
Self(icon: "wand.and.stars", name: "Inspector", page: .inspector),
Self(icon: "bookmark", name: "Chapters", page: .chapters),
Self(icon: "text.bubble", name: "Comments", page: .comments),
Self(icon: "rectangle.stack.fill", name: "Related", page: .related),
Self(icon: "list.number", name: "Queue", page: .queue)
]
static func find(for page: VideoDetails.DetailsPage) -> Self? {
all.first { $0.page == page }
}
var id: String {
page.rawValue
}
var icon: String
var name: String
var toolPostion: CGRect = .zero
var page = VideoDetails.DetailsPage.info
func isAvailable(for video: Video?, sidebarQueue: Bool) -> Bool {
guard !YatteeApp.isForPreviews else {
return true
}
switch page {
case .info:
return video != nil && !video!.isLocal
case .inspector:
return video == nil || Defaults[.showInspector] == .always || video!.isLocal
case .chapters:
return video != nil && !video!.chapters.isEmpty
case .comments:
return video != nil && !video!.isLocal
case .related:
return !sidebarQueue && video != nil && !video!.isLocal
case .queue:
return !sidebarQueue
}
}
}