fill GroupPreferences

This commit is contained in:
badaix 2016-12-06 23:06:11 +01:00
parent de081b671a
commit 6c5c998743
4 changed files with 68 additions and 19 deletions

View file

@ -42,7 +42,6 @@ public class ClientSettingsFragment extends PreferenceFragment {
private Client client = null;
private Client clientOriginal = null;
private EditTextPreference prefName;
private ListPreference prefStream;
private EditTextPreference prefLatency;
private Preference prefMac;
private Preference prefId;
@ -57,6 +56,7 @@ public class ClientSettingsFragment extends PreferenceFragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*
Bundle bundle = getArguments();
try {
client = new Client(new JSONObject(bundle.getString("client")));
@ -79,6 +79,7 @@ public class ClientSettingsFragment extends PreferenceFragment {
streamNames[i] = streams.get(i).getName();
streamIds[i] = streams.get(i).getId();
}
*/
// Load the preferences from an XML resource
addPreferencesFromResource(R.xml.client_preferences);
@ -91,10 +92,11 @@ public class ClientSettingsFragment extends PreferenceFragment {
return true;
}
});
/*
prefStream = (ListPreference) findPreference("pref_client_stream");
prefStream.setEntries(streamNames);
prefStream.setEntryValues(streamIds);
/* TODO: group
for (int i = 0; i < streams.size(); ++i) {
if (streamIds[i].equals(client.getConfig().getStream())) {
prefStream.setSummary(streamNames[i]);

View file

@ -33,9 +33,11 @@ public class GroupPreferenceActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GroupPreferenceFragment groupPreferenceFragment = new GroupPreferenceFragment();
groupPreferenceFragment.setArguments(getIntent().getExtras());
// Display the fragment as the main content.
getFragmentManager().beginTransaction()
.replace(android.R.id.content, new GroupPreferenceFragment()).commit();
.replace(android.R.id.content, groupPreferenceFragment).commit();
}
@Override

View file

@ -26,12 +26,24 @@ import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import de.badaix.snapcast.control.json.Client;
import de.badaix.snapcast.control.json.Group;
import de.badaix.snapcast.control.json.ServerStatus;
import de.badaix.snapcast.control.json.Stream;
/**
* Created by johannes on 06.12.16.
*/
public class GroupPreferenceFragment extends PreferenceFragment {
private ListPreference prefStreams;
private Group group = null;
private ServerStatus serverStatus = null;
@Override
public void onCreate(Bundle savedInstanceState) {
@ -42,28 +54,61 @@ public class GroupPreferenceFragment extends PreferenceFragment {
PreferenceScreen screen = this.getPreferenceScreen();
prefStreams = (ListPreference) findPreference("pref_stream");
final CharSequence[] entries = { "English", "French" };
final CharSequence[] entryValues = {"1" , "2"};
prefStreams.setEntries(entries);
prefStreams.setDefaultValue("1");
prefStreams.setEntryValues(entryValues);
Bundle bundle = getArguments();
try {
group = new Group(new JSONObject(bundle.getString("group")));
serverStatus = new ServerStatus(new JSONObject(bundle.getString("serverStatus")));
} catch (JSONException e) {
e.printStackTrace();
}
final ArrayList<Stream> streams = serverStatus.getStreams();
final CharSequence[] streamNames = new CharSequence[streams.size()];
final CharSequence[] streamIds = new CharSequence[streams.size()];
for (int i = 0; i < streams.size(); ++i) {
streamNames[i] = streams.get(i).getName();
streamIds[i] = streams.get(i).getId();
}
prefStreams.setEntries(streamNames);
prefStreams.setEntryValues(streamIds);
for (int i = 0; i < streams.size(); ++i) {
if (streamIds[i].equals(group.getStreamId())) {
prefStreams.setTitle(streamNames[i]);
prefStreams.setValueIndex(i);
break;
}
}
prefStreams.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary(newValue.toString());
prefStreams.setTitle(entries[prefStreams.findIndexOfValue(newValue.toString())]);
return true;
for (int i = 0; i < streams.size(); ++i) {
if (streamIds[i].equals(newValue)) {
prefStreams.setTitle(streamNames[i]);
// client.getConfig().setStream(streamIds[i].toString());
prefStreams.setValueIndex(i);
break;
}
}
return false;
}
});
PreferenceCategory prefStream = (PreferenceCategory) findPreference("pref_cat_clients");
for (int i=0; i<3; ++i) {
CheckBoxPreference checkBoxPref = new CheckBoxPreference(screen.getContext());
checkBoxPref.setKey("key" + i);
checkBoxPref.setTitle("Title " + i);
checkBoxPref.setChecked(true);
prefStream.addPreference(checkBoxPref);
for (Group g : serverStatus.getGroups()) {
for (Client client : g.getClients()) {
CheckBoxPreference checkBoxPref = new CheckBoxPreference(screen.getContext());
checkBoxPref.setKey(client.getId());
checkBoxPref.setTitle(client.getVisibleName());
checkBoxPref.setChecked(g.getId().equals(group.getId()));
prefStream.addPreference(checkBoxPref);
}
}
}
}

View file

@ -575,7 +575,6 @@ public class MainActivity extends AppCompatActivity implements GroupItem.GroupIt
public void onClientPropertiesClicked(GroupItem groupItem, ClientItem clientItem) {
Intent intent = new Intent(this, ClientSettingsActivity.class);
intent.putExtra("client", clientItem.getClient().toJson().toString());
intent.putExtra("streams", serverStatus.getJsonStreams().toString());
intent.setFlags(0);
startActivityForResult(intent, CLIENT_PROPERTIES_REQUEST);
}
@ -583,7 +582,8 @@ public class MainActivity extends AppCompatActivity implements GroupItem.GroupIt
@Override
public void onPropertiesClicked(GroupItem groupItem) {
Intent intent = new Intent(this, GroupPreferenceActivity.class);
intent.putExtra("test", "xxx");
intent.putExtra("serverStatus", serverStatus.toJson().toString());
intent.putExtra("group", groupItem.getGroup().toJson().toString());
intent.setFlags(0);
startActivityForResult(intent, GROUP_PROPERTIES_REQUEST);
}