Jetpack Gallery
Jetpacks
Contributors
About
Register
Log In
View Source Code for “
JetWave
”
/* JetWave 0.3 * See http://go.bobchao.net/jetwave for more information. */ /Firefox[\/\s](\d+\.\d+)/.test(jetpack.tabs.focused.contentWindow.navigator.userAgent); if (RegExp.$1==3.6) set = {checking: {enable: true, minutes: 3}, enable_notify: true, reusetab: true}; //Temporarily workaround for Firefox 3.6 + Jetpack 0.6.x else { var manifest = { settings: [ /*{ name: "checking", type: "group", label: "New waves checking", settings: [ { name: "enable", type: "boolean", label: "Enable", default: true }, { name: "minutes", type: "range", label: "Frequency (minutes)", min: 3, max: 20, default: 3 } ] }, */ { name: "enable_notify", type: "boolean", label: "Show notification message", default: true }, { name: "reusetab", type: "boolean", label: "Reuse exist Wave tab", default: true } ] }; jetpack.future.import("storage.settings"); set = jetpack.storage.settings } function JetWave(statusBody){ var self = this; var jetwave_id; var waveSite = "https://wave.google.com/wave/?nouacheck"; var hCount = $(statusBody).find("#wave-count"); var hEvent = $(statusBody).find("#fire-event"); self.nMsgs = false; self.sliderObj = null; self.count = 0; var update = function(num, showMsg){ console.log("jetwave: update"); hCount.html(num); if (showMsg) { if (set.enable_notify) { jetpack.notifications.show({ title: "You have "+num+ " unread wave" + ((num>1)?"s":""), body: '"'+showMsg['title']+'" from '+showMsg['from'], icon: "https://wave.google.com/favicon.ico" }); } if (self.sliderObj) self.sliderObj.notify(); } }; self.findWaveTab = function(){ for (i=0; i
self.count)?{title: showmsg['title'], from: showmsg['from']}:false)); } self.count = msgCount; console.log("jetwave: checked."); } }); return true; }; hEvent.bind("click", function(){ var tab = self.findWaveTab(); self.check(); if (!tab) jetpack.tabs.open(waveSite).focus(); else tab.focus(); }); self.enable(); } jetpack.statusBar.append({ html: '
0
', width: 50, onReady: function(doc) { oWave = new JetWave(doc); console.log("jetwave: ready"); } }); jetpack.future.import("slideBar"); jetpack.slideBar.append({ icon: "https://wave.google.com/favicon.ico", width: 250, onReady: function(slider){ oWave.sliderObj = slider; }, onClick: function(slider){ $(slider.contentDocument).find("#jetwavehome").html("0.3
"); $(slider.contentDocument).find("#jetwavehome img").click(function(){ jetpack.tabs.open("https://wave.google.com/wave/#minimized:nav,minimized:contact,minimized:search,restored:wave:googlewave.com!w%252BWmH1ZPQcD").focus(); }); if (oWave.nMsgs){ var i; $(slider.contentDocument).find("msgs").html(""); for (i in oWave.nMsgs) { $(slider.contentDocument).find("msgs").append("
0)?' class="unread"':'')+">"+oWave.nMsgs[i]["9"]["1"]+"
"+oWave.nMsgs[i]["7"]+"
"+oWave.nMsgs[i]["10"][0]["1"]+"
"); } $(slider.contentDocument).find("msg").css("cursor","pointer").click(function(){ var url = "https://wave.google.com/wave/#minimized:nav,minimized:contact,minimized:search,restored:wave:"+encodeURIComponent(encodeURIComponent($(this).attr('title'))); var tab = oWave.findWaveTab(); if (!tab || !set.reusetab) jetpack.tabs.open(url).focus(); else { tab.contentWindow.location.href = url; tab.focus(); } }); } else { console.log("jetwave: sidebar click! but no msgs"); } }, html: "body{margin:0;padding:0;padding-top:45px;background:url(https://wave.google.com/wave/static/images/logo_preview.png) top left no-repeat white;font-size: 11px;border-right:1px solid lightgray;}msgs{display:block;}msg{display:block;border-bottom:solid lightgray 1px;position:relative;padding:4px 4px;min-height:3em;}msg:hover{background-color:lightgreen;}msg subject{display:block;margin-right:10px;font-size:12px;}msg subject.unread{font-weight:bolder;}msg unread-count{display:block;position:absolute;top:2px;right:0;background-color:darkgreen;color:white;font-size:11px;padding:0 5px;-moz-border-radius:10px;}msg preview{color:gray;}container{position:absolute;top:50px;bottom:0;overflow:auto;border:1px solid lightgray;}#jetwavehome{display:block;position:absolute;top:5px;right:5px;}" + "
" + "
" });