diff --git a/app/src/main/java/com/limelight/PcView.java b/app/src/main/java/com/limelight/PcView.java index ec4233eb..7f4a5a1b 100644 --- a/app/src/main/java/com/limelight/PcView.java +++ b/app/src/main/java/com/limelight/PcView.java @@ -110,7 +110,10 @@ public class PcView extends Activity { public void onItemClick(AdapterView arg0, View arg1, int pos, long id) { ComputerObject computer = (ComputerObject) pcGridAdapter.getItem(pos); - if (computer.details.reachability == ComputerDetails.Reachability.OFFLINE) { + if (computer.details.reachability == ComputerDetails.Reachability.UNKNOWN) { + // Do nothing + } + else if (computer.details.reachability == ComputerDetails.Reachability.OFFLINE) { // Open the context menu if a PC is offline openContextMenu(arg1); } @@ -235,7 +238,8 @@ public class PcView extends Activity { AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; ComputerObject computer = (ComputerObject) pcGridAdapter.getItem(info.position); - if (computer == null || computer.details == null) { + if (computer == null || computer.details == null || + computer.details.reachability == ComputerDetails.Reachability.UNKNOWN) { startComputerUpdates(); return; } diff --git a/app/src/main/java/com/limelight/computers/ComputerDatabaseManager.java b/app/src/main/java/com/limelight/computers/ComputerDatabaseManager.java index 78630166..701b1222 100644 --- a/app/src/main/java/com/limelight/computers/ComputerDatabaseManager.java +++ b/app/src/main/java/com/limelight/computers/ComputerDatabaseManager.java @@ -99,15 +99,17 @@ public class ComputerDatabaseManager { details.macAddress = c.getString(4); // This signifies we don't have dynamic state (like pair state) - details.state = ComputerDetails.State.UNKNOWN; + details.state = ComputerDetails.State.UNKNOWN; + details.reachability = ComputerDetails.Reachability.UNKNOWN; // If a field is corrupt or missing, skip the database entry if (details.uuid == null || details.localIp == null || details.remoteIp == null || details.macAddress == null) { continue; } - - computerList.add(details); + + + computerList.add(details); } c.close(); @@ -151,6 +153,9 @@ public class ComputerDatabaseManager { details.macAddress = c.getString(4); c.close(); + + details.state = ComputerDetails.State.UNKNOWN; + details.reachability = ComputerDetails.Reachability.UNKNOWN; // If a field is corrupt or missing, delete the database entry if (details.uuid == null || details.localIp == null || details.remoteIp == null || diff --git a/app/src/main/java/com/limelight/computers/ComputerManagerService.java b/app/src/main/java/com/limelight/computers/ComputerManagerService.java index fc08a440..fde9dd32 100644 --- a/app/src/main/java/com/limelight/computers/ComputerManagerService.java +++ b/app/src/main/java/com/limelight/computers/ComputerManagerService.java @@ -151,6 +151,9 @@ public class ComputerManagerService extends Service { for (ComputerDetails computer : computerList) { // This polling thread might already be there if (!pollingThreads.containsKey(computer)) { + // Report this computer initially + listener.notifyComputerUpdated(computer); + Thread t = createPollingThread(computer); pollingThreads.put(computer, t); t.start(); diff --git a/app/src/main/java/com/limelight/grid/PcGridAdapter.java b/app/src/main/java/com/limelight/grid/PcGridAdapter.java index 5a25247e..a191381c 100644 --- a/app/src/main/java/com/limelight/grid/PcGridAdapter.java +++ b/app/src/main/java/com/limelight/grid/PcGridAdapter.java @@ -50,6 +50,13 @@ public class PcGridAdapter extends GenericGridAdapter { @Override public boolean populateOverlayView(ImageView overlayView, PcView.ComputerObject obj) { + if (obj.details.reachability == ComputerDetails.Reachability.UNKNOWN) { + // Still refreshing this PC so display the overlay + overlayView.setImageResource(R.drawable.image_loading); + return true; + } + + // No overlay return false; } } diff --git a/app/src/main/res/layout/pc_grid_item.xml b/app/src/main/res/layout/pc_grid_item.xml index a0676b36..18204684 100644 --- a/app/src/main/res/layout/pc_grid_item.xml +++ b/app/src/main/res/layout/pc_grid_item.xml @@ -15,8 +15,9 @@