Changeset 844
- Timestamp:
- 2008-03-04 20:31:01 (10 months ago)
- Files:
-
- trunk/chrome/content/dta/manager.js (modified) (2 diffs)
- trunk/chrome/content/dta/manager.xul (modified) (1 diff)
- trunk/chrome/content/dta/manager/metalinker.js (modified) (4 diffs)
- trunk/chrome/content/dta/manager/metaselect.xul (modified) (1 diff)
- trunk/chrome/content/dta/manager/tree.js (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/chrome/content/dta/manager.js
r837 r844 37 37 * ***** END LICENSE BLOCK ***** */ 38 38 39 const NS_DTA = 'http://www.downthemall.net/properties#'; 40 const NS_METALINKER = 'http://www.metalinker.org/'; 41 42 39 43 const NS_ERROR_MODULE_NETWORK = 0x804B0000; 40 44 const NS_ERROR_BINDING_ABORTED = NS_ERROR_MODULE_NETWORK + 2; … … 2473 2477 e.referrer 2474 2478 ); 2479 if (e.startDate) { 2480 d.startDate = e.startDate; 2481 } 2475 2482 if (e.url.hash) { 2476 2483 d.hash = e.url.hash; trunk/chrome/content/dta/manager.xul
r836 r844 102 102 <menuitem id="force" class="menuitem-iconic" label="&force.label;" image="chrome://dta/skin/manager/force.png" oncommand="Tree.force()" /> 103 103 <menuseparator /> 104 <menuitem id="import" class="menuitem-iconic" label="&import.label;" image="chrome://dta/skin/manager/import.png" oncommand="Tree.import();"/> 104 105 <menuitem id="export" class="menuitem-iconic" label="&export.label;" image="chrome://dta/skin/manager/export.png" oncommand="Tree.export();"/> 105 106 <menuseparator /> trunk/chrome/content/dta/manager/metalinker.js
r835 r844 102 102 }, 103 103 handleDownload: function ML_handleDownload(download) { 104 try { 105 download.state = CANCELED; 106 Tree.remove(download, false); 107 var file = new FileFactory(download.destinationFile); 108 109 var fiStream = new FileInputStream(file, 1, 0, false); 104 download.state = CANCELED; 105 Tree.remove(download, false); 106 var file = new FileFactory(download.destinationFile); 107 108 this.handleFile(file, download.referrer); 109 110 try { 111 file.remove(false); 112 } catch (ex) { 113 Debug.log("failed to remove metalink file!", ex); 114 } 115 }, 116 handleFile: function ML_handleFile(aFile, aReferrer) { 117 try { 118 119 if (aReferrer && 'spec' in aReferrer) { 120 aReferrer = aReferrer.spec; 121 } 122 123 var fiStream = new FileInputStream(aFile, 1, 0, false); 110 124 var domParser = new DOMParser(); 111 var doc = domParser.parseFromStream(fiStream, null, file.fileSize, "application/xml");125 var doc = domParser.parseFromStream(fiStream, null, aFile.fileSize, "application/xml"); 112 126 var root = doc.documentElement; 113 127 fiStream.close(); 114 128 115 try {116 file.remove(false);117 } catch (ex) {118 Debug.log("failed to remove metalink file!", ex);119 }120 121 122 129 if (root.nodeName != 'metalink' || root.getAttribute('version') != '3.0') { 123 130 throw new Error(_('mlinvalid')); 124 131 } 132 133 var aNum = Preferences.getDTA('numistance', 0); 134 if (++aNum > 999) { 135 aNum = 1; 136 } 137 Preferences.setDTA('numistance', aNum); 138 139 125 140 var locale = this.locale.split('-').map(function(l) { return l.slice(0, 2).toLowerCase(); }).reverse(); 126 141 var downloads = []; … … 128 143 for (var i = 0; i < files.length; ++i) { 129 144 var file = files[i]; 145 var referrer = null; 146 if (file.hasAttributeNS(NS_DTA, 'referrer')) { 147 referrer = file.getAttributeNS(NS_DTA, 'referrer'); 148 } 149 else { 150 referrer = aReferrer; 151 } 152 var num = aNum; 153 if (file.hasAttributeNS(NS_DTA, 'num')) { 154 try { 155 num = parseInt(file.getAttributeNS(NS_DTA, 'num')); 156 } catch (ex) { /* no-op */ } 157 } 158 var startDate = new Date(); 159 if (file.hasAttributeNS(NS_DTA, 'date')) { 160 try { 161 startDate = new Date(parseInt(file.getAttributeNS(NS_DTA, 'num'))); 162 } catch (ex) { /* no-op */ } 163 } 164 130 165 var urls = []; 131 166 var urlNodes = this._getNodes(file, 'ml:resources/ml:url'); … … 182 217 downloads.push({ 183 218 'url': new UrlManager(urls), 184 'referrer': download.referrer ? download.referrer.spec : null, 185 'numIstance': 0, 186 'mask': download.mask, 187 'dirSave': download.pathName, 219 'referrer': referrer ? referrer : null, 220 'numIstance': num, 188 221 'description': desc, 222 'startDate': startDate, 189 223 'ultDescription': '', 190 224 'hash': hash, … … 294 328 } 295 329 }, 330 browseDir: function() { 331 332 // get a new directory 333 var newDir = Utils.askForDir( 334 $('directory').value, // initialize dialog with the current directory 335 _("validdestination") 336 ); 337 // alright, we got something new, so lets set it. 338 if (newDir) { 339 $('directory').value = newDir; 340 } 341 }, 296 342 accept: function ML_accept() { 297 var nodes = document.getElementsByTagName('richlistitem'); 298 for (var i = 0; i < nodes.length; ++i) { 299 nodes[i].download.selected = nodes[i].checked; 300 } 343 if ($('directory', 'renaming').some( 344 function(e) { 345 if (!e.value) { 346 e.focus(); 347 e.style.border = "1px solid red"; 348 return true; 349 } 350 return false; 351 } 352 )) { 353 return false; 354 } 355 356 Array.forEach( 357 document.getElementsByTagName('richlistitem'), 358 function(n) { 359 n.download.dirSave = $('directory').value; 360 n.download.mask = $('renaming').value; 361 n.download.selected = n.checked; 362 }, 363 this 364 ); 365 return true; 301 366 }, 302 367 cancel: function ML_cancel() { trunk/chrome/content/dta/manager/metaselect.xul
r654 r844 110 110 111 111 <richlistbox context="context" id="downloads" class="metalinker" flex="1" suppressonselect="true"/> 112 113 <hbox style="margin:7px 7px 3px 7px;" > 114 <vbox autostretch="never" flex="1"> 115 <caption label="&dest.caption;" /> 116 <hbox> 117 <saveddropdown id="directory" preference="directory" flex="1"/> 118 <toolbarbutton id="browsedir" oncommand="Metalinker.browseDir();" tooltiptext="&browse.tip;" /> 119 </hbox> 120 </vbox> 121 <vbox id="renamingbox"> 122 <caption label="&mask.label;:" /> 123 <hbox> 124 <saveddropdown id="renaming" preference="renaming" flex="1" tooltiptext="&mask.tip;"/> 125 <maskbutton/> 126 </hbox> 127 </vbox> 128 </hbox> 129 112 130 </dialog> trunk/chrome/content/dta/manager/tree.js
r836 r844 38 38 const ConverterOutputStream = Construct('@mozilla.org/intl/converter-output-stream;1', 'nsIConverterOutputStream', 'init'); 39 39 40 const NS_DTA = 'http://www.downthemall.net/properties#';41 const NS_METALINKER = 'http://www.metalinker.org/';42 43 40 DTA_include("common/verinfo.js"); 44 41 … … 457 454 let fp = new FilePicker(window, _('exporttitle'), Ci.nsIFilePicker.modeSave); 458 455 fp.appendFilters(Ci.nsIFilePicker.filterHTML | Ci.nsIFilePicker.filterText); 459 fp.appendFilter(_(' exportfiltermetalink'), '*.metalink');456 fp.appendFilter(_('filtermetalink'), '*.metalink'); 460 457 fp.defaultExtension = "metalink"; 461 458 fp.filterIndex = 2; … … 548 545 549 546 return true; 547 }, 548 import: function T_import() { 549 try { 550 if (!this._import()) { 551 throw new Exception("Cannot import"); 552 } 553 } 554 catch (ex) { 555 Debug.log("Cannot import downloads", ex); 556 DTA_alert(_('importtitle'), _('importfailed')); 557 } 558 }, 559 _import: function T_import() { 560 let fp = new FilePicker(window, _('importtitle'), Ci.nsIFilePicker.modeOpen); 561 fp.appendFilters(Ci.nsIFilePicker.filterText); 562 fp.appendFilter(_('filtermetalink'), '*.metalink'); 563 fp.defaultExtension = "metalink"; 564 fp.filterIndex = 1; 565 566 let rv = fp.show(); 567 if (rv == Ci.nsIFilePicker.returnOK) { 568 switch (fp.filterIndex) { 569 case 0: return this._importText(fp.file); 570 case 1: return this._importMetalink(fp.file); 571 } 572 } 573 return false; 574 }, 575 _importText: function T__importText() { 576 577 }, 578 _importMetalink: function T__importMetalink(file) { 579 try { 580 DTA_include("dta/manager/metalinker.js"); 581 Metalinker.handleFile(file); 582 return true; 583 } 584 catch (ex) { 585 Debug.log("T__importMetalink", ex); 586 } 587 return false; 550 588 }, 551 589 showInfo: function T_showInfo() {
