Add context menu to play linked video pages
authorChristian Weiske <cweiske@cweiske.de>
Tue, 11 Aug 2015 18:14:21 +0000 (20:14 +0200)
committerChristian Weiske <cweiske@cweiske.de>
Tue, 11 Aug 2015 18:14:30 +0000 (20:14 +0200)
.gitignore
README.rst
index.js

index 92e016c39a61fe372262c38d237bdcbd21bdadb7..31c4aa21007efb33cc40eb30387eeb6be5222029 100644 (file)
@@ -1,3 +1,4 @@
 *.html
 *.xpi
 /dist/
+/install.rdf
index 1a6c3e619f892c2e3fbf11d1e3cda107ddb5dd15..e69953d216230a960a0a3b4e0b99932d4f7e5eac 100644 (file)
@@ -9,6 +9,10 @@ receiver.
 
 Works fine with a Dreambox `DM7080 HD`__.
 
+You can also right-click a link to a video page and select
+"Play linked video on Dreambox".
+That way you don't even need to open video detail pages.
+
 __ http://www.dream-multimedia-tv.de/products
 __ http://www.dream-multimedia-tv.de/dm7080-hd
 
index 45e7045213010a11987a7d7f9d990257ec3c515e..de9629905e6e49f0e3cb6073a2bf48c1be3c3a31 100644 (file)
--- a/index.js
+++ b/index.js
@@ -13,18 +13,36 @@ function reloadPrefs()
     dreamboxHost  = prefs.dreamboxHost;
 }
 
+//toolbar button
 var button = buttons.ActionButton({
   id: "dreambox-play-link",
   label: "Play video on Dreambox",
   icon: "./play-32.png",
-  onClick: handleClickPlay
+  onClick: playCurrentTab
+});
+//context menu for links
+var contextMenu = require("sdk/context-menu");
+var menuItem = contextMenu.Item({
+    label:   'Play linked video on Dreambox',
+    context: contextMenu.SelectorContext('a[href]'),
+    contentScript: 'self.on("click", function(node) {' +
+                 '    self.postMessage(node.href);' +
+                 '});',
+    accesskey: 'x',
+    onMessage: function (linkUrl) {
+        playPageUrl(linkUrl);
+    }
 });
 
-function handleClickPlay(state)
+function playCurrentTab(state)
 {    
     console.log('active tab', tabs.activeTab.url);
     var pageUrl = tabs.activeTab.url;
+    playPageUrl(pageUrl);
+}
 
+function playPageUrl(pageUrl)
+{
     var child_process = require("sdk/system/child_process");
     var ytdl = child_process.spawn(youtubedlPath, ['--get-url', pageUrl]);