From 07d76f365ffca332310d66e6bea1b3573c5d724f Mon Sep 17 00:00:00 2001 From: badaix Date: Mon, 8 Feb 2016 13:19:19 +0100 Subject: [PATCH] fixed reconnecting --- .../java/de/badaix/snapcast/MainActivity.java | 35 +++++++++---------- .../snapcast/control/RemoteControl.java | 2 ++ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/android/Snapcast/src/main/java/de/badaix/snapcast/MainActivity.java b/android/Snapcast/src/main/java/de/badaix/snapcast/MainActivity.java index 683edc64..4c8d7226 100644 --- a/android/Snapcast/src/main/java/de/badaix/snapcast/MainActivity.java +++ b/android/Snapcast/src/main/java/de/badaix/snapcast/MainActivity.java @@ -365,7 +365,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen @Override public void onDisconnected(RemoteControl remoteControl) { Log.d(TAG, "onDisconnected"); - serverInfo = null; + serverInfo = new ServerInfo(); sectionsPagerAdapter.updateServer(serverInfo); runOnUiThread(new Runnable() { @Override @@ -436,7 +436,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen final ClientInfo clientInfo = clientInfoItem.getClientInfo(); clientInfo.setDeleted(true); serverInfo.updateClient(clientInfo); -// sectionsPagerAdapter.update(); + sectionsPagerAdapter.updateServer(serverInfo); Snackbar mySnackbar = Snackbar.make(findViewById(R.id.myCoordinatorLayout), getString(R.string.client_deleted, clientInfo.getVisibleName()), Snackbar.LENGTH_SHORT); @@ -445,7 +445,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen public void onClick(View v) { clientInfo.setDeleted(false); serverInfo.updateClient(clientInfo); -// sectionsPagerAdapter.update(); + sectionsPagerAdapter.updateServer(serverInfo); } }); mySnackbar.setCallback(new Snackbar.Callback() { @@ -478,6 +478,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen private Vector fragments = new Vector<>(); private ServerInfo serverInfo = new ServerInfo(); + private int streamCount = 0; public SectionsPagerAdapter(FragmentManager fm) { super(fm); @@ -487,27 +488,23 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen MainActivity.this.runOnUiThread(new Runnable() { @Override 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()) - 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(); + for (int i = 0; i < serverInfo.getStreams().size(); ++i) { + fragments.get(i).setStream(serverInfo.getStreams().get(i)); + fragments.get(i).updateServer(serverInfo); } if (changed) { + streamCount = serverInfo.getStreams().size(); notifyDataSetChanged(); tabLayout.setTabsFromPagerAdapter(SectionsPagerAdapter.this); } @@ -529,7 +526,7 @@ public class MainActivity extends AppCompatActivity implements ClientListFragmen @Override public int getCount() { - return fragments.size(); + return streamCount; } @Override diff --git a/android/Snapcast/src/main/java/de/badaix/snapcast/control/RemoteControl.java b/android/Snapcast/src/main/java/de/badaix/snapcast/control/RemoteControl.java index f897d02e..813dda66 100644 --- a/android/Snapcast/src/main/java/de/badaix/snapcast/control/RemoteControl.java +++ b/android/Snapcast/src/main/java/de/badaix/snapcast/control/RemoteControl.java @@ -107,6 +107,7 @@ public class RemoteControl implements TcpClient.TcpClientListener { @Override public void onConnected(TcpClient tcpClient) { Log.d(TAG, "onConnected"); + serverInfo = new ServerInfo(); if (listener != null) listener.onConnected(this); } @@ -114,6 +115,7 @@ public class RemoteControl implements TcpClient.TcpClientListener { @Override public void onDisconnected(TcpClient tcpClient) { Log.d(TAG, "onDisconnected"); + serverInfo = null; if (listener != null) listener.onDisconnected(this); }