зеркало из https://github.com/mozilla/pjs.git
246618 - show default download folder in downloads window when in autodownload mode
This commit is contained in:
Родитель
196db75dc6
Коммит
fef2215d99
|
@ -333,7 +333,6 @@ function onDownloadOpen(aEvent)
|
|||
f.initWithPath(aEvent.target.id);
|
||||
|
||||
if (f.exists()) {
|
||||
// XXXben security check!
|
||||
if (f.isExecutable()) {
|
||||
var dontAsk = false;
|
||||
var pref = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
|
@ -493,6 +492,12 @@ function Startup()
|
|||
gDownloadsView.addEventListener("download-properties", onDownloadProperties, false);
|
||||
gDownloadsView.addEventListener("dblclick", onDownloadOpen, false);
|
||||
|
||||
// Set up AutoDownload display area
|
||||
initAutoDownloadDisplay();
|
||||
var pbi = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranchInternal);
|
||||
pbi.addObserver("browser.download.", gDownloadPrefObserver, false);
|
||||
|
||||
// Handlers for events generated by the Download Manager (download events)
|
||||
var observerService = Components.classes[kObserverServiceProgID]
|
||||
.getService(Components.interfaces.nsIObserverService);
|
||||
|
@ -533,6 +538,10 @@ function Shutdown()
|
|||
// Assert the current progress for all the downloads in case the window is reopened
|
||||
gDownloadManager.saveState();
|
||||
|
||||
var pbi = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranchInternal);
|
||||
pbi.removeObserver("browser.download.", gDownloadPrefObserver);
|
||||
|
||||
var observerService = Components.classes[kObserverServiceProgID]
|
||||
.getService(Components.interfaces.nsIObserverService);
|
||||
observerService.removeObserver(gDownloadObserver, "dl-done");
|
||||
|
@ -716,3 +725,106 @@ function onDownloadShowInfo()
|
|||
fireEventForElement(gDownloadsView.selected, "properties");
|
||||
}
|
||||
|
||||
function initAutoDownloadDisplay()
|
||||
{
|
||||
var pref = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
|
||||
var autodownload = pref.getBoolPref("browser.download.useDownloadDir");
|
||||
if (autodownload) {
|
||||
var autodownloadInfo = document.getElementById("autodownloadInfo");
|
||||
autodownloadInfo.hidden = false;
|
||||
var autodownloadSpring = document.getElementById("autodownloadSpring");
|
||||
autodownloadSpring.hidden = true;
|
||||
|
||||
function getSpecialFolderKey(aFolderType)
|
||||
{
|
||||
#ifdef XP_WIN
|
||||
return aFolderType == "Desktop" ? "DeskV" : "Pers";
|
||||
#else
|
||||
#ifdef XP_MACOSX
|
||||
return aFolderType == "Desktop" ? "UsrDsk" : "UsrDocs";
|
||||
#else
|
||||
return "Home";
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
function getDownloadsFolder(aFolder)
|
||||
{
|
||||
var fileLocator = Components.classes["@mozilla.org/file/directory_service;1"]
|
||||
.getService(Components.interfaces.nsIProperties);
|
||||
var dir = fileLocator.get(getSpecialFolderKey(aFolder), Components.interfaces.nsILocalFile);
|
||||
|
||||
var bundle = Components.classes["@mozilla.org/intl/stringbundle;1"]
|
||||
.getService(Components.interfaces.nsIStringBundleService);
|
||||
bundle = bundle.createBundle("chrome://mozapps/locale/downloads/unknownContentType.properties");
|
||||
|
||||
var description = bundle.GetStringFromName("myDownloads");
|
||||
if (aFolder != "Desktop")
|
||||
dir.append(description);
|
||||
|
||||
return dir;
|
||||
}
|
||||
|
||||
var displayName = null;
|
||||
switch (pref.getIntPref("browser.download.folderList")) {
|
||||
case 0:
|
||||
folder = getDownloadsFolder("Desktop");
|
||||
var strings = document.getElementById("downloadStrings");
|
||||
displayName = strings.getString("displayNameDesktop");
|
||||
break;
|
||||
case 1:
|
||||
folder = getDownloadsFolder("Downloads");
|
||||
break;
|
||||
case 2:
|
||||
folder = pref.getComplexValue("browser.download.dir", Components.interfaces.nsILocalFile);
|
||||
break;
|
||||
}
|
||||
|
||||
if (folder) {
|
||||
var ioServ = Components.classes["@mozilla.org/network/io-service;1"]
|
||||
.getService(Components.interfaces.nsIIOService);
|
||||
var fph = ioServ.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler);
|
||||
var mozIconURI = "moz-icon://" + fph.getURLSpecFromFile(folder) + "?size=16";
|
||||
var folderIcon = document.getElementById("saveToFolder")
|
||||
folderIcon.image = mozIconURI;
|
||||
|
||||
var folderName = document.getElementById("saveToFolder");
|
||||
folderName.label = displayName || folder.leafName;
|
||||
folderName.setAttribute("path", folder.path);
|
||||
}
|
||||
}
|
||||
else {
|
||||
var autodownloadInfo = document.getElementById("autodownloadInfo");
|
||||
autodownloadInfo.hidden = true;
|
||||
var autodownloadSpring = document.getElementById("autodownloadSpring");
|
||||
autodownloadSpring.hidden = false;
|
||||
}
|
||||
}
|
||||
|
||||
var gDownloadPrefObserver = {
|
||||
observe: function (aSubject, aTopic, aData)
|
||||
{
|
||||
if (aTopic == "nsPref:changed") {
|
||||
switch(aData) {
|
||||
case "browser.download.folderList":
|
||||
case "browser.download.useDownloadDir":
|
||||
case "browser.download.dir":
|
||||
initAutoDownloadDisplay();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function onDownloadShowFolder()
|
||||
{
|
||||
var folderName = document.getElementById("saveToFolder");
|
||||
var dir = Components.classes["@mozilla.org/file/local;1"]
|
||||
.createInstance(Components.interfaces.nsILocalFile);
|
||||
dir.initWithPath(folderName.getAttribute("path"));
|
||||
if (!dir.exists())
|
||||
dir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755);
|
||||
|
||||
dir.reveal();
|
||||
}
|
||||
|
|
|
@ -160,19 +160,17 @@
|
|||
|
||||
<hbox>
|
||||
<hbox id="commandBar" flex="1">
|
||||
<hbox align="center" flex="1" id="autodownloadInfo">
|
||||
<label>&filesSavedTo.label;</label>
|
||||
<toolbarbutton id="saveToFolder" crop="right" flex="1"
|
||||
oncommand="onDownloadShowFolder();"
|
||||
tooltiptext="&showFolder.label;"/>
|
||||
</hbox>
|
||||
<spring id="autodownloadSpring" hidden="true" flex="1"/>
|
||||
<separator id="commandBarSeparator"/>
|
||||
<button id="cleanUpButton"
|
||||
label="&cmd.cleanUp.label;" accesskey="&cmd.cleanUp.accesskey;" tooltiptext="&cmd.cleanUp.tooltip;"
|
||||
command="cmd_cleanUp"/>
|
||||
<separator id="commandBarSeparator"/>
|
||||
#ifdef XP_WIN
|
||||
<button id="optionsButton"
|
||||
label="&cmd.options.label;" accesskey="&cmd.options.accesskey;"
|
||||
oncommand="onDownloadShowOptions();"/>
|
||||
#else
|
||||
<button id="optionsButton"
|
||||
label="&cmd.optionsUnix.label;" accesskey="&cmd.optionsUnix.accesskey;"
|
||||
oncommand="onDownloadShowOptions();"/>
|
||||
#endif
|
||||
</hbox>
|
||||
|
||||
<resizer id="windowResizer" dir="bottomright"/>
|
||||
|
|
|
@ -32,11 +32,14 @@
|
|||
<!ENTITY cmd.cleanUp.tooltip "Removes completed, canceled or failed downloads from the list">
|
||||
<!ENTITY cmd.cleanUp.accesskey "a">
|
||||
|
||||
<!ENTITY cmd.options.label "Options">
|
||||
<!ENTITY cmd.options.accesskey "O">
|
||||
<!ENTITY cmd.optionsUnix.label "Preferences">
|
||||
<!ENTITY cmd.optionsUnix.accesskey "n">
|
||||
<!ENTITY cmd.change.label "Change...">
|
||||
<!ENTITY cmd.change.accesskey "C">
|
||||
<!ENTITY cmd.change.tooltip "Change how and where to save files to">
|
||||
|
||||
<!ENTITY closeWhenDone.label "Close when downloads complete">
|
||||
<!ENTITY closeWhenDone.tooltip "Closes the Downloads window when all files are done downloading">
|
||||
|
||||
<!ENTITY filesSavedTo.label "All files downloaded to:">
|
||||
<!ENTITY showFolder.label "Show this Folder">
|
||||
|
||||
|
||||
|
|
|
@ -42,3 +42,4 @@ fileExecutableSecurityWarning="%S" is an executable file. Executable files may c
|
|||
fileExecutableSecurityWarningTitle=Open Executable File?
|
||||
fileExecutableSecurityWarningDontAsk=Don't ask me this again
|
||||
|
||||
displayNameDesktop=Desktop
|
||||
|
|
|
@ -136,9 +136,6 @@ nsUnknownContentTypeDialog.prototype = {
|
|||
// we need to discover the default save location.
|
||||
var autodownload = prefs.getBoolPref("browser.download.useDownloadDir");
|
||||
if (autodownload) {
|
||||
// XXXben we should really have a way of using XULPP on JS component files.
|
||||
// This code is very similar to that in pref-downloads.js, except the platform
|
||||
// checks are done at runtime. ugh.
|
||||
function getSpecialFolderKey(aFolderType)
|
||||
{
|
||||
#ifdef XP_WIN
|
||||
|
|
|
@ -98,3 +98,21 @@ download[state="5"], download[state="6"] {
|
|||
border: 1px dotted black;
|
||||
}
|
||||
|
||||
#folderIcon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
#folderName {
|
||||
width: 0px;
|
||||
}
|
||||
|
||||
#saveToFolder {
|
||||
padding: 0px 6px 3px 5px;
|
||||
}
|
||||
|
||||
#saveToFolder .toolbarbutton-text {
|
||||
text-align: left;
|
||||
margin-left: 5px !important;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче