![](https://www.camp-firefox.de/images/avatars/0e/4202-0e2b7575affe8ec504c0fc50b91d5e908394447c.jpg)
DownloadStatusModoki.uc.js umbasteln
-
Boersenfeger -
16. Januar 2020 um 15:55 -
Erledigt
-
-
Nachdem sich bislang noch niemand mit einem Lösungsvorschlag "heraus getraut" hat, gehe ich davon aus, das dies nicht umsetzbar ist?!
Ich habe nun noch eine weitergehende Bitte zum Script....
Kann man eine Schließung des Fensters einbauen?
Will sagen, wenn der Download beendet ist, soll sich die Leiste, das Fenster selbstständig wieder schließen.
-
Nachdem sich bislang noch niemand mit einem Lösungsvorschlag "heraus getraut" hat, gehe ich davon aus, das dies nicht umsetzbar ist?!
Ich habe nun noch eine weitergehende Bitte zum Script....
Kann man eine Schließung des Fensters einbauen?
Will sagen, wenn der Download beendet ist, soll sich die Leiste, das Fenster selbstständig wieder schließen.
Warte doch erst mal weiter ab. Du weißt doch, im Grunde sind nur Sören und aborix in der Lage, die dir deinen Wunsch erfüllen können.
-
Ich warte ja .... habe halt meine Frage noch weiter aufgebohrt...
Im übrigen gibts hier auch noch den Ein oder Anderen, der Hin und Wieder auch bei Scripts Lösungswege aufzeigt....
-
Ich scheide aus. Ab und zu schaue ich zwar mal, was der Grund sein und wie man es beheben kann, wenn ein Script einen Fehler wirft, aber darüber hinaus interessiert mich diese Form der Anpassung nicht. Wie man ein bestehendes Script funktional erweitert, ist ein Bereich, aus dem ich mich darum immer komplett herausgehalten habe. Das heißt auch, dass selbst wenn ich es mal wollte, so viel Zeit für Recherche investieren müsste, dass es bereits daran scheitert, weil ich nur ein begrenztes Zeit-Kontingent für Firefox-Support habe. JavaScript zu können ist das eine, aber solche Scripts sind dann doch nochmal was anderes. Wer sich damit aktiver befasst, ist klar im Vorteil. Damit bleibt wohl nur noch einer übrig…
-
Schade... aber danke für deine Klarstellung..
-
Damit bleibt wohl nur noch einer übrig…
Allerdings ...
Ansonsten bin ich dafür, dass dann das angepasste Skript ein neues Skript wird und nicht das alte ersetzt. Das Original muss erhalten bleiben.
-
//Wie ich das auf meinem Computer nutze und welche Namen ich verteile, ist wohl meine Sache...
Sollte es hier eine Lösung geben, landet die ja nicht automatisch auf den Seiten, wo bisher die Skripte niedergelegt sind, also z.B. auf GitHub bei Endor und/oder Alice. Das wäre dann ein angepasstes Script, das ich verwende und Interessenten auch benutzen können.
Dieses Vorgehen ist ja mit allen Veränderungen von Scripts oder css.-Dateien so, die hier einer Bearbeitung unterzogen werden.
-
Hallo Boersenfeger.
Zum automatischen schließen der Leiste usw.
Schau mal in Zeile 174
müsste diese sein:
var closeWhenDone = false;
ändere false in true also so:
var closeWhenDone = true;
und Zeile 289 das Selbe:
var closeWhenDone = false;
nach
var closeWhenDone = true;
und teste.
Mfg.
Endor -
Treffer versenkt!
Vielen Dank!
Kannst du auch mein anderes Anliegen lösen?
-
Du meinst, dass das Script deine vorhandene Leiste anstelle
einer eigenen verwendet, nein da kann ich dir leider auch nicht helfen.
Das kann wenn überhaupt möglich nur aborix oder mein Meister
ändern, da wäre ich hoffnungslos überfragt.
Ansonsten wie immer gern geschehen.Mfg.
Endor -
OK, dann hoffe ich mal, das ER es liest und eine Idee hat...
-
Ich bin zwar nicht "ER", aber ich hätte da auch eine Idee...
Bitte folgendes beachten:
-
Alle Elemente der DownloadsStatusModoki-Bar( z.B. Clear-Button) müssen mit einem Doppelklick (nicht wie vorher mit einfachem Klick) aktiviert werden.(behoben: siehe unten)- Im Vollbildmodus(F11) bleibt die DownloadsStatusModoki-Bar weiterhin transparent sichtbar, falls nicht vorher geschlossen.
Ob und wie diese Punkte sich noch ändern lassen, werde ich noch mal überprüfen.
Die bestehende Position des statuspanels (URL-Anzeige) in der 'userChrome.css' muss angepasst werden. z.B. so:
#statuspanel { bottom: 19px !important; left: 490px !important; }
Die Höhe der Statusbar in der 'userChrome.css' muss angepasst werden. z.B. so:
#new-toolbar { height: 38px !important; -moz-window-dragging: no-drag !important; }
ucjsDownloadsStatusModoki.uc.js.css
CSS
Alles anzeigen@charset "utf-8"; /*@version 2019/12/11 fix for 73 Bug 1601094 - Rename remaining .xul files to .xhtml in browser */ /*@version 2019/10/20 12:30*/ #contentAreaDownloadsView[ucjsDownloadsStatusModoki] { -moz-box-orient: horizontal; background-color: rgba(0,0,0,0) !important; display: fixed !important; position: absolute !important; padding: 0 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] > stack:first-child { } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] #downloadsRichListBox { background-color: rgba(0,0,0,0) !important; overflow-y: auto !important; scrollbar-width: thin; border: none !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*:root { --downloads-item-height: 38px; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] richlistitem { min-width:200px !important; max-width:200px !important; font-size: 13px !important; border-width: 0 1px 0 0 !important; border-style: solid !important; border-color: black !important; height: 38px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] richlistitem vbox { } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadTypeIcon { height:16px !important; width: 16px !important; -moz-margin-end: 1px !important; -moz-margin-start: 1px !important; padding-right: 1px !important; padding-left: 1px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadTarget { margin-top:1px !important; padding-bottom:16px !important; max-width: calc(100% - 51px) !important; min-width: calc(100% - 51px) !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .download-state[state="0"] * .downloadTarget, #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .download-state[state="4"] * .downloadTarget { padding-bottom:0px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadTarget:-moz-system-metric(windows-default-theme) { margin-top:2px !important; /*padding-bottom:10px; windows7 ?*/ } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*.downloadProgres { border: none !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*.downloadProgress:not([paused])::-moz-progress-bar { background-color: lime !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadDetails { margin-top:-12px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .download-state:not(:-moz-any([state="-1"], [state="5"], [state="0"], [state="4"], [state="7"])) .downloadDetails { margin-top:-17px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] richlistitem[selected] .downloadDetails { opacity: 1 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadButton { padding: 0 !important; margin: 0 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] button > .button-box { -moz-padding-start: 0px !important; -moz-padding-end: 1px !important; padding-right: 0 !important; padding-left: 0 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] #downloadFilter { width: 150px; }
ucjsDownloadsStatusModoki.uc.js:
JavaScript
Alles anzeigen// ==UserScript== // @name ucjsDownloadsStatusModoki.uc.js // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775 // @description Downloads Status Modoki // @include main // @compatibility Firefox 73+ // @author Alice0775 // @note ucjsDownloadsStatusModoki.uc.js.css をuserChrome.cssに読み込ませる必要あり // @version 2019/12/11 fix for 73 Bug 1601094 - Rename remaining .xul files to .xhtml in browser // @version 2019/10/20 12:30 workaround Bug 1497200: Apply Meta CSP to about:downloads, Bug 1513325 - Remove textbox binding // @version 2019/09/08 19:30 fix scrollbox // @version 2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement // @version 2018/10/27 12:00 fix for 64+ // @version 2018/06/12 21:00 fix for private window mode // @version 2018/06/07 12:00 fix file name for history // @version 2018/02/10 12:00 try catch error when DO_NOT_DELETE_HISTORY = true // @version 2017/12/10 12:00 fix error when DO_NOT_DELETE_HISTORY = true // @version 2017/12/10 12:00 remove workaround Bug 1279329. Disable btn while clear list is doing, close button styling for 57. // @version 2016/06/10 12:00 modify style independent of font-family // @version 2016/06/10 07:00 modify style of close button, fix typo // @version 2016/06/10 00:00 Workaround Bug 1279329. adjust some padding // @version 2015/05/08 00:00 remove padding due to Bug 1160734 // @version 2014/03/31 00:00 fix for browser.download.manager.showWhenStarting // @version 2013/12/22 13:00 chromehidden // @version 2013/12/19 17:10 rename REMEMBERHISTOTY to DO_NOT_DELETE_HISTORY // @version 2013/12/16 23:28 fixed initialize numDls // @version 2013/12/16 23:24 open only download added // @version 2013/12/16 23:10 open only download started // @version 2013/12/16 21:20 modify css Windows7 Aero // @version 2013/12/16 21:00 modify css // @version 2013/12/16 19:30 add autocheck false // @version 2013/12/16 18:31 fix pref name // @version 2013/12/16 18:30 // @note // ==/UserScript== var ucjsDownloadsStatusModoki = { _summary: null, _list: null, get downloadsStatusModokiBar() { delete downloadsStatusModokiBar; return this.downloadsStatusModokiBar = document.getElementById("downloadsStatusModokiBar"); }, get toggleMenuitem() { delete toggleMenuitem; return this.toggleMenuitem = document.getElementById("toggle_downloadsStatusModokiBar"); }, init: function() { if (document.documentElement.getAttribute("chromehidden") !="" ) return; XPCOMUtils.defineLazyModuleGetter(window, "Downloads", "resource://gre/modules/Downloads.jsm"); var style = ` @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #ucjsDownloadsStatusModoki { width: 485px !important; min-width: 485px !important; max-width: 485px !important; max-height: 100px !important; height: 38px !important; background-color: rgba(0,0,0,0) !important; display: fixed !important; position: absolute !important; margin-top: -38px !important; } `.replace(/\s+/g, " "); var sspi = document.createProcessingInstruction( 'xml-stylesheet', 'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"' ); document.insertBefore(sspi, document.documentElement); sspi.getAttribute = function(name) { return document.documentElement.getAttribute(name); }; var toolbar = document.createXULElement("vbox"); toolbar.setAttribute("id", "downloadsStatusModokiBar"); toolbar.setAttribute("collapsed", true); var bottombox = document.getElementById("main-window"); bottombox.appendChild(toolbar); var browser = toolbar.appendChild(document.createXULElement("browser")); browser.setAttribute("disablehistory", true); browser.setAttribute("remote", false); browser.setAttribute("id", "ucjsDownloadsStatusModoki"); browser.addEventListener("load", function(event){ucjsDownloadsStatusModoki.onload(event)}, true); browser.setAttribute("src", "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml?StatusModoki"); var menuitem = document.createXULElement("menuitem"); menuitem.setAttribute("id", "toggle_downloadsStatusModokiBar"); menuitem.setAttribute("type", "checkbox"); menuitem.setAttribute("autocheck", false); menuitem.setAttribute("label", "Downloads Status Modoki Bar"); menuitem.setAttribute("checked", false); menuitem.setAttribute("accesskey", "D"); menuitem.setAttribute("oncommand", "ucjsDownloadsStatusModoki.toggleDownloadsStatusModokiBar()"); var ref = document.getElementById("menu_customizeToolbars"); ref.parentNode.insertBefore(menuitem, ref.previousSibling); // Ensure that the DownloadSummary object will be created asynchronously. if (!this._summary) { Downloads.getSummary(Downloads.ALL).then(summary => { this._summary = summary; return this._summary.addView(this); }).then(null, Cu.reportError); } if (!this._list) { Downloads.getList(Downloads.ALL).then(list => { this._list = list; return this._list.addView(this); }).then(null, Cu.reportError); } window.addEventListener("unload", this, false); }, uninit: function() { window.removeEventListener("unload", this, false); if (this._summary) { this._summary.removeView(this); } if (this._list) { this._list.removeView(this); } }, handleEvent: function(event) { switch (event.type) { case "unload": this.uninit(); break; } }, toggleDownloadsStatusModokiBar: function() { var collapsed = this.downloadsStatusModokiBar.collapsed; this.downloadsStatusModokiBar.collapsed = !collapsed; this.toggleMenuitem.setAttribute("checked", collapsed); }, openDownloadsStatusModoki: function() { this.downloadsStatusModokiBar.collapsed = false; this.toggleMenuitem.setAttribute("checked", true); }, hideDownloadsStatusModoki: function() { this.downloadsStatusModokiBar.collapsed = true; this.toggleMenuitem.setAttribute("checked", false); }, onDownloadAdded: function (aDownload) { Cu.import("resource://gre/modules/Services.jsm"); var showWhenStarting = true; try { showWhenStarting = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.showWhenStarting"); } catch(e) {} this.numDls = 0; if (showWhenStarting) { if (this._list) { this._list.getAll().then(downloads => { for (let download of downloads) { if (!download.stopped) this.numDls++; } if (this.numDls > 0) this.openDownloadsStatusModoki(false); }).then(null, Cu.reportError); } } }, onSummaryChanged: function () { Cu.import("resource://gre/modules/Services.jsm"); if (!this._summary) return; if (this._summary.allHaveStopped || this._summary.progressTotalBytes == 0) { var closeWhenDone = false; try { closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone"); } catch(e) {} if (closeWhenDone) { this.hideDownloadsStatusModoki(); } } }, // chrome://browser/content/downloads/contentAreaDownloadsView.xhtml onload: function(event) { var doc = event.originalTarget; var win = doc.defaultView; doc.documentElement.setAttribute("ucjsDownloadsStatusModoki", "true"); var button = doc.createXULElement("button"); button.setAttribute("label", "Clear"); button.setAttribute("id", "ucjs_clearListButton"); button.setAttribute("accesskey", "C"); var ref = doc.getElementById("downloadCommands"); var vbox = doc.createXULElement("vbox"); var box = vbox.appendChild(doc.createXULElement("hbox")); box.appendChild(button); box.appendChild(doc.createXULElement("spacer")).setAttribute("flex", 1); var textbox = doc.createElementNS("http://www.w3.org/1999/xhtml", "input"); textbox.setAttribute("id", "downloadFilter"); textbox.setAttribute("clickSelectsAll", true); textbox.setAttribute("type", "search"); textbox.setAttribute("placeholder", "Search..."); box.appendChild(textbox); var closebtn = doc.createXULElement("toolbarbutton"); closebtn.setAttribute("id", "ucjsDownloadsStatusModoki-closebutton"); closebtn.setAttribute("class", "close-icon"); closebtn.setAttribute("tooltiptext", "Close this bar"); box.appendChild(closebtn); ref.parentNode.insertBefore(vbox, ref); doc.getElementById("ucjs_clearListButton").addEventListener("command", function(event) { win.ucjsDownloadsStatusModoki_clearDownloads(); }); doc.getElementById("downloadFilter") .addEventListener("input", function(event) { win.ucjsDownloadsStatusModoki_doSearch(event.target.value); }); doc.getElementById("ucjsDownloadsStatusModoki-closebutton") .addEventListener("command", function(event) { win.ucjsDownloadsStatusModoki_doClose(); }); doc.addEventListener('dblclick', function(event) { if (event.button != 0) return; event.preventDefault(); } ); /* // xxx Bug 1279329 "Copy Download Link" of context menu in Library is grayed out var listBox = doc.getElementById("downloadsRichListBox"); var placesView = listBox._placesView; if (placesView) { var place = placesView.place; placesView.place= null; placesView.place = place; } */ win.ucjsDownloadsStatusModoki_clearDownloads = function ucjs_clearDownloads() { var DO_NOT_DELETE_HISTORY = true; /* custmizable true or false */ var richListBox = doc.getElementById("downloadsRichListBox"); Cu.import("resource://gre/modules/Services.jsm"); var places = []; function addPlace(aURI, aTitle, aVisitDate) { places.push({ uri: aURI, title: aTitle, visits: [{ visitDate: (aVisitDate || Date.now()) * 1000, transitionType: Ci.nsINavHistoryService.TRANSITION_LINK }] }); } function moveDownloads2History() { if (DO_NOT_DELETE_HISTORY && !PrivateBrowsingUtils.isWindowPrivate(window)) { try { for (let element of richListBox.childNodes) { let download = element._shell.download; let aURI = makeURI(download.source.url); // let aTitle = document.getAnonymousElementByAttribute(element, "class", "downloadTarget").value let aTitle = download.target.path; aTitle = aTitle.match( /[^\\]+$/i )[0]; aTitle = aTitle.match( /[^/]+$/i )[0]; let aVisitDate = download.endTime || download.startTime; addPlace(aURI, aTitle, aVisitDate) } } catch(ex) {} } // Clear List richListBox._placesView.doCommand('downloadsCmd_clearDownloads'); if (DO_NOT_DELETE_HISTORY && !PrivateBrowsingUtils.isWindowPrivate(window)) { try { if (places.length > 0) { var asyncHistory = Components.classes["@mozilla.org/browser/history;1"] .getService(Components.interfaces.mozIAsyncHistory); asyncHistory.updatePlaces(places); } } catch(ex) {} } } var btn = doc.getElementById("ucjs_clearListButton"); btn.setAttribute("disabled", true); moveDownloads2History(); btn.removeAttribute("disabled"); // close toolbar var closeWhenDone = false; try { closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone"); } catch(e) {} if (closeWhenDone) { top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki(); } }; win.ucjsDownloadsStatusModoki_doSearch = function ucjs_doSearch(filterString) { var richListBox = doc.getElementById("downloadsRichListBox"); richListBox._placesView.searchTerm = filterString; }; win.ucjsDownloadsStatusModoki_doClose = function ucjs_doClose() { top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki(); }; } } ucjsDownloadsStatusModoki.init();
StatusleisteAborix.uc.js:
JavaScript
Alles anzeigen/* Statusleiste für Firefox */ // https://www.camp-firefox.de/forum/viewtopic.php?p=1052187&sid=d4e33b574226439c26dfb45629b71369#p1052187 // entwickelt von aborix (function() { if (location != AppConstants.BROWSER_CHROME_URL) return; var tb = document.createXULElement('toolbar'); tb.id = 'new-toolbar'; tb.setAttribute('customizable', true); tb.setAttribute('mode', 'icons'); var vbox = document.createXULElement('vbox'); document.getElementById('navigator-toolbox').parentNode.parentNode.insertBefore( vbox, document.getElementById('browser-bottombox')); vbox.style.backgroundColor = '#ffe4c4'; vbox.appendChild(tb); CustomizableUI.registerArea('new-toolbar', {legacy: true}); CustomizableUI.registerToolbarNode(tb); tb.addEventListener('dblclick', function(event) { if (event.button != 0) return; event.preventDefault(); } ); })(); setTimeout(function() { if (window.__SSi == 'window0') return; let tabbar = document.getElementById('TabsToolbar'); let tab = gBrowser.selectedTab; tabbar.style.display = '-moz-box'; duplicateTabIn(tab, 'tab'); gBrowser.moveTabTo(gBrowser.selectedTab, tab._tPos); gBrowser.removeTab(tab); tabbar.style.display = ''; }, 1500);
-
Doppelklick/Klick-Problem lässt sich einfach lösen:
In der 'userChrome.css' -moz-window-dragging: no-drag hinzufügen (siehe oben)
#new-toolbar { height: 38px !important; -moz-window-dragging: no-drag !important; }
Danach sollte alles normal mit einem Klick bedienbar sein...
-
- Hilfreichste Antwort
Neues Update:
- Höhe der Downloadbar/Statusbar auf 28px geschrumpft ( noch schmaler wäre dann unleserlich )
- 'eingedeutscht'
- optische Anpassungen
- unnötigen Code entfernt
In die 'userChrome.css':
CSS#new-toolbar { height: 28px !important; direction: rtl !important; -moz-window-dragging: no-drag !important; } #bottom-toolbar-vbox { border-top: 1px solid black !important; background-image: linear-gradient( rgba(192,192,192,1), rgba(255,255,255,1) ), none !important; }
'StatusleisteAborix.uc.js':
CSS
Alles anzeigen/* Statusleiste für Firefox */ // https://www.camp-firefox.de/forum/viewtopic.php?p=1052187&sid=d4e33b574226439c26dfb45629b71369#p1052187 // entwickelt von aborix (function() { if (location != AppConstants.BROWSER_CHROME_URL) return; var tb = document.createXULElement('toolbar'); tb.id = 'new-toolbar'; tb.setAttribute('customizable', true); tb.setAttribute('mode', 'icons'); var vbox = document.createXULElement('vbox'); vbox.id = 'bottom-toolbar-vbox'; document.getElementById('navigator-toolbox').parentNode.parentNode.insertBefore( vbox, document.getElementById('browser-bottombox')); vbox.style.backgroundColor = '#ffe4c4'; vbox.appendChild(tb); CustomizableUI.registerArea('new-toolbar', {legacy: true}); CustomizableUI.registerToolbarNode(tb); })(); setTimeout(function() { if (window.__SSi == 'window0') return; let tabbar = document.getElementById('TabsToolbar'); let tab = gBrowser.selectedTab; tabbar.style.display = '-moz-box'; duplicateTabIn(tab, 'tab'); gBrowser.moveTabTo(gBrowser.selectedTab, tab._tPos); gBrowser.removeTab(tab); tabbar.style.display = ''; }, 1500);
'DownloadsStatusModoki.css':
CSS
Alles anzeigen@charset "utf-8"; /*@version 2019/12/11 fix for 73 Bug 1601094 - Rename remaining .xul files to .xhtml in browser */ /*@version 2019/10/20 12:30*/ #contentAreaDownloadsView[ucjsDownloadsStatusModoki] { -moz-box-orient: horizontal; background-color: rgba(0,0,0,0) !important; display: fixed !important; position: absolute !important; padding: 0 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] > stack:first-child { } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] #downloadsRichListBox { background-color: rgba(0,0,0,0) !important; overflow-y: auto !important; scrollbar-width: thin; border: none !important; min-height: 32px !important; max-height: 32px !important; height: 32px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*:root { --downloads-item-height: 28px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] richlistitem { min-width:200px !important; max-width:200px !important; font-size: 10px !important; margin-top: -1px !important; min-height: 28px !important; max-height: 28px !important; height: 28px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] richlistitem vbox { height: 16px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadTypeIcon { height:16px !important; width: 16px !important; -moz-margin-end: 1px !important; -moz-margin-start: 1px !important; padding-right: 1px !important; padding-left: 1px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadTarget { margin-top:1px !important; padding-bottom:16px !important; max-width: calc(100% - 51px) !important; min-width: calc(100% - 51px) !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .download-state[state="0"] * .downloadTarget, #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .download-state[state="4"] * .downloadTarget { padding-bottom:0px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] #downloadsListEmptyDescription { color: red !important; margin-top: 6px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadTarget:-moz-system-metric(windows-default-theme) { margin-top:2px !important; /*padding-bottom:10px; windows7 ?*/ } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*.downloadProgres { border: none !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*.downloadProgress:not([paused])::-moz-progress-bar { background-color: lime !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadDetails { margin-top:-12px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .download-state:not(:-moz-any([state="-1"], [state="5"], [state="0"], [state="4"], [state="7"])) .downloadDetails { margin-top:-17px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] richlistitem[selected] .downloadDetails { opacity: 1 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadButton { display:none !important; padding: 0 !important; margin: 0 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] button > .button-box { -moz-padding-start: 0px !important; -moz-padding-end: 1px !important; padding-right: 0 !important; padding-left: 0 !important; margin-top: -2px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] #downloadFilter { width: 150px; min-height: 23px !important; max-height: 23px !important; height: 23px !important; } #ucjs_clearListButton>#label
'DownloadsStatusModoki.uc.js':
JavaScript
Alles anzeigen// ==UserScript== // @name ucjsDownloadsStatusModoki.uc.js // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775 // @description Downloads Status Modoki // @include main // @compatibility Firefox 73+ // @author Alice0775 // @note ucjsDownloadsStatusModoki.uc.js.css をuserChrome.cssに読み込ませる必要あり // @version 2019/12/11 fix for 73 Bug 1601094 - Rename remaining .xul files to .xhtml in browser // @version 2019/10/20 12:30 workaround Bug 1497200: Apply Meta CSP to about:downloads, Bug 1513325 - Remove textbox binding // @version 2019/09/08 19:30 fix scrollbox // @version 2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement // @version 2018/10/27 12:00 fix for 64+ // @version 2018/06/12 21:00 fix for private window mode // @version 2018/06/07 12:00 fix file name for history // @version 2018/02/10 12:00 try catch error when DO_NOT_DELETE_HISTORY = true // @version 2017/12/10 12:00 fix error when DO_NOT_DELETE_HISTORY = true // @version 2017/12/10 12:00 remove workaround Bug 1279329. Disable btn while clear list is doing, close button styling for 57. // @version 2016/06/10 12:00 modify style independent of font-family // @version 2016/06/10 07:00 modify style of close button, fix typo // @version 2016/06/10 00:00 Workaround Bug 1279329. adjust some padding // @version 2015/05/08 00:00 remove padding due to Bug 1160734 // @version 2014/03/31 00:00 fix for browser.download.manager.showWhenStarting // @version 2013/12/22 13:00 chromehidden // @version 2013/12/19 17:10 rename REMEMBERHISTOTY to DO_NOT_DELETE_HISTORY // @version 2013/12/16 23:28 fixed initialize numDls // @version 2013/12/16 23:24 open only download added // @version 2013/12/16 23:10 open only download started // @version 2013/12/16 21:20 modify css Windows7 Aero // @version 2013/12/16 21:00 modify css // @version 2013/12/16 19:30 add autocheck false // @version 2013/12/16 18:31 fix pref name // @version 2013/12/16 18:30 // @note // ==/UserScript== var ucjsDownloadsStatusModoki = { _summary: null, _list: null, get downloadsStatusModokiBar() { delete downloadsStatusModokiBar; return this.downloadsStatusModokiBar = document.getElementById("downloadsStatusModokiBar"); }, get toggleMenuitem() { delete toggleMenuitem; return this.toggleMenuitem = document.getElementById("toggle_downloadsStatusModokiBar"); }, init: function() { if (document.documentElement.getAttribute("chromehidden") !="" ) return; XPCOMUtils.defineLazyModuleGetter(window, "Downloads", "resource://gre/modules/Downloads.jsm"); var style = ` @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #ucjsDownloadsStatusModoki { width: 485px !important; min-width: 485px !important; max-width: 485px !important; max-height: 100px !important; height: 28px !important; background-color: rgba(0,0,0,0) !important; display: fixed !important; position: absolute !important; margin-top: -28px !important; } `.replace(/\s+/g, " "); var sspi = document.createProcessingInstruction( 'xml-stylesheet', 'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"' ); document.insertBefore(sspi, document.documentElement); sspi.getAttribute = function(name) { return document.documentElement.getAttribute(name); }; var toolbar = document.createXULElement("vbox"); toolbar.setAttribute("id", "downloadsStatusModokiBar"); toolbar.setAttribute("collapsed", true); var bottombox = document.getElementById("main-window"); bottombox.appendChild(toolbar); var browser = toolbar.appendChild(document.createXULElement("browser")); browser.setAttribute("disablehistory", true); browser.setAttribute("remote", false); browser.setAttribute("id", "ucjsDownloadsStatusModoki"); browser.addEventListener("load", function(event){ucjsDownloadsStatusModoki.onload(event)}, true); browser.setAttribute("src", "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml?StatusModoki"); var menuitem = document.createXULElement("menuitem"); menuitem.setAttribute("id", "toggle_downloadsStatusModokiBar"); menuitem.setAttribute("type", "checkbox"); menuitem.setAttribute("autocheck", false); menuitem.setAttribute("label", "Downloads Status Modoki Bar"); menuitem.setAttribute("checked", false); menuitem.setAttribute("accesskey", "D"); menuitem.setAttribute("oncommand", "ucjsDownloadsStatusModoki.toggleDownloadsStatusModokiBar()"); var ref = document.getElementById("menu_customizeToolbars"); ref.parentNode.insertBefore(menuitem, ref.previousSibling); // Ensure that the DownloadSummary object will be created asynchronously. if (!this._summary) { Downloads.getSummary(Downloads.ALL).then(summary => { this._summary = summary; return this._summary.addView(this); }).then(null, Cu.reportError); } if (!this._list) { Downloads.getList(Downloads.ALL).then(list => { this._list = list; return this._list.addView(this); }).then(null, Cu.reportError); } window.addEventListener("unload", this, false); }, uninit: function() { window.removeEventListener("unload", this, false); if (this._summary) { this._summary.removeView(this); } if (this._list) { this._list.removeView(this); } }, handleEvent: function(event) { switch (event.type) { case "unload": this.uninit(); break; } }, toggleDownloadsStatusModokiBar: function() { var collapsed = this.downloadsStatusModokiBar.collapsed; this.downloadsStatusModokiBar.collapsed = !collapsed; this.toggleMenuitem.setAttribute("checked", collapsed); }, openDownloadsStatusModoki: function() { this.downloadsStatusModokiBar.collapsed = false; this.toggleMenuitem.setAttribute("checked", true); }, hideDownloadsStatusModoki: function() { this.downloadsStatusModokiBar.collapsed = true; this.toggleMenuitem.setAttribute("checked", false); }, onDownloadAdded: function (aDownload) { Cu.import("resource://gre/modules/Services.jsm"); var showWhenStarting = true; try { showWhenStarting = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.showWhenStarting"); } catch(e) {} this.numDls = 0; if (showWhenStarting) { if (this._list) { this._list.getAll().then(downloads => { for (let download of downloads) { if (!download.stopped) this.numDls++; } if (this.numDls > 0) this.openDownloadsStatusModoki(false); }).then(null, Cu.reportError); } } }, onSummaryChanged: function () { Cu.import("resource://gre/modules/Services.jsm"); if (!this._summary) return; if (this._summary.allHaveStopped || this._summary.progressTotalBytes == 0) { var closeWhenDone = false; try { closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone"); } catch(e) {} if (closeWhenDone) { this.hideDownloadsStatusModoki(); } } }, // chrome://browser/content/downloads/contentAreaDownloadsView.xhtml onload: function(event) { var doc = event.originalTarget; var win = doc.defaultView; doc.documentElement.setAttribute("ucjsDownloadsStatusModoki", "true"); var button = doc.createXULElement("button"); button.setAttribute("label", "Löschen"); button.setAttribute("id", "ucjs_clearListButton"); button.setAttribute("accesskey", "L"); var ref = doc.getElementById("downloadCommands"); var vbox = doc.createXULElement("vbox"); var box = vbox.appendChild(doc.createXULElement("hbox")); box.appendChild(button); box.appendChild(doc.createXULElement("spacer")).setAttribute("flex", 1); var textbox = doc.createElementNS("http://www.w3.org/1999/xhtml", "input"); textbox.setAttribute("id", "downloadFilter"); textbox.setAttribute("clickSelectsAll", true); textbox.setAttribute("type", "search"); textbox.setAttribute("placeholder", "Suche..."); box.appendChild(textbox); var closebtn = doc.createXULElement("toolbarbutton"); closebtn.setAttribute("id", "ucjsDownloadsStatusModoki-closebutton"); closebtn.setAttribute("class", "close-icon"); closebtn.setAttribute("tooltiptext", "Close this bar"); box.appendChild(closebtn); ref.parentNode.insertBefore(vbox, ref); doc.getElementById("ucjs_clearListButton").addEventListener("command", function(event) { win.ucjsDownloadsStatusModoki_clearDownloads(); }); doc.getElementById("downloadFilter") .addEventListener("input", function(event) { win.ucjsDownloadsStatusModoki_doSearch(event.target.value); }); doc.getElementById("ucjsDownloadsStatusModoki-closebutton") .addEventListener("command", function(event) { win.ucjsDownloadsStatusModoki_doClose(); }); /* // xxx Bug 1279329 "Copy Download Link" of context menu in Library is grayed out var listBox = doc.getElementById("downloadsRichListBox"); var placesView = listBox._placesView; if (placesView) { var place = placesView.place; placesView.place= null; placesView.place = place; } */ win.ucjsDownloadsStatusModoki_clearDownloads = function ucjs_clearDownloads() { var DO_NOT_DELETE_HISTORY = true; /* custmizable true or false */ var richListBox = doc.getElementById("downloadsRichListBox"); Cu.import("resource://gre/modules/Services.jsm"); var places = []; function addPlace(aURI, aTitle, aVisitDate) { places.push({ uri: aURI, title: aTitle, visits: [{ visitDate: (aVisitDate || Date.now()) * 1000, transitionType: Ci.nsINavHistoryService.TRANSITION_LINK }] }); } function moveDownloads2History() { if (DO_NOT_DELETE_HISTORY && !PrivateBrowsingUtils.isWindowPrivate(window)) { try { for (let element of richListBox.childNodes) { let download = element._shell.download; let aURI = makeURI(download.source.url); // let aTitle = document.getAnonymousElementByAttribute(element, "class", "downloadTarget").value let aTitle = download.target.path; aTitle = aTitle.match( /[^\\]+$/i )[0]; aTitle = aTitle.match( /[^/]+$/i )[0]; let aVisitDate = download.endTime || download.startTime; addPlace(aURI, aTitle, aVisitDate) } } catch(ex) {} } // Clear List richListBox._placesView.doCommand('downloadsCmd_clearDownloads'); if (DO_NOT_DELETE_HISTORY && !PrivateBrowsingUtils.isWindowPrivate(window)) { try { if (places.length > 0) { var asyncHistory = Components.classes["@mozilla.org/browser/history;1"] .getService(Components.interfaces.mozIAsyncHistory); asyncHistory.updatePlaces(places); } } catch(ex) {} } } var btn = doc.getElementById("ucjs_clearListButton"); btn.setAttribute("disabled", true); moveDownloads2History(); btn.removeAttribute("disabled"); // close toolbar var closeWhenDone = false; try { closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone"); } catch(e) {} if (closeWhenDone) { top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki(); } }; win.ucjsDownloadsStatusModoki_doSearch = function ucjs_doSearch(filterString) { var richListBox = doc.getElementById("downloadsRichListBox"); richListBox._placesView.searchTerm = filterString; }; win.ucjsDownloadsStatusModoki_doClose = function ucjs_doClose() { top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki(); }; } } ucjsDownloadsStatusModoki.init();
-
Genial...
Vielen Dank!
Ich habe nur noch ein Problem.. Der Downloadbereich sollte sich nach Herunterladen schließen, das tut es nicht.. Edit: auch nicht bei Klick auf das Schließen-Kreuz... oder Betätigen des LÖSCHEN-Buttons... der Eintrag wird dann auch nicht gelöscht.
Den Eintrag für die Gestaltung der Toolbar in der userChrome.css habe ich wieder entfernt, da es mir die Toolbar farblich verbaut...
Hier ein Screenshot, wie es jetzt aussieht.
Edit 2: Sollte sich das nicht beheben lassen; vielleicht könnte man das ganze ja auch an den rechten Rand verfrachten, dann stört mich das Ganze nicht so, da die LINK-Anzeige ja links erfolgt..
-
Für das Schließen nach dem Download musst du die selben Änderungen wieder vornehmen, die Endor weiter oben (#29) schon gepostet hat. Das hatte ich bei der angepassten CSS-Datei nicht mit eingepflegt.
Das Löschen und schließen funktioniert hier einwandfrei. Hast du diese Zeile
#new-toolbar { height: 28px !important; -moz-window-dragging: no-drag !important; }
in der 'userChrome.css'?
Falls du den Schließen-Button und den Löschen-Button nur per Doppelklick auslösen kannst, dann ist genau das der Grund.
Nach rechts schieben sollte auch gehen. Werde ich mir mal anschauen...
Deine Mini-Scrollbar (die rote) sieht ja lustig aus
, wie hast du die denn angepasst?
-
Vielen Dank!
Habe die letzte Zeile eingefügt und teste es beim nächsten Download..
Die Miniscrollbar ergibt sich von selbst. Ich habe da nichts extra eingefügt.. allerdings werden via Code alle Scrollbars bei mir so angezeigt.
-
Ok, alles klar...
In der jetzigen Version sind noch etliche Fehler drin ( z.B. kein Abbruch möglich usw.), da ich bestimmte Dinge beim Testen auskommentiert bzw. gelöscht habe.
Warte also mit dem Testen, ich werde nachher noch ein Update einstellen ( Download Leiste rechtsbündig, kein Suchfeld mehr, Fehlerbehebung usw ).
-
Hier das Update:
Wichtig: Ist nur mit FF74(Nightly) getestet worden.FF73 sollte auch funktionieren.
Damit es auch in FF72 funktioniert bitte diese Anpassung durchführen (siehe Link): #59
- Downloadleiste jetzt rechtsbündig
- Suchfeld entfernt
- Mehrere Fehler behoben und Anpassungen an die Höhe der Statusleiste vorgenommen
Rechtsbündig ist auf jeden Fall sinniger, da man die URL-Vorschau nicht verschieben muss und die eventuell vorhandenen Buttons/Icons entweder per Separatoren nach links versetzt oder einfach überschreiben lässt, falls man die Downloadbar eh nur temporär braucht.
Das automatische Schließen der Downloadleiste kann man mit folgender Zeile in der 'user.js' einstellen:
user_pref("userChrome.downloadsStatusModoki.closeWhenDone", true);
Das Statusleisten-Skript von Aborix habe ich um Style-Informationen für die Leiste erweitert. Somit ist sichergestellt, dass notwendige Einstellungen gesetzt sind. Daher muss in der 'userChrome.css' auch nichts mehr eingestellt werden. Natürlich kann man die Werte immer noch überschreiben (z.B. den Hintergrund). Die Höhe(28px) und die 'no-drag' Anweisung dürfen allerdings nicht überschrieben werden!
Edit: Das Setzten des Hintergrundes für die DownloadStatusBar befindet sich in 'DownloadsStatusModoki.css' Zeile #17
StatusleisteAborixDSModoki.uc.js:
JavaScript
Alles anzeigen/* Statusleiste für Firefox */ // https://www.camp-firefox.de/forum/viewtopic.php?p=1052187&sid=d4e33b574226439c26dfb45629b71369#p1052187 // entwickelt von aborix // Anpassung für DownloadStatusModoki: https://www.camp-firefox.de/forum/thema/129854-downloadstatusmodoki-uc-js-umbasteln/?postID=1136067#post1136067 (function() { if (location != AppConstants.BROWSER_CHROME_URL) return; var css =` #new-toolbar { height: 28px; direction: rtl; -moz-window-dragging: no-drag; border-top: 1px solid black !important; background-image: linear-gradient( rgba(192,192,192,1), rgba(255,255,255,1) ), none; } `; var sss = Cc['@mozilla.org/content/style-sheet-service;1'].getService(Ci.nsIStyleSheetService); var uri = makeURI('data:text/css;charset=UTF=8,' + encodeURIComponent(css)); sss.loadAndRegisterSheet(uri, sss.AUTHOR_SHEET); var tb = document.createXULElement('toolbar'); tb.id = 'new-toolbar'; tb.setAttribute('customizable', true); tb.setAttribute('mode', 'icons'); var vbox = document.createXULElement('vbox'); document.getElementById('navigator-toolbox').parentNode.parentNode.insertBefore( vbox, document.getElementById('browser-bottombox')); vbox.style.backgroundColor = '#ffe4c4'; vbox.appendChild(tb); CustomizableUI.registerArea('new-toolbar', {legacy: true}); CustomizableUI.registerToolbarNode(tb); })(); setTimeout(function() { if (window.__SSi == 'window0') return; let tabbar = document.getElementById('TabsToolbar'); let tab = gBrowser.selectedTab; tabbar.style.display = '-moz-box'; duplicateTabIn(tab, 'tab'); gBrowser.moveTabTo(gBrowser.selectedTab, tab._tPos); gBrowser.removeTab(tab); tabbar.style.display = ''; }, 1500);
DownloadsStatusModoki.uc.js:
JavaScript
Alles anzeigen// ==UserScript== // @name ucjsDownloadsStatusModoki.uc.js // @namespace http://space.geocities.yahoo.co.jp/gl/alice0775 // @description Downloads Status Modoki // @include main // @compatibility Firefox 73+ // @author Alice0775 // @note ucjsDownloadsStatusModoki.uc.js.css をuserChrome.cssに読み込ませる必要あり // @version 2019/12/11 fix for 73 Bug 1601094 - Rename remaining .xul files to .xhtml in browser // @version 2019/10/20 12:30 workaround Bug 1497200: Apply Meta CSP to about:downloads, Bug 1513325 - Remove textbox binding // @version 2019/09/08 19:30 fix scrollbox // @version 2019/05/21 08:30 fix 69.0a1 Bug 1551320 - Replace all createElement calls in XUL documents with createXULElement // @version 2018/10/27 12:00 fix for 64+ // @version 2018/06/12 21:00 fix for private window mode // @version 2018/06/07 12:00 fix file name for history // @version 2018/02/10 12:00 try catch error when DO_NOT_DELETE_HISTORY = true // @version 2017/12/10 12:00 fix error when DO_NOT_DELETE_HISTORY = true // @version 2017/12/10 12:00 remove workaround Bug 1279329. Disable btn while clear list is doing, close button styling for 57. // @version 2016/06/10 12:00 modify style independent of font-family // @version 2016/06/10 07:00 modify style of close button, fix typo // @version 2016/06/10 00:00 Workaround Bug 1279329. adjust some padding // @version 2015/05/08 00:00 remove padding due to Bug 1160734 // @version 2014/03/31 00:00 fix for browser.download.manager.showWhenStarting // @version 2013/12/22 13:00 chromehidden // @version 2013/12/19 17:10 rename REMEMBERHISTOTY to DO_NOT_DELETE_HISTORY // @version 2013/12/16 23:28 fixed initialize numDls // @version 2013/12/16 23:24 open only download added // @version 2013/12/16 23:10 open only download started // @version 2013/12/16 21:20 modify css Windows7 Aero // @version 2013/12/16 21:00 modify css // @version 2013/12/16 19:30 add autocheck false // @version 2013/12/16 18:31 fix pref name // @version 2013/12/16 18:30 // @note // ==/UserScript== var ucjsDownloadsStatusModoki = { _summary: null, _list: null, get downloadsStatusModokiBar() { delete downloadsStatusModokiBar; return this.downloadsStatusModokiBar = document.getElementById("downloadsStatusModokiBar"); }, get toggleMenuitem() { delete toggleMenuitem; return this.toggleMenuitem = document.getElementById("toggle_downloadsStatusModokiBar"); }, init: function() { if (document.documentElement.getAttribute("chromehidden") !="" ) return; XPCOMUtils.defineLazyModuleGetter(window, "Downloads", "resource://gre/modules/Downloads.jsm"); var style = ` @namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul); #ucjsDownloadsStatusModoki { -moz-box-orient: horizontal; width: 485px !important; min-width: 485px !important; max-width: 485px !important; max-height: 100px !important; height: 28px !important; background-color: rgba(0,0,0,0) !important; margin-top: -28px !important; } `.replace(/\s+/g, " "); var sspi = document.createProcessingInstruction( 'xml-stylesheet', 'type="text/css" href="data:text/css,' + encodeURIComponent(style) + '"' ); document.insertBefore(sspi, document.documentElement); sspi.getAttribute = function(name) { return document.documentElement.getAttribute(name); }; var toolbar = document.createXULElement("vbox"); toolbar.setAttribute("id", "downloadsStatusModokiBar"); toolbar.setAttribute("collapsed", true); var bottombox = document.getElementById("main-window"); bottombox.appendChild(toolbar); var browser = toolbar.appendChild(document.createXULElement("browser")); browser.setAttribute("disablehistory", true); browser.setAttribute("remote", false); browser.setAttribute("id", "ucjsDownloadsStatusModoki"); browser.addEventListener("load", function(event){ucjsDownloadsStatusModoki.onload(event)}, true); browser.setAttribute("src", "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml?StatusModoki"); var menuitem = document.createXULElement("menuitem"); menuitem.setAttribute("id", "toggle_downloadsStatusModokiBar"); menuitem.setAttribute("type", "checkbox"); menuitem.setAttribute("autocheck", false); menuitem.setAttribute("label", "Downloads Status Modoki Bar"); menuitem.setAttribute("checked", false); menuitem.setAttribute("accesskey", "D"); menuitem.setAttribute("oncommand", "ucjsDownloadsStatusModoki.toggleDownloadsStatusModokiBar()"); var ref = document.getElementById("menu_customizeToolbars"); ref.parentNode.insertBefore(menuitem, ref.previousSibling); // Ensure that the DownloadSummary object will be created asynchronously. if (!this._summary) { Downloads.getSummary(Downloads.ALL).then(summary => { this._summary = summary; return this._summary.addView(this); }).then(null, Cu.reportError); } if (!this._list) { Downloads.getList(Downloads.ALL).then(list => { this._list = list; return this._list.addView(this); }).then(null, Cu.reportError); } window.addEventListener("unload", this, false); }, uninit: function() { window.removeEventListener("unload", this, false); if (this._summary) { this._summary.removeView(this); } if (this._list) { this._list.removeView(this); } }, handleEvent: function(event) { switch (event.type) { case "unload": this.uninit(); break; } }, toggleDownloadsStatusModokiBar: function() { var collapsed = this.downloadsStatusModokiBar.collapsed; this.downloadsStatusModokiBar.collapsed = !collapsed; this.toggleMenuitem.setAttribute("checked", collapsed); }, openDownloadsStatusModoki: function() { this.downloadsStatusModokiBar.collapsed = false; this.toggleMenuitem.setAttribute("checked", true); }, hideDownloadsStatusModoki: function() { this.downloadsStatusModokiBar.collapsed = true; this.toggleMenuitem.setAttribute("checked", false); }, onDownloadAdded: function (aDownload) { Cu.import("resource://gre/modules/Services.jsm"); var showWhenStarting = true; try { showWhenStarting = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.showWhenStarting"); } catch(e) {} this.numDls = 0; if (showWhenStarting) { if (this._list) { this._list.getAll().then(downloads => { for (let download of downloads) { if (!download.stopped) this.numDls++; } if (this.numDls > 0) this.openDownloadsStatusModoki(false); }).then(null, Cu.reportError); } } }, onSummaryChanged: function () { Cu.import("resource://gre/modules/Services.jsm"); if (!this._summary) return; if (this._summary.allHaveStopped || this._summary.progressTotalBytes == 0) { var closeWhenDone = false; try { closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone"); } catch(e) {} if (closeWhenDone) { this.hideDownloadsStatusModoki(); } } }, // chrome://browser/content/downloads/contentAreaDownloadsView.xhtml onload: function(event) { var doc = event.originalTarget; var win = doc.defaultView; doc.documentElement.setAttribute("ucjsDownloadsStatusModoki", "true"); var button = doc.createXULElement("button"); button.setAttribute("label", "Löschen"); button.setAttribute("id", "ucjs_clearListButton"); button.setAttribute("accesskey", "L"); var ref = doc.getElementById("downloadCommands"); var vbox = doc.createXULElement("vbox"); var box = vbox.appendChild(doc.createXULElement("hbox")); box.appendChild(button); box.appendChild(doc.createXULElement("spacer")).setAttribute("flex", 1); var textbox = doc.createElementNS("http://www.w3.org/1999/xhtml", "input"); textbox.setAttribute("id", "downloadFilter"); textbox.setAttribute("clickSelectsAll", true); textbox.setAttribute("type", "search"); textbox.setAttribute("placeholder", "Suche..."); box.appendChild(textbox); var closebtn = doc.createXULElement("toolbarbutton"); closebtn.setAttribute("id", "ucjsDownloadsStatusModoki-closebutton"); closebtn.setAttribute("class", "close-icon"); closebtn.setAttribute("tooltiptext", "Close this bar"); box.appendChild(closebtn); ref.parentNode.insertBefore(vbox, ref); doc.getElementById("ucjs_clearListButton").addEventListener("command", function(event) { win.ucjsDownloadsStatusModoki_clearDownloads(); }); doc.getElementById("downloadFilter") .addEventListener("input", function(event) { win.ucjsDownloadsStatusModoki_doSearch(event.target.value); }); doc.getElementById("ucjsDownloadsStatusModoki-closebutton") .addEventListener("command", function(event) { win.ucjsDownloadsStatusModoki_doClose(); }); /* // xxx Bug 1279329 "Copy Download Link" of context menu in Library is grayed out var listBox = doc.getElementById("downloadsRichListBox"); var placesView = listBox._placesView; if (placesView) { var place = placesView.place; placesView.place= null; placesView.place = place; } */ win.ucjsDownloadsStatusModoki_clearDownloads = function ucjs_clearDownloads() { var DO_NOT_DELETE_HISTORY = true; /* custmizable true or false */ var richListBox = doc.getElementById("downloadsRichListBox"); Cu.import("resource://gre/modules/Services.jsm"); var places = []; function addPlace(aURI, aTitle, aVisitDate) { places.push({ uri: aURI, title: aTitle, visits: [{ visitDate: (aVisitDate || Date.now()) * 1000, transitionType: Ci.nsINavHistoryService.TRANSITION_LINK }] }); } function moveDownloads2History() { if (DO_NOT_DELETE_HISTORY && !PrivateBrowsingUtils.isWindowPrivate(window)) { try { for (let element of richListBox.childNodes) { let download = element._shell.download; let aURI = makeURI(download.source.url); // let aTitle = document.getAnonymousElementByAttribute(element, "class", "downloadTarget").value let aTitle = download.target.path; aTitle = aTitle.match( /[^\\]+$/i )[0]; aTitle = aTitle.match( /[^/]+$/i )[0]; let aVisitDate = download.endTime || download.startTime; addPlace(aURI, aTitle, aVisitDate) } } catch(ex) {} } // Clear List richListBox._placesView.doCommand('downloadsCmd_clearDownloads'); if (DO_NOT_DELETE_HISTORY && !PrivateBrowsingUtils.isWindowPrivate(window)) { try { if (places.length > 0) { var asyncHistory = Components.classes["@mozilla.org/browser/history;1"] .getService(Components.interfaces.mozIAsyncHistory); asyncHistory.updatePlaces(places); } } catch(ex) {} } } var btn = doc.getElementById("ucjs_clearListButton"); btn.setAttribute("disabled", true); moveDownloads2History(); btn.removeAttribute("disabled"); // close toolbar var closeWhenDone = false; try { closeWhenDone = Services.prefs.getBoolPref("userChrome.downloadsStatusModoki.closeWhenDone"); } catch(e) {} if (closeWhenDone) { top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki(); } }; win.ucjsDownloadsStatusModoki_doSearch = function ucjs_doSearch(filterString) { var richListBox = doc.getElementById("downloadsRichListBox"); richListBox._placesView.searchTerm = filterString; }; win.ucjsDownloadsStatusModoki_doClose = function ucjs_doClose() { top.ucjsDownloadsStatusModoki.hideDownloadsStatusModoki(); }; } } ucjsDownloadsStatusModoki.init();
DownloadsStatusModoki.css:
CSS
Alles anzeigen@charset "utf-8"; /*@version 2019/12/11 fix for 73 Bug 1601094 - Rename remaining .xul files to .xhtml in browser */ /*@version 2019/10/20 12:30*/ html#main-window vbox#downloadsStatusModokiBar { display: flex !important; position: absolute !important; right: -180px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] { -moz-box-orient: horizontal !important; /*background-color: rgba(0,0,0,0) !important;*/ border-top: 1px solid black !important; background-image: linear-gradient( rgba(192,192,192,1), rgba(255,255,255,1) ), none !important; padding: 0 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] > stack:first-child { } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] #downloadsRichListBox { background-color: rgba(0,0,0,0) !important; overflow-y: auto !important; scrollbar-width: thin; border: none !important; min-height: 32px !important; max-height: 32px !important; height: 32px !important; max-width: 210px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*:root { --downloads-item-height: 28px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] richlistitem { min-width:200px !important; max-width:200px !important; font-size: 10px !important; margin-top: -1px !important; min-height: 28px !important; max-height: 28px !important; height: 28px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] richlistitem vbox { height: 16px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadTypeIcon { height:16px !important; width: 16px !important; -moz-margin-end: 1px !important; -moz-margin-start: 1px !important; padding-right: 1px !important; padding-left: 1px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadTarget { /*margin-top:1px !important;*/ margin-top:-3px !important; padding-bottom:16px !important; max-width: calc(100% - 51px) !important; min-width: calc(100% - 51px) !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .download-state[state="0"] * .downloadTarget, #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .download-state[state="4"] * .downloadTarget { padding-bottom:0px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] #downloadsListEmptyDescription { color: red !important; margin-top: 6px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadTarget:-moz-system-metric(windows-default-theme) { margin-top:2px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*.downloadProgress { margin-top: 2px !important; border: none !important; padding-top: 1px !important; padding-bottom: 1px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*.downloadProgress::-moz-progress-bar { margin-top: -1px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] *|*.downloadProgress:not([paused])::-moz-progress-bar { background-color: lime !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadDetails { margin-top:-10px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .download-state:not(:-moz-any([state="-1"], [state="5"], [state="0"], [state="4"], [state="7"])) .downloadDetails { margin-top:-17px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] richlistitem[selected] .downloadDetails { opacity: 1 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] .downloadButton { padding: 0 !important; margin: 0 !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] button > .button-box { -moz-padding-start: 0px !important; -moz-padding-end: 1px !important; padding-right: 0 !important; padding-left: 0 !important; margin-top: -2px !important; } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] #downloadFilter { display: none !important; /* width: 150px; min-height: 23px !important; max-height: 23px !important; height: 23px !important;*/ } #contentAreaDownloadsView[ucjsDownloadsStatusModoki] #ucjs_clearListButton { /*display:none !important;*/ /*margin-top: -15px !important;*/ /*height: 20px !important;*/ min-width: 62px !important; max-width: 62px !important; min-height: 20px !important; max-height: 20px !important; }
-