diff --git a/res/values/strings.xml b/res/values/strings.xml index e0cd348f..4f160d39 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -547,4 +547,6 @@ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted Plugin stats + Enable backwards-compatible device discovery + diff --git a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java index 555fd76f..9db86346 100644 --- a/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java +++ b/src/org/kde/kdeconnect/Backends/LanBackend/LanLinkProvider.java @@ -24,6 +24,7 @@ import org.kde.kdeconnect.Helpers.TrustedNetworkHelper; import org.kde.kdeconnect.KdeConnect; import org.kde.kdeconnect.NetworkPacket; import org.kde.kdeconnect.UserInterface.CustomDevicesActivity; +import org.kde.kdeconnect.UserInterface.SettingsFragment; import java.io.BufferedReader; import java.io.IOException; @@ -331,6 +332,12 @@ public class LanLinkProvider extends BaseLinkProvider { } private void broadcastUdpIdentityPacket() { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); + if (!preferences.getBoolean(SettingsFragment.KEY_UDP_BROADCAST_ENABLED, true)) { + Log.i("LanLinkProvider", "UDP broadcast is disabled in settings. Skipping."); + return; + } + if (System.currentTimeMillis() < lastBroadcast + delayBetweenBroadcasts) { Log.i("LanLinkProvider", "broadcastUdpPacket: relax cowboy"); return; diff --git a/src/org/kde/kdeconnect/UserInterface/SettingsFragment.java b/src/org/kde/kdeconnect/UserInterface/SettingsFragment.java index e3e8fd1b..a0c5f215 100644 --- a/src/org/kde/kdeconnect/UserInterface/SettingsFragment.java +++ b/src/org/kde/kdeconnect/UserInterface/SettingsFragment.java @@ -37,6 +37,9 @@ import org.kde.kdeconnect_tp.R; public class SettingsFragment extends PreferenceFragmentCompat { + public static final String KEY_UDP_BROADCAST_ENABLED = "udp_broadcast_enabled"; + public static final String KEY_APP_THEME = "theme_pref"; + private EditTextPreference renameDevice; @NonNull @@ -90,7 +93,7 @@ public class SettingsFragment extends PreferenceFragmentCompat { // Theme Selector ListPreference themeSelector = new ListPreference(context); - themeSelector.setKey("theme_pref"); + themeSelector.setKey(KEY_APP_THEME); themeSelector.setTitle(R.string.theme_dialog_title); themeSelector.setDialogTitle(R.string.theme_dialog_title); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { @@ -168,6 +171,13 @@ public class SettingsFragment extends PreferenceFragmentCompat { return true; }); + // UDP broadcast toggle + final TwoStatePreference udpBroadcastDiscovery = new SwitchPreference(context); + udpBroadcastDiscovery.setPersistent(false); + udpBroadcastDiscovery.setDefaultValue(true); + udpBroadcastDiscovery.setKey(KEY_UDP_BROADCAST_ENABLED); + udpBroadcastDiscovery.setTitle(R.string.enable_udp_broadcast); + screen.addPreference(udpBroadcastDiscovery); // More settings text Preference moreSettingsText = new Preference(context);