From 406d26ec1c9ab98a12e07c845020a45bbad7ee6e Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 8 Nov 2014 12:51:07 -0800 Subject: [PATCH] Add visual feeback for offline machines and running games --- app/src/main/java/com/limelight/PcView.java | 6 ++-- .../com/limelight/grid/AppGridAdapter.java | 12 ++++++++ .../limelight/grid/GenericGridAdapter.java | 8 ++++++ .../com/limelight/grid/PcGridAdapter.java | 20 ++++++++++++++ app/src/main/res/drawable/play.png | Bin 0 -> 17407 bytes app/src/main/res/layout/app_grid_item.xml | 26 +++++++++++++----- app/src/main/res/layout/pc_grid_item.xml | 26 +++++++++++++----- 7 files changed, 81 insertions(+), 17 deletions(-) create mode 100644 app/src/main/res/drawable/play.png diff --git a/app/src/main/java/com/limelight/PcView.java b/app/src/main/java/com/limelight/PcView.java index c280f1ab..ec4233eb 100644 --- a/app/src/main/java/com/limelight/PcView.java +++ b/app/src/main/java/com/limelight/PcView.java @@ -540,10 +540,10 @@ public class PcView extends Activity { else { // Add a new entry pcGridAdapter.addComputer(new ComputerObject(details)); - - // Notify the view that the data has changed - pcGridAdapter.notifyDataSetChanged(); } + + // Notify the view that the data has changed + pcGridAdapter.notifyDataSetChanged(); } public class ComputerObject { diff --git a/app/src/main/java/com/limelight/grid/AppGridAdapter.java b/app/src/main/java/com/limelight/grid/AppGridAdapter.java index b12a9315..4a3a280c 100644 --- a/app/src/main/java/com/limelight/grid/AppGridAdapter.java +++ b/app/src/main/java/com/limelight/grid/AppGridAdapter.java @@ -152,4 +152,16 @@ public class AppGridAdapter extends GenericGridAdapter { // Return false to use the app's toString method return false; } + + @Override + public boolean populateOverlayView(ImageView overlayView, AppView.AppObject obj) { + if (obj.app.getIsRunning()) { + // Show the play button overlay + overlayView.setImageResource(R.drawable.play); + return true; + } + + // No overlay + return false; + } } diff --git a/app/src/main/java/com/limelight/grid/GenericGridAdapter.java b/app/src/main/java/com/limelight/grid/GenericGridAdapter.java index ba2bf1db..adaaa368 100644 --- a/app/src/main/java/com/limelight/grid/GenericGridAdapter.java +++ b/app/src/main/java/com/limelight/grid/GenericGridAdapter.java @@ -49,6 +49,7 @@ public abstract class GenericGridAdapter extends BaseAdapter { public abstract boolean populateImageView(ImageView imgView, T obj); public abstract boolean populateTextView(TextView txtView, T obj); + public abstract boolean populateOverlayView(ImageView overlayView, T obj); @Override public View getView(int i, View convertView, ViewGroup viewGroup) { @@ -57,6 +58,7 @@ public abstract class GenericGridAdapter extends BaseAdapter { } ImageView imgView = (ImageView) convertView.findViewById(R.id.grid_image); + ImageView overlayView = (ImageView) convertView.findViewById(R.id.grid_overlay); TextView txtView = (TextView) convertView.findViewById(R.id.grid_text); if (!populateImageView(imgView, itemList.get(i))) { @@ -65,6 +67,12 @@ public abstract class GenericGridAdapter extends BaseAdapter { if (!populateTextView(txtView, itemList.get(i))) { txtView.setText(itemList.get(i).toString()); } + if (!populateOverlayView(overlayView, itemList.get(i))) { + overlayView.setVisibility(View.INVISIBLE); + } + else { + overlayView.setVisibility(View.VISIBLE); + } return convertView; } diff --git a/app/src/main/java/com/limelight/grid/PcGridAdapter.java b/app/src/main/java/com/limelight/grid/PcGridAdapter.java index 0811560d..5a25247e 100644 --- a/app/src/main/java/com/limelight/grid/PcGridAdapter.java +++ b/app/src/main/java/com/limelight/grid/PcGridAdapter.java @@ -6,6 +6,7 @@ import android.widget.TextView; import com.limelight.PcView; import com.limelight.R; +import com.limelight.nvstream.http.ComputerDetails; public class PcGridAdapter extends GenericGridAdapter { @@ -23,13 +24,32 @@ public class PcGridAdapter extends GenericGridAdapter { @Override public boolean populateImageView(ImageView imgView, PcView.ComputerObject obj) { + if (obj.details.reachability != ComputerDetails.Reachability.OFFLINE) { + imgView.setAlpha(1.0f); + } + else { + imgView.setAlpha(0.4f); + } + // Return false to use the default drawable return false; } @Override public boolean populateTextView(TextView txtView, PcView.ComputerObject obj) { + if (obj.details.reachability != ComputerDetails.Reachability.OFFLINE) { + txtView.setAlpha(1.0f); + } + else { + txtView.setAlpha(0.4f); + } + // Return false to use the computer's toString method return false; } + + @Override + public boolean populateOverlayView(ImageView overlayView, PcView.ComputerObject obj) { + return false; + } } diff --git a/app/src/main/res/drawable/play.png b/app/src/main/res/drawable/play.png new file mode 100644 index 0000000000000000000000000000000000000000..d03e6e6e1fc75ad8ca5a6e9e329797967dddd58e GIT binary patch literal 17407 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 - - + + + + + + - - + + + + + +