From 27e1909aa2da7cba4b480bb66d027f58311b0819 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Mon, 28 Jun 2021 18:51:42 +0100 Subject: [PATCH] Build 5 --- app/build.gradle | 2 +- .../yggdrasil/ConfigurationProxy.kt | 29 +++++++++++++++ .../neilalexander/yggdrasil/MainActivity.kt | 3 +- .../neilalexander/yggdrasil/PeersActivity.kt | 37 +++++-------------- app/src/main/res/layout/activity_main.xml | 2 +- app/src/main/res/layout/activity_peers.xml | 31 ++++++++++++++-- 6 files changed, 70 insertions(+), 34 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2529a90..9818d72 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { applicationId "eu.neilalexander.yggdrasil" minSdkVersion 21 targetSdkVersion 29 - versionCode 4 + versionCode 5 versionName "0.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/ConfigurationProxy.kt b/app/src/main/java/eu/neilalexander/yggdrasil/ConfigurationProxy.kt index cd7af46..4af8b3b 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/ConfigurationProxy.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/ConfigurationProxy.kt @@ -3,6 +3,7 @@ package eu.neilalexander.yggdrasil import android.content.Context import android.provider.Settings import mobile.Mobile +import org.json.JSONArray import org.json.JSONObject import java.io.File @@ -40,6 +41,18 @@ object ConfigurationProxy { json.put("AdminListen", "none") json.put("IfName", "none") json.put("IfMTU", 65535) + + if (json.getJSONArray("MulticastInterfaces").get(0) is String) { + var ar = JSONArray() + ar.put(0, JSONObject(""" + { + "Regex": ".*", + "Beacon": true, + "Listen": true + } + """.trimIndent())) + json.put("MulticastInterfaces", ar) + } } } @@ -51,4 +64,20 @@ object ConfigurationProxy { fun getJSONByteArray(): ByteArray { return json.toString().toByteArray(Charsets.UTF_8) } + + var multicastListen: Boolean + get() = (json.getJSONArray("MulticastInterfaces").get(0) as JSONObject).getBoolean("Listen") + set(value) { + updateJSON { json -> + (json.getJSONArray("MulticastInterfaces").get(0) as JSONObject).put("Listen", value) + } + } + + var multicastBeacon: Boolean + get() = (json.getJSONArray("MulticastInterfaces").get(0) as JSONObject).getBoolean("Beacon") + set(value) { + updateJSON { json -> + (json.getJSONArray("MulticastInterfaces").get(0) as JSONObject).put("Beacon", value) + } + } } \ No newline at end of file diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt b/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt index f9545d8..577c399 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/MainActivity.kt @@ -13,7 +13,6 @@ import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.localbroadcastmanager.content.LocalBroadcastManager import mobile.Mobile -import org.json.JSONArray class MainActivity : AppCompatActivity() { @@ -34,7 +33,7 @@ class MainActivity : AppCompatActivity() { findViewById(R.id.versionValue).text = Mobile.getVersion() - enabledSwitch = findViewById(R.id.enableMulticastSwitch) + enabledSwitch = findViewById(R.id.enableMulticastBeacon) enabledLabel = findViewById(R.id.yggdrasilStatusLabel) ipAddressLabel = findViewById(R.id.ipAddressValue) subnetLabel = findViewById(R.id.subnetValue) diff --git a/app/src/main/java/eu/neilalexander/yggdrasil/PeersActivity.kt b/app/src/main/java/eu/neilalexander/yggdrasil/PeersActivity.kt index 1c0ece1..af76c8b 100644 --- a/app/src/main/java/eu/neilalexander/yggdrasil/PeersActivity.kt +++ b/app/src/main/java/eu/neilalexander/yggdrasil/PeersActivity.kt @@ -1,13 +1,8 @@ package eu.neilalexander.yggdrasil import android.app.AlertDialog -import android.content.Context -import android.content.DialogInterface import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import android.text.Layout -import android.util.AttributeSet -import android.util.Log import android.view.ContextThemeWrapper import android.view.LayoutInflater import android.view.View @@ -24,7 +19,8 @@ class PeersActivity : AppCompatActivity() { private lateinit var connectedTableLabel: TextView private lateinit var configuredTableLayout: TableLayout private lateinit var configuredTableLabel: TextView - private lateinit var multicastSwitch: Switch + private lateinit var multicastListenSwitch: Switch + private lateinit var multicastBeaconSwitch: Switch private lateinit var addPeerButton: ImageButton override fun onCreate(savedInstanceState: Bundle?) { @@ -40,29 +36,16 @@ class PeersActivity : AppCompatActivity() { configuredTableLayout = findViewById(R.id.configuredPeersTableLayout) configuredTableLabel = findViewById(R.id.configuredPeersLabel) - multicastSwitch = findViewById(R.id.enableMulticastSwitch) - multicastSwitch.setOnCheckedChangeListener { button, _ -> - when (button.isChecked) { - true -> { - config.updateJSON { json -> - json.put("MulticastInterfaces", JSONArray("[\"lo\", \".*\"]")) - } - } - false -> { - config.updateJSON { json -> - json.put("MulticastInterfaces", JSONArray("[\"lo\"]")) - } - } - } + multicastListenSwitch = findViewById(R.id.enableMulticastListen) + multicastListenSwitch.setOnCheckedChangeListener { button, _ -> + config.multicastListen = button.isChecked } - var multicastInterfaceFound = false - val multicastInterfaces = config.getJSON().getJSONArray("MulticastInterfaces") - (0 until multicastInterfaces.length()).forEach { - if (multicastInterfaces[it] == ".*") { - multicastInterfaceFound = true - } + multicastBeaconSwitch = findViewById(R.id.enableMulticastBeacon) + multicastBeaconSwitch.setOnCheckedChangeListener { button, _ -> + config.multicastBeacon = button.isChecked } - multicastSwitch.isChecked = multicastInterfaceFound + multicastListenSwitch.isChecked = config.multicastListen + multicastBeaconSwitch.isChecked = config.multicastBeacon addPeerButton = findViewById(R.id.addPeerButton) addPeerButton.setOnClickListener { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c065936..f95c342 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -85,7 +85,7 @@ android:layout_weight="2" /> diff --git a/app/src/main/res/layout/activity_peers.xml b/app/src/main/res/layout/activity_peers.xml index ea7983f..1d9ecf9 100644 --- a/app/src/main/res/layout/activity_peers.xml +++ b/app/src/main/res/layout/activity_peers.xml @@ -168,17 +168,42 @@ android:showDividers="middle"> + + + + + + + + + +