Implement view

This commit is contained in:
2026-04-10 20:12:34 +02:00
parent fd40915bc9
commit 626380bcc4
14 changed files with 126 additions and 30 deletions
+14 -1
View File
@@ -7,8 +7,12 @@
#include "JHybridOmniViewSpec.hpp"
// Forward declaration of `HybridOmniPlayerSpec` to properly resolve imports.
namespace margelo::nitro::omni { class HybridOmniPlayerSpec; }
#include <memory>
#include "HybridOmniPlayerSpec.hpp"
#include "JHybridOmniPlayerSpec.hpp"
#include <optional>
namespace margelo::nitro::omni {
@@ -41,6 +45,15 @@ namespace margelo::nitro::omni {
}
// Properties
std::shared_ptr<HybridOmniPlayerSpec> JHybridOmniViewSpec::getPlayer() {
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridOmniPlayerSpec::JavaPart>()>("getPlayer");
auto __result = method(_javaPart);
return __result->getJHybridOmniPlayerSpec();
}
void JHybridOmniViewSpec::setPlayer(const std::shared_ptr<HybridOmniPlayerSpec>& player) {
static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JHybridOmniPlayerSpec::JavaPart> /* player */)>("setPlayer");
method(_javaPart, std::dynamic_pointer_cast<JHybridOmniPlayerSpec>(player)->getJavaPart());
}
std::optional<bool> JHybridOmniViewSpec::getAutoplay() {
static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JBoolean>()>("getAutoplay");
auto __result = method(_javaPart);
+2
View File
@@ -50,6 +50,8 @@ namespace margelo::nitro::omni {
public:
// Properties
std::shared_ptr<HybridOmniPlayerSpec> getPlayer() override;
void setPlayer(const std::shared_ptr<HybridOmniPlayerSpec>& player) override;
std::optional<bool> getAutoplay() override;
void setAutoplay(std::optional<bool> autoplay) override;
std::optional<bool> getShowNotification() override;
@@ -37,6 +37,10 @@ void JHybridOmniViewStateUpdater::updateViewProps(jni::alias_ref<jni::JClass> /*
}
// Update all props if they are dirty
if (props->player.isDirty) {
hybridView->setPlayer(props->player.value);
props->player.isDirty = false;
}
if (props->autoplay.isDirty) {
hybridView->setAutoplay(props->autoplay.value);
props->autoplay.isDirty = false;
@@ -26,6 +26,12 @@ import com.margelo.nitro.views.HybridView
)
abstract class HybridOmniViewSpec: HybridView() {
// Properties
@get:DoNotStrip
@get:Keep
@set:DoNotStrip
@set:Keep
abstract var player: HybridOmniPlayerSpec
@get:DoNotStrip
@get:Keep
@set:DoNotStrip