diff options
author | teramako | 2009-03-12 15:26:13 +0000 |
---|---|---|
committer | teramako | 2009-03-12 15:26:13 +0000 |
commit | 4833fc545e9cbf445e8edcaaff99e12b79a20288 (patch) | |
tree | 42c7f2a770fd4ef5c3de093484cc7fdc86355046 | |
parent | e8e8f352700d92178a4d22514ff718ced60318ce (diff) | |
download | vimperator-plugins-4833fc545e9cbf445e8edcaaff99e12b79a20288.tar.bz2 |
add 美人時計
git-svn-id: http://svn.coderepos.org/share/lang/javascript/vimperator-plugins/trunk@31120 d0d07461-0603-4401-acd4-de1884942a52
-rw-r--r-- | bijin_clock.js | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/bijin_clock.js b/bijin_clock.js new file mode 100644 index 0000000..c6a068a --- /dev/null +++ b/bijin_clock.js @@ -0,0 +1,103 @@ +/* + * http://www.bijint.com/ + * + * == Start == + * js plugins.bijin_clock.start(min) + * min: interval minutes (default: 1) + * + * == Stop == + * js plugins.bijin_clock.stop() + */ +let PLUGIN_INFO = +<VimperatorPlugin> +<name>{NAME}</name> +<description>Bijin Clock - http://www.bijint.com</description> +<version>0.1</version> +</VimperatorPlugin>; + +liberator.plugins.bijin_clock = (function(){ +const BASE_URL = 'http://www.bijint.com/jp/img/photo/'; +const TITLE = fromUTF8Octets("美人時計"); +const NAME = "Bijin Clock"; +let interval = null; +function getTimeString(date){ + let time = date.toTimeString(); + return time.substr(0,2) + time.substr(3,2); +} +function fromUTF8Octets(octets){ + return decodeURIComponent(octets.replace(/[%\x80-\xFF]/g, function(c){ + return '%' + c.charCodeAt(0).toString(16); + })); +} +function showBijinClock(){ + let date = new Date; + let image_src = BASE_URL + getTimeString(date) + ".jpg"; + liberator.echomsg(date.toLocaleString(), 0); + openDialog('data:application/vnd.mozilla.xul+xml;charset=utf-8,' + + <><?xml-stylesheet type="text/css" href="chrome://global/skin/"?> + <?xml-stylesheet type="text/css" href="chrome://browser/skin/browser.css"?> + <window title={TITLE} + windowtype="alert:clock" + style="background-color:transparent;" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + <script type="application/javascript"><![CDATA[ + var image; + var interval; + var opacity = 1; + function init(){ + image = document.getElementById('contents'); + var x = screen.availLeft + screen.availWidth - outerWidth; + var y = screen.availTop + screen.availHeight - outerHeight; + window.moveTo(x, y); + image.style.backgroundColor = "-moz-dialog"; + setTimeout(function(){ + interval = window.setInterval(setOpacity, 200); + }, 5 * 1000); + } + function setOpacity(){ + if (opacity < 0.2){ + stopAndClose(); + } + opacity -= 0.1; + image.style.opacity = opacity; + } + function stopAndClose(){ + clearInterval(interval); + window.close(); + } + ]]></script> + <vbox id="contents" flex="1" + style="border:thin solid black;"> + <hbox flex="1"> + <label value={TITLE + "-" + date.toLocaleString()} flex="1"/> + <toolbarbutton label="X" oncommand="stopAndClose()" style="padding:0;margin:0;"/> + </hbox> + <image id="img" src={image_src} onload="init()" onerror="window.close()"/> + </vbox> + </window></>.toXMLString(), + TITLE, + 'chrome,dialog=yes,titlebar=no,popup=yes'); +} +let self = { + start: function(){ + showBijinClock(); + if (interval) this.stop(); + interval = window.setInterval(showBijinClock, 60 * 1000); + return interval; + }, + stop: function(){ + if (interval){ + window.clearInterval(interval); + } + let w = Cc["@mozilla.org/appshell/window-mediator;1"] + .getService(Ci.nsIWindowMediator) + .getMostRecentWindow("alert:clock") + if (w) w.close(); + }, +}; +setTimeout(function(){showBijinClock();}, 0); +setTimeout(function(){self.start();}, 60 * 1000 - Date.now() % (60*1000)); + +return self; +})(); +// vim:sw=2 ts=2 et: |