package com.tt.droidplay; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.jmdns.ServiceInfo; import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; /** * Class that implements the Connect dialog (to select service). * * @author Tuomas Tikka */ public class ConnectDialog extends Dialog implements android.view.View.OnClickListener, OnItemClickListener { // custom adapter for service info objects private ConnectListAdapter adapter; // callback back to main UI private DialogCallback callback; /** * Initialize the dialog. * * @param context The application context * @param callback The callback * @param services The current list of available services */ public ConnectDialog(Context context, DialogCallback callback, Collection<ServiceInfo> services) { super(context); setTitle("Select AirPlay Service"); this.callback = callback; setContentView(R.layout.connect); adapter = new ConnectListAdapter(getContext(), new ArrayList<ServiceInfo>()); for (ServiceInfo si : services) { adapter.add(si); } ListView list = (ListView) findViewById(R.id.list); list.setEmptyView(findViewById(R.id.empty)); list.setAdapter(adapter); list.setOnItemClickListener(this); Button cancel = (Button) findViewById(R.id.cancel); cancel.setTag("cancel"); cancel.setOnClickListener(this); } @Override public void onClick(View v) { if ("cancel".equals(v.getTag())) { cancel(); } } @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { ServiceInfo si = adapter.getItem(arg2); callback.onServiceSelected(si); cancel(); } // // Private // private class ConnectListAdapter extends ArrayAdapter<ServiceInfo> { public ConnectListAdapter(Context context, List<ServiceInfo> services) { super(context, 0, services); } @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.connect_item, null); // service info ServiceInfo si = getItem(position); // image ImageView icon = (ImageView) view.findViewById(R.id.icon); if (si.getHostAddress() == null || si.getHostAddress().isEmpty()) { // not resolved probably } else { icon.setColorFilter(Color.rgb(68, 221, 68)); } // name TextView name = (TextView) view.findViewById(R.id.name); name.setText(si.getName()); return (view); } } }