package com.limelight.grid; import android.content.Context; import android.view.View; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import com.limelight.PcView; import com.limelight.R; import com.limelight.nvstream.http.ComputerDetails; import com.limelight.nvstream.http.PairingManager; import com.limelight.preferences.PreferenceConfiguration; import java.util.Collections; import java.util.Comparator; public class PcGridAdapter extends GenericGridAdapter { public PcGridAdapter(Context context, PreferenceConfiguration prefs) { super(context, getLayoutIdForPreferences(prefs)); } private static int getLayoutIdForPreferences(PreferenceConfiguration prefs) { return R.layout.pc_grid_item; } public void updateLayoutWithPreferences(Context context, PreferenceConfiguration prefs) { // This will trigger the view to reload with the new layout setLayoutId(getLayoutIdForPreferences(prefs)); } public void addComputer(PcView.ComputerObject computer) { itemList.add(computer); sortList(); } private void sortList() { Collections.sort(itemList, new Comparator() { @Override public int compare(PcView.ComputerObject lhs, PcView.ComputerObject rhs) { return lhs.details.name.toLowerCase().compareTo(rhs.details.name.toLowerCase()); } }); } public boolean removeComputer(PcView.ComputerObject computer) { return itemList.remove(computer); } @Override public void populateView(View parentView, ImageView imgView, ProgressBar prgView, TextView txtView, ImageView overlayView, PcView.ComputerObject obj) { imgView.setImageResource(R.drawable.ic_computer); if (obj.details.state == ComputerDetails.State.ONLINE) { imgView.setAlpha(1.0f); } else { imgView.setAlpha(0.4f); } if (obj.details.state == ComputerDetails.State.UNKNOWN) { prgView.setVisibility(View.VISIBLE); } else { prgView.setVisibility(View.INVISIBLE); } txtView.setText(obj.details.name); if (obj.details.state == ComputerDetails.State.ONLINE) { txtView.setAlpha(1.0f); } else { txtView.setAlpha(0.4f); } if (obj.details.state == ComputerDetails.State.OFFLINE) { overlayView.setImageResource(R.drawable.ic_pc_offline); overlayView.setAlpha(0.4f); overlayView.setVisibility(View.VISIBLE); } // We must check if the status is exactly online and unpaired // to avoid colliding with the loading spinner when status is unknown else if (obj.details.state == ComputerDetails.State.ONLINE && obj.details.pairState == PairingManager.PairState.NOT_PAIRED) { overlayView.setImageResource(R.drawable.ic_lock); overlayView.setAlpha(1.0f); overlayView.setVisibility(View.VISIBLE); } else { overlayView.setVisibility(View.GONE); } } }