2013-09-05 01:37:59 +02:00
|
|
|
package org.kde.kdeconnect.UserInterface;
|
2013-09-03 17:58:59 +02:00
|
|
|
|
2014-09-16 15:45:31 +02:00
|
|
|
import android.content.Intent;
|
2013-09-03 17:58:59 +02:00
|
|
|
import android.os.Bundle;
|
|
|
|
import android.preference.CheckBoxPreference;
|
|
|
|
import android.preference.Preference;
|
2014-09-16 15:45:31 +02:00
|
|
|
import android.preference.PreferenceActivity;
|
|
|
|
import android.preference.PreferenceScreen;
|
2013-09-03 17:58:59 +02:00
|
|
|
import android.view.View;
|
|
|
|
import android.widget.AdapterView;
|
|
|
|
|
2013-09-05 01:37:59 +02:00
|
|
|
import org.kde.kdeconnect.BackgroundService;
|
|
|
|
import org.kde.kdeconnect.Device;
|
|
|
|
import org.kde.kdeconnect.Plugins.PluginFactory;
|
2014-09-16 15:45:31 +02:00
|
|
|
import org.kde.kdeconnect_tp.R;
|
2013-09-03 17:58:59 +02:00
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Set;
|
|
|
|
|
2014-09-16 15:45:31 +02:00
|
|
|
public class SettingsActivity extends PreferenceActivity {
|
2013-09-03 17:58:59 +02:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onCreate(Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
2014-09-16 15:45:31 +02:00
|
|
|
final PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(this);
|
|
|
|
setPreferenceScreen(preferenceScreen);
|
2013-09-03 17:58:59 +02:00
|
|
|
|
|
|
|
final String deviceId = getIntent().getStringExtra("deviceId");
|
|
|
|
BackgroundService.RunCommand(getApplicationContext(), new BackgroundService.InstanceCallback() {
|
|
|
|
@Override
|
|
|
|
public void onServiceStart(BackgroundService service) {
|
|
|
|
|
|
|
|
final Device device = service.getDevice(deviceId);
|
|
|
|
Set<String> plugins = PluginFactory.getAvailablePlugins();
|
|
|
|
|
|
|
|
final ArrayList<Preference> preferences = new ArrayList<Preference>();
|
|
|
|
for (final String pluginName : plugins) {
|
2014-09-16 15:45:31 +02:00
|
|
|
final CheckBoxPreference pref = new CheckBoxPreference(getBaseContext());
|
|
|
|
|
2013-09-03 17:58:59 +02:00
|
|
|
PluginFactory.PluginInfo info = PluginFactory.getPluginInfo(getBaseContext(), pluginName);
|
|
|
|
pref.setKey(pluginName);
|
|
|
|
pref.setTitle(info.getDisplayName());
|
|
|
|
pref.setSummary(info.getDescription());
|
|
|
|
pref.setChecked(device.isPluginEnabled(pluginName));
|
|
|
|
preferences.add(pref);
|
2014-09-16 15:45:31 +02:00
|
|
|
preferenceScreen.addPreference(pref);
|
|
|
|
|
|
|
|
if (info.hasSettings()) {
|
|
|
|
final Preference pluginPreference = new Preference(getBaseContext());
|
2014-09-17 16:05:16 +02:00
|
|
|
pluginPreference.setKey(pluginName + getString(R.string.plugin_settings_key));
|
2014-09-16 15:45:31 +02:00
|
|
|
pluginPreference.setTitle(info.getDisplayName());
|
|
|
|
pluginPreference.setSummary(R.string.plugin_settings);
|
|
|
|
pluginPreference.setSelectable(false);
|
|
|
|
preferences.add(pluginPreference);
|
|
|
|
preferenceScreen.addPreference(pluginPreference);
|
|
|
|
pluginPreference.setDependency(pref.getKey());
|
|
|
|
}
|
2013-09-03 17:58:59 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
setListAdapter(new PreferenceListAdapter(SettingsActivity.this, preferences));
|
|
|
|
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
|
@Override
|
|
|
|
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
2014-09-16 15:45:31 +02:00
|
|
|
Preference current_preference = preferences.get(i);
|
2013-09-03 17:58:59 +02:00
|
|
|
|
2014-09-16 15:45:31 +02:00
|
|
|
if (current_preference.isSelectable()) {
|
|
|
|
CheckBoxPreference pref = (CheckBoxPreference) current_preference;
|
|
|
|
boolean enabled = device.isPluginEnabled(pref.getKey());
|
|
|
|
device.setPluginEnabled(pref.getKey(), !enabled);
|
|
|
|
pref.setChecked(!enabled);
|
|
|
|
} else {
|
|
|
|
Intent intent = new Intent(SettingsActivity.this, PluginSettingsActivity.class);
|
|
|
|
intent.putExtra(Intent.EXTRA_INTENT, current_preference.getKey());
|
|
|
|
startActivity(intent);
|
|
|
|
}
|
2013-09-03 17:58:59 +02:00
|
|
|
|
|
|
|
getListAdapter().getView(i, view, null); //This will refresh the view (yes, this is the way to do it)
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
getListView().setPadding(16,16,16,16);
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|