diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/GridLayoutNumpad.java b/app/src/main/java/com/philliphsu/clock2/editalarm/GridLayoutNumpad.java
index 3e242d3..63fddf5 100644
--- a/app/src/main/java/com/philliphsu/clock2/editalarm/GridLayoutNumpad.java
+++ b/app/src/main/java/com/philliphsu/clock2/editalarm/GridLayoutNumpad.java
@@ -141,7 +141,7 @@ public abstract class GridLayoutNumpad extends GridLayout implements View.OnClic
}
}
- public final boolean clear() {
+ public boolean clear() {
Arrays.fill(mInput, UNMODIFIED);
mCount = 0;
onDigitsCleared();
diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePicker.java b/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePicker.java
index b4c1dc1..24192d2 100644
--- a/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePicker.java
+++ b/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePicker.java
@@ -2,9 +2,11 @@ package com.philliphsu.clock2.editalarm;
import android.content.Context;
import android.support.annotation.IntDef;
+import android.support.design.widget.FloatingActionButton;
import android.text.format.DateFormat;
import android.util.AttributeSet;
import android.widget.Button;
+import android.widget.ImageButton;
import com.philliphsu.clock2.R;
@@ -15,6 +17,7 @@ import java.util.Calendar;
import butterknife.Bind;
import butterknife.OnClick;
+import butterknife.OnLongClick;
/**
* Created by Phillip Hsu on 7/12/2016.
@@ -48,6 +51,8 @@ public class NumpadTimePicker extends GridLayoutNumpad implements TimePicker {
@Bind({ R.id.leftAlt, R.id.rightAlt })
Button[] mAltButtons;
+ @Bind(R.id.fab) FloatingActionButton mFab;
+ @Bind(R.id.backspace) ImageButton mBackspace;
public NumpadTimePicker(Context context) {
super(context);
@@ -93,6 +98,7 @@ public class NumpadTimePicker extends GridLayoutNumpad implements TimePicker {
}
@Override
+ @OnClick(R.id.backspace)
public void delete() {
int len = mFormattedInput.length();
if (!is24HourFormat() && mAmPmState != UNSPECIFIED) {
@@ -108,6 +114,12 @@ public class NumpadTimePicker extends GridLayoutNumpad implements TimePicker {
}
}
+ @Override
+ @OnLongClick(R.id.backspace)
+ public boolean clear() {
+ return super.clear();
+ }
+
/** Returns the hour of day (0-23) regardless of clock system */
@Override
public int hourOfDay() {
@@ -213,6 +225,10 @@ public class NumpadTimePicker extends GridLayoutNumpad implements TimePicker {
return mFormattedInput.toString();
}
+ public void setFabClickListener(OnClickListener fabClickListener) {
+ mFab.setOnClickListener(fabClickListener);
+ }
+
private void init() {
if (is24HourFormat()) {
mAltButtons[0].setText(R.string.left_alt_24hr);
@@ -332,8 +348,17 @@ public class NumpadTimePicker extends GridLayoutNumpad implements TimePicker {
private void updateNumpadStates() {
updateAltButtonStates();
- //updateBackspaceState(); // Backspace is not part of the numpad
+ updateBackspaceState();
updateNumberKeysStates();
+ updateFabState();
+ }
+
+ private void updateFabState() {
+ mFab.setEnabled(checkTimeValid());
+ }
+
+ private void updateBackspaceState() {
+ mBackspace.setEnabled(count() > 0);
}
private void updateAltButtonStates() {
diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePickerDialog.java b/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePickerDialog.java
index ba8150f..1878d00 100644
--- a/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePickerDialog.java
+++ b/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePickerDialog.java
@@ -6,24 +6,20 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
-import android.widget.Button;
import android.widget.EditText;
-import android.widget.ImageButton;
import com.philliphsu.clock2.R;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
-import butterknife.OnLongClick;
import butterknife.OnTouch;
/**
* Created by Phillip Hsu on 7/12/2016.
*
*/
-public class NumpadTimePickerDialog extends DialogFragment
- implements NumpadTimePicker.OnInputChangeListener {
+public class NumpadTimePickerDialog extends DialogFragment implements NumpadTimePicker.OnInputChangeListener {
private static final String KEY_HOUR_OF_DAY = "hour_of_day";
private static final String KEY_MINUTE = "minute";
@@ -45,10 +41,7 @@ public class NumpadTimePickerDialog extends DialogFragment
*/
private int[] mInputtedDigits;
- @Bind(R.id.backspace) ImageButton mBackspace;
- @Bind(R.id.input) EditText mInputField;
- @Bind(R.id.cancel) Button mCancelButton;
- @Bind(R.id.ok) Button mOkButton;
+ @Bind(R.id.input_time) EditText mInputField;
@Bind(R.id.number_grid) NumpadTimePicker mNumpad;
public NumpadTimePickerDialog() {
@@ -101,12 +94,24 @@ public class NumpadTimePickerDialog extends DialogFragment
View view = inflater.inflate(R.layout.dialog_time_picker_numpad, container, false);
ButterKnife.bind(this, view);
+ // Can't do a method bind because the FAB is not part of this dialog's layout
+ // Also can't do the bind in the Numpad's class, because it doesn't have access to
+ // the OnTimeSetListener callback contained here or the dialog's dismiss()
+ mNumpad.setFabClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ if (!mNumpad.checkTimeValid())
+ return;
+ mCallback.onTimeSet(mNumpad, mNumpad.hourOfDay(), mNumpad.minute());
+ dismiss();
+ }
+ });
mNumpad.setOnInputChangeListener(this);
mNumpad.insertDigits(mInputtedDigits); // TOneverDO: before mNumpad.setOnInputChangeListener(this);
// Show the cursor immediately
- mInputField.requestFocus(); // TODO: If changed to TextView, then don't need this.
+ mInputField.requestFocus();
// TODO: Disabled color
- updateInputText(""); // Primarily to disable 'OK'
+ //updateInputText(""); // Primarily to disable 'OK'
return view;
}
@@ -135,41 +140,20 @@ public class NumpadTimePickerDialog extends DialogFragment
updateInputText("");
}
- // TODO: If you change the input field to a TextView, then you don't need this.
- @OnTouch(R.id.input)
+ @OnTouch(R.id.input_time)
boolean captureTouchOnEditText() {
// Capture touch events on the EditText field, because we want it to do nothing.
return true;
}
- @OnClick(R.id.cancel)
+ @OnClick(R.id.cancel_icon)
void myCancel() {
dismiss();
}
- @OnClick(R.id.ok)
- void ok() {
- if (!mNumpad.checkTimeValid())
- return;
- mCallback.onTimeSet(mNumpad, mNumpad.hourOfDay(), mNumpad.minute());
- dismiss();
- }
-
- @OnClick(R.id.backspace)
- void backspace() {
- mNumpad.delete();
- }
-
- @OnLongClick(R.id.backspace)
- boolean longBackspace() {
- mNumpad.clear();
- return true;
- }
-
private void updateInputText(String inputText) {
mInputField.setText(inputText);
// Move the cursor
- //mInputField.setSelection(mInputField.length()); // TODO: If changed to TextView, don't need this
- mOkButton.setEnabled(mNumpad.checkTimeValid());
+ mInputField.setSelection(mInputField.length());
}
}
diff --git a/app/src/main/res/layout/content_numpad_time_picker.xml b/app/src/main/res/layout/content_numpad_time_picker.xml
index ec1f535..85c7847 100644
--- a/app/src/main/res/layout/content_numpad_time_picker.xml
+++ b/app/src/main/res/layout/content_numpad_time_picker.xml
@@ -17,4 +17,31 @@
grid:layout_rowWeight="1"
grid:layout_columnWeight="1"
grid:layout_column="2"/>
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_time_picker_numpad.xml b/app/src/main/res/layout/dialog_time_picker_numpad.xml
index 106589b..5f28480 100644
--- a/app/src/main/res/layout/dialog_time_picker_numpad.xml
+++ b/app/src/main/res/layout/dialog_time_picker_numpad.xml
@@ -1,70 +1,43 @@
-
+
-
-
-
-
-
-
+ android:layout_height="@dimen/header_height"
+ android:background="@color/colorPrimary">
+
+
+
+
+
+
+
+ android:layout_height="@dimen/numpad_height"/>
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 83e81b3..54184f2 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -15,5 +15,6 @@
72dp
270dp
- 40sp
+ 45sp
+ 56dp