mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 690252 - Default to saving files. r=mfinkle
This commit is contained in:
parent
5837a789a9
commit
1567086dd8
@ -783,3 +783,4 @@ pref("general.useragent.override.youtube.com", "Android; Tablet;#Android; Mobile
|
||||
|
||||
// When true, phone number linkification is enabled.
|
||||
pref("browser.ui.linkify.phone", false);
|
||||
|
||||
|
@ -24,122 +24,20 @@ HelperAppLauncherDialog.prototype = {
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIHelperAppLauncherDialog]),
|
||||
|
||||
show: function hald_show(aLauncher, aContext, aReason) {
|
||||
// Check to see if we can open this file or not
|
||||
if (aLauncher.MIMEInfo.hasDefaultHandler) {
|
||||
aLauncher.MIMEInfo.preferredAction = Ci.nsIMIMEInfo.useSystemDefault;
|
||||
aLauncher.launchWithApplication(null, false);
|
||||
} else {
|
||||
let wasClicked = false;
|
||||
let listener = {
|
||||
observe: function(aSubject, aTopic, aData) {
|
||||
if (aTopic == "alertclickcallback") {
|
||||
wasClicked = true;
|
||||
let win = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator).getMostRecentWindow("navigator:browser");
|
||||
if (win)
|
||||
win.BrowserUI.showPanel("downloads-container");
|
||||
|
||||
aLauncher.saveToDisk(null, false);
|
||||
} else {
|
||||
if (!wasClicked)
|
||||
aLauncher.cancel(Cr.NS_BINDING_ABORTED);
|
||||
}
|
||||
}
|
||||
};
|
||||
this._notify(aLauncher, listener);
|
||||
}
|
||||
// Save everything by default
|
||||
aLauncher.MIMEInfo.preferredAction = Ci.nsIMIMEInfo.useSystemDefault;
|
||||
aLauncher.saveToDisk(null, false);
|
||||
},
|
||||
|
||||
promptForSaveToFile: function hald_promptForSaveToFile(aLauncher, aContext, aDefaultFile, aSuggestedFileExt, aForcePrompt) {
|
||||
let file = null;
|
||||
let prefs = Services.prefs;
|
||||
// Retrieve the user's default download directory
|
||||
let dnldMgr = Cc["@mozilla.org/download-manager;1"].getService(Ci.nsIDownloadManager);
|
||||
let defaultFolder = dnldMgr.userDownloadsDirectory;
|
||||
|
||||
if (!aForcePrompt) {
|
||||
// Check to see if the user wishes to auto save to the default download
|
||||
// folder without prompting. Note that preference might not be set.
|
||||
let autodownload = true;
|
||||
try {
|
||||
autodownload = prefs.getBoolPref(PREF_BD_USEDOWNLOADDIR);
|
||||
} catch (e) { }
|
||||
|
||||
if (autodownload) {
|
||||
// Retrieve the user's default download directory
|
||||
let dnldMgr = Cc["@mozilla.org/download-manager;1"].getService(Ci.nsIDownloadManager);
|
||||
let defaultFolder = dnldMgr.userDownloadsDirectory;
|
||||
|
||||
try {
|
||||
file = this.validateLeafName(defaultFolder, aDefaultFile, aSuggestedFileExt);
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
|
||||
// Check to make sure we have a valid directory, otherwise, prompt
|
||||
if (file)
|
||||
return file;
|
||||
}
|
||||
}
|
||||
|
||||
// Use file picker to show dialog.
|
||||
let picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
|
||||
let windowTitle = "";
|
||||
let parent = aContext.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow);
|
||||
picker.init(parent, windowTitle, Ci.nsIFilePicker.modeSave);
|
||||
picker.defaultString = aDefaultFile;
|
||||
|
||||
if (aSuggestedFileExt) {
|
||||
// aSuggestedFileExtension includes the period, so strip it
|
||||
picker.defaultExtension = aSuggestedFileExt.substring(1);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
picker.defaultExtension = aLauncher.MIMEInfo.primaryExtension;
|
||||
}
|
||||
catch (e) { }
|
||||
}
|
||||
|
||||
var wildCardExtension = "*";
|
||||
if (aSuggestedFileExt) {
|
||||
wildCardExtension += aSuggestedFileExt;
|
||||
picker.appendFilter(aLauncher.MIMEInfo.description, wildCardExtension);
|
||||
}
|
||||
|
||||
picker.appendFilters(Ci.nsIFilePicker.filterAll);
|
||||
|
||||
// Default to lastDir if it is valid, otherwise use the user's default
|
||||
// downloads directory. userDownloadsDirectory should always return a
|
||||
// valid directory, so we can safely default to it.
|
||||
var dnldMgr = Cc["@mozilla.org/download-manager;1"].getService(Ci.nsIDownloadManager);
|
||||
picker.displayDirectory = dnldMgr.userDownloadsDirectory;
|
||||
|
||||
// The last directory preference may not exist, which will throw.
|
||||
try {
|
||||
let lastDir = prefs.getComplexValue("browser.download.lastDir", Ci.nsILocalFile);
|
||||
if (isUsableDirectory(lastDir))
|
||||
picker.displayDirectory = lastDir;
|
||||
}
|
||||
catch (e) { }
|
||||
file = this.validateLeafName(defaultFolder, aDefaultFile, aSuggestedFileExt);
|
||||
} catch (e) { }
|
||||
|
||||
if (picker.show() == Ci.nsIFilePicker.returnCancel) {
|
||||
// null result means user cancelled.
|
||||
return null;
|
||||
}
|
||||
|
||||
// Be sure to save the directory the user chose through the Save As...
|
||||
// dialog as the new browser.download.dir since the old one
|
||||
// didn't exist.
|
||||
file = picker.file;
|
||||
|
||||
if (file) {
|
||||
try {
|
||||
// Remove the file so that it's not there when we ensure non-existence later;
|
||||
// this is safe because for the file to exist, the user would have had to
|
||||
// confirm that he wanted the file overwritten.
|
||||
file.remove(false);
|
||||
}
|
||||
catch (e) {}
|
||||
var newDir = file.parent.QueryInterface(Ci.nsILocalFile);
|
||||
prefs.setComplexValue("browser.download.lastDir", Ci.nsILocalFile, newDir);
|
||||
file = this.validateLeafName(newDir, file.leafName, null);
|
||||
}
|
||||
return file;
|
||||
},
|
||||
|
||||
@ -200,16 +98,6 @@ HelperAppLauncherDialog.prototype = {
|
||||
isUsableDirectory: function hald_isUsableDirectory(aDirectory) {
|
||||
return aDirectory.exists() && aDirectory.isDirectory() && aDirectory.isWritable();
|
||||
},
|
||||
|
||||
_notify: function hald_notify(aLauncher, aCallback) {
|
||||
let bundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
|
||||
|
||||
let notifier = Cc[aCallback ? "@mozilla.org/alerts-service;1" : "@mozilla.org/toaster-alerts-service;1"].getService(Ci.nsIAlertsService);
|
||||
notifier.showAlertNotification(URI_GENERIC_ICON_DOWNLOAD,
|
||||
bundle.GetStringFromName("alertDownloads"),
|
||||
bundle.GetStringFromName("alertCantOpenDownload"),
|
||||
true, "", aCallback, "downloadopen-fail");
|
||||
}
|
||||
};
|
||||
|
||||
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([HelperAppLauncherDialog]);
|
||||
|
Loading…
Reference in New Issue
Block a user