summaryrefslogtreecommitdiff
path: root/core/java/android/widget/TextInputTimePickerView.java
diff options
context:
space:
mode:
authorDavid Ogutu <ogutu@google.com>2018-03-15 11:36:30 -0400
committerDavid Ogutu <ogutu@google.com>2018-03-21 11:26:09 -0400
commit07b2bb7f2f9b82e5dcfd329206f71969c2d9fe08 (patch)
treeafa9428b542d22b4e96279ab2ea1e0638415fb3b /core/java/android/widget/TextInputTimePickerView.java
parent1d748402a9c3d59d697c3a9c1fb06cbccf293d71 (diff)
Show hint instead of auto-populating timepicker.
Textboxes will now show hint text if not set rather than populating text. Also changed validation text to have similar behaviour to the radial setter. Change-Id: I8ce55d7d7898be9b0a842d3f1f9a2e8deb01f5b3 Test: manually https://drive.google.com/file/d/1bD_dbIF9dgOr1B3EuSMBlJY9M97Z19vc/view?usp=sharing Fixes: 36863667
Diffstat (limited to 'core/java/android/widget/TextInputTimePickerView.java')
-rw-r--r--core/java/android/widget/TextInputTimePickerView.java33
1 files changed, 29 insertions, 4 deletions
diff --git a/core/java/android/widget/TextInputTimePickerView.java b/core/java/android/widget/TextInputTimePickerView.java
index 9f905d164e8e..23f258284efa 100644
--- a/core/java/android/widget/TextInputTimePickerView.java
+++ b/core/java/android/widget/TextInputTimePickerView.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.os.LocaleList;
import android.text.Editable;
import android.text.InputFilter;
+import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.util.MathUtils;
@@ -55,6 +56,7 @@ public class TextInputTimePickerView extends RelativeLayout {
private OnValueTypedListener mListener;
private boolean mErrorShowing;
+ private boolean mTimeSet;
interface OnValueTypedListener {
void onValueChanged(int inputType, int newValue);
@@ -155,8 +157,15 @@ public class TextInputTimePickerView extends RelativeLayout {
}
boolean validateInput() {
- final boolean inputValid = parseAndSetHourInternal(mHourEditText.getText().toString())
- && parseAndSetMinuteInternal(mMinuteEditText.getText().toString());
+ final String hourText = TextUtils.isEmpty(mHourEditText.getText())
+ ? mHourEditText.getHint().toString()
+ : mHourEditText.getText().toString();
+ final String minuteText = TextUtils.isEmpty(mMinuteEditText.getText())
+ ? mMinuteEditText.getHint().toString()
+ : mMinuteEditText.getText().toString();
+
+ final boolean inputValid = parseAndSetHourInternal(hourText)
+ && parseAndSetMinuteInternal(minuteText);
setError(!inputValid);
return inputValid;
}
@@ -173,6 +182,14 @@ public class TextInputTimePickerView extends RelativeLayout {
mMinuteLabel.setVisibility(enabled ? View.INVISIBLE : View.VISIBLE);
}
+ private void setTimeSet(boolean timeSet) {
+ mTimeSet = mTimeSet || timeSet;
+ }
+
+ private boolean isTimeSet() {
+ return mTimeSet;
+ }
+
/**
* Computes the display value and updates the text of the view.
* <p>
@@ -195,8 +212,14 @@ public class TextInputTimePickerView extends RelativeLayout {
mAmPmSpinner.setSelection(1);
}
- mHourEditText.setText(String.format(hourFormat, localizedHour));
- mMinuteEditText.setText(String.format(minuteFormat, minute));
+ if (isTimeSet()) {
+ mHourEditText.setText(String.format(hourFormat, localizedHour));
+ mMinuteEditText.setText(String.format(minuteFormat, minute));
+ } else {
+ mHourEditText.setHint(String.format(hourFormat, localizedHour));
+ mMinuteEditText.setHint(String.format(minuteFormat, minute));
+ }
+
if (mErrorShowing) {
validateInput();
@@ -214,6 +237,7 @@ public class TextInputTimePickerView extends RelativeLayout {
return false;
}
mListener.onValueChanged(HOURS, getHourOfDayFromLocalizedHour(hour));
+ setTimeSet(true);
return true;
} catch (NumberFormatException e) {
// Do nothing since we cannot parse the input.
@@ -229,6 +253,7 @@ public class TextInputTimePickerView extends RelativeLayout {
return false;
}
mListener.onValueChanged(MINUTES, minutes);
+ setTimeSet(true);
return true;
} catch (NumberFormatException e) {
// Do nothing since we cannot parse the input.