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:
ben%netscape.com 2000-07-07 05:44:53 +00:00
Родитель 7a11b65ba3
Коммит 576104c21d
4 изменённых файлов: 105 добавлений и 14 удалений

Просмотреть файл

@ -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;
}
}