|
@ -1,7 +1,7 @@ |
|
|
package com.henninghall.date_picker; |
|
|
package com.henninghall.date_picker; |
|
|
|
|
|
|
|
|
import android.view.View; |
|
|
import android.view.View; |
|
|
import android.view.ViewManager; |
|
|
|
|
|
|
|
|
import android.view.ViewGroup; |
|
|
import android.widget.RelativeLayout; |
|
|
import android.widget.RelativeLayout; |
|
|
|
|
|
|
|
|
import com.facebook.react.bridge.Arguments; |
|
|
import com.facebook.react.bridge.Arguments; |
|
@ -22,21 +22,27 @@ import cn.carbswang.android.numberpickerview.library.NumberPickerView; |
|
|
|
|
|
|
|
|
public class PickerView extends RelativeLayout { |
|
|
public class PickerView extends RelativeLayout { |
|
|
|
|
|
|
|
|
|
|
|
private final RelativeLayout wheelsWrapper; |
|
|
private SimpleDateFormat dateFormat; |
|
|
private SimpleDateFormat dateFormat; |
|
|
private HourWheel hourWheel; |
|
|
private HourWheel hourWheel; |
|
|
private DayWheel dayWheel; |
|
|
private DayWheel dayWheel; |
|
|
private MinutesWheel minutesWheel; |
|
|
private MinutesWheel minutesWheel; |
|
|
private AmPmWheel ampmWheel; |
|
|
private AmPmWheel ampmWheel; |
|
|
|
|
|
private int i = 0; |
|
|
|
|
|
|
|
|
public PickerView() { |
|
|
public PickerView() { |
|
|
super(DatePickerManager.context); |
|
|
super(DatePickerManager.context); |
|
|
View rootView = inflate(getContext(), R.layout.datepicker_view, this); |
|
|
View rootView = inflate(getContext(), R.layout.datepicker_view, this); |
|
|
|
|
|
|
|
|
|
|
|
wheelsWrapper = (RelativeLayout) rootView.findViewById(R.id.wheelsWrapper); |
|
|
|
|
|
wheelsWrapper.setWillNotDraw(false); |
|
|
|
|
|
|
|
|
Locale locale = android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP ? Locale.forLanguageTag("en") : Locale.getDefault(); |
|
|
Locale locale = android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP ? Locale.forLanguageTag("en") : Locale.getDefault(); |
|
|
|
|
|
|
|
|
NumberPickerView hourPicker = (NumberPickerView) rootView.findViewById(R.id.hour); |
|
|
NumberPickerView hourPicker = (NumberPickerView) rootView.findViewById(R.id.hour); |
|
|
hourWheel = new HourWheel(hourPicker, onWheelChangeListener, locale); |
|
|
hourWheel = new HourWheel(hourPicker, onWheelChangeListener, locale); |
|
|
|
|
|
|
|
|
NumberPickerView dayPicker= (NumberPickerView) rootView.findViewById(R.id.day); |
|
|
|
|
|
|
|
|
NumberPickerView dayPicker = (NumberPickerView) rootView.findViewById(R.id.day); |
|
|
dayWheel = new DayWheel(dayPicker, onWheelChangeListener, locale); |
|
|
dayWheel = new DayWheel(dayPicker, onWheelChangeListener, locale); |
|
|
|
|
|
|
|
|
NumberPickerView minutePicker = (NumberPickerView) rootView.findViewById(R.id.minutes); |
|
|
NumberPickerView minutePicker = (NumberPickerView) rootView.findViewById(R.id.minutes); |
|
@ -45,8 +51,7 @@ public class PickerView extends RelativeLayout { |
|
|
NumberPickerView ampmPicker = (NumberPickerView) rootView.findViewById(R.id.ampm); |
|
|
NumberPickerView ampmPicker = (NumberPickerView) rootView.findViewById(R.id.ampm); |
|
|
ampmWheel = new AmPmWheel(ampmPicker, onWheelChangeListener, locale); |
|
|
ampmWheel = new AmPmWheel(ampmPicker, onWheelChangeListener, locale); |
|
|
|
|
|
|
|
|
dateFormat = new SimpleDateFormat(getDateFormatTemplate(), locale); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dateFormat = new SimpleDateFormat(getDateFormatTemplate(), Locale.US); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
WheelChangeListener onWheelChangeListener = new WheelChangeListener(){ |
|
|
WheelChangeListener onWheelChangeListener = new WheelChangeListener(){ |
|
@ -54,7 +59,9 @@ public class PickerView extends RelativeLayout { |
|
|
public void onChange() { |
|
|
public void onChange() { |
|
|
WritableMap event = Arguments.createMap(); |
|
|
WritableMap event = Arguments.createMap(); |
|
|
try { |
|
|
try { |
|
|
Date date = dateFormat.parse(getDateString()); |
|
|
|
|
|
|
|
|
String dateString = getDateString(); |
|
|
|
|
|
|
|
|
|
|
|
Date date = dateFormat.parse(dateString); |
|
|
event.putDouble("date", date.getTime()); |
|
|
event.putDouble("date", date.getTime()); |
|
|
} catch (ParseException e) { |
|
|
} catch (ParseException e) { |
|
|
e.printStackTrace(); |
|
|
e.printStackTrace(); |
|
@ -67,15 +74,15 @@ public class PickerView extends RelativeLayout { |
|
|
private String getDateFormatTemplate() { |
|
|
private String getDateFormatTemplate() { |
|
|
return dayWheel.getFormatTemplate() + " " |
|
|
return dayWheel.getFormatTemplate() + " " |
|
|
+ hourWheel.getFormatTemplate() + " " |
|
|
+ hourWheel.getFormatTemplate() + " " |
|
|
+ minutesWheel.getFormatTemplate() + " " |
|
|
|
|
|
+ ampmWheel.getFormatTemplate(); |
|
|
|
|
|
|
|
|
+ minutesWheel.getFormatTemplate() |
|
|
|
|
|
+ ampmWheel.getFormatTemplate(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private String getDateString() { |
|
|
private String getDateString() { |
|
|
return dayWheel.getValue() |
|
|
return dayWheel.getValue() |
|
|
+ " " + hourWheel.getValue() |
|
|
+ " " + hourWheel.getValue() |
|
|
+ " " + minutesWheel.getValue() |
|
|
+ " " + minutesWheel.getValue() |
|
|
+ " " + ampmWheel.getValue(); |
|
|
|
|
|
|
|
|
+ ampmWheel.getValue(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public void setDate(Date date) { |
|
|
public void setDate(Date date) { |
|
@ -90,5 +97,23 @@ public class PickerView extends RelativeLayout { |
|
|
hourWheel.setLocale(locale); |
|
|
hourWheel.setLocale(locale); |
|
|
minutesWheel.setLocale(locale); |
|
|
minutesWheel.setLocale(locale); |
|
|
ampmWheel.setLocale(locale); |
|
|
ampmWheel.setLocale(locale); |
|
|
|
|
|
|
|
|
|
|
|
dateFormat = new SimpleDateFormat(getDateFormatTemplate(), Locale.US); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private final Runnable measureAndLayout = new Runnable() { |
|
|
|
|
|
@Override |
|
|
|
|
|
public void run() { |
|
|
|
|
|
measure( |
|
|
|
|
|
MeasureSpec.makeMeasureSpec(getWidth(), MeasureSpec.EXACTLY), |
|
|
|
|
|
MeasureSpec.makeMeasureSpec(getHeight(), MeasureSpec.EXACTLY)); |
|
|
|
|
|
layout(getLeft(), getTop(), getRight(), getBottom()); |
|
|
|
|
|
} |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public void requestLayout() { |
|
|
|
|
|
super.requestLayout(); |
|
|
|
|
|
post(measureAndLayout); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |