mirror of
https://github.com/zoriya/react-native-omni.git
synced 2026-08-09 23:58:35 +00:00
Scaffold player
This commit is contained in:
@@ -1,27 +0,0 @@
|
||||
package dev.zoriya.omni
|
||||
|
||||
import android.graphics.Color
|
||||
import android.view.View
|
||||
import androidx.annotation.Keep
|
||||
import com.facebook.proguard.annotations.DoNotStrip
|
||||
import com.facebook.react.uimanager.ThemedReactContext
|
||||
import com.margelo.nitro.omni.HybridOmniSpec
|
||||
|
||||
@Keep
|
||||
@DoNotStrip
|
||||
class HybridOmni(val context: ThemedReactContext): HybridOmniSpec() {
|
||||
// View
|
||||
override val view: View = View(context)
|
||||
|
||||
// Props
|
||||
private var _isRed = false
|
||||
override var isRed: Boolean
|
||||
get() = _isRed
|
||||
set(value) {
|
||||
_isRed = value
|
||||
view.setBackgroundColor(
|
||||
if (value) Color.RED
|
||||
else Color.BLACK
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ public class OmniPackage : BaseReactPackage() {
|
||||
|
||||
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
|
||||
val viewManagers = ArrayList<ViewManager<*, *>>()
|
||||
viewManagers.add(HybridOmniManager())
|
||||
viewManagers.add(HybridOmniViewManager())
|
||||
return viewManagers
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
package dev.zoriya.omni
|
||||
|
||||
import com.margelo.nitro.omni.HybridOmniPlayerPropsSpec
|
||||
import com.margelo.nitro.omni.HybridOmniPlayerSpec
|
||||
import com.margelo.nitro.omni.PlayerStatus
|
||||
import com.margelo.nitro.omni.Rendition
|
||||
import com.margelo.nitro.omni.Track
|
||||
import com.margelo.nitro.omni.Variant_NullType_Rendition
|
||||
|
||||
class OmniPlayer(source: HybridOmniPlayerPropsSpec) : HybridOmniPlayerSpec() {
|
||||
override val hasPrev: Boolean
|
||||
get() = TODO("Not yet implemented")
|
||||
override val hasNext: Boolean
|
||||
get() = TODO("Not yet implemented")
|
||||
override val status: PlayerStatus
|
||||
get() = TODO("Not yet implemented")
|
||||
override val isPlaying: Boolean
|
||||
get() = TODO("Not yet implemented")
|
||||
override var currentTime: Double
|
||||
get() = TODO("Not yet implemented")
|
||||
set(value) {}
|
||||
override val buffered: Double
|
||||
get() = TODO("Not yet implemented")
|
||||
override val duration: Double
|
||||
get() = TODO("Not yet implemented")
|
||||
override var playbackRate: Double
|
||||
get() = TODO("Not yet implemented")
|
||||
set(value) {}
|
||||
override var volume: Double
|
||||
get() = TODO("Not yet implemented")
|
||||
set(value) {}
|
||||
override val videos: Array<Track>
|
||||
get() = TODO("Not yet implemented")
|
||||
override val audios: Array<Track>
|
||||
get() = TODO("Not yet implemented")
|
||||
override val subtitles: Array<Track>
|
||||
get() = TODO("Not yet implemented")
|
||||
override val rendition: Array<Rendition>
|
||||
get() = TODO("Not yet implemented")
|
||||
|
||||
override fun play() {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun pause() {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun seekBy(offset: Double) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun playPrev() {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun playNext() {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun selectVideo(video: Track) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun selectAudio(audio: Track) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun selectSubtitle(subtitle: Track) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override fun selectRendition(rendition: Variant_NullType_Rendition?) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package dev.zoriya.omni
|
||||
|
||||
import com.facebook.react.uimanager.ThemedReactContext
|
||||
import com.margelo.nitro.omni.HybridOmniPlayerFactorySpec
|
||||
import com.margelo.nitro.omni.HybridOmniPlayerPropsSpec
|
||||
import com.margelo.nitro.omni.HybridOmniPlayerSpec
|
||||
|
||||
class OmniPlayerFactory(val context: ThemedReactContext): HybridOmniPlayerFactorySpec() {
|
||||
override fun createPlayer(props: HybridOmniPlayerPropsSpec): HybridOmniPlayerSpec {
|
||||
return OmniPlayer(props)
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package dev.zoriya.omni
|
||||
|
||||
import android.graphics.Color
|
||||
import android.view.View
|
||||
import com.facebook.react.uimanager.ThemedReactContext
|
||||
import com.margelo.nitro.omni.HybridOmniViewSpec
|
||||
|
||||
class OmniView(val context: ThemedReactContext) : HybridOmniViewSpec() {
|
||||
// View
|
||||
override val view: View = View(context)
|
||||
|
||||
// Props
|
||||
override var autoplay: Boolean?
|
||||
get() = TODO("Not yet implemented")
|
||||
set(value) {}
|
||||
override var showNotification: Boolean?
|
||||
get() = TODO("Not yet implemented")
|
||||
set(value) {}
|
||||
override var autoPip: Boolean?
|
||||
get() = TODO("Not yet implemented")
|
||||
set(value) {}
|
||||
}
|
||||
+2
-8
@@ -12,19 +12,13 @@
|
||||
"OmniView": {
|
||||
"android": {
|
||||
"language": "kotlin",
|
||||
"implementationClassName": "OmniView"
|
||||
}
|
||||
},
|
||||
"OmniPlayer": {
|
||||
"android": {
|
||||
"language": "kotlin",
|
||||
"implementationClassName": "OmniPlayer"
|
||||
"implementationClassName": "HybridOmniView"
|
||||
}
|
||||
},
|
||||
"OmniPlayerFactory": {
|
||||
"android": {
|
||||
"language": "kotlin",
|
||||
"implementationClassName": "OmniPlayerFactory"
|
||||
"implementationClassName": "HybridOmniPlayerFactory"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
+2
-16
@@ -31,23 +31,15 @@ int initialize(JavaVM* vm) {
|
||||
}
|
||||
|
||||
struct JHybridOmniViewSpecImpl: public jni::JavaClass<JHybridOmniViewSpecImpl, JHybridOmniViewSpec::JavaPart> {
|
||||
static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/OmniView;";
|
||||
static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/HybridOmniView;";
|
||||
static std::shared_ptr<JHybridOmniViewSpec> create() {
|
||||
static const auto constructorFn = javaClassStatic()->getConstructor<JHybridOmniViewSpecImpl::javaobject()>();
|
||||
jni::local_ref<JHybridOmniViewSpec::JavaPart> javaPart = javaClassStatic()->newObject(constructorFn);
|
||||
return javaPart->getJHybridOmniViewSpec();
|
||||
}
|
||||
};
|
||||
struct JHybridOmniPlayerSpecImpl: public jni::JavaClass<JHybridOmniPlayerSpecImpl, JHybridOmniPlayerSpec::JavaPart> {
|
||||
static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/OmniPlayer;";
|
||||
static std::shared_ptr<JHybridOmniPlayerSpec> create() {
|
||||
static const auto constructorFn = javaClassStatic()->getConstructor<JHybridOmniPlayerSpecImpl::javaobject()>();
|
||||
jni::local_ref<JHybridOmniPlayerSpec::JavaPart> javaPart = javaClassStatic()->newObject(constructorFn);
|
||||
return javaPart->getJHybridOmniPlayerSpec();
|
||||
}
|
||||
};
|
||||
struct JHybridOmniPlayerFactorySpecImpl: public jni::JavaClass<JHybridOmniPlayerFactorySpecImpl, JHybridOmniPlayerFactorySpec::JavaPart> {
|
||||
static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/OmniPlayerFactory;";
|
||||
static constexpr auto kJavaDescriptor = "Ldev/zoriya/omni/HybridOmniPlayerFactory;";
|
||||
static std::shared_ptr<JHybridOmniPlayerFactorySpec> create() {
|
||||
static const auto constructorFn = javaClassStatic()->getConstructor<JHybridOmniPlayerFactorySpecImpl::javaobject()>();
|
||||
jni::local_ref<JHybridOmniPlayerFactorySpec::JavaPart> javaPart = javaClassStatic()->newObject(constructorFn);
|
||||
@@ -73,12 +65,6 @@ void registerAllNatives() {
|
||||
return JHybridOmniViewSpecImpl::create();
|
||||
}
|
||||
);
|
||||
HybridObjectRegistry::registerHybridObjectConstructor(
|
||||
"OmniPlayer",
|
||||
[]() -> std::shared_ptr<HybridObject> {
|
||||
return JHybridOmniPlayerSpecImpl::create();
|
||||
}
|
||||
);
|
||||
HybridObjectRegistry::registerHybridObjectConstructor(
|
||||
"OmniPlayerFactory",
|
||||
[]() -> std::shared_ptr<HybridObject> {
|
||||
|
||||
+4
-4
@@ -21,7 +21,7 @@ import dev.zoriya.omni.*
|
||||
*/
|
||||
public class HybridOmniViewManager: SimpleViewManager<View>() {
|
||||
init {
|
||||
if (RecyclableView::class.java.isAssignableFrom(OmniView::class.java)) {
|
||||
if (RecyclableView::class.java.isAssignableFrom(HybridOmniView::class.java)) {
|
||||
// Enable view recycling
|
||||
super.setupViewRecycling()
|
||||
}
|
||||
@@ -32,7 +32,7 @@ public class HybridOmniViewManager: SimpleViewManager<View>() {
|
||||
}
|
||||
|
||||
override fun createViewInstance(reactContext: ThemedReactContext): View {
|
||||
val hybridView = OmniView(reactContext)
|
||||
val hybridView = HybridOmniView(reactContext)
|
||||
val view = hybridView.view
|
||||
view.setTag(associated_hybrid_view_tag, hybridView)
|
||||
return view
|
||||
@@ -74,7 +74,7 @@ public class HybridOmniViewManager: SimpleViewManager<View>() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun getHybridView(view: View): OmniView? {
|
||||
return view.getTag(associated_hybrid_view_tag) as? OmniView
|
||||
private fun getHybridView(view: View): HybridOmniView? {
|
||||
return view.getTag(associated_hybrid_view_tag) as? HybridOmniView
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user