package com.integreight.onesheeld.shields.fragments; import android.graphics.Rect; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.MotionEvent; 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.PushButtonShield; import com.integreight.onesheeld.utils.ConnectingPinsView; import com.integreight.onesheeld.utils.ConnectingPinsView.OnPinSelectionListener; import com.integreight.onesheeld.utils.customviews.AppSlidingLeftMenu; import com.integreight.onesheeld.utils.customviews.OneSheeldButton; public class PushButtonFragment extends ShieldFragmentParent<PushButtonFragment> { Rect rect; AppSlidingLeftMenu menu; OneSheeldButton push; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment return inflater.inflate(R.layout.push_button_shield_fragment_layout, container, false); } private void on(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) ((PushButtonShield) getApplication().getRunningShields().get( getControllerTag())).setButton(true); push.setBackgroundResource(R.drawable.button_shield_green); menu.setCanSlide(false); } private void off() { ((PushButtonShield) getApplication().getRunningShields().get( getControllerTag())).setButton(false); push.setBackgroundResource(R.drawable.button_shield_red); menu.setCanSlide(true); } @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) { } }); if (getApplication().getRunningShields().get( getControllerTag()) == null) { getApplication().getRunningShields().put(getControllerTag(), new PushButtonShield(activity, getControllerTag())); } } @Override public void doOnViewCreated(View v, @Nullable Bundle savedInstanceState) { push = (OneSheeldButton) v .findViewById(R.id.push_button_shield_button_push_button); menu = (AppSlidingLeftMenu) activity .findViewById(R.id.sliding_pane_layout); push.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View arg0, MotionEvent arg1) { if (rect == null) { rect = new Rect(push.getLeft(), push.getTop(), push .getRight(), push.getBottom()); } if (arg1.getAction() == MotionEvent.ACTION_DOWN || arg1.getAction() == MotionEvent.ACTION_MOVE) { if (rect.contains((int) arg1.getX() + rect.left, (int) arg1.getY() + rect.top)) { on(arg1); } else { off(); } return true; } else if (arg1.getAction() == MotionEvent.ACTION_UP) { off(); return true; } return false; } }); } @Override public void doOnServiceConnected() { } }