feat(tracks): add track indexes

This commit is contained in:
2026-08-03 19:10:45 +02:00
parent 685d3beb2a
commit e80c382a25
8 changed files with 57 additions and 45 deletions
+5 -1
View File
@@ -34,6 +34,8 @@ namespace margelo::nitro::omni {
static const auto clazz = javaClassStatic();
static const auto fieldId = clazz->getField<jni::JString>("id");
jni::local_ref<jni::JString> id = this->getFieldValue(fieldId);
static const auto fieldIndex = clazz->getField<double>("index");
double index = this->getFieldValue(fieldIndex);
static const auto fieldLabel = clazz->getField<jni::JString>("label");
jni::local_ref<jni::JString> label = this->getFieldValue(fieldLabel);
static const auto fieldLanguage = clazz->getField<jni::JString>("language");
@@ -42,6 +44,7 @@ namespace margelo::nitro::omni {
jboolean selected = this->getFieldValue(fieldSelected);
return Track(
id->toStdString(),
index,
label != nullptr ? std::make_optional(label->toStdString()) : std::nullopt,
language != nullptr ? std::make_optional(language->toStdString()) : std::nullopt,
static_cast<bool>(selected)
@@ -54,12 +57,13 @@ namespace margelo::nitro::omni {
*/
[[maybe_unused]]
static jni::local_ref<JTrack::javaobject> fromCpp(const Track& value) {
using JSignature = JTrack(jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jboolean);
using JSignature = JTrack(jni::alias_ref<jni::JString>, double, jni::alias_ref<jni::JString>, jni::alias_ref<jni::JString>, jboolean);
static const auto clazz = javaClassStatic();
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
return create(
clazz,
jni::make_jstring(value.id),
value.index,
value.label.has_value() ? jni::make_jstring(value.label.value()) : nullptr,
value.language.has_value() ? jni::make_jstring(value.language.value()) : nullptr,
value.selected
@@ -23,6 +23,9 @@ data class Track(
val id: String,
@DoNotStrip
@Keep
val index: Double,
@DoNotStrip
@Keep
val label: String?,
@DoNotStrip
@Keep
@@ -37,6 +40,7 @@ data class Track(
if (this === other) return true
if (other !is Track) return false
return Objects.deepEquals(this.id, other.id)
&& Objects.deepEquals(this.index, other.index)
&& Objects.deepEquals(this.label, other.label)
&& Objects.deepEquals(this.language, other.language)
&& Objects.deepEquals(this.selected, other.selected)
@@ -45,6 +49,7 @@ data class Track(
override fun hashCode(): Int {
return arrayOf<Any?>(
id,
index,
label,
language,
selected
@@ -59,8 +64,8 @@ data class Track(
@Keep
@Suppress("unused")
@JvmStatic
private fun fromCpp(id: String, label: String?, language: String?, selected: Boolean): Track {
return Track(id, label, language, selected)
private fun fromCpp(id: String, index: Double, label: String?, language: String?, selected: Boolean): Track {
return Track(id, index, label, language, selected)
}
}
}