diff --git a/app/src/main/java/com/philliphsu/clock2/Numpad.java b/app/src/main/java/com/philliphsu/clock2/Numpad.java index 76cc320..709d933 100644 --- a/app/src/main/java/com/philliphsu/clock2/Numpad.java +++ b/app/src/main/java/com/philliphsu/clock2/Numpad.java @@ -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()); diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/AlarmEditText.java b/app/src/main/java/com/philliphsu/clock2/editalarm/AlarmEditText.java index 688bc67..b682d27 100644 --- a/app/src/main/java/com/philliphsu/clock2/editalarm/AlarmEditText.java +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/AlarmEditText.java @@ -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; diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/AlarmNumpad.java b/app/src/main/java/com/philliphsu/clock2/editalarm/AlarmNumpad.java index ff26aee..8d1edc3 100644 --- a/app/src/main/java/com/philliphsu/clock2/editalarm/AlarmNumpad.java +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/AlarmNumpad.java @@ -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); diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmActivity.java b/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmActivity.java index fcb3ffa..e3bd498 100644 --- a/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmActivity.java +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/EditAlarmActivity.java @@ -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) diff --git a/app/src/main/res/layout/activity_edit_alarm.xml b/app/src/main/res/layout/activity_edit_alarm.xml index cb79d0e..69b0ca9 100644 --- a/app/src/main/res/layout/activity_edit_alarm.xml +++ b/app/src/main/res/layout/activity_edit_alarm.xml @@ -74,7 +74,7 @@ android:layout_centerVertical="true"/> - + \ No newline at end of file