package pl.pola_app.ui.keyboard;
import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import pl.pola_app.R;
import pl.pola_app.helpers.EventLogger;
/**
* Simple numeric keypad view containing digit buttons, delete and done.
*/
public class NumericKeyboard extends LinearLayout {
private final EditText keyboardInput;
@Nullable
private KeyboardListener keyboardListener;
public NumericKeyboard(Context context) {
this(context, null, 0);
}
public NumericKeyboard(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public NumericKeyboard(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
LayoutInflater.from(context).inflate(R.layout.keyboard_layout, this, true);
keyboardInput = (EditText) findViewById(R.id.keyboard_input);
final KeyboardClickListener onClickListener = new KeyboardClickListener();
findViewById(R.id.key_0).setOnClickListener(onClickListener);
findViewById(R.id.key_1).setOnClickListener(onClickListener);
findViewById(R.id.key_2).setOnClickListener(onClickListener);
findViewById(R.id.key_3).setOnClickListener(onClickListener);
findViewById(R.id.key_4).setOnClickListener(onClickListener);
findViewById(R.id.key_5).setOnClickListener(onClickListener);
findViewById(R.id.key_6).setOnClickListener(onClickListener);
findViewById(R.id.key_7).setOnClickListener(onClickListener);
findViewById(R.id.key_8).setOnClickListener(onClickListener);
findViewById(R.id.key_9).setOnClickListener(onClickListener);
findViewById(R.id.key_0).setOnClickListener(onClickListener);
findViewById(R.id.key_backspace).setOnClickListener(onClickListener);
findViewById(R.id.key_ok).setOnClickListener(onClickListener);
}
public void setKeyboardListener(@Nullable KeyboardListener keyboardListener) {
this.keyboardListener = keyboardListener;
}
private void onKeyPressed(int keyCode) {
keyboardInput.onKeyDown(keyCode, new KeyEvent(KeyEvent.ACTION_DOWN, keyCode));
}
private void onConfirm() {
final String text = keyboardInput.getText().toString();
if (keyboardListener != null) {
keyboardListener.onInputConfirmed(text);
}
}
private class KeyboardClickListener implements OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.key_0:
onKeyPressed(KeyEvent.KEYCODE_0);
break;
case R.id.key_1:
onKeyPressed(KeyEvent.KEYCODE_1);
break;
case R.id.key_2:
onKeyPressed(KeyEvent.KEYCODE_2);
break;
case R.id.key_3:
onKeyPressed(KeyEvent.KEYCODE_3);
break;
case R.id.key_4:
onKeyPressed(KeyEvent.KEYCODE_4);
break;
case R.id.key_5:
onKeyPressed(KeyEvent.KEYCODE_5);
break;
case R.id.key_6:
onKeyPressed(KeyEvent.KEYCODE_6);
break;
case R.id.key_7:
onKeyPressed(KeyEvent.KEYCODE_7);
break;
case R.id.key_8:
onKeyPressed(KeyEvent.KEYCODE_8);
break;
case R.id.key_9:
onKeyPressed(KeyEvent.KEYCODE_9);
break;
case R.id.key_backspace:
onKeyPressed(KeyEvent.KEYCODE_DEL);
break;
case R.id.key_ok:
onConfirm();
break;
default:
new EventLogger().logException(new UnsupportedOperationException("Unsupported view: " + v.toString()));
}
}
}
}