Skip to content

Instantly share code, notes, and snippets.

@kikuchy
Created June 25, 2014 06:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kikuchy/ac15a82c30bb88473571 to your computer and use it in GitHub Desktop.
Save kikuchy/ac15a82c30bb88473571 to your computer and use it in GitHub Desktop.
イベント周りの実装を頑張ったのに消したやつ。供養供養
createToggleButton: function (o) {
var defaultOpt = {
enableStateBackgroundImage: undefined,
disableStateBackgroundImage: undefined,
value: false,
confirmDialogOption: undefined
};
for ( var key in defaultOpt )
o[key] = o[key] || defaultOpt[key];
var self = {
init: function (o) {
this.option = o;
this.userCallbacks = {};
this.defaultCallbackes = {};
this.value = o.value;
this.button = Ti.UI.createButton({
backgroundImage: this.value ? o.enableStateBackgroundImage : o.disableStateBackgroundImage,
width: o.width,
height: o.height
});
this.button.addEventListener("singletap", function () {
if (self.confirmDialog) self.confirmDialog.show();
else self.fireEvent("change")
});
this._addEventListenerTo(this.defaultCallbackes, "change", function () { self.value = !self.value; });
this._addEventListenerTo(this.defaultCallbackes, "change", this._updateSurface);
if (o.confirmDialogOption) {
var value = o.value;
this.confirmDialog = Ti.UI.createAlertDialog(o.confirmDialogOption);
this.confirmDialog.addEventListener("click", function (e) {
if(e.index === e.source.buttonNames.length - 1 )
self.fireEvent("change");
});
}
return this;
},
_addEventListenerTo: function (callbackKindObject, type, callback) {
if (!callbackKindObject[type])
callbackKindObject[type] = [];
callbackKindObject[type].push(callback);
},
addEventListener: function (type, callback) {
this._addEventListenerTo(this.userCallbacks, type, callback);
},
_fireEventFor: function (callbackKindObject, type, e) {
if (!callbackKindObject[type] ) return true;
var isPrevented = false;
e = e || {};
e.type = type;
e.source = this;
e.preventDefault = function () { isPrevented = true; }
var isSucceeded = callbackKindObject[type].every(function (callback) {
return false !== callback.call(self, e);
});
return !isPrevented && isSucceeded;
},
fireEvent: function (type, e) {
[this.userCallbacks, this.defaultCallbackes].every(function (callbackKindObject) {
return self._fireEventFor.call(self, callbackKindObject, type, e);
});
},
append: function (tiUIView) {
tiUIView.add(this.button);
},
_updateSurface: function () {
this.button.backgroundImage = this.value ? this.option.enableStateBackgroundImage : this.option.disableStateBackgroundImage;
}
};
return self.init(o);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment