Files
NativeScript/tns-core-modules/ui/time-picker/time-picker.android.ts
Hristo Hristov 1d49f5f3c3 fix padding on text-view & text-field (#3758)
* fix padding on text-view & text-field
text-base is now snapshotable
view.android is now snapshotable

* createNativeView returns the nativeView for android
Fix image tests
Implement test for image loaded from res://
EffectivePaddings updated when nativeView have some from its native theme
2017-03-09 16:09:53 +02:00

101 lines
3.4 KiB
TypeScript

import { TimePickerBase, getValidTime, timeProperty, hourProperty, minuteProperty } from "./time-picker-common";
export * from "./time-picker-common";
interface TimeChangedListener {
new (owner: TimePicker): android.widget.TimePicker.OnTimeChangedListener;
}
let TimeChangedListener: TimeChangedListener;
function initializeTimeChangedListener(): void {
if (TimeChangedListener) {
return;
}
@Interfaces([android.widget.TimePicker.OnTimeChangedListener])
class TimeChangedListenerImpl extends java.lang.Object implements android.widget.TimePicker.OnTimeChangedListener {
constructor(public owner: TimePicker) {
super();
return global.__native(this);
}
onTimeChanged(picker: android.widget.TimePicker, hour: number, minute: number): void {
const timePicker = this.owner;
let validTime = getValidTime(timePicker, hour, minute);
timePicker._setNativeValueSilently(validTime.hour, validTime.minute);
timeProperty.nativeValueChange(timePicker, new Date(0, 0, 0, validTime.hour, validTime.minute));
}
}
TimeChangedListener = TimeChangedListenerImpl;
}
export class TimePicker extends TimePickerBase {
private _android: android.widget.TimePicker;
private _listener: android.widget.TimePicker.OnTimeChangedListener;
public _createNativeView() {
initializeTimeChangedListener();
this._android = new android.widget.TimePicker(this._context);
this._listener = this._listener || new TimeChangedListener(this);
this._android.setOnTimeChangedListener(this._listener);
let c = java.util.Calendar.getInstance();
if (this.hour === 0) {
this.hour = c.get(java.util.Calendar.HOUR_OF_DAY);
}
if (this.minute === 0) {
this.minute = c.get(java.util.Calendar.MINUTE);
}
let validTime = getValidTime(this, this.hour, this.minute);
this._setNativeValueSilently(validTime.hour, validTime.minute);
return this._android;
}
get android(): android.widget.TimePicker {
return this._android;
}
public _setNativeValueSilently(hour: number, minute: number) {
if (this._android) {
this._android.setOnTimeChangedListener(null);
this._android.setCurrentHour(new java.lang.Integer(hour));
this._android.setCurrentMinute(new java.lang.Integer(minute));
this.minute = minute;
this.hour = hour;
this._android.setOnTimeChangedListener(this._listener);
}
}
public _setNativeTime() {
this._setNativeValueSilently(this.hour, this.minute);
}
get [timeProperty.native](): Date {
let nativeView = this._android;
return new Date(0, 0, 0, nativeView.getCurrentHour().intValue(), nativeView.getCurrentMinute().intValue());
}
set [timeProperty.native](value: Date) {
this._setNativeValueSilently(this.hour, this.minute);
}
get [minuteProperty.native](): number {
return this._android.getCurrentMinute().intValue();
}
set [minuteProperty.native](value: number) {
this._setNativeValueSilently(this.hour, value);
}
get [hourProperty.native](): number {
return this._android.getCurrentHour().intValue()
}
set [hourProperty.native](value: number) {
this._setNativeValueSilently(value, this.minute);
}
}