package com.integreight.onesheeld.shields.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.integreight.onesheeld.R;
import com.integreight.onesheeld.enums.ArduinoPin;
import com.integreight.onesheeld.model.ArduinoConnectedPin;
import com.integreight.onesheeld.sdk.OneSheeldDevice;
import com.integreight.onesheeld.shields.ShieldFragmentParent;
import com.integreight.onesheeld.shields.controller.SevenSegmentShield;
import com.integreight.onesheeld.shields.controller.SevenSegmentShield.SevenSegmentsEventHandler;
import com.integreight.onesheeld.utils.ConnectingPinsView;
import com.integreight.onesheeld.utils.ConnectingPinsView.OnPinSelectionListener;
import java.util.Hashtable;
public class SevenSegmentFragment extends
ShieldFragmentParent<SevenSegmentFragment> {
ImageView aSegment;
ImageView bSegment;
ImageView cSegment;
ImageView dSegment;
ImageView eSegment;
ImageView fSegment;
ImageView gSegment;
ImageView dotSegment;
LinearLayout colorChooseCont;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.sevensegment_shield_fragment_view,
container, false);
}
@Override
public void doOnViewCreated(View v, Bundle savedInstanceState) {
aSegment = (ImageView) v
.findViewById(R.id.sevensegment_shield_a_segment_imageview);
bSegment = (ImageView) v
.findViewById(R.id.sevensegment_shield_b_segment_imageview);
cSegment = (ImageView) v
.findViewById(R.id.sevensegment_shield_c_segment_imageview);
dSegment = (ImageView) v
.findViewById(R.id.sevensegment_shield_d_segment_imageview);
eSegment = (ImageView) v
.findViewById(R.id.sevensegment_shield_e_segment_imageview);
fSegment = (ImageView) v
.findViewById(R.id.sevensegment_shield_f_segment_imageview);
gSegment = (ImageView) v
.findViewById(R.id.sevensegment_shield_g_segment_imageview);
dotSegment = (ImageView) v
.findViewById(R.id.sevensegment_shield_dot_segment_imageview);
colorChooseCont = (LinearLayout) v
.findViewById(R.id.colorsContainer);
}
@Override
public void doOnStart() {
if (getControllerTag() != null)
((SevenSegmentShield) getApplication().getRunningShields().get(
getControllerTag()))
.setSevenSegmentsEventHandler(sevenSegmentsEventHandler);
refreshSegments(((SevenSegmentShield) getApplication()
.getRunningShields().get(getControllerTag())).refreshSegments());
for (int i = 0; i < colorChooseCont.getChildCount(); i++) {
final int x = i;
colorChooseCont.getChildAt(x).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
colorIndx = x;
if (getApplication().getRunningShields().get(
getControllerTag()) != null)
refreshSegments(((SevenSegmentShield) getApplication()
.getRunningShields().get(
getControllerTag()))
.refreshSegments());
}
});
}
ConnectingPinsView.getInstance().reset(
getApplication().getRunningShields().get(getControllerTag()),
new OnPinSelectionListener() {
@Override
public void onSelect(ArduinoPin pin) {
if (pin != null) {
(getApplication()
.getRunningShields()
.get(getControllerTag()))
.setConnected(new ArduinoConnectedPin(
pin.microHardwarePin,
OneSheeldDevice.INPUT));
refreshSegments(((SevenSegmentShield) getApplication()
.getRunningShields()
.get(getControllerTag())).refreshSegments());
}
}
@Override
public void onUnSelect(ArduinoPin pin) {
refreshSegments(((SevenSegmentShield) getApplication()
.getRunningShields().get(getControllerTag()))
.refreshSegments());
}
});
}
private SevenSegmentsEventHandler sevenSegmentsEventHandler = new SevenSegmentsEventHandler() {
@Override
public void onSegmentsChange(
final Hashtable<String, Boolean> segmentsStatus) {
// TODO Auto-generated method stub
uiHandler.post(new Runnable() {
@Override
public void run() {
if (canChangeUI()) {
refreshSegments(segmentsStatus);
}
}
});
}
};
private int colorIndx = 0;
private int[] vertical = new int[]{
R.drawable.seven_segments_vertical_segment_red,
R.drawable.seven_segments_vertical_segment_green,
R.drawable.seven_segments_vertical_segment_yellow,
R.drawable.seven_segments_vertical_segment_blue};
private int[] hor = new int[]{
R.drawable.seven_segments_horizontal_segment_red,
R.drawable.seven_segments_horizontal_segment_green,
R.drawable.seven_segments_horizontal_segment_yellow,
R.drawable.seven_segments_horizontal_segment_blue};
private int[] dot = new int[]{R.drawable.seven_segments_dot_red,
R.drawable.seven_segments_dot_green,
R.drawable.seven_segments_dot_yellow,
R.drawable.seven_segments_dot_blue};
private void refreshSegments(Hashtable<String, Boolean> segmentsStatus) {
if (segmentsStatus.get(" A ") != null && segmentsStatus.get(" A ")) {
aSegment.setImageResource(hor[colorIndx]);
} else {
aSegment.setImageResource(R.drawable.seven_segments_horizontal_segment_gray);
}
if (segmentsStatus.get(" B ") != null && segmentsStatus.get(" B ")) {
bSegment.setImageResource(vertical[colorIndx]);
} else {
bSegment.setImageResource(R.drawable.seven_segments_vertical_segment_gray);
}
if (segmentsStatus.get(" C ") != null && segmentsStatus.get(" C ")) {
cSegment.setImageResource(vertical[colorIndx]);
} else {
cSegment.setImageResource(R.drawable.seven_segments_vertical_segment_gray);
}
if (segmentsStatus.get(" D ") != null && segmentsStatus.get(" D ")) {
dSegment.setImageResource(hor[colorIndx]);
} else {
dSegment.setImageResource(R.drawable.seven_segments_horizontal_segment_gray);
}
if (segmentsStatus.get(" E ") != null && segmentsStatus.get(" E ")) {
eSegment.setImageResource(vertical[colorIndx]);
} else {
eSegment.setImageResource(R.drawable.seven_segments_vertical_segment_gray);
}
if (segmentsStatus.get(" F ") != null && segmentsStatus.get(" F ")) {
fSegment.setImageResource(vertical[colorIndx]);
} else {
fSegment.setImageResource(R.drawable.seven_segments_vertical_segment_gray);
}
if (segmentsStatus.get(" G ") != null && segmentsStatus.get(" G ")) {
gSegment.setImageResource(hor[colorIndx]);
} else {
gSegment.setImageResource(R.drawable.seven_segments_horizontal_segment_gray);
}
if (segmentsStatus.get(" DOT ") != null && segmentsStatus.get(" DOT ")) {
dotSegment.setImageResource(dot[colorIndx]);
} else {
dotSegment.setImageResource(R.drawable.seven_segments_dot_gray);
}
}
private void initializeFirmata() {
if ((getApplication().getRunningShields().get(getControllerTag())) == null)
getApplication().getRunningShields().put(getControllerTag(),
new SevenSegmentShield(activity, getControllerTag()));
}
@Override
public void doOnServiceConnected() {
initializeFirmata();
}
}