package com.integreight.onesheeld.shields.fragments; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; 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.KeypadShield; import com.integreight.onesheeld.utils.ConnectingPinsView; import com.integreight.onesheeld.utils.ConnectingPinsView.OnPinSelectionListener; import com.integreight.onesheeld.utils.customviews.Key; import com.integreight.onesheeld.utils.customviews.Key.KeyTouchEventListener; public class KeypadFragment extends ShieldFragmentParent<KeypadFragment> { KeyTouchEventListener touchEventListener = new KeyTouchEventListener() { @Override public void onReleased(Key k) { // TODO Auto-generated method stub ((KeypadShield) getApplication().getRunningShields().get( getControllerTag())).resetRowAndColumn(k.getRow(), k.getColumn()); } @Override public void onPressed(Key k) { // TODO Auto-generated method stub ((KeypadShield) getApplication().getRunningShields().get( getControllerTag())).setRowAndColumn(k.getRow(), k.getColumn()); } }; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.keypad_shield_fragment_layout, container, false); } @Override public void doOnStart() { 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.OUTPUT)); } } @Override public void onUnSelect(ArduinoPin pin) { } }); } @Override public void doOnViewCreated(View v, @Nullable Bundle savedInstanceState) { initializeKeysEventHandler(v); } private void initializeKeysEventHandler(View v) { ViewGroup keypad = (ViewGroup) v.findViewById(R.id.keysContainer); for (int i = 0; i < keypad.getChildCount(); i++) { ViewGroup keypadRow = (ViewGroup) keypad.getChildAt(i); for (int j = 0; j < keypadRow.getChildCount(); j++) { View key = keypadRow.getChildAt(j); if (key instanceof Key) { ((Key) key).setEventListener(touchEventListener); } } } } private void initializeFirmata() { if ((getApplication().getRunningShields().get(getControllerTag())) == null) getApplication().getRunningShields().put(getControllerTag(), new KeypadShield(activity, getControllerTag())); } @Override public void doOnServiceConnected() { initializeFirmata(); } }