2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-09-01 06:35:09 +00:00

Plugin key is now the plugin class instead of being defined by each plugin

This commit is contained in:
Albert Vaca
2015-06-06 00:38:51 -07:00
parent a5e9b29e20
commit 3b0a3e265d
20 changed files with 95 additions and 154 deletions

View File

@@ -614,29 +614,37 @@ public class Device implements BaseLink.PackageReceiver {
// Plugin-related functions
//
public Plugin getPlugin(String name) {
return getPlugin(name, false);
public <T extends Plugin> T getPlugin(Class<T> pluginClass) {
return (T)getPlugin(Plugin.getPluginKey(pluginClass));
}
public Plugin getPlugin(String name, boolean includeFailed) {
Plugin plugin = plugins.get(name);
public <T extends Plugin> T getPlugin(Class<T> pluginClass, boolean includeFailed) {
return (T)getPlugin(Plugin.getPluginKey(pluginClass), includeFailed);
}
public Plugin getPlugin(String pluginKey) {
return getPlugin(pluginKey, false);
}
public Plugin getPlugin(String pluginKey, boolean includeFailed) {
Plugin plugin = plugins.get(pluginKey);
if (includeFailed && plugin == null) {
plugin = failedPlugins.get(name);
plugin = failedPlugins.get(pluginKey);
}
return plugin;
}
private synchronized void addPlugin(final String name) {
Plugin existing = plugins.get(name);
private synchronized void addPlugin(final String pluginKey) {
Plugin existing = plugins.get(pluginKey);
if (existing != null) {
Log.w("KDE/addPlugin","plugin already present:" + name);
Log.w("KDE/addPlugin","plugin already present:" + pluginKey);
return;
}
final Plugin plugin = PluginFactory.instantiatePluginForDevice(context, name, this);
final Plugin plugin = PluginFactory.instantiatePluginForDevice(context, pluginKey, this);
if (plugin == null) {
Log.e("KDE/addPlugin","could not instantiate plugin: "+name);
failedPlugins.put(name, plugin);
Log.e("KDE/addPlugin","could not instantiate plugin: "+pluginKey);
failedPlugins.put(pluginKey, plugin);
return;
}
@@ -650,17 +658,17 @@ public class Device implements BaseLink.PackageReceiver {
} catch (Exception e) {
success = false;
e.printStackTrace();
Log.e("KDE/addPlugin", "Exception loading plugin " + name);
Log.e("KDE/addPlugin", "Exception loading plugin " + pluginKey);
}
if (success) {
//Log.e("addPlugin","added " + name);
failedPlugins.remove(name);
plugins.put(name, plugin);
//Log.e("addPlugin","added " + pluginKey);
failedPlugins.remove(pluginKey);
plugins.put(pluginKey, plugin);
} else {
Log.e("KDE/addPlugin", "plugin failed to load " + name);
plugins.remove(name);
failedPlugins.put(name, plugin);
Log.e("KDE/addPlugin", "plugin failed to load " + pluginKey);
plugins.remove(pluginKey);
failedPlugins.put(pluginKey, plugin);
}
for (PluginsChangedListener listener : pluginsChangedListeners) {
@@ -672,10 +680,10 @@ public class Device implements BaseLink.PackageReceiver {
}
private synchronized boolean removePlugin(String name) {
private synchronized boolean removePlugin(String pluginKey) {
Plugin plugin = plugins.remove(name);
Plugin failedPlugin = failedPlugins.remove(name);
Plugin plugin = plugins.remove(pluginKey);
Plugin failedPlugin = failedPlugins.remove(pluginKey);
if (plugin == null) {
if (failedPlugin == null) {
@@ -687,10 +695,10 @@ public class Device implements BaseLink.PackageReceiver {
try {
plugin.onDestroy();
//Log.e("removePlugin","removed " + name);
//Log.e("removePlugin","removed " + pluginKey);
} catch (Exception e) {
e.printStackTrace();
Log.e("KDE/removePlugin","Exception calling onDestroy for plugin "+name);
Log.e("KDE/removePlugin","Exception calling onDestroy for plugin "+pluginKey);
}
for (PluginsChangedListener listener : pluginsChangedListeners) {
@@ -700,15 +708,15 @@ public class Device implements BaseLink.PackageReceiver {
return true;
}
public void setPluginEnabled(String pluginName, boolean value) {
settings.edit().putBoolean(pluginName,value).apply();
if (value && isPaired() && isReachable()) addPlugin(pluginName);
else removePlugin(pluginName);
public void setPluginEnabled(String pluginKey, boolean value) {
settings.edit().putBoolean(pluginKey,value).apply();
if (value && isPaired() && isReachable()) addPlugin(pluginKey);
else removePlugin(pluginKey);
}
public boolean isPluginEnabled(String pluginName) {
boolean enabledByDefault = PluginFactory.getPluginInfo(context, pluginName).isEnabledByDefault();
boolean enabled = settings.getBoolean(pluginName, enabledByDefault);
public boolean isPluginEnabled(String pluginKey) {
boolean enabledByDefault = PluginFactory.getPluginInfo(context, pluginKey).isEnabledByDefault();
boolean enabled = settings.getBoolean(pluginKey, enabledByDefault);
return enabled;
}
@@ -722,15 +730,15 @@ public class Device implements BaseLink.PackageReceiver {
Set<String> availablePlugins = PluginFactory.getAvailablePlugins();
for(String pluginName : availablePlugins) {
for(String pluginKey : availablePlugins) {
boolean enabled = false;
if (isPaired() && isReachable()) {
enabled = isPluginEnabled(pluginName);
enabled = isPluginEnabled(pluginKey);
}
if (enabled) {
addPlugin(pluginName);
addPlugin(pluginKey);
} else {
removePlugin(pluginName);
removePlugin(pluginKey);
}
}