mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-20 13:33:13 -07:00
Deliver Events to Activity
This commit is contained in:
parent
251a270277
commit
ba3339bd6c
3 changed files with 18 additions and 6 deletions
|
@ -118,12 +118,13 @@ static void android_chiaki_event_cb(ChiakiEvent *event, void *user)
|
||||||
case CHIAKI_EVENT_QUIT:
|
case CHIAKI_EVENT_QUIT:
|
||||||
{
|
{
|
||||||
char *reason_str = strdup_jni(event->quit.reason_str);
|
char *reason_str = strdup_jni(event->quit.reason_str);
|
||||||
jstring reason_str_java = E->NewStringUTF(env, reason_str ? reason_str : "");
|
jstring reason_str_java = reason_str ? E->NewStringUTF(env, reason_str) : NULL;
|
||||||
E->CallVoidMethod(env, session->java_session,
|
E->CallVoidMethod(env, session->java_session,
|
||||||
session->java_session_event_quit_meth,
|
session->java_session_event_quit_meth,
|
||||||
(jint)event->quit.reason,
|
(jint)event->quit.reason,
|
||||||
reason_str_java);
|
reason_str_java);
|
||||||
E->DeleteLocalRef(env, reason_str_java);
|
if(reason_str_java)
|
||||||
|
E->DeleteLocalRef(env, reason_str_java);
|
||||||
free(reason_str);
|
free(reason_str);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package com.metallic.chiaki
|
package com.metallic.chiaki
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.util.Log
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import com.metallic.chiaki.lib.ConnectInfo
|
import com.metallic.chiaki.lib.ConnectInfo
|
||||||
|
import com.metallic.chiaki.lib.Event
|
||||||
import com.metallic.chiaki.lib.Session
|
import com.metallic.chiaki.lib.Session
|
||||||
import com.metallic.chiaki.lib.SessionCreateError
|
import com.metallic.chiaki.lib.SessionCreateError
|
||||||
import kotlinx.android.synthetic.main.activity_stream.*
|
import kotlinx.android.synthetic.main.activity_stream.*
|
||||||
|
@ -31,6 +33,10 @@ class StreamActivity : AppCompatActivity()
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
val session = Session(connectInfo)
|
val session = Session(connectInfo)
|
||||||
|
session.eventCallback = {
|
||||||
|
Log.i("StreamActivity", "Got Event $it")
|
||||||
|
}
|
||||||
|
|
||||||
session.start()
|
session.start()
|
||||||
this.session = session
|
this.session = session
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,13 +53,19 @@ class QuitReason(val value: Int)
|
||||||
|
|
||||||
sealed class Event
|
sealed class Event
|
||||||
data class LoginPinRequestEvent(val pinIncorrect: Boolean): Event()
|
data class LoginPinRequestEvent(val pinIncorrect: Boolean): Event()
|
||||||
data class QuitEvent(val reason: QuitReason, val reasonString: String): Event()
|
data class QuitEvent(val reason: QuitReason, val reasonString: String?): Event()
|
||||||
|
|
||||||
class SessionCreateError(val errorCode: ErrorCode): Exception("Failed to create Session: $errorCode")
|
class SessionCreateError(val errorCode: ErrorCode): Exception("Failed to create Session: $errorCode")
|
||||||
|
|
||||||
class Session(connectInfo: ConnectInfo)
|
class Session(connectInfo: ConnectInfo)
|
||||||
{
|
{
|
||||||
|
interface EventCallback
|
||||||
|
{
|
||||||
|
fun sessionEvent(event: Event)
|
||||||
|
}
|
||||||
|
|
||||||
private var nativePtr: Long
|
private var nativePtr: Long
|
||||||
|
var eventCallback: ((event: Event) -> Unit)? = null
|
||||||
|
|
||||||
init
|
init
|
||||||
{
|
{
|
||||||
|
@ -85,8 +91,7 @@ class Session(connectInfo: ConnectInfo)
|
||||||
|
|
||||||
private fun event(event: Event)
|
private fun event(event: Event)
|
||||||
{
|
{
|
||||||
// TODO: send to callback
|
eventCallback?.let { it(event) }
|
||||||
Log.d("ChiakiJNI", "Got event $event")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun eventLoginPinRequest(pinIncorrect: Boolean)
|
private fun eventLoginPinRequest(pinIncorrect: Boolean)
|
||||||
|
@ -94,7 +99,7 @@ class Session(connectInfo: ConnectInfo)
|
||||||
event(LoginPinRequestEvent(pinIncorrect))
|
event(LoginPinRequestEvent(pinIncorrect))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun eventQuit(reasonValue: Int, reasonString: String)
|
private fun eventQuit(reasonValue: Int, reasonString: String?)
|
||||||
{
|
{
|
||||||
event(QuitEvent(QuitReason(reasonValue), reasonString))
|
event(QuitEvent(QuitReason(reasonValue), reasonString))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue