Home | History | Annotate | Download | only in chromoting
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 package org.chromium.chromoting;
      6 
      7 import android.view.View;
      8 import android.view.ViewGroup;
      9 import android.widget.ArrayAdapter;
     10 import android.widget.TextView;
     11 import android.widget.Toast;
     12 
     13 /** Describes the appearance and behavior of each host list entry. */
     14 class HostListAdapter extends ArrayAdapter<HostInfo> {
     15     /** Color to use for hosts that are online. */
     16     private static final String HOST_COLOR_ONLINE = "green";
     17 
     18     /** Color to use for hosts that are offline. */
     19     private static final String HOST_COLOR_OFFLINE = "red";
     20 
     21     private Chromoting mChromoting;
     22 
     23     /** Constructor. */
     24     public HostListAdapter(Chromoting chromoting, int textViewResourceId, HostInfo[] hosts) {
     25         super(chromoting, textViewResourceId, hosts);
     26         mChromoting = chromoting;
     27     }
     28 
     29     /** Generates a View corresponding to this particular host. */
     30     @Override
     31     public View getView(int position, View convertView, ViewGroup parent) {
     32         TextView target = (TextView)super.getView(position, convertView, parent);
     33 
     34         final HostInfo host = getItem(position);
     35 
     36         target.setText(host.name);
     37         target.setCompoundDrawablesWithIntrinsicBounds(
     38                 host.isOnline ? R.drawable.icon_host : R.drawable.icon_host_offline, 0, 0, 0);
     39 
     40         if (host.isOnline) {
     41             target.setOnClickListener(new View.OnClickListener() {
     42                     @Override
     43                     public void onClick(View v) {
     44                         mChromoting.connectToHost(host);
     45                     }
     46             });
     47         } else {
     48             target.setTextColor(mChromoting.getResources().getColor(R.color.host_offline_text));
     49             target.setBackgroundResource(R.drawable.list_item_disabled_selector);
     50             target.setOnClickListener(new View.OnClickListener() {
     51                     @Override
     52                     public void onClick(View v) {
     53                         Toast.makeText(mChromoting,
     54                                 mChromoting.getString(R.string.host_offline_tooltip),
     55                                 Toast.LENGTH_SHORT).show();
     56                     }
     57             });
     58         }
     59 
     60         return target;
     61     }
     62 }
     63