aboutsummaryrefslogtreecommitdiffstats
path: root/forcefocuscontent.js
blob: 0dbf2ca926ba44f3e14b9fbfe3f70f8c5c404ee5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// PLUGIN_INFO//{{{
var PLUGIN_INFO =
<VimperatorPlugin>
    <name>{NAME}</name>
    <description>force focuscontent</description>
    <author mail="konbu.komuro@gmail.com" homepage="http://d.hatena.ne.jp/hogelog/">hogelog</author>
    <version>0.1.1</version>
    <minVersion>2.0pre</minVersion>
    <maxVersion>2.0pre</maxVersion>
    <updateURL>https://github.com/vimpr/vimperator-plugins/raw/master/forcefocuscontent.js</updateURL>
</VimperatorPlugin>;
//}}}

getBrowser().addEventListener("load", onPageLoad, true);
function onPageLoad(event)
{
    let doc = event.originalTarget;
    if (doc != getBrowser().contentDocument)
        return;
    setTimeout(function () {
        let focused = document.commandDispatcher.focusedElement;
        if (focused)
            focused.blur();
    }, 100);
}
// vim: fdm=marker sw=4 ts=4 et:
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: