mirror of
https://github.com/KDE/kdeconnect-android
synced 2025-08-29 13:17:43 +00:00
Allow configuring plugins without permissions
This fixes the bug introduced in f97216 which prevented configuring storage locations because the plugin wasn't returned by `getPlugin` when there are no storage locations present.
This commit is contained in:
parent
01f44f524a
commit
2de744aad8
@ -722,6 +722,15 @@ public class Device implements BaseLink.PacketReceiver {
|
|||||||
return plugins.get(pluginKey);
|
return plugins.get(pluginKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public Plugin getPluginIncludingWithoutPermissions(String pluginKey) {
|
||||||
|
Plugin p = plugins.get(pluginKey);
|
||||||
|
if (p == null) {
|
||||||
|
p = pluginsWithoutPermissions.get(pluginKey);
|
||||||
|
}
|
||||||
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
private synchronized boolean addPlugin(final String pluginKey) {
|
private synchronized boolean addPlugin(final String pluginKey) {
|
||||||
Plugin existing = plugins.get(pluginKey);
|
Plugin existing = plugins.get(pluginKey);
|
||||||
if (existing != null) {
|
if (existing != null) {
|
||||||
|
@ -30,15 +30,14 @@ public class PluginPreference extends SwitchPreference {
|
|||||||
PluginFactory.PluginInfo info = PluginFactory.getPluginInfo(pluginKey);
|
PluginFactory.PluginInfo info = PluginFactory.getPluginInfo(pluginKey);
|
||||||
setTitle(info.getDisplayName());
|
setTitle(info.getDisplayName());
|
||||||
setSummary(info.getDescription());
|
setSummary(info.getDescription());
|
||||||
setIcon(android.R.color.transparent);
|
setIcon(android.R.color.transparent);
|
||||||
setChecked(device.isPluginEnabled(pluginKey));
|
setChecked(device.isPluginEnabled(pluginKey));
|
||||||
|
|
||||||
Plugin plugin = device.getPlugin(pluginKey);
|
if (info.hasSettings()) {
|
||||||
if (info.hasSettings() && plugin != null) {
|
|
||||||
this.listener = v -> {
|
this.listener = v -> {
|
||||||
Plugin plugin1 = device.getPlugin(pluginKey);
|
Plugin plugin = device.getPluginIncludingWithoutPermissions(pluginKey);
|
||||||
if (plugin1 != null) {
|
if (plugin != null) {
|
||||||
callback.onStartPluginSettingsFragment(plugin1);
|
callback.onStartPluginSettingsFragment(plugin);
|
||||||
} else { //Could happen if the device is not connected anymore
|
} else { //Could happen if the device is not connected anymore
|
||||||
callback.onFinish();
|
callback.onFinish();
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ public class PluginSettingsActivity
|
|||||||
if (pluginKey != null) {
|
if (pluginKey != null) {
|
||||||
Device device = BackgroundService.getInstance().getDevice(deviceId);
|
Device device = BackgroundService.getInstance().getDevice(deviceId);
|
||||||
if (device != null) {
|
if (device != null) {
|
||||||
Plugin plugin = device.getPlugin(pluginKey);
|
Plugin plugin = device.getPluginIncludingWithoutPermissions(pluginKey);
|
||||||
if (plugin != null) {
|
if (plugin != null) {
|
||||||
fragment = plugin.getSettingsFragment(this);
|
fragment = plugin.getSettingsFragment(this);
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ public class PluginSettingsFragment extends PreferenceFragmentCompat {
|
|||||||
this.pluginKey = getArguments().getString(ARG_PLUGIN_KEY);
|
this.pluginKey = getArguments().getString(ARG_PLUGIN_KEY);
|
||||||
this.layout = getArguments().getInt(ARG_LAYOUT);
|
this.layout = getArguments().getInt(ARG_LAYOUT);
|
||||||
this.device = getDeviceOrThrow(getDeviceId());
|
this.device = getDeviceOrThrow(getDeviceId());
|
||||||
this.plugin = device.getPlugin(pluginKey);
|
this.plugin = device.getPluginIncludingWithoutPermissions(pluginKey);
|
||||||
|
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user