fixed reconnecting

This commit is contained in:
badaix 2016-02-08 13:19:19 +01:00
parent 73a9223c6f
commit 07d76f365f
2 changed files with 18 additions and 19 deletions

View file

@ -365,7 +365,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen
@Override @Override
public void onDisconnected(RemoteControl remoteControl) { public void onDisconnected(RemoteControl remoteControl) {
Log.d(TAG, "onDisconnected"); Log.d(TAG, "onDisconnected");
serverInfo = null; serverInfo = new ServerInfo();
sectionsPagerAdapter.updateServer(serverInfo); sectionsPagerAdapter.updateServer(serverInfo);
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
@Override @Override
@ -436,7 +436,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen
final ClientInfo clientInfo = clientInfoItem.getClientInfo(); final ClientInfo clientInfo = clientInfoItem.getClientInfo();
clientInfo.setDeleted(true); clientInfo.setDeleted(true);
serverInfo.updateClient(clientInfo); serverInfo.updateClient(clientInfo);
// sectionsPagerAdapter.update(); sectionsPagerAdapter.updateServer(serverInfo);
Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout),
getString(R.string.client_deleted, clientInfo.getVisibleName()), getString(R.string.client_deleted, clientInfo.getVisibleName()),
Snackbar.LENGTH_SHORT); Snackbar.LENGTH_SHORT);
@ -445,7 +445,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen
public void onClick(View v) { public void onClick(View v) {
clientInfo.setDeleted(false); clientInfo.setDeleted(false);
serverInfo.updateClient(clientInfo); serverInfo.updateClient(clientInfo);
// sectionsPagerAdapter.update(); sectionsPagerAdapter.updateServer(serverInfo);
} }
}); });
mySnackbar.setCallback(new Snackbar.Callback() { mySnackbar.setCallback(new Snackbar.Callback() {
@ -478,6 +478,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen
private Vector<ClientListFragment> fragments = new Vector<>(); private Vector<ClientListFragment> fragments = new Vector<>();
private ServerInfo serverInfo = new ServerInfo(); private ServerInfo serverInfo = new ServerInfo();
private int streamCount = 0;
public SectionsPagerAdapter(FragmentManager fm) { public SectionsPagerAdapter(FragmentManager fm) {
super(fm); super(fm);
@ -487,27 +488,23 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen
MainActivity.this.runOnUiThread(new Runnable() { MainActivity.this.runOnUiThread(new Runnable() {
@Override @Override
public void run() { public void run() {
SectionsPagerAdapter.this.serverInfo = serverInfo; if (serverInfo == null)
SectionsPagerAdapter.this.serverInfo = new ServerInfo();
else;
SectionsPagerAdapter.this.serverInfo = serverInfo;
boolean changed = ((serverInfo == null) || (serverInfo.getStreams().size() != fragments.size())); boolean changed = (serverInfo.getStreams().size() != streamCount);
if (serverInfo != null) { while (serverInfo.getStreams().size() > fragments.size())
fragments.add(ClientListFragment.newInstance("TODO1"));
while (serverInfo.getStreams().size() < fragments.size()) for (int i = 0; i < serverInfo.getStreams().size(); ++i) {
fragments.removeElement(fragments.lastElement()); fragments.get(i).setStream(serverInfo.getStreams().get(i));
fragments.get(i).updateServer(serverInfo);
while (serverInfo.getStreams().size() > fragments.size())
fragments.add(ClientListFragment.newInstance("TODO1"));
for (int i = 0; i < serverInfo.getStreams().size(); ++i) {
fragments.get(i).setStream(serverInfo.getStreams().get(i));
fragments.get(i).updateServer(serverInfo);
}
} else {
fragments.clear();
} }
if (changed) { if (changed) {
streamCount = serverInfo.getStreams().size();
notifyDataSetChanged(); notifyDataSetChanged();
tabLayout.setTabsFromPagerAdapter(SectionsPagerAdapter.this); tabLayout.setTabsFromPagerAdapter(SectionsPagerAdapter.this);
} }
@ -529,7 +526,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen
@Override @Override
public int getCount() { public int getCount() {
return fragments.size(); return streamCount;
} }
@Override @Override

View file

@ -107,6 +107,7 @@ public class RemoteControl implements TcpClient.TcpClientListener {
@Override @Override
public void onConnected(TcpClient tcpClient) { public void onConnected(TcpClient tcpClient) {
Log.d(TAG, "onConnected"); Log.d(TAG, "onConnected");
serverInfo = new ServerInfo();
if (listener != null) if (listener != null)
listener.onConnected(this); listener.onConnected(this);
} }
@ -114,6 +115,7 @@ public class RemoteControl implements TcpClient.TcpClientListener {
@Override @Override
public void onDisconnected(TcpClient tcpClient) { public void onDisconnected(TcpClient tcpClient) {
Log.d(TAG, "onDisconnected"); Log.d(TAG, "onDisconnected");
serverInfo = null;
if (listener != null) if (listener != null)
listener.onDisconnected(this); listener.onDisconnected(this);
} }