Handle rendition selection

This commit is contained in:
2026-05-13 18:23:09 +02:00
parent 9e4fc4aa67
commit e68628daba
18 changed files with 152 additions and 60 deletions
+3
View File
@@ -48,6 +48,9 @@ namespace margelo::nitro::omni {
case BoolProperty::MUTED:
static const auto fieldMUTED = clazz->getStaticField<JBoolProperty>("MUTED");
return clazz->getStaticFieldValue(fieldMUTED);
case BoolProperty::ISAUTOQUALITY:
static const auto fieldISAUTOQUALITY = clazz->getStaticField<JBoolProperty>("ISAUTOQUALITY");
return clazz->getStaticFieldValue(fieldISAUTOQUALITY);
default:
std::string stringValue = std::to_string(static_cast<int>(value));
throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
@@ -225,6 +225,11 @@ namespace margelo::nitro::omni {
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* muted */)>("setMuted");
method(_javaPart, muted);
}
bool JHybridOmniPlayerSpec::getIsAutoQuality() {
static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("isAutoQuality");
auto __result = method(_javaPart);
return static_cast<bool>(__result);
}
// Methods
void JHybridOmniPlayerSpec::play() {
@@ -73,6 +73,7 @@ namespace margelo::nitro::omni {
void setVolume(double volume) override;
bool getMuted() override;
void setMuted(bool muted) override;
bool getIsAutoQuality() override;
public:
// Methods
+3
View File
@@ -57,6 +57,9 @@ namespace margelo::nitro::omni {
case NumberProperty::VOLUME:
static const auto fieldVOLUME = clazz->getStaticField<JNumberProperty>("VOLUME");
return clazz->getStaticFieldValue(fieldVOLUME);
case NumberProperty::ISAUTOQUALITY:
static const auto fieldISAUTOQUALITY = clazz->getStaticField<JNumberProperty>("ISAUTOQUALITY");
return clazz->getStaticFieldValue(fieldISAUTOQUALITY);
default:
std::string stringValue = std::to_string(static_cast<int>(value));
throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
@@ -17,7 +17,8 @@ import com.facebook.proguard.annotations.DoNotStrip
@Keep
enum class BoolProperty(@DoNotStrip @Keep val value: Int) {
ISPLAYING(0),
MUTED(1);
MUTED(1),
ISAUTOQUALITY(2);
companion object
}
@@ -104,6 +104,10 @@ abstract class HybridOmniPlayerSpec: HybridObject() {
@set:DoNotStrip
@set:Keep
abstract var muted: Boolean
@get:DoNotStrip
@get:Keep
abstract val isAutoQuality: Boolean
// Methods
@DoNotStrip
@@ -20,7 +20,8 @@ enum class NumberProperty(@DoNotStrip @Keep val value: Int) {
BUFFERED(1),
DURATION(2),
PLAYBACKRATE(3),
VOLUME(4);
VOLUME(4),
ISAUTOQUALITY(5);
companion object
}
+4
View File
@@ -31,6 +31,7 @@ namespace margelo::nitro::omni {
enum class BoolProperty {
ISPLAYING SWIFT_NAME(isplaying) = 0,
MUTED SWIFT_NAME(muted) = 1,
ISAUTOQUALITY SWIFT_NAME(isautoquality) = 2,
} CLOSED_ENUM;
} // namespace margelo::nitro::omni
@@ -45,6 +46,7 @@ namespace margelo::nitro {
switch (hashString(unionValue.c_str(), unionValue.size())) {
case hashString("isPlaying"): return margelo::nitro::omni::BoolProperty::ISPLAYING;
case hashString("muted"): return margelo::nitro::omni::BoolProperty::MUTED;
case hashString("isAutoQuality"): return margelo::nitro::omni::BoolProperty::ISAUTOQUALITY;
default: [[unlikely]]
throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum BoolProperty - invalid value!");
}
@@ -53,6 +55,7 @@ namespace margelo::nitro {
switch (arg) {
case margelo::nitro::omni::BoolProperty::ISPLAYING: return JSIConverter<std::string>::toJSI(runtime, "isPlaying");
case margelo::nitro::omni::BoolProperty::MUTED: return JSIConverter<std::string>::toJSI(runtime, "muted");
case margelo::nitro::omni::BoolProperty::ISAUTOQUALITY: return JSIConverter<std::string>::toJSI(runtime, "isAutoQuality");
default: [[unlikely]]
throw std::invalid_argument("Cannot convert BoolProperty to JS - invalid value: "
+ std::to_string(static_cast<int>(arg)) + "!");
@@ -66,6 +69,7 @@ namespace margelo::nitro {
switch (hashString(unionValue.c_str(), unionValue.size())) {
case hashString("isPlaying"):
case hashString("muted"):
case hashString("isAutoQuality"):
return true;
default:
return false;
+1
View File
@@ -37,6 +37,7 @@ namespace margelo::nitro::omni {
prototype.registerHybridSetter("volume", &HybridOmniPlayerSpec::setVolume);
prototype.registerHybridGetter("muted", &HybridOmniPlayerSpec::getMuted);
prototype.registerHybridSetter("muted", &HybridOmniPlayerSpec::setMuted);
prototype.registerHybridGetter("isAutoQuality", &HybridOmniPlayerSpec::getIsAutoQuality);
prototype.registerHybridMethod("play", &HybridOmniPlayerSpec::play);
prototype.registerHybridMethod("pause", &HybridOmniPlayerSpec::pause);
prototype.registerHybridMethod("seekBy", &HybridOmniPlayerSpec::seekBy);
+1
View File
@@ -83,6 +83,7 @@ namespace margelo::nitro::omni {
virtual void setVolume(double volume) = 0;
virtual bool getMuted() = 0;
virtual void setMuted(bool muted) = 0;
virtual bool getIsAutoQuality() = 0;
public:
// Methods
+4
View File
@@ -34,6 +34,7 @@ namespace margelo::nitro::omni {
DURATION SWIFT_NAME(duration) = 2,
PLAYBACKRATE SWIFT_NAME(playbackrate) = 3,
VOLUME SWIFT_NAME(volume) = 4,
ISAUTOQUALITY SWIFT_NAME(isautoquality) = 5,
} CLOSED_ENUM;
} // namespace margelo::nitro::omni
@@ -51,6 +52,7 @@ namespace margelo::nitro {
case hashString("duration"): return margelo::nitro::omni::NumberProperty::DURATION;
case hashString("playbackRate"): return margelo::nitro::omni::NumberProperty::PLAYBACKRATE;
case hashString("volume"): return margelo::nitro::omni::NumberProperty::VOLUME;
case hashString("isAutoQuality"): return margelo::nitro::omni::NumberProperty::ISAUTOQUALITY;
default: [[unlikely]]
throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum NumberProperty - invalid value!");
}
@@ -62,6 +64,7 @@ namespace margelo::nitro {
case margelo::nitro::omni::NumberProperty::DURATION: return JSIConverter<std::string>::toJSI(runtime, "duration");
case margelo::nitro::omni::NumberProperty::PLAYBACKRATE: return JSIConverter<std::string>::toJSI(runtime, "playbackRate");
case margelo::nitro::omni::NumberProperty::VOLUME: return JSIConverter<std::string>::toJSI(runtime, "volume");
case margelo::nitro::omni::NumberProperty::ISAUTOQUALITY: return JSIConverter<std::string>::toJSI(runtime, "isAutoQuality");
default: [[unlikely]]
throw std::invalid_argument("Cannot convert NumberProperty to JS - invalid value: "
+ std::to_string(static_cast<int>(arg)) + "!");
@@ -78,6 +81,7 @@ namespace margelo::nitro {
case hashString("duration"):
case hashString("playbackRate"):
case hashString("volume"):
case hashString("isAutoQuality"):
return true;
default:
return false;