mirror of
https://github.com/badaix/snapcast.git
synced 2025-06-05 04:11:50 +02:00
filled group preferences with life
This commit is contained in:
parent
6c5c998743
commit
cef98e850d
9 changed files with 75 additions and 61 deletions
|
@ -56,7 +56,6 @@ 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")));
|
||||
|
@ -64,22 +63,6 @@ public class ClientSettingsFragment extends PreferenceFragment {
|
|||
e.printStackTrace();
|
||||
}
|
||||
clientOriginal = new Client(client.toJson());
|
||||
final ArrayList<Stream> streams = new ArrayList<>();
|
||||
try {
|
||||
JSONArray jsonArray = new JSONArray(bundle.getString("streams"));
|
||||
for (int i = 0; i < jsonArray.length(); i++)
|
||||
streams.add(new Stream(jsonArray.getJSONObject(i)));
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
*/
|
||||
|
||||
// Load the preferences from an XML resource
|
||||
addPreferencesFromResource(R.xml.client_preferences);
|
||||
|
@ -92,34 +75,7 @@ public class ClientSettingsFragment extends PreferenceFragment {
|
|||
return true;
|
||||
}
|
||||
});
|
||||
/*
|
||||
prefStream = (ListPreference) findPreference("pref_client_stream");
|
||||
prefStream.setEntries(streamNames);
|
||||
prefStream.setEntryValues(streamIds);
|
||||
|
||||
for (int i = 0; i < streams.size(); ++i) {
|
||||
if (streamIds[i].equals(client.getConfig().getStream())) {
|
||||
prefStream.setSummary(streamNames[i]);
|
||||
prefStream.setValueIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
prefStream.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
for (int i = 0; i < streams.size(); ++i) {
|
||||
if (streamIds[i].equals(newValue)) {
|
||||
prefStream.setSummary(streamNames[i]);
|
||||
client.getConfig().setStream(streamIds[i].toString());
|
||||
prefStream.setValueIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
});
|
||||
*/
|
||||
prefMac = (Preference) findPreference("pref_client_mac");
|
||||
prefId = (Preference) findPreference("pref_client_id");
|
||||
prefIp = (Preference) findPreference("pref_client_ip");
|
||||
|
|
|
@ -29,11 +29,14 @@ import android.view.MenuItem;
|
|||
*/
|
||||
|
||||
public class GroupPreferenceActivity extends AppCompatActivity {
|
||||
|
||||
private GroupPreferenceFragment groupPreferenceFragment;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
GroupPreferenceFragment groupPreferenceFragment = new GroupPreferenceFragment();
|
||||
groupPreferenceFragment = new GroupPreferenceFragment();
|
||||
groupPreferenceFragment.setArguments(getIntent().getExtras());
|
||||
// Display the fragment as the main content.
|
||||
getFragmentManager().beginTransaction()
|
||||
|
@ -52,8 +55,10 @@ public class GroupPreferenceActivity extends AppCompatActivity {
|
|||
@Override
|
||||
public void onBackPressed() {
|
||||
Intent intent = new Intent();
|
||||
// intent.putExtra("client", clientSettingsFragment.getClient().toJson().toString());
|
||||
// intent.putExtra("clientOriginal", clientSettingsFragment.getOriginalClientInfo().toJson().toString());
|
||||
|
||||
intent.putStringArrayListExtra("clients", groupPreferenceFragment.getClients());
|
||||
intent.putExtra("stream", groupPreferenceFragment.getStream());
|
||||
intent.putExtra("group", groupPreferenceFragment.getGroup().getId());
|
||||
setResult(Activity.RESULT_OK, intent);
|
||||
finish();
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import android.preference.Preference;
|
|||
import android.preference.PreferenceCategory;
|
||||
import android.preference.PreferenceFragment;
|
||||
import android.preference.PreferenceScreen;
|
||||
import android.util.Log;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
@ -41,9 +42,14 @@ import de.badaix.snapcast.control.json.Stream;
|
|||
*/
|
||||
|
||||
public class GroupPreferenceFragment extends PreferenceFragment {
|
||||
|
||||
private static final String TAG = "GroupPreferenceFragment";
|
||||
|
||||
private ListPreference prefStreams;
|
||||
private Group group = null;
|
||||
private ServerStatus serverStatus = null;
|
||||
private PreferenceCategory prefCatClients = null;
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -99,7 +105,7 @@ public class GroupPreferenceFragment extends PreferenceFragment {
|
|||
});
|
||||
|
||||
|
||||
PreferenceCategory prefStream = (PreferenceCategory) findPreference("pref_cat_clients");
|
||||
prefCatClients = (PreferenceCategory) findPreference("pref_cat_clients");
|
||||
|
||||
for (Group g : serverStatus.getGroups()) {
|
||||
for (Client client : g.getClients()) {
|
||||
|
@ -107,8 +113,27 @@ public class GroupPreferenceFragment extends PreferenceFragment {
|
|||
checkBoxPref.setKey(client.getId());
|
||||
checkBoxPref.setTitle(client.getVisibleName());
|
||||
checkBoxPref.setChecked(g.getId().equals(group.getId()));
|
||||
prefStream.addPreference(checkBoxPref);
|
||||
checkBoxPref.setPersistent(false);
|
||||
prefCatClients.addPreference(checkBoxPref);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ArrayList<String> getClients() {
|
||||
ArrayList<String> clients = new ArrayList<>();
|
||||
for (int i=0; i<prefCatClients.getPreferenceCount(); ++i) {
|
||||
CheckBoxPreference checkBoxPref = (CheckBoxPreference) prefCatClients.getPreference(i);
|
||||
if (checkBoxPref.isChecked())
|
||||
clients.add(checkBoxPref.getKey());
|
||||
}
|
||||
return clients;
|
||||
}
|
||||
|
||||
public String getStream() {
|
||||
return prefStreams.getValue();
|
||||
}
|
||||
|
||||
public Group getGroup() {
|
||||
return group;
|
||||
}
|
||||
}
|
|
@ -45,7 +45,11 @@ import android.view.Menu;
|
|||
import android.view.MenuItem;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import de.badaix.snapcast.control.RemoteControl;
|
||||
import de.badaix.snapcast.control.json.Client;
|
||||
|
@ -384,13 +388,14 @@ public class MainActivity extends AppCompatActivity implements GroupItem.GroupIt
|
|||
return;
|
||||
}
|
||||
if (requestCode == CLIENT_PROPERTIES_REQUEST) {
|
||||
/* TODO: group Client client = null;
|
||||
Client client = null;
|
||||
try {
|
||||
client = new Client(new JSONObject(data.getStringExtra("client")));
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
|
||||
Client clientOriginal = null;
|
||||
try {
|
||||
clientOriginal = new Client(new JSONObject(data.getStringExtra("clientOriginal")));
|
||||
|
@ -401,15 +406,30 @@ public class MainActivity extends AppCompatActivity implements GroupItem.GroupIt
|
|||
Log.d(TAG, "new name: " + client.getConfig().getName() + ", old name: " + clientOriginal.getConfig().getName());
|
||||
if (!client.getConfig().getName().equals(clientOriginal.getConfig().getName()))
|
||||
remoteControl.setName(client, client.getConfig().getName());
|
||||
Log.d(TAG, "new stream: " + client.getConfig().getStream() + ", old stream: " + clientOriginal.getConfig().getStream());
|
||||
if (!client.getConfig().getStream().equals(clientOriginal.getConfig().getStream()))
|
||||
remoteControl.setStream(client, client.getConfig().getStream());
|
||||
Log.d(TAG, "new latency: " + client.getConfig().getLatency() + ", old latency: " + clientOriginal.getConfig().getLatency());
|
||||
if (client.getConfig().getLatency() != clientOriginal.getConfig().getLatency())
|
||||
remoteControl.setLatency(client, client.getConfig().getLatency());
|
||||
serverStatus.updateClient(client);
|
||||
sectionsPagerAdapter.updateServer(serverStatus);
|
||||
*/
|
||||
MainActivity.this.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
clientListFragment.updateServer(MainActivity.this.serverStatus);
|
||||
}
|
||||
});
|
||||
} else if (requestCode == GROUP_PROPERTIES_REQUEST) {
|
||||
ArrayList<String> clients = data.getStringArrayListExtra("client");
|
||||
String streamId = data.getStringExtra("stream");
|
||||
String groupId = data.getStringExtra("group");
|
||||
remoteControl.setStream(groupId, streamId);
|
||||
Group group = serverStatus.getGroup(groupId);
|
||||
group.setStreamId(streamId);
|
||||
serverStatus.updateGroup(group);
|
||||
MainActivity.this.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
clientListFragment.updateServer(MainActivity.this.serverStatus);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -209,8 +209,12 @@ public class RemoteControl implements TcpClient.TcpClientListener {
|
|||
}
|
||||
|
||||
public void setStream(Group group, String id) {
|
||||
setStream(group.getId(), id);
|
||||
}
|
||||
|
||||
public void setStream(String group, String id) {
|
||||
try {
|
||||
JSONObject request = jsonRequest("Group.SetStream", new JSONObject("{\"group\": \"" + group.getId() + "\", \"id\": \"" + id + "\"}"));
|
||||
JSONObject request = jsonRequest("Group.SetStream", new JSONObject("{\"group\": \"" + group + "\", \"id\": \"" + id + "\"}"));
|
||||
tcpClient.sendMessage(request.toString());
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -164,6 +164,13 @@ public class ServerStatus implements JsonSerialisable {
|
|||
return null;
|
||||
}
|
||||
|
||||
public Group getGroup(String id) {
|
||||
for (Group g : groups)
|
||||
if ((g != null) && (g.getId().equals(id)))
|
||||
return g;
|
||||
return null;
|
||||
}
|
||||
|
||||
public JSONArray getJsonStreams() {
|
||||
JSONArray jsonArray = new JSONArray();
|
||||
for (Stream stream : streams)
|
||||
|
|
|
@ -4,10 +4,6 @@
|
|||
android:key="pref_client_name"
|
||||
android:summary="name"
|
||||
android:title="@string/client_name"/>
|
||||
<ListPreference
|
||||
android:key="pref_client_stream"
|
||||
android:summary="stream"
|
||||
android:title="@string/client_stream"/>
|
||||
<EditTextPreference
|
||||
android:inputType="numberSigned"
|
||||
android:key="pref_client_latency"
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
android:title="Stream"/>
|
||||
<ListPreference
|
||||
android:key="pref_stream"
|
||||
android:persistent="false"
|
||||
android:title=""/>
|
||||
<PreferenceCategory
|
||||
android:key="pref_cat_clients"
|
||||
|
|
|
@ -5,7 +5,7 @@ buildscript {
|
|||
jcenter()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:2.2.2'
|
||||
classpath 'com.android.tools.build:gradle:2.2.3'
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue