mirror of
https://github.com/badaix/snapcast.git
synced 2025-06-07 05:11:43 +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) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
/*
|
|
||||||
Bundle bundle = getArguments();
|
Bundle bundle = getArguments();
|
||||||
try {
|
try {
|
||||||
client = new Client(new JSONObject(bundle.getString("client")));
|
client = new Client(new JSONObject(bundle.getString("client")));
|
||||||
|
@ -64,22 +63,6 @@ public class ClientSettingsFragment extends PreferenceFragment {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
clientOriginal = new Client(client.toJson());
|
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
|
// Load the preferences from an XML resource
|
||||||
addPreferencesFromResource(R.xml.client_preferences);
|
addPreferencesFromResource(R.xml.client_preferences);
|
||||||
|
@ -92,34 +75,7 @@ public class ClientSettingsFragment extends PreferenceFragment {
|
||||||
return true;
|
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");
|
prefMac = (Preference) findPreference("pref_client_mac");
|
||||||
prefId = (Preference) findPreference("pref_client_id");
|
prefId = (Preference) findPreference("pref_client_id");
|
||||||
prefIp = (Preference) findPreference("pref_client_ip");
|
prefIp = (Preference) findPreference("pref_client_ip");
|
||||||
|
|
|
@ -29,11 +29,14 @@ import android.view.MenuItem;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class GroupPreferenceActivity extends AppCompatActivity {
|
public class GroupPreferenceActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
private GroupPreferenceFragment groupPreferenceFragment;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
GroupPreferenceFragment groupPreferenceFragment = new GroupPreferenceFragment();
|
groupPreferenceFragment = new GroupPreferenceFragment();
|
||||||
groupPreferenceFragment.setArguments(getIntent().getExtras());
|
groupPreferenceFragment.setArguments(getIntent().getExtras());
|
||||||
// Display the fragment as the main content.
|
// Display the fragment as the main content.
|
||||||
getFragmentManager().beginTransaction()
|
getFragmentManager().beginTransaction()
|
||||||
|
@ -52,8 +55,10 @@ public class GroupPreferenceActivity extends AppCompatActivity {
|
||||||
@Override
|
@Override
|
||||||
public void onBackPressed() {
|
public void onBackPressed() {
|
||||||
Intent intent = new Intent();
|
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);
|
setResult(Activity.RESULT_OK, intent);
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import android.preference.Preference;
|
||||||
import android.preference.PreferenceCategory;
|
import android.preference.PreferenceCategory;
|
||||||
import android.preference.PreferenceFragment;
|
import android.preference.PreferenceFragment;
|
||||||
import android.preference.PreferenceScreen;
|
import android.preference.PreferenceScreen;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
@ -41,9 +42,14 @@ import de.badaix.snapcast.control.json.Stream;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class GroupPreferenceFragment extends PreferenceFragment {
|
public class GroupPreferenceFragment extends PreferenceFragment {
|
||||||
|
|
||||||
|
private static final String TAG = "GroupPreferenceFragment";
|
||||||
|
|
||||||
private ListPreference prefStreams;
|
private ListPreference prefStreams;
|
||||||
private Group group = null;
|
private Group group = null;
|
||||||
private ServerStatus serverStatus = null;
|
private ServerStatus serverStatus = null;
|
||||||
|
private PreferenceCategory prefCatClients = null;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
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 (Group g : serverStatus.getGroups()) {
|
||||||
for (Client client : g.getClients()) {
|
for (Client client : g.getClients()) {
|
||||||
|
@ -107,8 +113,27 @@ public class GroupPreferenceFragment extends PreferenceFragment {
|
||||||
checkBoxPref.setKey(client.getId());
|
checkBoxPref.setKey(client.getId());
|
||||||
checkBoxPref.setTitle(client.getVisibleName());
|
checkBoxPref.setTitle(client.getVisibleName());
|
||||||
checkBoxPref.setChecked(g.getId().equals(group.getId()));
|
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.MenuItem;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import de.badaix.snapcast.control.RemoteControl;
|
import de.badaix.snapcast.control.RemoteControl;
|
||||||
import de.badaix.snapcast.control.json.Client;
|
import de.badaix.snapcast.control.json.Client;
|
||||||
|
@ -384,13 +388,14 @@ public class MainActivity extends AppCompatActivity implements GroupItem.GroupIt
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (requestCode == CLIENT_PROPERTIES_REQUEST) {
|
if (requestCode == CLIENT_PROPERTIES_REQUEST) {
|
||||||
/* TODO: group Client client = null;
|
Client client = null;
|
||||||
try {
|
try {
|
||||||
client = new Client(new JSONObject(data.getStringExtra("client")));
|
client = new Client(new JSONObject(data.getStringExtra("client")));
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client clientOriginal = null;
|
Client clientOriginal = null;
|
||||||
try {
|
try {
|
||||||
clientOriginal = new Client(new JSONObject(data.getStringExtra("clientOriginal")));
|
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());
|
Log.d(TAG, "new name: " + client.getConfig().getName() + ", old name: " + clientOriginal.getConfig().getName());
|
||||||
if (!client.getConfig().getName().equals(clientOriginal.getConfig().getName()))
|
if (!client.getConfig().getName().equals(clientOriginal.getConfig().getName()))
|
||||||
remoteControl.setName(client, client.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());
|
Log.d(TAG, "new latency: " + client.getConfig().getLatency() + ", old latency: " + clientOriginal.getConfig().getLatency());
|
||||||
if (client.getConfig().getLatency() != clientOriginal.getConfig().getLatency())
|
if (client.getConfig().getLatency() != clientOriginal.getConfig().getLatency())
|
||||||
remoteControl.setLatency(client, client.getConfig().getLatency());
|
remoteControl.setLatency(client, client.getConfig().getLatency());
|
||||||
serverStatus.updateClient(client);
|
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) {
|
public void setStream(Group group, String id) {
|
||||||
|
setStream(group.getId(), id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStream(String group, String id) {
|
||||||
try {
|
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());
|
tcpClient.sendMessage(request.toString());
|
||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
|
@ -164,6 +164,13 @@ public class ServerStatus implements JsonSerialisable {
|
||||||
return null;
|
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() {
|
public JSONArray getJsonStreams() {
|
||||||
JSONArray jsonArray = new JSONArray();
|
JSONArray jsonArray = new JSONArray();
|
||||||
for (Stream stream : streams)
|
for (Stream stream : streams)
|
||||||
|
|
|
@ -4,10 +4,6 @@
|
||||||
android:key="pref_client_name"
|
android:key="pref_client_name"
|
||||||
android:summary="name"
|
android:summary="name"
|
||||||
android:title="@string/client_name"/>
|
android:title="@string/client_name"/>
|
||||||
<ListPreference
|
|
||||||
android:key="pref_client_stream"
|
|
||||||
android:summary="stream"
|
|
||||||
android:title="@string/client_stream"/>
|
|
||||||
<EditTextPreference
|
<EditTextPreference
|
||||||
android:inputType="numberSigned"
|
android:inputType="numberSigned"
|
||||||
android:key="pref_client_latency"
|
android:key="pref_client_latency"
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
android:title="Stream"/>
|
android:title="Stream"/>
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:key="pref_stream"
|
android:key="pref_stream"
|
||||||
|
android:persistent="false"
|
||||||
android:title=""/>
|
android:title=""/>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="pref_cat_clients"
|
android:key="pref_cat_clients"
|
||||||
|
|
|
@ -5,7 +5,7 @@ buildscript {
|
||||||
jcenter()
|
jcenter()
|
||||||
}
|
}
|
||||||
dependencies {
|
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
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue