peercast-radio_nav-button

https://github.com/ktkr3d/peercast-radio

Peercast の視聴を便利にするFirefox 拡張「Peercast Radio」をアップデートしました。
数年前によくわからなかった、初回インストール後の再起動時にナビゲーションバーにボタンを追加する方法がわかりました。

Peercast Radio 0.1.12 (直リンク)

https://github.com/ktkr3d/peercast-radio/raw/master/release/peercast_radio_0.1.12_20140621.xpi

初回インストール後の再起動時にナビゲーションバーにボタンを追加する方法

ナビゲーションバーにボタンを追加するスクリプトを作って、overlay.xul から呼び出します。

./chrome/content/overlay.js
/**
* Installs the toolbar button with the given ID into the given
* toolbar, if it is not already present in the document.
*
* @param {string} toolbarId The ID of the toolbar to install to.
* @param {string} id The ID of the button to install.
* @param {string} afterId The ID of the element to insert after. @optional
*/
function installButton(toolbarId, id, afterId) {
if (!document.getElementById(id)) {
var toolbar = document.getElementById(toolbarId);

// If no afterId is given, then append the item to the toolbar
var before = null;
if (afterId) {
let elem = document.getElementById(afterId);
if (elem && elem.parentNode == toolbar)
before = elem.nextElementSibling;
}

toolbar.insertItem(id, before);
toolbar.setAttribute("currentset", toolbar.currentSet);
document.persist(toolbar.id, "currentset");

if (toolbarId == "addon-bar")
toolbar.collapsed = false;
}
}

if (Application.prefs.getValue("extensions.peercast-radio.first-kick", false)) {
installButton("nav-bar", "peercast-radio-toolbarbutton");
// The "addon-bar" is available since Firefox 4
// installButton("addon-bar", "my-extension-addon-bar-button");
}
./chrome/content/overlay.xul
...
<script type="text/javascript; version=1.8" src="overlay.js" charset="utf-8" />
...