summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorTom Pratt <tom.pratt@outlook.com>2026-04-27 19:22:31 +0200
committerTom Pratt <tompratt@squareup.com>2026-05-19 12:02:58 +0200
commit183d6d778ca8a87dd5ad1ae3513f7fcfd561369d (patch)
tree2e83bf3df99a162bf439cf93cb0473b8e8dbaa50 /Source/Android/app/src/main/java
parent8141a746713b87be595c94fe4598eb198395b8da (diff)
Use existing settings API instead of custom jni calls
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/Netplay.kt42
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/ConnectionType.kt3
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplaySetupViewModel.kt29
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplayViewModel.kt7
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.kt9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt1
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt16
7 files changed, 50 insertions, 57 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/Netplay.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/Netplay.kt
index 882016dfa9..1cec94f19d 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/Netplay.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/Netplay.kt
@@ -25,7 +25,6 @@ import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.runningFold
import kotlinx.coroutines.isActive
import kotlinx.coroutines.withContext
-import org.dolphinemu.dolphinemu.features.netplay.model.ConnectionType
import org.dolphinemu.dolphinemu.features.netplay.model.NetplayMessage
import org.dolphinemu.dolphinemu.features.netplay.model.Player
import org.dolphinemu.dolphinemu.features.netplay.model.SaveTransferProgress
@@ -279,47 +278,6 @@ object Netplay {
_saveTransferProgress.value = null
}
- // Settings
- object Settings {
- @JvmStatic
- external fun getNickname(): String
-
- @JvmStatic
- external fun setNickname(nickname: String)
-
- fun getConnectionType(): ConnectionType = ConnectionType.all
- .find { it.configValue == getTraversalChoice() } ?: throw IllegalStateException()
-
- @JvmStatic
- external fun getTraversalChoice(): String
-
- @JvmStatic
- external fun setTraversalChoice(traversalChoice: String)
-
- @JvmStatic
- external fun getAddress(): String
-
- @JvmStatic
- external fun setAddress(address: String)
-
- @JvmStatic
- external fun getHostCode(): String
-
- @JvmStatic
- external fun setHostCode(hostCode: String)
-
- @JvmStatic
- external fun getConnectPort(): Int
-
- @JvmStatic
- external fun setConnectPort(port: Int)
-
- @JvmStatic
- external fun getClientBufferSize(): Int
-
- @JvmStatic
- external fun setClientBufferSize(buffer: Int)
- }
}
private fun <T> Channel<T>.flush() {
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/ConnectionType.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/ConnectionType.kt
index f6b3f0eca1..52b4aa10b4 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/ConnectionType.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/ConnectionType.kt
@@ -20,5 +20,8 @@ sealed class ConnectionType(
companion object {
val all: List<ConnectionType>
get() = listOf(DirectConnection, TraversalServer)
+
+ fun fromString(value: String): ConnectionType =
+ all.find { it.configValue == value } ?: throw IllegalArgumentException("Invalid connection type: $value")
}
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplaySetupViewModel.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplaySetupViewModel.kt
index d1bd202c2f..2a04e41c35 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplaySetupViewModel.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplaySetupViewModel.kt
@@ -13,25 +13,30 @@ import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.launch
import org.dolphinemu.dolphinemu.features.netplay.Netplay
+import org.dolphinemu.dolphinemu.features.settings.model.IntSetting
+import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig
+import org.dolphinemu.dolphinemu.features.settings.model.StringSetting
import org.dolphinemu.dolphinemu.services.GameFileCacheManager
class NetplaySetupViewModel : ViewModel() {
private val _connectionRole = MutableStateFlow<ConnectionRole>(ConnectionRole.Connect)
val connectionRole = _connectionRole.asStateFlow()
- private val _nickname = MutableStateFlow(Netplay.Settings.getNickname())
+ private val _nickname = MutableStateFlow(StringSetting.NETPLAY_NICKNAME.string)
val nickname = _nickname.asStateFlow()
- private val _connectionType = MutableStateFlow(Netplay.Settings.getConnectionType())
+ private val _connectionType = MutableStateFlow(
+ ConnectionType.fromString(StringSetting.NETPLAY_TRAVERSAL_CHOICE.string)
+ )
val connectionType = _connectionType.asStateFlow()
- private val _ipAddress = MutableStateFlow(Netplay.Settings.getAddress())
+ private val _ipAddress = MutableStateFlow(StringSetting.NETPLAY_ADDRESS.string)
val ipAddress = _ipAddress.asStateFlow()
- private val _hostCode = MutableStateFlow(Netplay.Settings.getHostCode())
+ private val _hostCode = MutableStateFlow(StringSetting.NETPLAY_HOST_CODE.string)
val hostCode = _hostCode.asStateFlow()
- private val _connectPort = MutableStateFlow(Netplay.Settings.getConnectPort().toString())
+ private val _connectPort = MutableStateFlow(IntSetting.NETPLAY_CONNECT_PORT.int.toString())
val connectPort = _connectPort.asStateFlow()
private val _showNetplayScreen = Channel<Unit>(CONFLATED)
@@ -52,30 +57,34 @@ class NetplaySetupViewModel : ViewModel() {
fun setNickname(nickname: String) {
_nickname.value = nickname
- Netplay.Settings.setNickname(nickname)
+ StringSetting.NETPLAY_NICKNAME.setString(NativeConfig.LAYER_BASE, nickname)
}
fun setConnectionType(connectionType: ConnectionType) {
_connectionType.value = connectionType
- Netplay.Settings.setTraversalChoice(connectionType.configValue)
+ StringSetting.NETPLAY_TRAVERSAL_CHOICE.setString(
+ NativeConfig.LAYER_BASE, connectionType.configValue
+ )
}
fun setIpAddress(ipAddress: String) {
if (ipAddress.all { it.isDigit() || it == '.' }) {
_ipAddress.value = ipAddress
- Netplay.Settings.setAddress(ipAddress)
+ StringSetting.NETPLAY_ADDRESS.setString(NativeConfig.LAYER_BASE, ipAddress)
}
}
fun setHostCode(hostCode: String) {
_hostCode.value = hostCode
- Netplay.Settings.setHostCode(hostCode)
+ StringSetting.NETPLAY_HOST_CODE.setString(NativeConfig.LAYER_BASE, hostCode)
}
fun setConnectPort(port: String) {
if (port.all { it.isDigit() }) {
_connectPort.value = port
- port.toIntOrNull()?.let { Netplay.Settings.setConnectPort(it) }
+ port.toIntOrNull()?.let {
+ IntSetting.NETPLAY_CONNECT_PORT.setInt(NativeConfig.LAYER_BASE, it)
+ }
}
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplayViewModel.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplayViewModel.kt
index 620a66ff5a..66ad26aaec 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplayViewModel.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/netplay/model/NetplayViewModel.kt
@@ -15,8 +15,9 @@ import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import org.dolphinemu.dolphinemu.features.netplay.Netplay
+import org.dolphinemu.dolphinemu.features.settings.model.IntSetting
+import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig
-//TODO save settings
class NetplayViewModel : ViewModel() {
val launchGame = Netplay.launchGame
@@ -37,7 +38,7 @@ class NetplayViewModel : ViewModel() {
val hostInputAuthority = Netplay.hostInputAuthorityEnabled
.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), false)
- private val _maxBuffer = MutableStateFlow(Netplay.Settings.getClientBufferSize())
+ private val _maxBuffer = MutableStateFlow(IntSetting.NETPLAY_CLIENT_BUFFER_SIZE.int)
val maxBuffer = _maxBuffer.asStateFlow()
val saveTransferProgress = Netplay.saveTransferProgress
@@ -59,7 +60,7 @@ class NetplayViewModel : ViewModel() {
fun setMaxBuffer(buffer: Int) {
_maxBuffer.value = buffer
- Netplay.Settings.setClientBufferSize(buffer)
+ IntSetting.NETPLAY_CLIENT_BUFFER_SIZE.setInt(NativeConfig.LAYER_BASE, buffer)
Netplay.adjustPadBufferSize(buffer)
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.kt
index faf9f71ea0..d8bc8fbba5 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.kt
@@ -138,7 +138,14 @@ enum class IntSetting(
WIIMOTE_2_SOURCE(Settings.FILE_WIIMOTE, "Wiimote2", "Source", 0),
WIIMOTE_3_SOURCE(Settings.FILE_WIIMOTE, "Wiimote3", "Source", 0),
WIIMOTE_4_SOURCE(Settings.FILE_WIIMOTE, "Wiimote4", "Source", 0),
- WIIMOTE_BB_SOURCE(Settings.FILE_WIIMOTE, "BalanceBoard", "Source", 0);
+ WIIMOTE_BB_SOURCE(Settings.FILE_WIIMOTE, "BalanceBoard", "Source", 0),
+ NETPLAY_CONNECT_PORT(Settings.FILE_DOLPHIN, Settings.SECTION_INI_NETPLAY, "ConnectPort", 2626),
+ NETPLAY_CLIENT_BUFFER_SIZE(
+ Settings.FILE_DOLPHIN,
+ Settings.SECTION_INI_NETPLAY,
+ "BufferSizeClient",
+ 1
+ );
override val isOverridden: Boolean
get() = NativeConfig.isOverridden(file, section, key)
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt
index 96d40b214c..da54d81258 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.kt
@@ -112,6 +112,7 @@ class Settings : Closeable {
const val SECTION_INI_INTERFACE = "Interface"
const val SECTION_INI_DSP = "DSP"
const val SECTION_INI_GBA = "GBA"
+ const val SECTION_INI_NETPLAY = "NetPlay"
const val SECTION_LOGGER_LOGS = "Logs"
const val SECTION_LOGGER_OPTIONS = "Options"
const val SECTION_GFX_HARDWARE = "Hardware"
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt
index 512a33ddbb..d3070a51ca 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.kt
@@ -101,7 +101,21 @@ enum class StringSetting(
Settings.SECTION_ACHIEVEMENTS,
"ApiToken",
""
- );
+ ),
+ NETPLAY_TRAVERSAL_CHOICE(
+ Settings.FILE_DOLPHIN,
+ Settings.SECTION_INI_NETPLAY,
+ "TraversalChoice",
+ "direct"
+ ),
+ NETPLAY_HOST_CODE(
+ Settings.FILE_DOLPHIN,
+ Settings.SECTION_INI_NETPLAY,
+ "HostCode",
+ ""
+ ),
+ NETPLAY_ADDRESS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_NETPLAY, "Address", "127.0.0.1"),
+ NETPLAY_NICKNAME(Settings.FILE_DOLPHIN, Settings.SECTION_INI_NETPLAY, "Nickname", "Player");
override val isOverridden: Boolean
get() = NativeConfig.isOverridden(file, section, key)