mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-09 16:57:30 +09:00
Add Pale Moon
This commit is contained in:
parent
dcd9973243
commit
fe8028fa2e
1173 changed files with 143053 additions and 934 deletions
695
application/palemoon/components/statusbar/status4evar.js
Normal file
695
application/palemoon/components/statusbar/status4evar.js
Normal file
|
|
@ -0,0 +1,695 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
// Component constants
|
||||
const CC = Components.classes;
|
||||
const CI = Components.interfaces;
|
||||
const CU = Components.utils;
|
||||
|
||||
CU.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
CU.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const CURRENT_MIGRATION = 8;
|
||||
|
||||
function Status_4_Evar(){}
|
||||
|
||||
Status_4_Evar.prototype =
|
||||
{
|
||||
classID: Components.ID("{33d0433d-07be-4dc4-87fd-954057310efd}"),
|
||||
QueryInterface: XPCOMUtils.generateQI([
|
||||
CI.nsISupportsWeakReference,
|
||||
CI.nsIObserver,
|
||||
CI.nsIStatus4Evar
|
||||
]),
|
||||
|
||||
prefs: null,
|
||||
|
||||
addonbarBorderStyle: false,
|
||||
addonbarCloseButton: false,
|
||||
addonbarWindowGripper: true,
|
||||
|
||||
advancedStatusDetectFullScreen: true,
|
||||
advancedStatusDetectVideo: true,
|
||||
|
||||
downloadButtonAction: 1,
|
||||
downloadButtonActionCommand: "",
|
||||
downloadColorActive: null,
|
||||
downloadColorPaused: null,
|
||||
downloadForce: false,
|
||||
downloadLabel: 0,
|
||||
downloadLabelForce: true,
|
||||
downloadNotifyAnimate: true,
|
||||
downloadNotifyTimeout: 60000,
|
||||
downloadProgress: 1,
|
||||
downloadTooltip: 1,
|
||||
|
||||
firstRun: true,
|
||||
|
||||
progressToolbarCSS: null,
|
||||
progressToolbarForce: false,
|
||||
progressToolbarStyle: false,
|
||||
|
||||
status: 1,
|
||||
statusDefault: true,
|
||||
statusNetwork: true,
|
||||
statusTimeout: 10000,
|
||||
statusLinkOver: 1,
|
||||
statusLinkOverDelayShow: 70,
|
||||
statusLinkOverDelayHide: 150,
|
||||
|
||||
statusToolbarMaxLength: 0,
|
||||
|
||||
statusToolbarInvertMirror: false,
|
||||
statusToolbarMouseMirror: true,
|
||||
|
||||
pref_registry:
|
||||
{
|
||||
"addonbar.borderStyle":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.addonbarBorderStyle = this.prefs.getBoolPref("addonbar.borderStyle");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
let browser_bottom_box = win.caligon.status4evar.getters.browserBottomBox;
|
||||
if(browser_bottom_box)
|
||||
{
|
||||
this.setBoolElementAttribute(browser_bottom_box, "s4eboarder", this.addonbarBorderStyle);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"addonbar.closeButton":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.addonbarCloseButton = this.prefs.getBoolPref("addonbar.closeButton");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
let addonbar_close_button = win.caligon.status4evar.getters.addonbarCloseButton;
|
||||
if(addonbar_close_button)
|
||||
{
|
||||
addonbar_close_button.hidden = !this.addonbarCloseButton;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"addonbar.windowGripper":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.addonbarWindowGripper = this.prefs.getBoolPref("addonbar.windowGripper");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.toolbars.updateWindowGripper(true);
|
||||
}
|
||||
},
|
||||
|
||||
"advanced.status.detectFullScreen":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.advancedStatusDetectFullScreen = this.prefs.getBoolPref("advanced.status.detectFullScreen");
|
||||
}
|
||||
},
|
||||
|
||||
"advanced.status.detectVideo":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.advancedStatusDetectVideo = this.prefs.getBoolPref("advanced.status.detectVideo");
|
||||
}
|
||||
},
|
||||
|
||||
"download.button.action":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadButtonAction = this.prefs.getIntPref("download.button.action");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.downloadStatus.updateBinding();
|
||||
}
|
||||
},
|
||||
|
||||
"download.button.action.command":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadButtonActionCommand = this.prefs.getCharPref("download.button.action.command");
|
||||
}
|
||||
},
|
||||
|
||||
"download.color.active":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadColorActive = this.prefs.getCharPref("download.color.active");
|
||||
},
|
||||
updateDynamicStyle: function(sheet)
|
||||
{
|
||||
sheet.cssRules[2].style.backgroundColor = this.downloadColorActive;
|
||||
}
|
||||
},
|
||||
|
||||
"download.color.paused":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadColorPaused = this.prefs.getCharPref("download.color.paused");
|
||||
},
|
||||
updateDynamicStyle: function(sheet)
|
||||
{
|
||||
sheet.cssRules[3].style.backgroundColor = this.downloadColorPaused;
|
||||
}
|
||||
},
|
||||
|
||||
"download.force":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadForce = this.prefs.getBoolPref("download.force");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
let download_button = win.caligon.status4evar.getters.downloadButton;
|
||||
if(download_button)
|
||||
{
|
||||
this.setBoolElementAttribute(download_button, "forcevisible", this.downloadForce);
|
||||
}
|
||||
|
||||
let download_notify_anchor = win.caligon.status4evar.getters.downloadNotifyAnchor;
|
||||
this.setBoolElementAttribute(download_notify_anchor, "forcevisible", this.downloadForce);
|
||||
}
|
||||
},
|
||||
|
||||
"download.label":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadLabel = this.prefs.getIntPref("download.label");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.downloadStatus.updateButton();
|
||||
}
|
||||
},
|
||||
|
||||
"download.label.force":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadLabelForce = this.prefs.getBoolPref("download.label.force");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
let download_button = win.caligon.status4evar.getters.downloadButton;
|
||||
if(download_button)
|
||||
{
|
||||
this.setBoolElementAttribute(download_button, "forcelabel", this.downloadLabelForce);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"download.notify.animate":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadNotifyAnimate = this.prefs.getBoolPref("download.notify.animate");
|
||||
}
|
||||
},
|
||||
|
||||
"download.notify.timeout":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadNotifyTimeout = (this.prefs.getIntPref("download.notify.timeout") * 1000);
|
||||
}
|
||||
},
|
||||
|
||||
"download.progress":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadProgress = this.prefs.getIntPref("download.progress");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.downloadStatus.updateButton();
|
||||
}
|
||||
},
|
||||
|
||||
"download.tooltip":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.downloadTooltip = this.prefs.getIntPref("download.tooltip");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.downloadStatus.updateButton();
|
||||
}
|
||||
},
|
||||
|
||||
"progress.toolbar.css":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.progressToolbarCSS = this.prefs.getCharPref("progress.toolbar.css");
|
||||
},
|
||||
updateDynamicStyle: function(sheet)
|
||||
{
|
||||
sheet.cssRules[1].style.background = this.progressToolbarCSS;
|
||||
}
|
||||
},
|
||||
|
||||
"progress.toolbar.force":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.progressToolbarForce = this.prefs.getBoolPref("progress.toolbar.force");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
let toolbar_progress = win.caligon.status4evar.getters.toolbarProgress;
|
||||
if(toolbar_progress)
|
||||
{
|
||||
this.setBoolElementAttribute(toolbar_progress, "forcevisible", this.progressToolbarForce);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"progress.toolbar.style":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.progressToolbarStyle = this.prefs.getBoolPref("progress.toolbar.style");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
let toolbar_progress = win.caligon.status4evar.getters.toolbarProgress;
|
||||
if(toolbar_progress)
|
||||
{
|
||||
this.setBoolElementAttribute(toolbar_progress, "s4estyle", this.progressToolbarStyle);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"status":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.status = this.prefs.getIntPref("status");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.statusService.clearStatusField();
|
||||
win.caligon.status4evar.statusService.updateStatusField(true);
|
||||
}
|
||||
},
|
||||
|
||||
"status.default":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusDefault = this.prefs.getBoolPref("status.default");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.statusService.buildTextOrder();
|
||||
win.caligon.status4evar.statusService.updateStatusField(true);
|
||||
}
|
||||
},
|
||||
|
||||
"status.linkOver":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusLinkOver = this.prefs.getIntPref("status.linkOver");
|
||||
}
|
||||
},
|
||||
|
||||
"status.linkOver.delay.show":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusLinkOverDelayShow = this.prefs.getIntPref("status.linkOver.delay.show");
|
||||
}
|
||||
},
|
||||
|
||||
"status.linkOver.delay.hide":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusLinkOverDelayHide = this.prefs.getIntPref("status.linkOver.delay.hide");
|
||||
}
|
||||
},
|
||||
|
||||
"status.network":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusNetwork = this.prefs.getBoolPref("status.network");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.statusService.buildTextOrder();
|
||||
}
|
||||
},
|
||||
|
||||
"status.network.xhr":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusNetworkXHR = this.prefs.getBoolPref("status.network.xhr");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.statusService.buildTextOrder();
|
||||
}
|
||||
},
|
||||
|
||||
"status.timeout":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusTimeout = (this.prefs.getIntPref("status.timeout") * 1000);
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
win.caligon.status4evar.statusService.updateStatusField(true);
|
||||
}
|
||||
},
|
||||
|
||||
"status.toolbar.maxLength":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusToolbarMaxLength = this.prefs.getIntPref("status.toolbar.maxLength");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
let status_widget = win.caligon.status4evar.getters.statusWidget;
|
||||
if(status_widget)
|
||||
{
|
||||
status_widget.maxWidth = (this.statusToolbarMaxLength || "");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"status.popup.invertMirror":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusToolbarInvertMirror = this.prefs.getBoolPref("status.popup.invertMirror");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
let statusOverlay = win.caligon.status4evar.getters.statusOverlay;
|
||||
if(statusOverlay)
|
||||
{
|
||||
statusOverlay.invertMirror = this.statusToolbarInvertMirror;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"status.popup.mouseMirror":
|
||||
{
|
||||
update: function()
|
||||
{
|
||||
this.statusToolbarMouseMirror = this.prefs.getBoolPref("status.popup.mouseMirror");
|
||||
},
|
||||
updateWindow: function(win)
|
||||
{
|
||||
let statusOverlay = win.caligon.status4evar.getters.statusOverlay;
|
||||
if(statusOverlay)
|
||||
{
|
||||
statusOverlay.mouseMirror = this.statusToolbarMouseMirror;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
// nsIObserver
|
||||
observe: function(subject, topic, data)
|
||||
{
|
||||
try
|
||||
{
|
||||
switch(topic)
|
||||
{
|
||||
case "profile-after-change":
|
||||
this.startup();
|
||||
break;
|
||||
case "quit-application":
|
||||
this.shutdown();
|
||||
break;
|
||||
case "nsPref:changed":
|
||||
this.updatePref(data, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch(e)
|
||||
{
|
||||
CU.reportError(e);
|
||||
}
|
||||
},
|
||||
|
||||
startup: function()
|
||||
{
|
||||
this.prefs = Services.prefs.getBranch("status4evar.").QueryInterface(CI.nsIPrefBranch2);
|
||||
|
||||
this.firstRun = this.prefs.getBoolPref("firstRun");
|
||||
if(this.firstRun)
|
||||
{
|
||||
this.prefs.setBoolPref("firstRun", false);
|
||||
}
|
||||
|
||||
this.migrate();
|
||||
|
||||
for(let pref in this.pref_registry)
|
||||
{
|
||||
let pro = this.pref_registry[pref];
|
||||
|
||||
pro.update = pro.update.bind(this);
|
||||
if(pro.updateWindow)
|
||||
{
|
||||
pro.updateWindow = pro.updateWindow.bind(this);
|
||||
}
|
||||
if(pro.updateDynamicStyle)
|
||||
{
|
||||
pro.updateDynamicStyle = pro.updateDynamicStyle.bind(this);
|
||||
}
|
||||
|
||||
this.prefs.addObserver(pref, this, true);
|
||||
|
||||
this.updatePref(pref, false);
|
||||
}
|
||||
|
||||
Services.obs.addObserver(this, "quit-application", true);
|
||||
},
|
||||
|
||||
shutdown: function()
|
||||
{
|
||||
Services.obs.removeObserver(this, "quit-application");
|
||||
|
||||
for(let pref in this.pref_registry)
|
||||
{
|
||||
this.prefs.removeObserver(pref, this);
|
||||
}
|
||||
|
||||
this.prefs = null;
|
||||
},
|
||||
|
||||
migrate: function()
|
||||
{
|
||||
if(!this.firstRun)
|
||||
{
|
||||
let migration = 0;
|
||||
try
|
||||
{
|
||||
migration = this.prefs.getIntPref("migration");
|
||||
}
|
||||
catch(e) {}
|
||||
|
||||
switch(migration)
|
||||
{
|
||||
case 5:
|
||||
this.migrateBoolPref("status.detectFullScreen", "advanced.status.detectFullScreen");
|
||||
case 6:
|
||||
let oldDownloadAction = this.prefs.getIntPref("download.button.action");
|
||||
let newDownloadAction = 1;
|
||||
switch(oldDownloadAction)
|
||||
{
|
||||
case 2:
|
||||
newDownloadAction = 1;
|
||||
break;
|
||||
case 3:
|
||||
newDownloadAction = 2;
|
||||
break;
|
||||
case 4:
|
||||
newDownloadAction = 1;
|
||||
break;
|
||||
}
|
||||
this.prefs.setIntPref("download.button.action", newDownloadAction);
|
||||
case 7:
|
||||
let progressLocation = this.prefs.getIntPref("status");
|
||||
if (progressLocation == 2)
|
||||
this.prefs.setIntPref("status", 1);
|
||||
let linkOverLocation = this.prefs.getIntPref("status.linkOver");
|
||||
if (linkOverLocation == 2)
|
||||
this.prefs.setIntPref("status.linkOver", 1);
|
||||
break;
|
||||
case CURRENT_MIGRATION:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
this.prefs.setIntPref("migration", CURRENT_MIGRATION);
|
||||
},
|
||||
|
||||
migrateBoolPref: function(oldPref, newPref)
|
||||
{
|
||||
if(this.prefs.prefHasUserValue(oldPref))
|
||||
{
|
||||
this.prefs.setBoolPref(newPref, this.prefs.getBoolPref(oldPref));
|
||||
this.prefs.clearUserPref(oldPref);
|
||||
}
|
||||
},
|
||||
|
||||
migrateIntPref: function(oldPref, newPref)
|
||||
{
|
||||
if(this.prefs.prefHasUserValue(oldPref))
|
||||
{
|
||||
this.prefs.setIntPref(newPref, this.prefs.getIntPref(oldPref));
|
||||
this.prefs.clearUserPref(oldPref);
|
||||
}
|
||||
},
|
||||
|
||||
migrateCharPref: function(oldPref, newPref)
|
||||
{
|
||||
if(this.prefs.prefHasUserValue(oldPref))
|
||||
{
|
||||
this.prefs.setCharPref(newPref, this.prefs.getCharPref(oldPref));
|
||||
this.prefs.clearUserPref(oldPref);
|
||||
}
|
||||
},
|
||||
|
||||
updatePref: function(pref, updateWindows)
|
||||
{
|
||||
if(!(pref in this.pref_registry))
|
||||
{
|
||||
return;
|
||||
}
|
||||
let pro = this.pref_registry[pref];
|
||||
|
||||
pro.update();
|
||||
|
||||
if(updateWindows)
|
||||
{
|
||||
let windowsEnum = Services.wm.getEnumerator("navigator:browser");
|
||||
while(windowsEnum.hasMoreElements())
|
||||
{
|
||||
this.updateWindow(windowsEnum.getNext(), pro);
|
||||
}
|
||||
}
|
||||
|
||||
if(pro.alsoUpdate)
|
||||
{
|
||||
pro.alsoUpdate.forEach(function (alsoPref)
|
||||
{
|
||||
this.updatePref(alsoPref);
|
||||
}, this);
|
||||
}
|
||||
},
|
||||
|
||||
// Updtate a browser window
|
||||
updateWindow: function(win, pro)
|
||||
{
|
||||
if(!(win instanceof CI.nsIDOMWindow)
|
||||
|| !(win.document.documentElement.getAttribute("windowtype") == "navigator:browser"))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(pro)
|
||||
{
|
||||
this.handlePro(win, pro);
|
||||
}
|
||||
else
|
||||
{
|
||||
for(let pref in this.pref_registry)
|
||||
{
|
||||
this.handlePro(win, this.pref_registry[pref]);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
handlePro: function(win, pro)
|
||||
{
|
||||
if(pro.updateWindow)
|
||||
{
|
||||
pro.updateWindow(win);
|
||||
}
|
||||
|
||||
if(pro.updateDynamicStyle)
|
||||
{
|
||||
let styleSheets = win.document.styleSheets;
|
||||
for(let i = 0; i < styleSheets.length; i++)
|
||||
{
|
||||
let styleSheet = styleSheets[i];
|
||||
if(styleSheet.href == "chrome://browser/skin/statusbar/dynamic.css")
|
||||
{
|
||||
pro.updateDynamicStyle(styleSheet);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
setBoolElementAttribute: function(elem, attr, val)
|
||||
{
|
||||
if(val)
|
||||
{
|
||||
elem.setAttribute(attr, "true");
|
||||
}
|
||||
else
|
||||
{
|
||||
elem.removeAttribute(attr);
|
||||
}
|
||||
},
|
||||
|
||||
setStringElementAttribute: function(elem, attr, val)
|
||||
{
|
||||
if(val)
|
||||
{
|
||||
elem.setAttribute(attr, val);
|
||||
}
|
||||
else
|
||||
{
|
||||
elem.removeAttribute(attr);
|
||||
}
|
||||
},
|
||||
|
||||
resetPrefs: function()
|
||||
{
|
||||
let childPrefs = this.prefs.getChildList("");
|
||||
childPrefs.forEach(function(pref)
|
||||
{
|
||||
if(this.prefs.prefHasUserValue(pref))
|
||||
{
|
||||
this.prefs.clearUserPref(pref);
|
||||
}
|
||||
}, this);
|
||||
}
|
||||
};
|
||||
|
||||
const NSGetFactory = XPCOMUtils.generateNSGetFactory([Status_4_Evar]);
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue