author | Michael Krelin <hacker@klever.net> | 2006-09-29 23:02:49 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2006-09-29 23:02:49 (UTC) |
commit | 74a277c2d7ac5416c3b55565e6d5e8e5a15b389d (patch) (side-by-side diff) | |
tree | 755ac7da52079e87a29b68191e66d7e1d7c0a766 | |
parent | 3cf3cf1000ce6b27ac622c75fc3d114874e2f3a8 (diff) | |
download | fireflix-74a277c2d7ac5416c3b55565e6d5e8e5a15b389d.zip fireflix-74a277c2d7ac5416c3b55565e6d5e8e5a15b389d.tar.gz fireflix-74a277c2d7ac5416c3b55565e6d5e8e5a15b389d.tar.bz2 |
code beauty: mass-assignment of xul elements to member variables
git-svn-id: http://svn.klever.net/kin/fireflix/trunk@169 fe716a7a-6dde-0310-88d9-d003556173a8
-rw-r--r-- | content/fireflix.js | 36 | ||||
-rw-r--r-- | content/util.js | 9 |
2 files changed, 23 insertions, 22 deletions
diff --git a/content/fireflix.js b/content/fireflix.js index daf4929..98b6d41 100644 --- a/content/fireflix.js +++ b/content/fireflix.js @@ -1,72 +1,68 @@ function splitascii(s) { var rv=''; for(var i=0;i<s.length;++i) { var w = s.charCodeAt(i); rv += String.fromCharCode( w&0xff, (w>>8)&0xff ); } return rv; } var fireflix = { flickr: new Flickr(), init: function() { - this.cmd_auth_auth = document.getElementById('cmd_auth_auth'); - this.cmd_auth_done = document.getElementById('cmd_auth_done'); - this.cmd_auth_unauth = document.getElementById('cmd_auth_unauth'); - this.menu_auth_done = document.getElementById('menu_auth_done'); - this.b_auth = document.getElementById('b_auth'); - this.b_auth_done = document.getElementById('b_auth_done'); - this.auth_info = document.getElementById('auth_info'); - this.loc_strings = document.getElementById('loc_strings'); + pull_elements(this,document,[ + 'cmd_auth_auth','cmd_auth_done','cmd_auth_unauth', + 'menu_auth_done','b_auth','b_auth_done','auth_info', + 'loc_strings','cmd_set_props' + ]); this.build_menus(); - this.cmd_set_props = document.getElementById('cmd_set_props'); this.foundphotos.init(this); this.photosets.init(this); this.photoset.init(this); this.uploads.init(this); this.uploadObserver.init(this); this.flickr.api_key = '9c43cd66947a57e6f29db1a9da3f72e3'; this.flickr.api_shs = '9c33c9e2f0f0cfd5'; this.flickr.prefs_root = 'net.klever.kin.fireflix'; this.flickr.load_token(); document.getElementById('setslist').view = this.photosets; document.getElementById('setphotos').view = this.photoset; document.getElementById('uploadlist').view = this.uploads; this.no_auth_info_label = this.auth_info.value; this.set_auth_state(this.flickr.token,false); if(this.flickr.token) { this.refresh_stuff(); }else{ this.on_cmd_auth(); } }, set_auth_state: function(au,inp) { /* authorized, in progress */ this.cmd_auth_unauth.disabled = !au; this.b_auth.hidden = au || inp; this.b_auth_done.hidden = !inp; this.menu_auth_done.hidden = !inp; this.cmd_auth_done.setAttribute('disabled',!inp); this.auth_info.disabled = !au; if(au) { this.auth_info.value = this.flickr.user.fullname+' ['+this.flickr.user.username+']'; /* TODO: move to locale */ }else{ this.auth_info.value = this.no_auth_info_label; } }, on_cmd_auth: function() { var _this = this; this.flickr.authorize_0( function() { _this.set_auth_state(_this.flickr.token,true); }, function(x,s,c,m) { _this.flickr_failure(x,s,c,m); } ); }, on_cmd_auth_done: function() { this.set_auth_state(this.flickr.token,false); var _this = this; this.flickr.authorize_1( function() { @@ -267,102 +263,100 @@ var fireflix = { }, onDrop: function(ev,dd,s) { var ldf = null; for(var i in dd.dataList) { var di = dd.dataList[i]; var dif = di.first; if( ldf==null || ldf.flavour.contentType!=dif.flavour.contentType || ldf.contentLength!=dif.contentLength || ldf.data!=dif.data ) this.drop_item(ev,di,s); ldf = dif; } }, drop_item: function(ev,di,s) { var d = di.first; switch(d.flavour.contentType) { case 'text/unicode': this.drop_urilist(ev,d.data,s); break; case 'application/x-moz-file': this.fireflix.uploads.add(d.data.path); document.getElementById('fireflix_tabs').selectedTab = document.getElementById('tab_upload'); break; case 'text/uri-list': // is it ascii or could it be utf8? this.drop_urilist(ev,splitascii(d.data),s); break; default: alert(d.flavour.contentType+':'+d.data); break; }; }, drop_urilist: function(ev,ul,s) { // TODO: check for being a file? var us = decodeURIComponent(ul).split(/[\r\n]/); for(var ui in us) if(/\S/.test(us[ui])) this.fireflix.uploads.add(us[ui]); document.getElementById('fireflix_tabs').selectedTab = document.getElementById('tab_upload'); } }, uploads: { fireflix: null, init: function(f) { this.fireflix=f; - this.upload_filename = document.getElementById('upload_filename'); - this.upload_title = document.getElementById('upload_title'); - this.upload_file_preview = document.getElementById('upload_file_preview'); - this.upload_file_props = document.getElementById('upload_file_props'); - this.upload_progress = document.getElementById('upload_progress'); - this.upload_tags = document.getElementById('upload_tags'); + pull_elements(this,document,[ + 'upload_filename','upload_title','upload_file_preview', + 'upload_file_props','upload_progress','upload_tags' + ]); }, files: new Array(), rowCount: 0, getCellText: function(r,c) { var f = this.files[r]; if(c.id=='up_file') return f.file; if(c.id=='up_title') return f.title; if(c.id=='up_status') return f.state; return c.id; }, setTree: function(t) { this.tree = t }, isContainer: function(r) { return false; }, isSeparator: function(r) { return false; }, isSorted: function(r) { return false; }, getLevel: function(r) { return 0; }, getImageSrc: function(r,c) { return null }, getRowProperties: function(r,p) { try { if(!Components) return; }catch(e) { return } var f = this.files[r]; var as = Components.classes['@mozilla.org/atom-service;1']. getService(Components.interfaces.nsIAtomService); p.AppendElement(as.getAtom(f.state)); }, getCellProperties: function(r,c,p) { this.getRowProperties(r,p); }, getColumnProperties: function(c,p) { }, cycleHeader: function(cid,e) { }, getParentIndex: function(r) { return -1; }, drop: function(r,o) { }, canDropBeforeAfter: function(r,b) { return false }, add: function(f) { if(f.indexOf('file:/')==0) { f = f.substr(5); while(f.substr(0,2)=='//') { // XXX: not very performant, is it? ;-) f = f.substr(1); } } var t = f; var ls = t.lastIndexOf('/'); if(ls>0) t = t.substr(ls+1); ls = t.lastIndexOf('\\'); if(ls>0) t = t.substr(ls+1); var ld = t.lastIndexOf('.'); if(ld>0) t = t.substr(0,ld); this.files.push( { file: f, @@ -646,104 +640,102 @@ var fireflix = { this.refresh_sets(); }, on_cmd_sets_html: function(csfx,ev) { var uti = csfx.charAt(0); var utl = csfx.charAt(1); var rv = this.build_html(this.photoset.photos,uti,utl); this.popup_content(rv); }, on_cmd_uploads_html: function(csfx,ev) { var uti = csfx.charAt(0); var utl = csfx.charAt(1); var pids = new Array(); for(var f in this.uploads.files) { if(this.uploads.selection.isSelected(f)) if(this.uploads.files[f].photoid) pids.push(this.uploads.files[f].photoid); } var pp = this.uploads.rowCount*2; if(pp>500) pp = 500; var _this = this; this.flickr.api_call( { method: 'flickr.photos.search', auth_token: 'default', extras: 'original_format', user_id: 'me', per_page: pp }, function(xr) { var x = xr.responseXML; var rv = ''; for(var pn in pids) { var p = pids[pn]; var pp = new Photo(xp_node('/rsp/photos/photo[@id='+p+']',x)); rv += _this.photo_html(pp,uti,utl)+'\n'; } _this.popup_content(rv); }, function(x,s,c,m) { _this.flickr_failure(x,s,c,m); } ); }, /* * */ foundphotos: { fireflix: null, init: function(f) { this.fireflix = f; - this.search_for = document.getElementById('search_for'); - this.search_tags= document.getElementById('search_tags'); - this.search_mine = document.getElementById('search_mine'); + pull_elements(this,document,[ + 'search_for','search_tags','search_mine', + 'searchresult_props','search_photo', + 'searchresult_title','searchresult_description' + ]); document.getElementById('searchresults').view = this; - this.searchresult_props = document.getElementById('searchresult_props'); - this.search_photo = document.getElementById('search_photo'); - this.searchresult_title = document.getElementById('searchresult_title'); - this.searchresult_description = document.getElementById('searchresult_description'); }, photos: new Array(), rowCount: 0, getCellText: function(r,c) { var p = this.photos[r]; if(c.id=='sr_title') return p.title; return c.id; }, setTree: function(t) { this.tree = t }, isContainer: function(r) { return false }, isSeparator: function(r) { return false }, isSorted: function(r) { return false }, getLevel: function(r) { return 0 }, getImageSrc: function(r,c) { return null }, getRowProperties: function(r,p) { }, getCellProperties: function(cid,cel,p) { }, getColumnProperties: function(cid,cel,p) { }, cycleHeader: function(cid,e) { }, getParentIndex: function(r) { return -1 }, drop: function(r,o) { }, canDropBeforeAfter: function(r,b) { return false }, importXPR: function(xp) { this.selection.clearSelection(); this.selection.currentIndex = -1; this.searchresult_props.hidden = true; this.tree.beginUpdateBatch(); this.photos = new Array(); var n; while(n=xp.iterateNext()) { this.photos.push(new Photo(n)); } this.rowCount = this.photos.length; this.tree.endUpdateBatch(); }, search_photos: function() { var pars = { method: 'flickr.photos.search', auth_token: 'default', extras: 'license,date_upload,date_taken,owner_name,icon_server,original_format,last_update,geo' }; if(this.search_mine.checked) pars.user_id='me'; if(this.search_tags.checked) { pars.tags=this.search_for.value.split(/ +/).join(','); }else{ pars.text=this.search_for.value; } var _this = this; diff --git a/content/util.js b/content/util.js index 5af0978..c4af09e 100644 --- a/content/util.js +++ b/content/util.js @@ -14,48 +14,57 @@ function toutf8(ucode) { 0x80|( cc &0x3f) ); else if(cc<=0xffff) rv += String.fromCharCode( 0xe0|((cc>>12)&0x0f), 0x80|((cc>> 6)&0x3f), 0x80|( cc &0x3f) ); else if(cc<=0x1fffff) rv += String.fromCharCode( 0xf0|((cc>>18)&0x07), 0x80|((cc>>12)&0x3f), 0x80|((cc>> 6)&0x3f), 0x80|( cc &0x3f) ); else if(cc<=0x03ffffff) rv += String.fromCharCode( 0xf8|((cc>>24)&0x03), 0x80|((cc>>18)&0x3f), 0x80|((cc>>12)&0x3f), 0x80|((cc>> 6)&0x3f), 0x80|( cc &0x3f) ); else if(cc<=0x7fffffff) rv += String.fromCharCode( 0xfc|((cc>>30)&0x01), 0x80|((cc>>24)&0x3f), 0x80|((cc>>18)&0x3f), 0x80|((cc>>12)&0x3f), 0x80|((cc>> 6)&0x3f), 0x80|( cc &0x3f) ); } return rv; } /* * extract xpath-specified string value */ function xp_str(xp,x) { var rv = x.evaluate( xp, x, null, XPathResult.STRING_TYPE, null ); return rv.stringValue; } /* * extract xpath-specified node */ function xp_node(xp,x) { var rv = x.evaluate( xp, x, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ); return rv.singleNodeValue; } +/* + * pull in elements into documents as a member variables + */ +function pull_elements(th,d,els) { + for(var e in els) { + var en=els[e]; + th[en] = d.getElementById(en); + } +} |