196 lines
5.4 KiB
Swift
196 lines
5.4 KiB
Swift
//
|
|
// Swiftfin is subject to the terms of the Mozilla Public
|
|
// License, v2.0. If a copy of the MPL was not distributed with this
|
|
// file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
//
|
|
// Copyright (c) 2025 Jellyfin & Jellyfin Contributors
|
|
//
|
|
|
|
import JellyfinAPI
|
|
|
|
extension BaseItemKind: SupportedCaseIterable {
|
|
|
|
/// The base supported cases for media navigation.
|
|
/// This differs from media viewing, which may include
|
|
/// `.episode`.
|
|
///
|
|
/// These is the *base* supported cases and other objects
|
|
/// like `LibararyParent` may have additional supported
|
|
/// cases for querying a library.
|
|
static var supportedCases: [BaseItemKind] {
|
|
[.movie, .series, .boxSet]
|
|
}
|
|
}
|
|
|
|
extension BaseItemKind: ItemFilter {
|
|
|
|
var displayTitle: String {
|
|
switch self {
|
|
case .aggregateFolder:
|
|
return L10n.aggregateFolder
|
|
case .audio:
|
|
return L10n.audio
|
|
case .audioBook:
|
|
return L10n.audioBook
|
|
case .basePluginFolder:
|
|
return L10n.basePluginFolder
|
|
case .book:
|
|
return L10n.book
|
|
case .boxSet:
|
|
return L10n.collection
|
|
case .channel:
|
|
return L10n.channel
|
|
case .channelFolderItem:
|
|
return L10n.channelFolderItem
|
|
case .collectionFolder:
|
|
return L10n.collectionFolder
|
|
case .episode:
|
|
return L10n.episode
|
|
case .folder:
|
|
return L10n.folder
|
|
case .genre:
|
|
return L10n.genre
|
|
case .manualPlaylistsFolder:
|
|
return L10n.manualPlaylistsFolder
|
|
case .movie:
|
|
return L10n.movie
|
|
case .liveTvChannel:
|
|
return L10n.liveTVChannel
|
|
case .liveTvProgram:
|
|
return L10n.liveTVProgram
|
|
case .musicAlbum:
|
|
return L10n.album
|
|
case .musicArtist:
|
|
return L10n.artist
|
|
case .musicGenre:
|
|
return L10n.genre
|
|
case .musicVideo:
|
|
return L10n.musicVideo
|
|
case .person:
|
|
return L10n.person
|
|
case .photo:
|
|
return L10n.photo
|
|
case .photoAlbum:
|
|
return L10n.photoAlbum
|
|
case .playlist:
|
|
return L10n.playlist
|
|
case .playlistsFolder:
|
|
return L10n.playlistsFolder
|
|
case .program:
|
|
return L10n.program
|
|
case .recording:
|
|
return L10n.recording
|
|
case .season:
|
|
return L10n.season
|
|
case .series:
|
|
return L10n.series
|
|
case .studio:
|
|
return L10n.studio
|
|
case .trailer:
|
|
return L10n.trailer
|
|
case .tvChannel:
|
|
return L10n.tvChannel
|
|
case .tvProgram:
|
|
return L10n.tvProgram
|
|
case .userRootFolder:
|
|
return L10n.userRootFolder
|
|
case .userView:
|
|
return L10n.userView
|
|
case .video:
|
|
return L10n.video
|
|
case .year:
|
|
return L10n.year
|
|
}
|
|
}
|
|
}
|
|
|
|
extension BaseItemKind {
|
|
|
|
var pluralDisplayTitle: String {
|
|
switch self {
|
|
case .aggregateFolder:
|
|
return L10n.aggregateFolders
|
|
case .audio:
|
|
return L10n.audio
|
|
case .audioBook:
|
|
return L10n.audioBooks
|
|
case .basePluginFolder:
|
|
return L10n.basePluginFolders
|
|
case .book:
|
|
return L10n.books
|
|
case .boxSet:
|
|
return L10n.collections
|
|
case .channel:
|
|
return L10n.channels
|
|
case .channelFolderItem:
|
|
return L10n.channelFolderItems
|
|
case .collectionFolder:
|
|
return L10n.collectionFolders
|
|
case .episode:
|
|
return L10n.episodes
|
|
case .folder:
|
|
return L10n.folders
|
|
case .genre:
|
|
return L10n.genres
|
|
case .manualPlaylistsFolder:
|
|
return L10n.manualPlaylistsFolders
|
|
case .movie:
|
|
return L10n.movies
|
|
case .liveTvChannel:
|
|
return L10n.liveTVChannels
|
|
case .liveTvProgram:
|
|
return L10n.liveTVPrograms
|
|
case .musicAlbum:
|
|
return L10n.albums
|
|
case .musicArtist:
|
|
return L10n.artists
|
|
case .musicGenre:
|
|
return L10n.genres
|
|
case .musicVideo:
|
|
return L10n.musicVideos
|
|
case .person:
|
|
return L10n.people
|
|
case .photo:
|
|
return L10n.photos
|
|
case .photoAlbum:
|
|
return L10n.photoAlbums
|
|
case .playlist:
|
|
return L10n.playlists
|
|
case .playlistsFolder:
|
|
return L10n.playlistsFolders
|
|
case .program:
|
|
return L10n.programs
|
|
case .recording:
|
|
return L10n.recordings
|
|
case .season:
|
|
return L10n.seasons
|
|
case .series:
|
|
return L10n.series
|
|
case .studio:
|
|
return L10n.studios
|
|
case .trailer:
|
|
return L10n.trailers
|
|
case .tvChannel:
|
|
return L10n.tvChannels
|
|
case .tvProgram:
|
|
return L10n.tvPrograms
|
|
case .userRootFolder:
|
|
return L10n.userRootFolders
|
|
case .userView:
|
|
return L10n.userViews
|
|
case .video:
|
|
return L10n.videos
|
|
case .year:
|
|
return L10n.years
|
|
}
|
|
}
|
|
}
|
|
|
|
extension BaseItemKind {
|
|
|
|
/// Item types that can be identified on the server.
|
|
static var itemIdentifiableCases: [BaseItemKind] {
|
|
[.boxSet, .movie, .person, .series]
|
|
}
|
|
}
|