mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 00:38:39 +09:00
pt 1 in reviving the android build (copied from pm 28a1, wish me luck)
This commit is contained in:
parent
efa9662725
commit
d7788a6d6d
4249 changed files with 468189 additions and 0 deletions
98
mobile/android/chrome/content/InputWidgetHelper.js
Normal file
98
mobile/android/chrome/content/InputWidgetHelper.js
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
"use strict";
|
||||
|
||||
var InputWidgetHelper = {
|
||||
_uiBusy: false,
|
||||
|
||||
handleEvent: function(aEvent) {
|
||||
this.handleClick(aEvent.target);
|
||||
},
|
||||
|
||||
handleClick: function(aTarget) {
|
||||
// if we're busy looking at a InputWidget we want to eat any clicks that
|
||||
// come to us, but not to process them
|
||||
if (this._uiBusy || !this.hasInputWidget(aTarget) || this._isDisabledElement(aTarget))
|
||||
return;
|
||||
|
||||
this._uiBusy = true;
|
||||
this.show(aTarget);
|
||||
this._uiBusy = false;
|
||||
},
|
||||
|
||||
show: function(aElement) {
|
||||
let type = aElement.getAttribute('type');
|
||||
let p = new Prompt({
|
||||
window: aElement.ownerDocument.defaultView,
|
||||
title: Strings.browser.GetStringFromName("inputWidgetHelper." + aElement.getAttribute('type')),
|
||||
buttons: [
|
||||
Strings.browser.GetStringFromName("inputWidgetHelper.set"),
|
||||
Strings.browser.GetStringFromName("inputWidgetHelper.clear"),
|
||||
Strings.browser.GetStringFromName("inputWidgetHelper.cancel")
|
||||
],
|
||||
}).addDatePicker({
|
||||
value: aElement.value,
|
||||
type: type,
|
||||
min: aElement.min,
|
||||
max: aElement.max,
|
||||
}).show((function(data) {
|
||||
let changed = false;
|
||||
if (data.button == -1) {
|
||||
// This type is not supported with this android version.
|
||||
return;
|
||||
}
|
||||
if (data.button == 1) {
|
||||
// The user cleared the value.
|
||||
if (aElement.value != "") {
|
||||
aElement.value = "";
|
||||
changed = true;
|
||||
}
|
||||
} else if (data.button == 0) {
|
||||
// Commit the new value.
|
||||
if (aElement.value != data[type]) {
|
||||
aElement.value = data[type + "0"];
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
// Else the user canceled the input.
|
||||
|
||||
if (changed)
|
||||
this.fireOnChange(aElement);
|
||||
}).bind(this));
|
||||
},
|
||||
|
||||
hasInputWidget: function(aElement) {
|
||||
if (!(aElement instanceof HTMLInputElement))
|
||||
return false;
|
||||
|
||||
let type = aElement.getAttribute('type');
|
||||
if (type == "date" || type == "datetime" || type == "datetime-local" ||
|
||||
type == "week" || type == "month" || type == "time") {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
fireOnChange: function(aElement) {
|
||||
let evt = aElement.ownerDocument.createEvent("Events");
|
||||
evt.initEvent("change", true, true, aElement.defaultView, 0,
|
||||
false, false,
|
||||
false, false, null);
|
||||
setTimeout(function() {
|
||||
aElement.dispatchEvent(evt);
|
||||
}, 0);
|
||||
},
|
||||
|
||||
_isDisabledElement : function(aElement) {
|
||||
let currentElement = aElement;
|
||||
while (currentElement) {
|
||||
if (currentElement.disabled)
|
||||
return true;
|
||||
|
||||
currentElement = currentElement.parentElement;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue