rutile
Version:
Factory automation for Mobile Enterprise.
183 lines (165 loc) • 4.14 kB
JavaScript
// usage:
//
// var controller = Alloy.createController('Framework/TimestampPicker');
// controller.setListener(self);
// controller.showPickerIn(view);
//
var self = exports;
var parent;
var listener;
var DISPLAY_WIDTH = Ti.Platform.displayCaps.platformWidth;
var DISPLAY_HEIGHT = Ti.Platform.displayCaps.platformHeight;
var STATUS_BAR_HEIGHT = 20; // iOS status bar height
var TOP_BAR_HEIGHT = 44; // navigation bar height
var ANIM_DURATION = 300;
var WRAPPER_WIDTH = DISPLAY_WIDTH * 2;
var WRAPPER_HEIGHT = (DISPLAY_HEIGHT - STATUS_BAR_HEIGHT) * 2;
$.Wrapper.top = WRAPPER_HEIGHT / 2;
$.Wrapper.width = WRAPPER_WIDTH;
$.Wrapper.height = WRAPPER_HEIGHT;
var cancelButton = Alloy.createController('Framework/NaviCancelButton');
var nextButton = Alloy.createController('Framework/NaviNextButton');
var backButton = Alloy.createController('Framework/NaviBackButton');
var okButton = Alloy.createController('Framework/NaviOkButton');
// delgate object should have listenDatePicker() and listenTimePicker()
exports.setListener = function(obj){
listener = obj;
};
exports.showPickerIn = function(view){
parent = view;
parent.add($.Container);
$.Wrapper.animate(
Ti.UI.createAnimation({
top : -1 * WRAPPER_HEIGHT / 2,
duration : ANIM_DURATION,
}),
function(){
// setup button functions
cancelButton.setButtonHandler(cancelPicker);
nextButton.setButtonHandler(gotoTimePicker);
backButton.setButtonHandler(gobackDatePicker);
okButton.setButtonHandler(hidePicker);
// then show the init
$.LeftButtonsView.add(cancelButton.getView());
$.RightButtonsView.add(nextButton.getView());
}
);
};
var cancelPicker = function(){
$.Wrapper.animate(
Ti.UI.createAnimation({
top : WRAPPER_HEIGHT / 2,
duration : ANIM_DURATION,
}),
function(){
parent.remove($.Container);
}
);
};
function hidePicker(){
listener.listenDatePicker($.DatePicker.value);
listener.listenTimePicker($.TimePicker.value);
$.Wrapper.animate(
Ti.UI.createAnimation({
top : WRAPPER_HEIGHT / 2,
duration : ANIM_DURATION,
}),
function(){
parent.remove($.Container);
}
);
}
var gotoTimePicker = function(){
$.LeftButtonsView.animate(
Ti.UI.createAnimation({
opacity : 0.25,
duration : ANIM_DURATION / 2,
}),
function(){
$.LeftButtonsView.remove(cancelButton.getView());
$.LeftButtonsView.add(backButton.getView());
$.LeftButtonsView.animate(
Ti.UI.createAnimation({
opacity : 1.0,
duration : ANIM_DURATION / 2,
}),
function(){}
);
}
);
$.RightButtonsView.animate(
Ti.UI.createAnimation({
opacity : 0.25,
duration : ANIM_DURATION / 2,
}),
function(){
$.RightButtonsView.remove(nextButton.getView());
$.RightButtonsView.add(okButton.getView());
$.RightButtonsView.animate(
Ti.UI.createAnimation({
opacity : 1.0,
duration : ANIM_DURATION / 2,
}),
function(){}
);
}
);
$.Body.animate(
Ti.UI.createAnimation({
left : -1 * WRAPPER_WIDTH / 2,
duration : ANIM_DURATION,
}),
function(){
;
}
);
};
var gobackDatePicker = function(){
$.LeftButtonsView.animate(
Ti.UI.createAnimation({
opacity : 0.25,
duration : ANIM_DURATION / 2,
}),
function(){
$.LeftButtonsView.remove(backButton.getView());
$.LeftButtonsView.add(cancelButton.getView());
$.LeftButtonsView.animate(
Ti.UI.createAnimation({
opacity : 1.0,
duration : ANIM_DURATION / 2,
}),
function(){}
);
}
);
$.RightButtonsView.animate(
Ti.UI.createAnimation({
opacity : 0.25,
duration : ANIM_DURATION / 2,
}),
function(){
$.RightButtonsView.remove(okButton.getView());
$.RightButtonsView.add(nextButton.getView());
$.RightButtonsView.animate(
Ti.UI.createAnimation({
opacity : 1.0,
duration : ANIM_DURATION / 2,
}),
function(){}
);
}
);
$.Body.animate(
Ti.UI.createAnimation({
left : 0,
duration : ANIM_DURATION,
}),
function(){
;
}
);
};
exports.setValue = function(date){
$.DatePicker.setValue(date);
$.TimePicker.setValue(date);
};