handle disconnect

This commit is contained in:
badaix 2016-02-07 18:38:19 +01:00
parent 735573f1d5
commit 8ac895eeb3
2 changed files with 37 additions and 16 deletions

View file

@ -126,6 +126,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
mViewPager.setVisibility(View.GONE);
getSupportActionBar().setSubtitle("Host: no Snapserver found");
@ -352,12 +353,26 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen
@Override
public void onConnected(RemoteControl remoteControl) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mViewPager.setVisibility(View.VISIBLE);
}
});
remoteControl.getServerStatus();
}
@Override
public void onDisconnected(RemoteControl remoteControl) {
Log.d(TAG, "onDisconnected");
serverInfo = null;
sectionsPagerAdapter.updateServer(serverInfo);
runOnUiThread(new Runnable() {
@Override
public void run() {
mViewPager.setVisibility(View.GONE);
}
});
}
@Override
@ -473,17 +488,23 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen
@Override
public void run() {
SectionsPagerAdapter.this.serverInfo = serverInfo;
boolean changed = (serverInfo.getStreams().size() != fragments.size());
while (serverInfo.getStreams().size() < fragments.size())
fragments.removeElement(fragments.lastElement());
boolean changed = ((serverInfo == null) || (serverInfo.getStreams().size() != fragments.size()));
while (serverInfo.getStreams().size() > fragments.size())
fragments.add(ClientListFragment.newInstance("TODO1"));
if (serverInfo != null) {
for (int i = 0; i < serverInfo.getStreams().size(); ++i) {
fragments.get(i).setStream(serverInfo.getStreams().get(i));
fragments.get(i).updateServer(serverInfo);
while (serverInfo.getStreams().size() < fragments.size())
fragments.removeElement(fragments.lastElement());
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) {

View file

@ -107,14 +107,16 @@ public class TcpClient {
mServerMessage = mBufferIn.readLine();
if (mServerMessage != null && mMessageListener != null) {
// call the method messageReceived from MyActivity class
mMessageListener.onMessageReceived(TcpClient.this, mServerMessage);
if (mServerMessage != null) {
Log.d(TAG, "Received Message: '" + mServerMessage + "'");
if (mMessageListener != null) {
mMessageListener.onMessageReceived(TcpClient.this, mServerMessage);
}
} else {
break;
}
}
Log.d(TAG, "Received Message: '" + mServerMessage + "'");
} catch (Exception e) {
Log.d(TAG, "Error", e);
@ -124,17 +126,15 @@ public class TcpClient {
// this socket
// after it is closed, which means a new socket instance has to
// be created.
mRun = false;
socket.close();
if (mMessageListener != null)
mMessageListener.onDisconnected(TcpClient.this);
}
} catch (Exception e) {
Log.d(TAG, "Error", e);
}
}
};
worker = new Thread(runnable);