1b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukpackage com.google.android.DemoKit;
2b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk
3b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.content.res.Resources;
4b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.graphics.drawable.Drawable;
5b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.text.SpannableStringBuilder;
6b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.text.style.RelativeSizeSpan;
7b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.text.style.SubscriptSpan;
8b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.view.ViewGroup;
9b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.widget.CompoundButton;
10b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.widget.CompoundButton.OnCheckedChangeListener;
11b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.widget.TextView;
12b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukimport android.widget.ToggleButton;
13b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk
14b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsukpublic class RelayController implements OnCheckedChangeListener {
15b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	private final int mRelayNumber;
16b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	private final byte mCommandTarget;
17b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	private DemoKitActivity mActivity;
18b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	private TextView mLabel;
19b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	private ToggleButton mButton;
20b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	private Drawable mOffBackground;
21b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	private Drawable mOnBackground;
22b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk
23b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	public RelayController(DemoKitActivity activity, int relayNumber,
24b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk			Resources res) {
25b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		mActivity = activity;
26b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		mRelayNumber = relayNumber;
27b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		mCommandTarget = (byte) (relayNumber - 1);
28b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		mOffBackground = res
29b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk				.getDrawable(R.drawable.toggle_button_off_holo_dark);
30b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		mOnBackground = res.getDrawable(R.drawable.toggle_button_on_holo_dark);
31b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	}
32b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk
33b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	public void attachToView(ViewGroup targetView) {
34b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		mLabel = (TextView) targetView.getChildAt(0);
35b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		SpannableStringBuilder ssb = new SpannableStringBuilder("Relay");
36b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		ssb.append(String.valueOf(mRelayNumber));
37b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		ssb.setSpan(new SubscriptSpan(), 5, 6, 0);
38b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		ssb.setSpan(new RelativeSizeSpan(0.7f), 5, 6, 0);
39b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		mLabel.setText(ssb);
40b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		mButton = (ToggleButton) targetView.getChildAt(1);
41b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		mButton.setOnCheckedChangeListener(this);
42b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	}
43b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk
44b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
45b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		if (isChecked) {
46b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk			mButton.setBackgroundDrawable(mOnBackground);
47b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		} else {
48b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk			mButton.setBackgroundDrawable(mOffBackground);
49b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		}
50b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		if (mActivity != null) {
51b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk			mActivity.sendCommand(DemoKitActivity.RELAY_COMMAND,
52b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk					mCommandTarget, isChecked ? 1 : 0);
53b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk		}
54b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk	}
55b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk
56b63ed7adbf146a2b7c7c4422c01a5e0ef6bb10caRob Tsuk}
57