44
44
window.addEventListener("load", showContentList, false);
46
var gBrowser = document.getElementById("content");
46
47
var usedMimeTypes = new Array();
47
48
var allHandledMimeTypes = new Array();
48
49
var filteredMimeTypes = null;
61
62
store[mtype] = "x";
65
var filehintNameMap = null;
68
function parseFilehintNameText (text)
71
var array = new Array();
75
next = text.indexOf("\n", start);
78
array.push(text.substring(start, next));
80
next = text.indexOf("\n", start);
82
array.push(text.substring(start));
90
for (let a = 0; a < array.length; a++) {
92
separator = line.indexOf(":");
93
left = line.substring(0, separator);
94
right = line.substring(separator+2);
95
if (left == "filehint")
104
function getFilehintNameMap () {
106
return filehintNameMap;
108
var url = "http://localhost/~asac/cgi-bin/plugin-finder.py?op=filehint2name&distributionID=8.10";
110
url = prefBranch.getCharPref("pfs.filehint.url");
113
var req = new XMLHttpRequest();
114
req.open('GET', url, true); /* 3rd argument, true, marks this as async */
115
req.onreadystatechange = function (aEvt) {
116
if (req.readyState == 4) {
117
if(req.status == 200) {
118
filehintNameMap = parseFilehintNameText (req.responseText);
127
if (!filehintNameMap)
128
getFilehintNameMap();
65
130
function showContentList(){
117
183
if(!perfectMatchPlugin)
118
return "no plugin avail";
186
for (betterNameCarrierKey in filehintNameMap) {
187
if (perfectMatchPlugin.filename && perfectMatchPlugin.filename.indexOf(betterNameCarrierKey) > -1) {
188
return filehintNameMap[betterNameCarrierKey];
119
192
if(perfectMatchPlugin.name.indexOf("Shockwave Flash") >= 0 ||
120
193
perfectMatchPlugin.name.indexOf("Windows Media Player") >= 0)
121
194
return perfectMatchPlugin.description;
136
209
if (_list.selectedItem)
137
210
_list.setAttribute("lastSelectedType", _list.selectedItem.getAttribute("type"));
213
function onSelectUsedPlugins (e) {
214
filteredMimeTypes = usedMimeTypes;
218
function onSelectAllPlugins (e) {
219
filteredMimeTypes = allHandledMimeTypes;
140
223
var gApplicationsPane = {
142
225
rebuildActionsMenu: function() {
226
var filehintNameMap = getFilehintNameMap();
143
227
var _list = document.getElementById("pluginsList");
144
228
var typeItem = _list.selectedItem;
145
229
var menu = document.getAnonymousElementByAttribute(typeItem, "class", "actionsMenu");
149
233
while (menuPopup.hasChildNodes())
150
234
menuPopup.removeChild(menuPopup.lastChild);
152
237
for each (let mimeType in filteredMimeTypes) {
153
238
for (var i = 0; i < pluginArrayLength; i++) {
154
239
var plugin = navigator.plugins[i];
155
240
for (var j = 0; j < plugin.length; j++) {
156
241
if(plugin.item(j).type == mimeType && typeItem.type == mimeType){
157
let menuItem = document.createElement("menuitem");
242
menuItem = document.createElement("menuitem");
158
243
var pluginName = plugin.name;
159
244
if(pluginName.indexOf("Shockwave Flash") >= 0)
160
245
pluginName = plugin.description;
246
for (betterNameCarrierKey in filehintNameMap) {
247
if (plugin.filename && plugin.filename.indexOf(betterNameCarrierKey) > -1) {
248
pluginName = filehintNameMap[betterNameCarrierKey];
161
251
menuItem.setAttribute("label", pluginName);
252
menuItem.setAttribute("id", pluginName);
162
253
menuItem.ubufoxPlugin = plugin;
163
254
menuItem.setAttribute(APP_ICON_ATTR_NAME, "plugin");
164
255
menuPopup.appendChild(menuItem);
260
var strbundle = document.getElementById("ubufox-alt-strings")
261
var search = strbundle.getString("ubufox.altplugins.search");
263
menuItem = document.createElement("menuitem");
264
menuItem.setAttribute("id", "install-plugin-handler");
265
menuItem.setAttribute("label", search);
266
menuItem.type = typeItem.type;
267
menuPopup.appendChild(menuItem);
171
270
onSelectAction: function(aActionItem) {
172
271
var _list = document.getElementById("pluginsList");
173
272
var typeItem = _list.selectedItem;
174
var pluginArrayLength = navigator.plugins.length;
175
prefBranch.setCharPref("modules.plugins.mimetype." + typeItem.type, aActionItem.ubufoxPlugin.filename);
176
pluginManager.reloadPlugins(true);
274
var id = aActionItem.getAttribute ("id");
275
if (id == "install-plugin-handler") {
276
var pluginInfoArray = {};
277
var fakePluginInfo = new Object();
278
fakePluginInfo.mimetype = typeItem.type;
279
fakePluginInfo.pluginsPage = "";
280
pluginInfoArray[typeItem.type] = fakePluginInfo;
282
window.openDialog("chrome://mozapps/content/plugins/pluginInstallerWizard.xul",
283
"PFSWindow", "chrome,centerscreen,resizable=yes,width=600,height=600",
284
{plugins: pluginInfoArray, browser: gBrowser});
286
pluginManager.reloadPlugins(true);
290
prefBranch.setCharPref("modules.plugins.mimetype." + typeItem.type, aActionItem.ubufoxPlugin.filename);
291
pluginManager.reloadPlugins(true);