package eu.se_bastiaan.popcorntimeremote.fragments; import android.content.Context; import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.RelativeLayout; import butterknife.ButterKnife; import butterknife.Bind; import eu.se_bastiaan.popcorntimeremote.R; import eu.se_bastiaan.popcorntimeremote.utils.LogUtils; import eu.se_bastiaan.popcorntimeremote.utils.PixelUtils; import eu.se_bastiaan.popcorntimeremote.widget.ClearableEditText; import eu.se_bastiaan.popcorntimeremote.widget.JoystickView; public class MainControllerFragment extends BaseControlFragment { @Bind(R.id.joystick) JoystickView joystickView; @Bind(R.id.searchButton) ImageButton searchButton; @Bind(R.id.favouriteButton) ImageButton favouriteButton; @Bind(R.id.tabsButton) ImageButton tabsButton; @Bind(R.id.searchInputBox) LinearLayout searchInputBox; @Bind(R.id.searchInput) ClearableEditText searchInput; private final View.OnClickListener mButtonClickListener = new View.OnClickListener() { @Override public void onClick(View v) { switch(v.getId()) { case R.id.searchButton: if(searchInputBox.getVisibility() == View.VISIBLE) { mClearableEditTextListener.didClearText(); } else { searchInputBox.setVisibility(View.VISIBLE); } break; case R.id.favouriteButton: getClient().toggleFavourite(mBlankResponseCallback); break; case R.id.tabsButton: getClient().toggleTabs(mBlankResponseCallback); break; default: break; } } }; private final JoystickView.OnJoystickMoveListener mOnJoystickMoveListener = new JoystickView.OnJoystickMoveListener() { @Override public void onValueChanged(int angle, int power, JoystickView.Direction direction) { LogUtils.d("mOnJoystickMoveListener", power); switch (direction) { case CENTER: getClient().enter(mBlankResponseCallback); break; case UP: getClient().up(mBlankResponseCallback); break; case DOWN: getClient().down(mBlankResponseCallback); break; case RIGHT: getClient().right(mBlankResponseCallback); break; case LEFT: getClient().left(mBlankResponseCallback); break; default: break; } } }; private final ClearableEditText.Listener mClearableEditTextListener = new ClearableEditText.Listener() { @Override public void didClearText() { searchInputBox.setVisibility(View.GONE); getClient().clearSearch(mBlankResponseCallback); InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(searchInput.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } }; private final TextWatcher mClearableEditTextWatcher = new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void afterTextChanged(Editable s) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if(s.toString().equals("")) { getClient().clearSearch(mBlankResponseCallback); return; } getClient().filterSearch(s.toString(), mBlankResponseCallback); } }; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { LogUtils.d("JoyStickMainControllerFragment", "onCreateView"); View v = inflater.inflate(R.layout.fragment_maincontroller, container, false); if(Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) { v.setPadding(v.getPaddingLeft(), v.getPaddingTop() + PixelUtils.getStatusBarHeight(getActivity()), v.getPaddingRight(), v.getPaddingBottom()); } ButterKnife.bind(this, v); searchButton.setOnClickListener(mButtonClickListener); favouriteButton.setOnClickListener(mButtonClickListener); tabsButton.setOnClickListener(mButtonClickListener); joystickView.setOnJoystickMoveListener(mOnJoystickMoveListener); joystickView.setJoystickImage(JoystickView.Direction.CENTER, R.drawable.ic_action_ok); joystickView.setJoystickImage(JoystickView.Direction.RIGHT, R.drawable.ic_action_right); joystickView.setJoystickImage(JoystickView.Direction.LEFT, R.drawable.ic_action_left); joystickView.setJoystickImage(JoystickView.Direction.UP, R.drawable.ic_action_up); joystickView.setJoystickImage(JoystickView.Direction.DOWN, R.drawable.ic_action_down); searchInput.setIconAlwaysVisible(true); searchInput.setListener(mClearableEditTextListener); searchInput.addTextChangedListener(mClearableEditTextWatcher); return v; } }