mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Introducing time property for TimePicker.
This commit is contained in:
@@ -26,10 +26,16 @@ function getMinutes(hour: number): number {
|
||||
}
|
||||
|
||||
export function isGreaterThanMinTime(picker: definition.TimePicker, hour?: number, minute?: number): boolean {
|
||||
if (!types.isDefined(picker.minHour) || !types.isDefined(picker.minMinute)) {
|
||||
return true;
|
||||
}
|
||||
return getMinutes(types.isDefined(hour) ? hour : picker.hour) + (types.isDefined(minute) ? minute : picker.minute) >= getMinutes(picker.minHour) + picker.minMinute;
|
||||
}
|
||||
|
||||
export function isLessThanMaxTime(picker: definition.TimePicker, hour?: number, minute?: number): boolean {
|
||||
if (!types.isDefined(picker.maxHour) || !types.isDefined(picker.maxMinute)) {
|
||||
return true;
|
||||
}
|
||||
return getMinutes(types.isDefined(hour) ? hour : picker.hour) + (types.isDefined(minute) ? minute : picker.minute) <= getMinutes(picker.maxHour) + picker.maxMinute;
|
||||
}
|
||||
|
||||
@@ -78,6 +84,7 @@ function onHourPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
|
||||
if (isValidTime(picker)) {
|
||||
picker._setNativeTime();
|
||||
picker.time = new Date(0, 0, 0, picker.hour, picker.minute);
|
||||
} else {
|
||||
throw new Error(getErrorMessage(picker, "Hour", data.newValue));
|
||||
}
|
||||
@@ -88,11 +95,26 @@ function onMinutePropertyChanged(data: dependencyObservable.PropertyChangeData)
|
||||
|
||||
if (isValidTime(picker)) {
|
||||
picker._setNativeTime();
|
||||
picker.time = new Date(0, 0, 0, picker.hour, picker.minute);
|
||||
} else {
|
||||
throw new Error(getErrorMessage(picker, "Minute", data.newValue));
|
||||
}
|
||||
}
|
||||
|
||||
function onTimePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <definition.TimePicker>data.object;
|
||||
|
||||
let newTime = <Date>data.newValue;
|
||||
picker.hour = newTime.getHours();
|
||||
picker.minute = newTime.getMinutes();
|
||||
|
||||
if (isValidTime(picker)) {
|
||||
picker._setNativeTime();
|
||||
} else {
|
||||
throw new Error(getErrorMessage(picker, "Time", data.newValue));
|
||||
}
|
||||
}
|
||||
|
||||
function onMinMinutePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
var picker = <definition.TimePicker>data.object;
|
||||
|
||||
@@ -160,6 +182,9 @@ export class TimePicker extends view.View implements definition.TimePicker {
|
||||
|
||||
public static minuteIntervalProperty = new dependencyObservable.Property("minuteInterval", "TimePicker",
|
||||
new proxy.PropertyMetadata(1, dependencyObservable.PropertyMetadataSettings.None, onMinuteIntervalPropertyChanged, isMinuteIntervalValid));
|
||||
|
||||
public static timeProperty = new dependencyObservable.Property("time", "TimePicker",
|
||||
new proxy.PropertyMetadata(undefined, dependencyObservable.PropertyMetadataSettings.None, onTimePropertyChanged, isValidTime));
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
@@ -178,6 +203,13 @@ export class TimePicker extends view.View implements definition.TimePicker {
|
||||
set minute(value: number) {
|
||||
this._setValue(TimePicker.minuteProperty, value);
|
||||
}
|
||||
|
||||
get time(): Date {
|
||||
return this._getValue(TimePicker.timeProperty);
|
||||
}
|
||||
set time(value: Date) {
|
||||
this._setValue(TimePicker.timeProperty, value);
|
||||
}
|
||||
|
||||
get minuteInterval(): number {
|
||||
return this._getValue(TimePicker.minuteIntervalProperty);
|
||||
|
||||
@@ -54,7 +54,7 @@ export class TimePicker extends common.TimePicker {
|
||||
|
||||
this.minute = minute;
|
||||
this.hour = hour;
|
||||
|
||||
|
||||
this.android.setOnTimeChangedListener(this._listener);
|
||||
}
|
||||
}
|
||||
|
||||
6
ui/time-picker/time-picker.d.ts
vendored
6
ui/time-picker/time-picker.d.ts
vendored
@@ -11,6 +11,7 @@ declare module "ui/time-picker" {
|
||||
export class TimePicker extends view.View {
|
||||
public static hourProperty: dependencyObservable.Property;
|
||||
public static minuteProperty: dependencyObservable.Property;
|
||||
public static timeProperty: dependencyObservable.Property;
|
||||
|
||||
constructor();
|
||||
|
||||
@@ -33,6 +34,11 @@ declare module "ui/time-picker" {
|
||||
* Gets or sets the time minute.
|
||||
*/
|
||||
minute: number;
|
||||
|
||||
/**
|
||||
* Gets or sets the time.
|
||||
*/
|
||||
time: Date;
|
||||
|
||||
/**
|
||||
* Gets or sets the max time hour.
|
||||
|
||||
@@ -79,13 +79,20 @@ class UITimePickerChangeHandlerImpl extends NSObject {
|
||||
}
|
||||
|
||||
var comps = getComponents(sender.date);
|
||||
|
||||
|
||||
let timeChanged = false;
|
||||
if (comps.hour !== owner.hour) {
|
||||
owner._onPropertyChangedFromNative(common.TimePicker.hourProperty, comps.hour);
|
||||
timeChanged = true;
|
||||
}
|
||||
|
||||
if (comps.minute !== owner.minute) {
|
||||
owner._onPropertyChangedFromNative(common.TimePicker.minuteProperty, comps.minute);
|
||||
timeChanged = true;
|
||||
}
|
||||
|
||||
if (timeChanged) {
|
||||
owner._onPropertyChangedFromNative(common.TimePicker.timeProperty, new Date(0, 0, 0, comps.hour, comps.minute));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user