-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | NEWS.xml | 1 | ||||
-rw-r--r-- | content/fireflix-panel.xul | 1 | ||||
-rw-r--r-- | content/fireflix.js | 12 | ||||
-rw-r--r-- | content/flickr.js | 4 |
5 files changed, 15 insertions, 4 deletions
@@ -1,19 +1,20 @@ | |||
1 | 0.0.5 () | 1 | 0.0.5 () |
2 | - Added toolbar button | 2 | - Added toolbar button |
3 | - Enter or double click on photo in set now opens photo in flickr | 3 | - Enter or double click on photo in set now opens photo in flickr |
4 | - Double click on photoset opens photoset in flickr | ||
4 | 0.0.4 (November 13th, 2006) | 5 | 0.0.4 (November 13th, 2006) |
5 | - Added button to remove linebreaks from generated HTML | 6 | - Added button to remove linebreaks from generated HTML |
6 | - Added the word 'sidebar' to the extension name so that you don't have to look hard for it | 7 | - Added the word 'sidebar' to the extension name so that you don't have to look hard for it |
7 | - UI polishing, including making it more boring | 8 | - UI polishing, including making it more boring |
8 | - code cosmetics | 9 | - code cosmetics |
9 | 0.0.3 (November 6th, 2006) | 10 | 0.0.3 (November 6th, 2006) |
10 | - Firefox 2.0 compatibility | 11 | - Firefox 2.0 compatibility |
11 | 0.0.2 (October 17th, 2006) | 12 | 0.0.2 (October 17th, 2006) |
12 | - Added brief help file | 13 | - Added brief help file |
13 | - Fixed HTML generation code | 14 | - Fixed HTML generation code |
14 | - Fixed a mistyped flickr url so that the 'Flickr' button works now | 15 | - Fixed a mistyped flickr url so that the 'Flickr' button works now |
15 | 0.0.1 (October 3rd, 2006) | 16 | 0.0.1 (October 3rd, 2006) |
16 | - Added ability to paginate through search results | 17 | - Added ability to paginate through search results |
17 | - Fixed packaging bug that omitted packaging license dialog | 18 | - Fixed packaging bug that omitted packaging license dialog |
18 | - A lot of code cleanup and UI polishing | 19 | - A lot of code cleanup and UI polishing |
19 | 0.0 (September 26th, 2006) | 20 | 0.0 (September 26th, 2006) |
@@ -1,21 +1,22 @@ | |||
1 | <?xml version="1.0" encoding="us-ascii"?> | 1 | <?xml version="1.0" encoding="us-ascii"?> |
2 | <news> | 2 | <news> |
3 | <version version="0.0.5"> | 3 | <version version="0.0.5"> |
4 | <ni>Added toolbar button</ni> | 4 | <ni>Added toolbar button</ni> |
5 | <ni>Enter or double click on photo in set now opens photo in flickr</ni> | 5 | <ni>Enter or double click on photo in set now opens photo in flickr</ni> |
6 | <ni>Double click on photoset opens photoset in flickr</ni> | ||
6 | </version> | 7 | </version> |
7 | <version version="0.0.4" date="November 13th, 2006"> | 8 | <version version="0.0.4" date="November 13th, 2006"> |
8 | <ni>Added button to remove linebreaks from generated HTML</ni> | 9 | <ni>Added button to remove linebreaks from generated HTML</ni> |
9 | <ni>Added the word 'sidebar' to the extension name so that you don't have to look hard for it</ni> | 10 | <ni>Added the word 'sidebar' to the extension name so that you don't have to look hard for it</ni> |
10 | <ni>UI polishing, including making it more boring</ni> | 11 | <ni>UI polishing, including making it more boring</ni> |
11 | <ni>code cosmetics</ni> | 12 | <ni>code cosmetics</ni> |
12 | </version> | 13 | </version> |
13 | <version version="0.0.3" date="November 6th, 2006"> | 14 | <version version="0.0.3" date="November 6th, 2006"> |
14 | <ni>Firefox 2.0 compatibility</ni> | 15 | <ni>Firefox 2.0 compatibility</ni> |
15 | </version> | 16 | </version> |
16 | <version version="0.0.2" date="October 17th, 2006"> | 17 | <version version="0.0.2" date="October 17th, 2006"> |
17 | <ni>Added brief help file</ni> | 18 | <ni>Added brief help file</ni> |
18 | <ni>Fixed HTML generation code</ni> | 19 | <ni>Fixed HTML generation code</ni> |
19 | <ni>Fixed a mistyped flickr url so that the 'Flickr' button works now</ni> | 20 | <ni>Fixed a mistyped flickr url so that the 'Flickr' button works now</ni> |
20 | </version> | 21 | </version> |
21 | <version version="0.0.1" date="October 3rd, 2006"> | 22 | <version version="0.0.1" date="October 3rd, 2006"> |
diff --git a/content/fireflix-panel.xul b/content/fireflix-panel.xul index b2ca7dc..af92d22 100644 --- a/content/fireflix-panel.xul +++ b/content/fireflix-panel.xul | |||
@@ -171,32 +171,33 @@ | |||
171 | <div flex="1" id="searchresult_description" xmlns="http://www.w3.org/1999/xhtml"/> | 171 | <div flex="1" id="searchresult_description" xmlns="http://www.w3.org/1999/xhtml"/> |
172 | </hbox> | 172 | </hbox> |
173 | <hbox pack="end"> | 173 | <hbox pack="end"> |
174 | <button command="cmd_search_open"/> | 174 | <button command="cmd_search_open"/> |
175 | </hbox> | 175 | </hbox> |
176 | </vbox> | 176 | </vbox> |
177 | </groupbox> | 177 | </groupbox> |
178 | </vbox> | 178 | </vbox> |
179 | </tabpanel> | 179 | </tabpanel> |
180 | 180 | ||
181 | <tabpanel id="tabpanel_sets" flex="1" | 181 | <tabpanel id="tabpanel_sets" flex="1" |
182 | onkeypress="if(event.keyCode==event.DOM_VK_RETURN) | 182 | onkeypress="if(event.keyCode==event.DOM_VK_RETURN) |
183 | document.getElementById('setphotos').focus()"> | 183 | document.getElementById('setphotos').focus()"> |
184 | <vbox flex="1"> | 184 | <vbox flex="1"> |
185 | <tree id="setslist" rows="2" onselect="fireflix.photosets.on_select()" | 185 | <tree id="setslist" rows="2" onselect="fireflix.photosets.on_select()" |
186 | flex="1" context="sets_menu" | 186 | flex="1" context="sets_menu" |
187 | ondblclick="fireflix.photosets.on_cmd_open_in_flickr(event)" | ||
187 | > | 188 | > |
188 | <treecols> | 189 | <treecols> |
189 | <treecol id="sl_name" label="&panel.sets.name.label;" flex="4" crop="end" align="start" tooltiptext="&panel.sets.name.tip;"/> | 190 | <treecol id="sl_name" label="&panel.sets.name.label;" flex="4" crop="end" align="start" tooltiptext="&panel.sets.name.tip;"/> |
190 | <splitter class="tree-splitter" /> | 191 | <splitter class="tree-splitter" /> |
191 | <treecol id="sl_photos" label="&panel.sets.photos.label;" flex="1" align="end" tooltiptext="&panel.sets.photos.tip;" /> | 192 | <treecol id="sl_photos" label="&panel.sets.photos.label;" flex="1" align="end" tooltiptext="&panel.sets.photos.tip;" /> |
192 | </treecols> | 193 | </treecols> |
193 | <treechildren/> | 194 | <treechildren/> |
194 | </tree> | 195 | </tree> |
195 | <hbox> | 196 | <hbox> |
196 | <button command="cmd_refresh_sets" /> | 197 | <button command="cmd_refresh_sets" /> |
197 | <button command="cmd_set_props" /> | 198 | <button command="cmd_set_props" /> |
198 | </hbox> | 199 | </hbox> |
199 | <tree id="setphotos" rows="2" onselect="fireflix.photoset.on_select()" | 200 | <tree id="setphotos" rows="2" onselect="fireflix.photoset.on_select()" |
200 | flex="1" ondblclick="fireflix.photoset.on_cmd_open(event)" | 201 | flex="1" ondblclick="fireflix.photoset.on_cmd_open(event)" |
201 | onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.photoset.on_cmd_open(event)"> | 202 | onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.photoset.on_cmd_open(event)"> |
202 | <treecols> | 203 | <treecols> |
diff --git a/content/fireflix.js b/content/fireflix.js index 24894df..48053c5 100644 --- a/content/fireflix.js +++ b/content/fireflix.js | |||
@@ -151,37 +151,35 @@ var fireflix = { | |||
151 | }, function(x,s,c,m) { | 151 | }, function(x,s,c,m) { |
152 | _this.fireflix.flickr_failure(x,s,c,m); | 152 | _this.fireflix.flickr_failure(x,s,c,m); |
153 | } | 153 | } |
154 | ); | 154 | ); |
155 | }, | 155 | }, |
156 | on_select: function() { | 156 | on_select: function() { |
157 | if(this.selection.count==1) { | 157 | if(this.selection.count==1) { |
158 | var p = this.photos[this.selection.currentIndex]; | 158 | var p = this.photos[this.selection.currentIndex]; |
159 | this.set_photo.src = | 159 | this.set_photo.src = |
160 | this.fireflix.flickr.get_photo_url(p.server,p.id,p.secret,'t'); | 160 | this.fireflix.flickr.get_photo_url(p.server,p.id,p.secret,'t'); |
161 | this.set_photo.hidden = false; | 161 | this.set_photo.hidden = false; |
162 | }else{ | 162 | }else{ |
163 | this.set_photo.hidden = true; | 163 | this.set_photo.hidden = true; |
164 | } | 164 | } |
165 | }, | 165 | }, |
166 | on_cmd_open: function(ev) { | 166 | on_cmd_open: function(ev) { |
167 | if(this.selection.currentIndex<0) | 167 | if(this.selection.currentIndex<0) return; |
168 | return; | ||
169 | var p = this.photos[this.selection.currentIndex]; | 168 | var p = this.photos[this.selection.currentIndex]; |
170 | if(!p.id) | 169 | if(!p.id) return; |
171 | return; | ||
172 | this.fireflix.openTab(this.fireflix.flickr.make_photo_url(p,'p')); | 170 | this.fireflix.openTab(this.fireflix.flickr.make_photo_url(p,'p')); |
173 | } | 171 | } |
174 | }, | 172 | }, |
175 | 173 | ||
176 | /* photosets treeview */ | 174 | /* photosets treeview */ |
177 | photosets: { | 175 | photosets: { |
178 | sets: new Array(), | 176 | sets: new Array(), |
179 | fireflix: null, | 177 | fireflix: null, |
180 | init: function(f) { | 178 | init: function(f) { |
181 | this.fireflix = f; | 179 | this.fireflix = f; |
182 | document.getElementById('setslist').view = this; | 180 | document.getElementById('setslist').view = this; |
183 | }, | 181 | }, |
184 | rowCount: 0, | 182 | rowCount: 0, |
185 | getCellText: function(r,c) { | 183 | getCellText: function(r,c) { |
186 | var s = this.sets[r]; | 184 | var s = this.sets[r]; |
187 | if(c.id=='sl_name') return s.title; | 185 | if(c.id=='sl_name') return s.title; |
@@ -223,32 +221,38 @@ var fireflix = { | |||
223 | '/rsp/photosets/photoset', x, null, | 221 | '/rsp/photosets/photoset', x, null, |
224 | XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); | 222 | XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); |
225 | _this.importXPR(xp); | 223 | _this.importXPR(xp); |
226 | }, function(x,s,c,m) { | 224 | }, function(x,s,c,m) { |
227 | _this.fireflix.flickr_failure(x,s,c,m); | 225 | _this.fireflix.flickr_failure(x,s,c,m); |
228 | } | 226 | } |
229 | ); | 227 | ); |
230 | }, | 228 | }, |
231 | on_select: function() { | 229 | on_select: function() { |
232 | if(this.selection.count==1) { | 230 | if(this.selection.count==1) { |
233 | this.fireflix.cmd_set_props.setAttribute('disabled','false'); | 231 | this.fireflix.cmd_set_props.setAttribute('disabled','false'); |
234 | var s = this.sets[this.selection.currentIndex]; | 232 | var s = this.sets[this.selection.currentIndex]; |
235 | this.fireflix.photoset.load_photos(s.id); | 233 | this.fireflix.photoset.load_photos(s.id); |
236 | }else{ | 234 | }else{ |
237 | this.fireflix.cmd_set_props.setAttribute('disabled','true'); | 235 | this.fireflix.cmd_set_props.setAttribute('disabled','true'); |
238 | } | 236 | } |
237 | }, | ||
238 | on_cmd_open_in_flickr: function(ev) { | ||
239 | if(this.selection.currentIndex<0) return; | ||
240 | var p = this.sets[this.selection.currentIndex]; | ||
241 | if(!p.id) return; | ||
242 | this.fireflix.openTab(this.fireflix.flickr.make_photoset_url(p)); | ||
239 | } | 243 | } |
240 | }, | 244 | }, |
241 | 245 | ||
242 | refresh_user_tags: function() { | 246 | refresh_user_tags: function() { |
243 | var lb = document.getElementById('tagslist'); | 247 | var lb = document.getElementById('tagslist'); |
244 | var _this = this; | 248 | var _this = this; |
245 | this.flickr.api_call( | 249 | this.flickr.api_call( |
246 | { | 250 | { |
247 | method: 'flickr.tags.getListUser', | 251 | method: 'flickr.tags.getListUser', |
248 | auth_token: 'default', | 252 | auth_token: 'default', |
249 | }, function(xr) { | 253 | }, function(xr) { |
250 | var x = xr.responseXML; | 254 | var x = xr.responseXML; |
251 | var xp = x.evaluate( | 255 | var xp = x.evaluate( |
252 | '/rsp/who/tags/tag', x, null, | 256 | '/rsp/who/tags/tag', x, null, |
253 | XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); | 257 | XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); |
254 | // TODO: clear list | 258 | // TODO: clear list |
diff --git a/content/flickr.js b/content/flickr.js index 75d1a72..b8360c1 100644 --- a/content/flickr.js +++ b/content/flickr.js | |||
@@ -258,32 +258,36 @@ Flickr.prototype = { | |||
258 | if(p instanceof Photo) { | 258 | if(p instanceof Photo) { |
259 | // TODO: track photoset and user owner id from there? | 259 | // TODO: track photoset and user owner id from there? |
260 | // The approach below is sheerly wrong. | 260 | // The approach below is sheerly wrong. |
261 | var o = this.user.nsid; | 261 | var o = this.user.nsid; |
262 | if(p.owner && p.owner.nsid) o = p.owner.nsid; | 262 | if(p.owner && p.owner.nsid) o = p.owner.nsid; |
263 | var rv = this.photos_url + o +'/' + p.id; | 263 | var rv = this.photos_url + o +'/' + p.id; |
264 | return rv; | 264 | return rv; |
265 | }else // TODO: take owner into account? | 265 | }else // TODO: take owner into account? |
266 | return this.photos_url + this.user.nsid + '/' + p; | 266 | return this.photos_url + this.user.nsid + '/' + p; |
267 | }, | 267 | }, |
268 | make_photo_url: function(p,sfx) { | 268 | make_photo_url: function(p,sfx) { |
269 | if(sfx=='p') | 269 | if(sfx=='p') |
270 | return this.get_photo_page_url(p); | 270 | return this.get_photo_page_url(p); |
271 | else | 271 | else |
272 | return this.get_image_url(p,sfx); | 272 | return this.get_image_url(p,sfx); |
273 | }, | 273 | }, |
274 | make_photoset_url: function(ps) { | ||
275 | // TODO: allow for using someone else's photoset? | ||
276 | return this.photos_url+this.user.nsid+'/sets/'+ps.id; | ||
277 | }, | ||
274 | 278 | ||
275 | upload_file: function(f,fa,on_success,on_failure) { | 279 | upload_file: function(f,fa,on_success,on_failure) { |
276 | try { | 280 | try { |
277 | var fi = Components.classes["@mozilla.org/file/local;1"] | 281 | var fi = Components.classes["@mozilla.org/file/local;1"] |
278 | .createInstance(Components.interfaces.nsILocalFile); | 282 | .createInstance(Components.interfaces.nsILocalFile); |
279 | fi.initWithPath( f ); | 283 | fi.initWithPath( f ); |
280 | var st = Components.classes["@mozilla.org/network/file-input-stream;1"] | 284 | var st = Components.classes["@mozilla.org/network/file-input-stream;1"] |
281 | .createInstance(Components.interfaces.nsIFileInputStream); | 285 | .createInstance(Components.interfaces.nsIFileInputStream); |
282 | st.init(fi,0x01,00004,null); | 286 | st.init(fi,0x01,00004,null); |
283 | var bis = Components.classes["@mozilla.org/binaryinputstream;1"] | 287 | var bis = Components.classes["@mozilla.org/binaryinputstream;1"] |
284 | .createInstance(Components.interfaces.nsIBinaryInputStream); | 288 | .createInstance(Components.interfaces.nsIBinaryInputStream); |
285 | bis.setInputStream(st); | 289 | bis.setInputStream(st); |
286 | 290 | ||
287 | // allocate and initialize temp storage string | 291 | // allocate and initialize temp storage string |
288 | var pbs = Components.classes["@mozilla.org/storagestream;1"] | 292 | var pbs = Components.classes["@mozilla.org/storagestream;1"] |
289 | .createInstance(Components.interfaces.nsIStorageStream); | 293 | .createInstance(Components.interfaces.nsIStorageStream); |