summaryrefslogtreecommitdiffabout
path: root/content/fireflix.js
Unidiff
Diffstat (limited to 'content/fireflix.js') (more/less context) (show whitespace changes)
-rw-r--r--content/fireflix.js25
1 files changed, 18 insertions, 7 deletions
diff --git a/content/fireflix.js b/content/fireflix.js
index 995ec5c..7291b68 100644
--- a/content/fireflix.js
+++ b/content/fireflix.js
@@ -311,49 +311,49 @@ var fireflix = {
311 // is it ascii or could it be utf8? 311 // is it ascii or could it be utf8?
312 this.drop_urilist(ev,splitascii(d.data),s); 312 this.drop_urilist(ev,splitascii(d.data),s);
313 break; 313 break;
314 default: alert(d.flavour.contentType+':'+d.data); break; 314 default: alert(d.flavour.contentType+':'+d.data); break;
315 }; 315 };
316 }, 316 },
317 drop_urilist: function(ev,ul,s) { 317 drop_urilist: function(ev,ul,s) {
318 // TODO: check for being a file? 318 // TODO: check for being a file?
319 var us = decodeURIComponent(ul).split(/[\r\n]/); 319 var us = decodeURIComponent(ul).split(/[\r\n]/);
320 for(var ui in us) 320 for(var ui in us)
321 if(/\S/.test(us[ui])) 321 if(/\S/.test(us[ui]))
322 this.fireflix.uploads.add(us[ui]); 322 this.fireflix.uploads.add(us[ui]);
323 document.getElementById('fireflix_tabs').selectedTab 323 document.getElementById('fireflix_tabs').selectedTab
324 = document.getElementById('tab_upload'); 324 = document.getElementById('tab_upload');
325 } 325 }
326 }, 326 },
327 327
328 uploads: { 328 uploads: {
329 fireflix: null, 329 fireflix: null,
330 init: function(f) { 330 init: function(f) {
331 this.fireflix=f; 331 this.fireflix=f;
332 pull_elements(this,document,[ 332 pull_elements(this,document,[
333 'upload_filename','upload_title','upload_file_preview', 333 'upload_filename','upload_title','upload_file_preview',
334 'upload_file_props','upload_progress','upload_tags', 334 'upload_file_props','upload_progress','upload_tags',
335 'cmd_uploads_upload' 335 'cmd_uploads_upload', 'upload_failure'
336 ]); 336 ]);
337 document.getElementById('uploadlist').view = this; 337 document.getElementById('uploadlist').view = this;
338 }, 338 },
339 files: new Array(), 339 files: new Array(),
340 rowCount: 0, 340 rowCount: 0,
341 getCellText: function(r,c) { 341 getCellText: function(r,c) {
342 var f = this.files[r]; 342 var f = this.files[r];
343 if(c.id=='up_file') return f.file; 343 if(c.id=='up_file') return f.file;
344 if(c.id=='up_title') return f.title; 344 if(c.id=='up_title') return f.title;
345 if(c.id=='up_status') return f.state; 345 if(c.id=='up_status') return f.state;
346 return c.id; 346 return c.id;
347 }, 347 },
348 setTree: function(t) { this.tree = t }, 348 setTree: function(t) { this.tree = t },
349 isContainer: function(r) { return false; }, 349 isContainer: function(r) { return false; },
350 isSeparator: function(r) { return false; }, 350 isSeparator: function(r) { return false; },
351 isSorted: function(r) { return false; }, 351 isSorted: function(r) { return false; },
352 getLevel: function(r) { return 0; }, 352 getLevel: function(r) { return 0; },
353 getImageSrc: function(r,c) { return null }, 353 getImageSrc: function(r,c) { return null },
354 getRowProperties: function(r,p) { 354 getRowProperties: function(r,p) {
355 try { 355 try {
356 if(!Components) return; 356 if(!Components) return;
357 }catch(e) { return } 357 }catch(e) { return }
358 var f = this.files[r]; 358 var f = this.files[r];
359 var as = Components.classes['@mozilla.org/atom-service;1']. 359 var as = Components.classes['@mozilla.org/atom-service;1'].
@@ -468,101 +468,112 @@ var fireflix = {
468 ); 468 );
469 } 469 }
470 } 470 }
471 this.selection.clearSelection(); 471 this.selection.clearSelection();
472 this.cmd_uploads_upload.setAttribute('disabled','false'); 472 this.cmd_uploads_upload.setAttribute('disabled','false');
473 this.upload_progress.setAttribute('hidden','true'); 473 this.upload_progress.setAttribute('hidden','true');
474 }, 474 },
475 475
476 clear_list: function() { 476 clear_list: function() {
477 this.tree.beginUpdateBatch(); 477 this.tree.beginUpdateBatch();
478 this.rowCount = 0; 478 this.rowCount = 0;
479 this.files = new Array(); 479 this.files = new Array();
480 this.tree.endUpdateBatch(); 480 this.tree.endUpdateBatch();
481 this.selToProps(); 481 this.selToProps();
482 }, 482 },
483 selectionChanged: function() { 483 selectionChanged: function() {
484 this.selToProps(); 484 this.selToProps();
485 }, 485 },
486 disableProps: function() { 486 disableProps: function() {
487 this.upload_filename.value=''; 487 this.upload_filename.value='';
488 this.upload_filename.disabled = true; 488 this.upload_filename.disabled = true;
489 this.upload_title.value=''; 489 this.upload_title.value='';
490 this.upload_title.disabled = true; 490 this.upload_title.disabled = true;
491 this.upload_file_preview.src = null; 491 this.upload_file_preview.src = null;
492 this.upload_file_props.hidden = true;
493 this.upload_tags.value=''; 492 this.upload_tags.value='';
494 this.upload_tags.disabled = true; 493 this.upload_tags.disabled = true;
494 /* this.upload_file_props.hidden = true; */
495 }, 495 },
496 selToProps: function() { 496 selToProps: function() {
497 if(!this.selection.count) { 497 if(!this.selection.count) {
498 this.disableProps(); 498 this.disableProps();
499 this.upload_file_props.hidden = true;
499 }else if(this.selection.count==1) { 500 }else if(this.selection.count==1) {
500 var f=this.files[this.selection.currentIndex]; 501 var f=this.files[this.selection.currentIndex];
501 if(f==null || f.state!='pending') { 502 if(f==null) {
502 this.disableProps(); 503 this.disableProps();
504 this.upload_file_props.hidden = true;
503 }else{ 505 }else{
506 var inactives = f.state!='pending';
504 this.upload_filename.value = f.file; 507 this.upload_filename.value = f.file;
505 this.upload_filename.disabled = false; 508 this.upload_filename.disabled = inactives;
506 this.upload_title.value = f.title; 509 this.upload_title.value = f.title;
507 this.upload_title.disabled = false; 510 this.upload_title.disabled = inactives;
508 this.upload_file_preview.src = 'file:///'+f.file; 511 this.upload_file_preview.src = 'file:///'+f.file;
509 this.upload_file_props.hidden = false;
510 this.upload_tags.value = f.tags; 512 this.upload_tags.value = f.tags;
511 this.upload_tags.disabled = false; 513 this.upload_tags.disabled = inactives;
514 if(f.state=='failed') {
515 this.upload_failure.textContent=f.flickr_errcode+': '+f.flickr_errmsg;
516 this.upload_failure.hidden = false;
517 }else{
518 this.upload_failure.hidden = true;
519 }
520 this.upload_file_props.hidden = false;
512 } 521 }
513 }else{ 522 }else{
514 var ftitle = null; var onetitle = true; 523 var ftitle = null; var onetitle = true;
515 var ftags = null; var onetag = true; 524 var ftags = null; var onetag = true;
516 var fs = 0; 525 var fs = 0;
517 for(var ff in this.files) { 526 for(var ff in this.files) {
518 if(this.selection.isSelected(ff) && this.files[ff].state=='pending' ) { 527 if(this.selection.isSelected(ff) && this.files[ff].state=='pending' ) {
519 ++fs; 528 ++fs;
520 if(ftitle==null) { 529 if(ftitle==null) {
521 ftitle = this.files[ff].title; 530 ftitle = this.files[ff].title;
522 }else if(ftitle!=this.files[ff].title) { 531 }else if(ftitle!=this.files[ff].title) {
523 onetitle = false; 532 onetitle = false;
524 } 533 }
525 if(ftags==null) { 534 if(ftags==null) {
526 ftags = this.files[ff].tags; 535 ftags = this.files[ff].tags;
527 }else if(ftags!=this.files[ff].tags) { 536 }else if(ftags!=this.files[ff].tags) {
528 onetag = false; 537 onetag = false;
529 } 538 }
530 } 539 }
531 } 540 }
532 if(fs) { 541 if(fs) {
533 this.upload_filename.value=''; 542 this.upload_filename.value='';
534 this.upload_filename.disabled = true; 543 this.upload_filename.disabled = true;
535 if(onetitle) 544 if(onetitle)
536 this.upload_title.value = ftitle; 545 this.upload_title.value = ftitle;
537 this.upload_title.disabled = false; 546 this.upload_title.disabled = false;
538 if(onetag) 547 if(onetag)
539 this.upload_tags.value = ftags; 548 this.upload_tags.value = ftags;
540 this.upload_tags.disabled = false; 549 this.upload_tags.disabled = false;
541 this.upload_file_preview.src = null; 550 this.upload_file_preview.src = null;
551 this.upload_failure.hidden = true;
542 this.upload_file_props.hidden = false; 552 this.upload_file_props.hidden = false;
543 }else 553 }else
544 this.disableProps(); 554 this.disableProps();
555 this.upload_file_props.hidden = true;
545 } 556 }
546 }, 557 },
547 propsToSel: function(prop) { 558 propsToSel: function(prop) {
548 if(this.selection.count<=0) return; 559 if(this.selection.count<=0) return;
549 for(var ff in this.files) { 560 for(var ff in this.files) {
550 if(this.selection.isSelected(ff) && this.files[ff].state=='pending') { 561 if(this.selection.isSelected(ff) && this.files[ff].state=='pending') {
551 if(prop=='filename') 562 if(prop=='filename')
552 this.files[ff].file = this.upload_filename.value; 563 this.files[ff].file = this.upload_filename.value;
553 if(prop=='title') 564 if(prop=='title')
554 this.files[ff].title = this.upload_title.value; 565 this.files[ff].title = this.upload_title.value;
555 if(prop=='tags') 566 if(prop=='tags')
556 this.files[ff].tags = this.upload_tags.value; 567 this.files[ff].tags = this.upload_tags.value;
557 this.tree.invalidateRow(ff); 568 this.tree.invalidateRow(ff);
558 } 569 }
559 } 570 }
560 }, 571 },
561 572
562 on_upload: function() { 573 on_upload: function() {
563 this.selToProps(); 574 this.selToProps();
564 this.batch_ids = new Array(); 575 this.batch_ids = new Array();
565 this.upload_progress.value=0; 576 this.upload_progress.value=0;
566 this.upload_progress.setAttribute('hidden','false'); 577 this.upload_progress.setAttribute('hidden','false');
567 this.upload_worker(); 578 this.upload_worker();
568 }, 579 },