MetadataField.kt
41 lines · 1.7 KB
Changed in: 0.5.0
| 1 | package dev.stave.domain.model |
| 2 | |
| 3 | /** |
| 4 | * Every piece of metadata we know how to render. The Settings screen lets the user pick which |
| 5 | * show up on Album Detail and Now Playing; defaults lean classical-friendly. |
| 6 | */ |
| 7 | enum class MetadataField(val key: String, val label: String, val defaultOn: Boolean) { |
| 8 | TITLE("title", "Title", true), |
| 9 | ARTIST("artist", "Artist", true), |
| 10 | ALBUM_ARTIST("albumArtist", "Album artist", true), |
| 11 | ALBUM("album", "Album", true), |
| 12 | COMPOSER("composer", "Composer", true), |
| 13 | CONDUCTOR("conductor", "Conductor", true), |
| 14 | PERFORMER("performer", "Performer", true), |
| 15 | ORCHESTRA("orchestra", "Orchestra", true), |
| 16 | ENSEMBLE("ensemble", "Ensemble", true), |
| 17 | CHOIR("choir", "Choir", false), |
| 18 | SOLOIST("soloist", "Soloist", false), |
| 19 | GENRE("genre", "Genre", true), |
| 20 | DATE("date", "Date", true), |
| 21 | ORIGINAL_DATE("originalDate", "Original release", false), |
| 22 | WORK("work", "Work", true), |
| 23 | GROUP("group", "Group", false), |
| 24 | DISC_SUBTITLE("discSubtitle", "Disc subtitle", false), |
| 25 | LABEL("label", "Label", false), |
| 26 | CATALOG("catalog", "Catalog", false), |
| 27 | TRACK_NUMBER("trackNumber", "Track number", true), |
| 28 | DISC_NUMBER("discNumber", "Disc number", true), |
| 29 | DURATION("duration", "Duration", true), |
| 30 | FORMAT("format", "Format", true), |
| 31 | SAMPLE_RATE("sampleRate", "Sample rate", true), |
| 32 | BIT_DEPTH("bitDepth", "Bit depth", true), |
| 33 | BITRATE("bitrate", "Bitrate", false), |
| 34 | CHANNELS("channels", "Channels", false), |
| 35 | FILE_SIZE("fileSize", "File size", false); |
| 36 | |
| 37 | companion object { |
| 38 | fun fromKey(key: String): MetadataField? = entries.firstOrNull { it.key == key } |
| 39 | val defaults: Set<MetadataField> = entries.filter { it.defaultOn }.toSet() |
| 40 | } |
| 41 | } |


