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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 K=d#Wzp$PycTsdn1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/app_grid_item.xml b/app/src/main/res/layout/app_grid_item.xml index 57754ad2..9449f07d 100644 --- a/app/src/main/res/layout/app_grid_item.xml +++ b/app/src/main/res/layout/app_grid_item.xml @@ -3,17 +3,29 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="30dp"> - - + + + + + + - - + + + + + +