aboutsummaryrefslogtreecommitdiff
path: root/demokit/app/src/com/google/android/DemoKit/ColorLEDController.java
diff options
context:
space:
mode:
Diffstat (limited to 'demokit/app/src/com/google/android/DemoKit/ColorLEDController.java')
-rw-r--r--demokit/app/src/com/google/android/DemoKit/ColorLEDController.java114
1 files changed, 114 insertions, 0 deletions
diff --git a/demokit/app/src/com/google/android/DemoKit/ColorLEDController.java b/demokit/app/src/com/google/android/DemoKit/ColorLEDController.java
new file mode 100644
index 0000000..3bc6e24
--- /dev/null
+++ b/demokit/app/src/com/google/android/DemoKit/ColorLEDController.java
@@ -0,0 +1,114 @@
+package com.google.android.DemoKit;
+
+import com.google.android.DemoKit.Slider.SliderPositionListener;
+
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.text.SpannableStringBuilder;
+import android.text.style.RelativeSizeSpan;
+import android.text.style.SubscriptSpan;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+public class ColorLEDController {
+ private int mLEDNumber;
+
+ private Drawable mGreen;
+ private Drawable mRed;
+ private Drawable mBlue;
+ private DemoKitActivity mActivity;
+
+ class LedValueUpdater implements Slider.SliderPositionListener {
+ private TextView mTarget;
+ private final byte mCommandTarget;
+
+ LedValueUpdater(TextView target, int colorIndex) {
+ mTarget = target;
+ mCommandTarget = (byte) ((mLEDNumber - 1) * 3 + colorIndex);
+ }
+
+ public void onPositionChange(double value) {
+ int v = (int) (255 * value);
+ mTarget.setText(String.valueOf(v));
+ if (mActivity != null) {
+ mActivity.sendCommand(DemoKitActivity.LED_SERVO_COMMAND,
+ mCommandTarget, (byte) v);
+ }
+ }
+ }
+
+ class LabelClickListener implements OnClickListener {
+ final private double mValue;
+ private final Slider mSlider;
+
+ public LabelClickListener(Slider slider, double value) {
+ mSlider = slider;
+ mValue = value;
+ }
+
+ public void onClick(View v) {
+ mSlider.setPosition(mValue);
+ }
+
+ }
+
+ public ColorLEDController(DemoKitActivity activity, int number,
+ Resources res, boolean vertical) {
+ mActivity = activity;
+ mLEDNumber = number;
+ if (vertical) {
+ mRed = res.getDrawable(R.drawable.scrubber_vertical_red_holo_dark);
+ mGreen = res
+ .getDrawable(R.drawable.scrubber_vertical_green_holo_dark);
+ mBlue = res
+ .getDrawable(R.drawable.scrubber_vertical_blue_holo_dark);
+ } else {
+ mRed = res
+ .getDrawable(R.drawable.scrubber_horizontal_red_holo_dark);
+ mGreen = res
+ .getDrawable(R.drawable.scrubber_horizontal_green_holo_dark);
+ mBlue = res
+ .getDrawable(R.drawable.scrubber_horizontal_blue_holo_dark);
+ }
+ }
+
+ public void attachToView(ViewGroup targetView) {
+ for (int i = 0; i < 3; ++i) {
+ ViewGroup g = (ViewGroup) targetView.getChildAt(i);
+ TextView label = (TextView) g.getChildAt(0);
+ Slider slider = (Slider) g.getChildAt(1);
+ TextView valueText = (TextView) g.getChildAt(2);
+ SliderPositionListener positionListener = new LedValueUpdater(
+ valueText, i);
+ slider.setPositionListener(positionListener);
+ LabelClickListener leftLabelListener = new LabelClickListener(
+ slider, 0);
+ label.setOnClickListener(leftLabelListener);
+ LabelClickListener rightLabelListener = new LabelClickListener(
+ slider, 1);
+ valueText.setOnClickListener(rightLabelListener);
+ valueText.setText("0");
+ if (i == 0) {
+ String labelText = "Led";
+ SpannableStringBuilder ssb = new SpannableStringBuilder(
+ labelText);
+ ssb.append(String.valueOf(mLEDNumber));
+ int spanStart = labelText.length();
+ int spanEnd = spanStart + 1;
+ ssb.setSpan(new SubscriptSpan(), spanStart, spanEnd, 0);
+ ssb.setSpan(new RelativeSizeSpan(0.7f), spanStart, spanEnd, 0);
+ label.setText(ssb);
+ slider.setSliderBackground(mRed);
+ } else {
+ label.setText("");
+ if (i == 1) {
+ slider.setSliderBackground(mGreen);
+ } else {
+ slider.setSliderBackground(mBlue);
+ }
+ }
+ }
+ }
+}