зеркало из https://github.com/mozilla/gecko-dev.git
latest updates to helper apps pref panel (now support editing of types, and overwriting old types with new ones! =D)
This commit is contained in:
Родитель
7a11b65ba3
Коммит
576104c21d
|
@ -13,6 +13,7 @@ if (gRDF)
|
|||
function HandlerOverride(aURI)
|
||||
{
|
||||
this.URI = aURI;
|
||||
this.mUpdateMode = false;
|
||||
}
|
||||
|
||||
HandlerOverride.prototype = {
|
||||
|
@ -24,7 +25,10 @@ HandlerOverride.prototype = {
|
|||
|
||||
set mimeType(aMIMETypeString)
|
||||
{
|
||||
assertMIMEStuff(MIME_URI(aMIMETypeString), "value", aMIMETypeString);
|
||||
if (!this.mUpdateMode)
|
||||
assertMIMEStuff(MIME_URI(aMIMETypeString), "value", aMIMETypeString);
|
||||
else
|
||||
changeMIMEStuff(MIME_URI(aMIMETypeString), "value", aMIMETypeString);
|
||||
},
|
||||
|
||||
get description()
|
||||
|
@ -34,7 +38,10 @@ HandlerOverride.prototype = {
|
|||
|
||||
set description(aDescriptionString)
|
||||
{
|
||||
assertMIMEStuff(MIME_URI(this.mimeType), "description", aDescriptionString);
|
||||
if (!this.mUpdateMode)
|
||||
assertMIMEStuff(MIME_URI(this.mimeType), "description", aDescriptionString);
|
||||
else
|
||||
changeMIMEStuff(MIME_URI(this.mimeType), "description", aDescriptionString);
|
||||
},
|
||||
|
||||
get isEditable()
|
||||
|
@ -44,7 +51,10 @@ HandlerOverride.prototype = {
|
|||
|
||||
set isEditable(aIsEditableString)
|
||||
{
|
||||
assertMIMEStuff(MIME_URI(this.mimeType), "editable", aIsEditableString);
|
||||
if (!this.mUpdateMode)
|
||||
assertMIMEStuff(MIME_URI(this.mimeType), "editable", aIsEditableString);
|
||||
else
|
||||
changeMIMEStuff(MIME_URI(this.mimeType), "editable", aIsEditableString);
|
||||
},
|
||||
|
||||
get largeIconURL()
|
||||
|
@ -57,7 +67,10 @@ HandlerOverride.prototype = {
|
|||
|
||||
set largeIconURL(aLargeIconURL)
|
||||
{
|
||||
assertMIMEStuff(MIME_URI(this.mimeType), "largeIcon", aLargeIconURL);
|
||||
if (!this.mUpdateMode)
|
||||
assertMIMEStuff(MIME_URI(this.mimeType), "largeIcon", aLargeIconURL);
|
||||
else
|
||||
changeMIMEStuff(MIME_URI(this.mimeType), "largeIcon", aLargeIconURL);
|
||||
},
|
||||
|
||||
get smallIconURL()
|
||||
|
@ -68,9 +81,12 @@ HandlerOverride.prototype = {
|
|||
return url;
|
||||
},
|
||||
|
||||
set smallIconURL()
|
||||
set smallIconURL(aSmallIconURL)
|
||||
{
|
||||
assertMIMEStuff(MIME_URI(this.mimeType), "smallIcon", aLargeIconURL);
|
||||
if (!this.mUpdateMode)
|
||||
assertMIMEStuff(MIME_URI(this.mimeType), "smallIcon", aSmallIconURL);
|
||||
else
|
||||
changeMIMEStuff(MIME_URI(this.mimeType), "smallIcon", aSmallIconURL);
|
||||
},
|
||||
|
||||
get extensions()
|
||||
|
@ -110,8 +126,20 @@ HandlerOverride.prototype = {
|
|||
|
||||
set saveToDisk(aSavedToDisk)
|
||||
{
|
||||
assertMIMEStuff(HANDLER_URI(this.mimeType), "saveToDisk", aSavedToDisk);
|
||||
},
|
||||
var handlerSource = gRDF.GetResource(HANDLER_URI(this.mimeType));
|
||||
var handlerProperty = gRDF.GetResource(NC_RDF("saveToDisk"));
|
||||
var trueLiteral = gRDF.GetLiteral("true");
|
||||
var hasSaveToDisk = gDS.HasAssertion(handlerSource, handlerProperty, trueLiteral, true);
|
||||
if (!hasSaveToDisk) {
|
||||
var falseLiteral = gRDF.GetLiteral("false");
|
||||
hasSaveToDisk = gDS.HasAssertion(handlerSource, handlerProperty, falseLiteral, true);
|
||||
}
|
||||
if (!this.mUpdateMode || !hasSaveToDisk)
|
||||
assertMIMEStuff(HANDLER_URI(this.mimeType), "saveToDisk", aSavedToDisk);
|
||||
else
|
||||
changeMIMEStuff(HANDLER_URI(this.mimeType), "saveToDisk", aSavedToDisk);
|
||||
this.setHandlerProcedure("handleInternal", "false");
|
||||
},
|
||||
|
||||
get handleInternal()
|
||||
{
|
||||
|
@ -120,7 +148,32 @@ HandlerOverride.prototype = {
|
|||
|
||||
set handleInternal(aHandledInternally)
|
||||
{
|
||||
assertMIMEStuff(HANDLER_URI(this.mimeType), "handleInternal", aHandledInternally);
|
||||
var handlerSource = gRDF.GetResource(HANDLER_URI(this.mimeType));
|
||||
var handlerProperty = gRDF.GetResource(NC_RDF("handleInternal"));
|
||||
var trueLiteral = gRDF.GetLiteral("true");
|
||||
var hasHandleInternal = gDS.HasAssertion(handlerSource, handlerProperty, trueLiteral, true);
|
||||
if (!hasHandleInternal) {
|
||||
var falseLiteral = gRDF.GetLiteral("false");
|
||||
hasHandleInternal = gDS.HasAssertion(handlerSource, handlerProperty, falseLiteral, true);
|
||||
}
|
||||
if (!this.mUpdateMode || !hasHandleInternal)
|
||||
assertMIMEStuff(HANDLER_URI(this.mimeType), "handleInternal", aHandledInternally);
|
||||
else
|
||||
changeMIMEStuff(HANDLER_URI(this.mimeType), "handleInternal", aHandledInternally);
|
||||
this.setHandlerProcedure("saveToDisk", "false");
|
||||
},
|
||||
|
||||
setHandlerProcedure: function (aHandlerProcedure, aValue)
|
||||
{
|
||||
var handlerSource = gRDF.GetResource(HANDLER_URI(this.mimeType));
|
||||
var handlerProperty = gRDF.GetResource(NC_RDF(aHandlerProcedure));
|
||||
var oppositeValue = aValue == "false" ? "true" : "false";
|
||||
var trueLiteral = gRDF.GetLiteral(oppositeValue);
|
||||
var hasCounterpart = gDS.HasAssertion(handlerSource, handlerProperty, trueLiteral, true);
|
||||
if (hasCounterpart) {
|
||||
var falseLiteral = gRDF.GetLiteral(aValue);
|
||||
gDS.Change(handlerSource, handlerProperty, trueLiteral, falseLiteral);
|
||||
}
|
||||
},
|
||||
|
||||
get alwaysAsk()
|
||||
|
@ -130,7 +183,10 @@ HandlerOverride.prototype = {
|
|||
|
||||
set alwaysAsk(aAlwaysAsk)
|
||||
{
|
||||
assertMIMEStuff(HANDLER_URI(this.mimeType), "alwaysAsk", aAlwaysAsk);
|
||||
if (!this.mUpdateMode)
|
||||
assertMIMEStuff(HANDLER_URI(this.mimeType), "alwaysAsk", aAlwaysAsk);
|
||||
else
|
||||
changeMIMEStuff(HANDLER_URI(this.mimeType), "alwaysAsk", aAlwaysAsk);
|
||||
},
|
||||
|
||||
// helper application
|
||||
|
@ -141,7 +197,10 @@ HandlerOverride.prototype = {
|
|||
|
||||
set appDisplayName(aDisplayName)
|
||||
{
|
||||
assertMIMEStuff(APP_URI(this.mimeType), "prettyName", aDisplayName);
|
||||
if (!this.mUpdateMode)
|
||||
assertMIMEStuff(APP_URI(this.mimeType), "prettyName", aDisplayName);
|
||||
else
|
||||
changeMIMEStuff(APP_URI(this.mimeType), "prettyName", aDisplayName);
|
||||
},
|
||||
|
||||
get appPath()
|
||||
|
@ -151,7 +210,10 @@ HandlerOverride.prototype = {
|
|||
|
||||
set appPath(aAppPath)
|
||||
{
|
||||
assertMIMEStuff(APP_URI(this.mimeType), "path", aAppPath);
|
||||
if (!this.mUpdateMode)
|
||||
assertMIMEStuff(APP_URI(this.mimeType), "path", aAppPath);
|
||||
else
|
||||
changeMIMEStuff(APP_URI(this.mimeType), "path", aAppPath);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -267,6 +329,15 @@ function assertMIMEStuff(aMIMEString, aPropertyString, aValueString)
|
|||
gDS.Assert(mimeSource, valueProperty, mimeLiteral, true);
|
||||
}
|
||||
|
||||
function changeMIMEStuff(aMIMEString, aPropertyString, aValueString)
|
||||
{
|
||||
var mimeSource = gRDF.GetResource(aMIMEString);
|
||||
var valueProperty = gRDF.GetResource(NC_RDF(aPropertyString));
|
||||
var mimeLiteral = gRDF.GetLiteral(aValueString);
|
||||
var currentValue = gDS.GetTarget(mimeSource, valueProperty, true);
|
||||
gDS.Change(mimeSource, valueProperty, currentValue, mimeLiteral);
|
||||
}
|
||||
|
||||
function unassertMIMEStuff(aMIMEString, aPropertyString, aValueString)
|
||||
{
|
||||
var mimeSource = gRDF.GetResource(aMIMEString);
|
||||
|
@ -275,4 +346,3 @@ function unassertMIMEStuff(aMIMEString, aPropertyString, aValueString)
|
|||
gDS.Unassert(mimeSource, valueProperty, mimeLiteral, true);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -164,11 +164,15 @@ function onOK()
|
|||
|
||||
// now save the information
|
||||
var handlerInfo = new HandlerOverride(MIME_URI(gMIMEField.value));
|
||||
handlerInfo.mUpdateMode = mimeHandlerExists(gMIMEField.value);
|
||||
handlerInfo.mimeType = gMIMEField.value;
|
||||
|
||||
// other info we need to set (not reflected in UI)
|
||||
if (gHandlerGroup.data == "2")
|
||||
if (gHandlerGroup.data == "2") {
|
||||
handlerInfo.appPath = gAppPath.value;
|
||||
handlerInfo.setHandlerProcedure("saveToDisk", "false");
|
||||
handlerInfo.setHandlerProcedure("handleInternal", "false");
|
||||
}
|
||||
else if (gHandlerGroup.data == "1")
|
||||
handlerInfo.saveToDisk = true;
|
||||
else
|
||||
|
|
|
@ -69,8 +69,10 @@ function onOK()
|
|||
window.close();
|
||||
}
|
||||
|
||||
|
||||
// now save the information
|
||||
var handlerInfo = new HandlerOverride(MIME_URI(gMIMEField.value));
|
||||
handlerInfo.mUpdateMode = exists; // XXX Somewhat sleazy, I know...
|
||||
handlerInfo.mimeType = gMIMEField.value;
|
||||
handlerInfo.description = gDescriptionField.value;
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ function newType()
|
|||
if (gNewTypeRV) {
|
||||
//gTree.builder.rebuild();
|
||||
gTree.setAttribute("ref", "urn:mimetypes");
|
||||
selectApplication();
|
||||
gNewTypeRV = null;
|
||||
}
|
||||
}
|
||||
|
@ -29,6 +30,7 @@ function editType()
|
|||
var uri = gTree.selectedItems[0].id;
|
||||
var handlerOverride = new HandlerOverride(uri);
|
||||
window.openDialog("chrome://communicator/content/pref/pref-applications-edit.xul", "appEdit", "chrome,modal=yes,resizable=no", handlerOverride);
|
||||
selectApplication();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -39,6 +41,8 @@ var gBundle = null;
|
|||
var gExtensionField = null;
|
||||
var gMIMETypeField = null;
|
||||
var gHandlerField = null;
|
||||
var gEditButton = null;
|
||||
var gRemoveButton = null;
|
||||
|
||||
function Startup()
|
||||
{
|
||||
|
@ -50,6 +54,8 @@ function Startup()
|
|||
gExtensionField = document.getElementById("extension");
|
||||
gMIMETypeField = document.getElementById("mimeType");
|
||||
gHandlerField = document.getElementById("handler");
|
||||
gEditButton = document.getElementById("editButton");
|
||||
gRemoveButton = document.getElementById("removeButton");
|
||||
|
||||
const mimeTypes = 66638;
|
||||
var fileLocator = Components.classes["component://netscape/filelocator"].getService();
|
||||
|
@ -83,6 +89,15 @@ function selectApplication()
|
|||
else
|
||||
gHandlerField.setAttribute("value", handlerOverride.appDisplayName);
|
||||
|
||||
if (handlerOverride.isEditable == "false") {
|
||||
gEditButton.setAttribute("disabled", "true");
|
||||
gRemoveButton.setAttribute("disabled", "true");
|
||||
}
|
||||
else {
|
||||
gEditButton.removeAttribute("disabled");
|
||||
gRemoveButton.removeAttribute("disabled");
|
||||
}
|
||||
|
||||
delete handlerOverride;
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче