package org.kde.kdeconnect.UserInterface;
import android.preference.CheckBoxPreference;
import android.view.View;
import org.kde.kdeconnect.Device;
import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.PluginFactory;
import org.kde.kdeconnect_tp.R;
public class PluginPreference extends CheckBoxPreference {
final Device device;
final String pluginKey;
final View.OnClickListener listener;
public PluginPreference(final SettingsActivity activity, final String pluginKey, final Device device) {
super(activity);
setLayoutResource(R.layout.preference_with_button);
this.device = device;
this.pluginKey = pluginKey;
PluginFactory.PluginInfo info = PluginFactory.getPluginInfo(activity, pluginKey);
setTitle(info.getDisplayName());
setSummary(info.getDescription());
setChecked(device.isPluginEnabled(pluginKey));
Plugin plugin = device.getPlugin(pluginKey, true);
if (info.hasSettings() && plugin != null) {
this.listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Plugin plugin = device.getPlugin(pluginKey, true);
if (plugin != null) {
plugin.startPreferencesActivity(activity);
} else { //Could happen if the device is not connected anymore
activity.finish(); //End this activity so we go to the "device not reachable" screen
}
}
};
} else {
this.listener = null;
}
}
@Override
protected void onBindView(View root) {
super.onBindView(root);
final View button = root.findViewById(R.id.settingsButton);
if (listener == null) {
button.setVisibility(View.GONE);
} else {
button.setEnabled(isChecked());
button.setOnClickListener(listener);
}
root.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean newState = !device.isPluginEnabled(pluginKey);
setChecked(newState); //It actually works on API<14
button.setEnabled(newState);
device.setPluginEnabled(pluginKey, newState);
}
});
}
}