Numpad key listener set

This commit is contained in:
Phillip Hsu 2016-06-02 20:35:41 -07:00
parent 881b4dcf83
commit 68fb80b42b
6 changed files with 61 additions and 11 deletions

View File

@ -39,7 +39,7 @@ public abstract class Numpad extends TableLayout {
public interface KeyListener {
void onNumberInput(String number);
void onCollapse(); // TODO: useless?
void onCollapse();
void onBackspace(String newStr);
void onLongBackspace();
}
@ -107,6 +107,18 @@ public abstract class Numpad extends TableLayout {
});
}
protected final void buildCollapse(int r, int c) {
mCollapse = (ImageButton) buildButton(R.layout.numpad_collapse, r, c);
mCollapse.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
checkKeyListenerSet();
mKeyListener.onCollapse();
}
});
}
protected final void newRow() {
TableRow newRow = new TableRow(getContext());
newRow.setLayoutParams(new TableRow.LayoutParams());

View File

@ -5,8 +5,10 @@ import android.util.AttributeSet;
import android.view.KeyEvent;
/**
* Created by Phillip Hsu on 6/2/2016.
* Couldn't figure out how to draw the numpad over the system keyboard, so
* the callback interface provided here is of no use to us.
*/
@Deprecated
public class AlarmEditText extends android.support.v7.widget.AppCompatEditText {
private OnBackPressListener mOnBackPressListener;

View File

@ -430,12 +430,12 @@ public class AlarmNumpad extends Numpad {
newRow();
buildBackspace(getChildCount() - 1, 2);
// buildCollapse(getChildCount() - 1, 0);
buildCollapse(getChildCount() - 1, 0);
// The FAB is wrapped in a FrameLayout
FrameLayout frame = (FrameLayout)
buildButton(R.layout.numpad_fab, getChildCount() - 1, 1);
fab = (FloatingActionButton) frame.getChildAt(0);
//fab.setBackgroundTintList(getResources().getColorStateList(R.color.on_enabled_change_fab));
fab.setBackgroundTintList(getResources().getColorStateList(R.color.on_enabled_change_fab));
fab.setEnabled(false);

View File

@ -33,7 +33,7 @@ import static com.philliphsu.clock2.DaysOfWeek.NUM_DAYS;
import static com.philliphsu.clock2.DaysOfWeek.SATURDAY;
import static com.philliphsu.clock2.DaysOfWeek.SUNDAY;
public class EditAlarmActivity extends BaseActivity implements AlarmEditText.OnBackPressListener {
public class EditAlarmActivity extends BaseActivity implements AlarmNumpad.KeyListener {
private static final String TAG = "EditAlarmActivity";
public static final String EXTRA_ALARM_ID = "com.philliphsu.clock2.editalarm.extra.ALARM_ID";
@ -46,7 +46,7 @@ public class EditAlarmActivity extends BaseActivity implements AlarmEditText.OnB
@Bind(R.id.save) Button mSave;
@Bind(R.id.delete) Button mDelete;
@Bind(R.id.on_off) SwitchCompat mSwitch;
@Bind(R.id.input_time) AlarmEditText mTimeText;
@Bind(R.id.input_time) EditText mTimeText;
@Bind({R.id.day0, R.id.day1, R.id.day2, R.id.day3, R.id.day4, R.id.day5, R.id.day6})
ToggleButton[] mDays;
@Bind(R.id.label) EditText mLabel;
@ -98,8 +98,8 @@ public class EditAlarmActivity extends BaseActivity implements AlarmEditText.OnB
mSelectedRingtoneUri = RingtoneManager.getActualDefaultRingtoneUri(this, RingtoneManager.TYPE_ALARM);
mNumpad.setVisibility(View.VISIBLE);
}
mNumpad.setKeyListener(this);
updateRingtoneButtonText();
mTimeText.setOnBackPressListener(this);
}
@Override
@ -139,11 +139,43 @@ public class EditAlarmActivity extends BaseActivity implements AlarmEditText.OnB
return 0;
}
/** Handle back press when virtual keyboard is shown */
@Override
public void onBackPress() {
// TODO: Hide your numpad.
public void onBackPressed() {
if (mNumpad.getVisibility() == View.VISIBLE) {
mNumpad.setVisibility(View.GONE);
} else {
super.onBackPressed();
}
}
@Override
public void onAcceptChanges() {
mNumpad.setVisibility(View.GONE);
mSwitch.setChecked(true);
}
@Override
public void onNumberInput(String formattedInput) {
mTimeText.setText(formattedInput);
}
@Override
public void onCollapse() {
mNumpad.setVisibility(View.GONE);
}
@Override
public void onBackspace(String newStr) {
mTimeText.setText(newStr);
if (!mNumpad.checkTimeValid() && mSwitch.isChecked()) {
mSwitch.setChecked(false);
}
}
@Override
public void onLongBackspace() {
mTimeText.setText("");
mSwitch.setChecked(false);
}
@OnTouch(R.id.input_time)

View File

@ -74,7 +74,7 @@
android:layout_centerVertical="true"/>
<!-- TODO: Find out how to get a touch ripple; foreground attr didn't work -->
<com.philliphsu.clock2.editalarm.AlarmEditText
<EditText
android:id="@+id/input_time"
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/NumpadButton"
android:src="@drawable/ic_collapse_24dp"/>