Merge pull request #3350 from NativeScript/fix-date-picker

Fix DatePicker
This commit is contained in:
Rossen Hristov
2016-12-22 17:32:48 +02:00
committed by GitHub

View File

@ -43,7 +43,6 @@ class DateChangedListener extends java.lang.Object implements android.widget.Dat
export class DatePicker extends DatePickerBase { export class DatePicker extends DatePickerBase {
private _android: android.widget.DatePicker; private _android: android.widget.DatePicker;
public _listener: android.widget.DatePicker.OnDateChangedListener; public _listener: android.widget.DatePicker.OnDateChangedListener;
public _datePicker: android.widget.DatePicker;
get android(): android.widget.DatePicker { get android(): android.widget.DatePicker {
return this._android; return this._android;
@ -57,71 +56,65 @@ export class DatePicker extends DatePickerBase {
} }
private updateNativeDate(): void { private updateNativeDate(): void {
let year = typeof this.year === "number" ? this.year : this._datePicker.getYear(); let year = typeof this.year === "number" ? this.year : this.android.getYear();
let month = typeof this.month === "number" ? (this.month - 1) : this._datePicker.getMonth(); let month = typeof this.month === "number" ? (this.month - 1) : this.android.getMonth();
let day = typeof this.day === "number" ? this.day : this._datePicker.getDayOfMonth(); let day = typeof this.day === "number" ? this.day : this.android.getDayOfMonth();
this.date = new Date(year, month, day); this.date = new Date(year, month, day);
} }
get [yearProperty.native](): number { get [yearProperty.native](): number {
return this._datePicker.getYear(); return this.android.getYear();
} }
set [yearProperty.native](value: number) { set [yearProperty.native](value: number) {
let picker = this._datePicker; if (this.android.getYear() !== value) {
if (picker.getYear() !== value) {
this.updateNativeDate(); this.updateNativeDate();
} }
} }
get [monthProperty.native](): number { get [monthProperty.native](): number {
return this._datePicker.getMonth(); return this.android.getMonth();
} }
set [monthProperty.native](value: number) { set [monthProperty.native](value: number) {
let picker = this._datePicker; if (this.android.getMonth() !== (value - 1)) {
if (picker.getMonth() !== (value - 1)) {
this.updateNativeDate(); this.updateNativeDate();
} }
} }
get [dayProperty.native](): number { get [dayProperty.native](): number {
return this._datePicker.getDayOfMonth(); return this.android.getDayOfMonth();
} }
set [dayProperty.native](value: number) { set [dayProperty.native](value: number) {
let picker = this._datePicker; if (this.android.getDayOfMonth() !== value) {
if (picker.getDayOfMonth() !== value) {
this.updateNativeDate(); this.updateNativeDate();
} }
} }
get [dateProperty.native](): Date { get [dateProperty.native](): Date {
let picker = this._datePicker; return new Date(this.android.getYear(), this.android.getMonth(), this.android.getDayOfMonth());
return new Date(picker.getYear(), picker.getMonth(), picker.getDayOfMonth());
} }
set [dateProperty.native](value: Date) { set [dateProperty.native](value: Date) {
let picker = this._datePicker; if (this.android.getDayOfMonth() !== value.getDay()
if (picker.getDayOfMonth() !== value.getDay() || this.android.getMonth() !== value.getMonth()
|| picker.getMonth() !== value.getMonth() || this.android.getYear() !== value.getFullYear()) {
|| picker.getYear() !== value.getFullYear()) { this.android.updateDate(value.getFullYear(), value.getMonth(), value.getDate());
picker.updateDate(value.getFullYear(), value.getMonth(), value.getDate());
} }
} }
get [maxDateProperty.native](): Date { get [maxDateProperty.native](): Date {
return this._datePicker.getMaxDate(); return this.android.getMaxDate();
} }
set [maxDateProperty.native](value: Date) { set [maxDateProperty.native](value: Date) {
let picker = this._datePicker;
let newValue = value.getTime(); let newValue = value.getTime();
if (picker.getMaxDate() !== newValue) { if (this.android.getMaxDate() !== newValue) {
picker.setMaxDate(newValue); this.android.setMaxDate(newValue);
} }
} }
get [minDateProperty.native](): Date { get [minDateProperty.native](): Date {
return this._datePicker.getMinDate(); return this.android.getMinDate();
} }
set [minDateProperty.native](value: Date) { set [minDateProperty.native](value: Date) {
let picker = this._datePicker; let picker = this.android;
let newValue = value.getTime(); let newValue = value.getTime();
if (picker.getMinDate() !== newValue) { if (picker.getMinDate() !== newValue) {
picker.setMinDate(newValue); picker.setMinDate(newValue);