package course.examples.bluetooth.setupandtransferdata;

import java.util.List;

import android.app.ListActivity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class ShowDevices extends ListActivity {
	BluetoothAdapter mBluetoothAdapter = null;
	ArrayAdapter<String> mArrayAdapter = null;

	private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
		public void onReceive(Context context, Intent intent) {
			String action = intent.getAction();
			if (BluetoothDevice.ACTION_FOUND.equals(action)) {
				BluetoothDevice device = intent
						.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
				mArrayAdapter
						.add(device.getName() + "\n" + device.getAddress());
			}
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
		final ListView lv = getListView();
		final TextView footer = new TextView(this);
		footer.setText("Discover More Devices");
		lv.setFooterDividersEnabled(true);
		lv.addFooterView(footer, null, true);

		final List<String> devices = getIntent().getStringArrayListExtra("devices");
		mArrayAdapter = new ArrayAdapter<String>(this, R.layout.list_item,devices);
		setListAdapter(mArrayAdapter);
		getListView().setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view, int pos,long id) {
				if (parent.getAdapter().getItemViewType(pos) == AdapterView.ITEM_VIEW_TYPE_HEADER_OR_FOOTER) {
					mBluetoothAdapter.startDiscovery();
				} else {
					String tmp = (String) parent.getItemAtPosition(pos);
					BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(tmp.split("\n")[1]);
					Intent data = new Intent();
					data.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
					setResult(RESULT_OK, data);
					finish();
				}
			}
		});
	}

	protected void onResume() {
		super.onResume();
		IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
		registerReceiver(mReceiver, filter);
	}

	protected void onPause() {
		unregisterReceiver(mReceiver);
		super.onPause();
	}
}