diff --git a/res/values/strings.xml b/res/values/strings.xml
index 56dea421..79d4879a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -269,6 +269,7 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted
Invalid device name
Received text, saved to clipboard
Custom device list
+ %d devices added manually
Add devices by IP
Custom device deleted
If your device is not automatically detected you can add its IP address or hostname by clicking on the Floating Action Button
diff --git a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java
index 0158e731..ffb051c7 100644
--- a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java
+++ b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java
@@ -386,7 +386,7 @@ public class LanLinkProvider extends BaseLinkProvider {
ThreadHelper.execute(() -> {
List hostList = CustomDevicesActivity
- .getCustomDeviceList(PreferenceManager.getDefaultSharedPreferences(context));
+ .getCustomDeviceList(context);
if (TrustedNetworkHelper.isTrustedNetwork(context)) {
hostList.add(DeviceHost.BROADCAST); //Default: broadcast.
diff --git a/src/org/kde/kdeconnect/UserInterface/CustomDevicesActivity.java b/src/org/kde/kdeconnect/UserInterface/CustomDevicesActivity.java
index d76eda1f..8e416b44 100644
--- a/src/org/kde/kdeconnect/UserInterface/CustomDevicesActivity.java
+++ b/src/org/kde/kdeconnect/UserInterface/CustomDevicesActivity.java
@@ -7,6 +7,7 @@
package org.kde.kdeconnect.UserInterface;
+import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
@@ -48,7 +49,6 @@ public class CustomDevicesActivity extends AppCompatActivity implements CustomDe
private ArrayList customDeviceList;
private EditTextAlertDialogFragment addDeviceDialog;
- private SharedPreferences sharedPreferences;
private CustomDevicesAdapter customDevicesAdapter;
private DeletedCustomDevice lastDeletedCustomDevice;
private int editingDeviceAtPosition;
@@ -70,9 +70,7 @@ public class CustomDevicesActivity extends AppCompatActivity implements CustomDe
fab.setOnClickListener(v -> showEditTextDialog(null));
- sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
-
- customDeviceList = getCustomDeviceList(sharedPreferences);
+ customDeviceList = getCustomDeviceList(this);
customDeviceList.forEach(host -> host.checkReachable(() -> {
runOnUiThread(() -> customDevicesAdapter.notifyDataSetChanged());
return Unit.INSTANCE;
@@ -131,6 +129,7 @@ public class CustomDevicesActivity extends AppCompatActivity implements CustomDe
}
private void saveList() {
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String serialized = TextUtils.join(IP_DELIM, customDeviceList);
sharedPreferences
.edit()
@@ -154,7 +153,8 @@ public class CustomDevicesActivity extends AppCompatActivity implements CustomDe
return ipList;
}
- public static ArrayList getCustomDeviceList(SharedPreferences sharedPreferences) {
+ public static ArrayList getCustomDeviceList(Context context) {
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
String deviceListPrefs = sharedPreferences.getString(KEY_CUSTOM_DEVLIST_PREFERENCE, "");
ArrayList list = deserializeIpList(deviceListPrefs);
list.sort(Comparator.comparing(DeviceHost::toString));
diff --git a/src/org/kde/kdeconnect/UserInterface/SettingsFragment.kt b/src/org/kde/kdeconnect/UserInterface/SettingsFragment.kt
index 5674aabb..a32ea1e9 100644
--- a/src/org/kde/kdeconnect/UserInterface/SettingsFragment.kt
+++ b/src/org/kde/kdeconnect/UserInterface/SettingsFragment.kt
@@ -6,6 +6,7 @@
package org.kde.kdeconnect.UserInterface
import android.Manifest
+import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
@@ -151,16 +152,37 @@ class SettingsFragment : PreferenceFragmentCompat() {
}
}
+ private val REQUEST_REFRESH_DEVICES_BY_IP = 1
+
+ private lateinit var devicesByIpPref : Preference
+
/** Opens activity to configure device by IP when clicked */
private fun devicesByIpPref(context: Context) = Preference(context).apply {
+ devicesByIpPref = this
isPersistent = false
setTitle(R.string.custom_device_list)
+ updateDevicesByIpSummary()
onPreferenceClickListener = Preference.OnPreferenceClickListener {
- startActivity(Intent(context, CustomDevicesActivity::class.java))
+ startActivityForResult(Intent(context, CustomDevicesActivity::class.java), REQUEST_REFRESH_DEVICES_BY_IP)
true
}
}
+ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+ if (requestCode == REQUEST_REFRESH_DEVICES_BY_IP) {
+ updateDevicesByIpSummary()
+ } else {
+ super.onActivityResult(requestCode, resultCode, data)
+ }
+ }
+
+ private fun updateDevicesByIpSummary() {
+ devicesByIpPref.setSummary(getString(
+ R.string.custom_devices_settings_summary,
+ CustomDevicesActivity.getCustomDeviceList(context).size
+ ))
+ }
+
private fun udpBroadcastPref(context: Context) = SwitchPreference(context).apply {
setDefaultValue(true)
key = KEY_UDP_BROADCAST_ENABLED