-rw-r--r-- | content/fireflix-panel.xul | 9 | ||||
-rw-r--r-- | content/fireflix.js | 8 |
2 files changed, 13 insertions, 4 deletions
diff --git a/content/fireflix-panel.xul b/content/fireflix-panel.xul index 2356c82..b2ca7dc 100644 --- a/content/fireflix-panel.xul +++ b/content/fireflix-panel.xul | |||
@@ -107,155 +107,156 @@ | |||
107 | </vbox> | 107 | </vbox> |
108 | <button class="lean" id="b_auth" command="cmd_auth_auth"/> | 108 | <button class="lean" id="b_auth" command="cmd_auth_auth"/> |
109 | <button class="lean" id="b_auth_done" command="cmd_auth_done" hidden="true"/> | 109 | <button class="lean" id="b_auth_done" command="cmd_auth_done" hidden="true"/> |
110 | <button class="lean" command="cmd_auth_open_flickr" | 110 | <button class="lean" command="cmd_auth_open_flickr" |
111 | tooltiptext="&panel.auth.flickr.tip;"/> | 111 | tooltiptext="&panel.auth.flickr.tip;"/> |
112 | <button class="lean" command="cmd_help"/> | 112 | <button class="lean" command="cmd_help"/> |
113 | </hbox> | 113 | </hbox> |
114 | </groupbox> | 114 | </groupbox> |
115 | 115 | ||
116 | <tabbox flex="1" id="fireflix_tabs"> | 116 | <tabbox flex="1" id="fireflix_tabs"> |
117 | 117 | ||
118 | <tabs> | 118 | <tabs> |
119 | <tab label="&panel.tabs.search;"/> | 119 | <tab label="&panel.tabs.search;"/> |
120 | <tab label="&panel.tabs.sets;"/> | 120 | <tab label="&panel.tabs.sets;"/> |
121 | <tab label="&panel.tabs.tags;" hidden="true"/> <!-- TODO: --> | 121 | <tab label="&panel.tabs.tags;" hidden="true"/> <!-- TODO: --> |
122 | <tab id="tab_upload" label="&panel.tabs.upload;"/> | 122 | <tab id="tab_upload" label="&panel.tabs.upload;"/> |
123 | </tabs> | 123 | </tabs> |
124 | 124 | ||
125 | <tabpanels flex="1"> | 125 | <tabpanels flex="1"> |
126 | 126 | ||
127 | <tabpanel id="tabpanel_search" flex="1"> | 127 | <tabpanel id="tabpanel_search" flex="1"> |
128 | <vbox flex="1"> | 128 | <vbox flex="1"> |
129 | <groupbox class="search_params" orient="vertical" onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.foundphotos.search_photos()"> | 129 | <groupbox class="search_params" orient="vertical" onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.foundphotos.search_photos()"> |
130 | <hbox> | 130 | <hbox> |
131 | <vbox pack="center"> | 131 | <vbox pack="center"> |
132 | <label control="search_for" value="&panel.search.search_for.label;" accesskey="s"/> | 132 | <label control="search_for" value="&panel.search.search_for.label;" accesskey="s"/> |
133 | </vbox> | 133 | </vbox> |
134 | <textbox id="search_for" flex="1"/> | 134 | <textbox id="search_for" flex="1"/> |
135 | </hbox> | 135 | </hbox> |
136 | <hbox> | 136 | <hbox> |
137 | <checkbox id="search_tags" label="&panel.search.mode.tagsonly.label;" | 137 | <checkbox id="search_tags" label="&panel.search.mode.tagsonly.label;" |
138 | tooltiptext="&panel.search.mode.tagsonly.tip;" checked="false" | 138 | tooltiptext="&panel.search.mode.tagsonly.tip;" checked="false" |
139 | accesskey="t" /> | 139 | accesskey="t" /> |
140 | <checkbox id="search_mine" label="&panel.search.mode.mine.label;" checked="true" accesskey="m"/> | 140 | <checkbox id="search_mine" label="&panel.search.mode.mine.label;" checked="true" accesskey="m"/> |
141 | <spacer flex="1"/> | 141 | <spacer flex="1"/> |
142 | <button class="lean" command="cmd_search"/> | 142 | <button class="lean" command="cmd_search"/> |
143 | </hbox> | 143 | </hbox> |
144 | </groupbox> | 144 | </groupbox> |
145 | <hbox> | 145 | <hbox> |
146 | <button class="lean" command="cmd_search_prev_page"/> | 146 | <button class="lean" command="cmd_search_prev_page"/> |
147 | <spacer flex="1"/> | 147 | <spacer flex="1"/> |
148 | <label id="search_page" hidden="true"/> | 148 | <label id="search_page" hidden="true"/> |
149 | <spacer flex="1"/> | 149 | <spacer flex="1"/> |
150 | <button class="lean" command="cmd_search_next_page"/> | 150 | <button class="lean" command="cmd_search_next_page"/> |
151 | </hbox> | 151 | </hbox> |
152 | <tree id="searchresults" rows="2" flex="1" | 152 | <tree id="searchresults" rows="2" flex="1" |
153 | onselect="fireflix.foundphotos.on_select()" | 153 | onselect="fireflix.foundphotos.on_select()" |
154 | ondblclick="fireflix.foundphotos.on_cmd_open(event)" | 154 | ondblclick="fireflix.foundphotos.on_cmd_open(event)" |
155 | onkeypress="if(event.keyCode==event.DOM_VK_RETURN) | 155 | onkeypress="if(event.keyCode==event.DOM_VK_RETURN) fireflix.foundphotos.on_cmd_open(event)"> |
156 | fireflix.foundphotos.on_cmd_open(event)"> | ||
157 | <treecols> | 156 | <treecols> |
158 | <treecol id="sr_title" label="&panel.search.col.title.label;" flex="2" crop="end" align="start" /> | 157 | <treecol id="sr_title" label="&panel.search.col.title.label;" flex="2" crop="end" align="start" /> |
159 | </treecols> | 158 | </treecols> |
160 | <treechildren/> | 159 | <treechildren/> |
161 | </tree> | 160 | </tree> |
162 | <groupbox id="searchresult_props" orient="horizontal" hidden="true"> | 161 | <groupbox id="searchresult_props" orient="horizontal" hidden="true"> |
163 | <vbox width="100" pack="center"> | 162 | <vbox width="100" pack="center"> |
164 | <hbox pack="center"> | 163 | <hbox pack="center"> |
165 | <image id="search_photo" | 164 | <image id="search_photo" |
166 | ondblclick="fireflix.foundphotos.on_cmd_open(event)"/> | 165 | ondblclick="fireflix.foundphotos.on_cmd_open(event)"/> |
167 | </hbox> | 166 | </hbox> |
168 | </vbox> | 167 | </vbox> |
169 | <vbox flex="1"> | 168 | <vbox flex="1"> |
170 | <label id="searchresult_title" crop="end"/> | 169 | <label id="searchresult_title" crop="end"/> |
171 | <hbox flex="1" pack="center"> | 170 | <hbox flex="1" pack="center"> |
172 | <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"/> |
173 | </hbox> | 172 | </hbox> |
174 | <hbox pack="end"> | 173 | <hbox pack="end"> |
175 | <button command="cmd_search_open"/> | 174 | <button command="cmd_search_open"/> |
176 | </hbox> | 175 | </hbox> |
177 | </vbox> | 176 | </vbox> |
178 | </groupbox> | 177 | </groupbox> |
179 | </vbox> | 178 | </vbox> |
180 | </tabpanel> | 179 | </tabpanel> |
181 | 180 | ||
182 | <tabpanel id="tabpanel_sets" flex="1" | 181 | <tabpanel id="tabpanel_sets" flex="1" |
183 | onkeypress="if(event.keyCode==event.DOM_VK_RETURN) | 182 | onkeypress="if(event.keyCode==event.DOM_VK_RETURN) |
184 | document.getElementById('setphotos').focus()"> | 183 | document.getElementById('setphotos').focus()"> |
185 | <vbox flex="1"> | 184 | <vbox flex="1"> |
186 | <tree id="setslist" rows="2" onselect="fireflix.photosets.on_select()" | 185 | <tree id="setslist" rows="2" onselect="fireflix.photosets.on_select()" |
187 | flex="1" context="sets_menu" | 186 | flex="1" context="sets_menu" |
188 | > | 187 | > |
189 | <treecols> | 188 | <treecols> |
190 | <treecol id="sl_name" label="&panel.sets.name.label;" flex="4" crop="end" align="start" tooltiptext="&panel.sets.name.tip;"/> | 189 | <treecol id="sl_name" label="&panel.sets.name.label;" flex="4" crop="end" align="start" tooltiptext="&panel.sets.name.tip;"/> |
191 | <splitter class="tree-splitter" /> | 190 | <splitter class="tree-splitter" /> |
192 | <treecol id="sl_photos" label="&panel.sets.photos.label;" flex="1" align="end" tooltiptext="&panel.sets.photos.tip;" /> | 191 | <treecol id="sl_photos" label="&panel.sets.photos.label;" flex="1" align="end" tooltiptext="&panel.sets.photos.tip;" /> |
193 | </treecols> | 192 | </treecols> |
194 | <treechildren/> | 193 | <treechildren/> |
195 | </tree> | 194 | </tree> |
196 | <hbox> | 195 | <hbox> |
197 | <button command="cmd_refresh_sets" /> | 196 | <button command="cmd_refresh_sets" /> |
198 | <button command="cmd_set_props" /> | 197 | <button command="cmd_set_props" /> |
199 | </hbox> | 198 | </hbox> |
200 | <tree id="setphotos" rows="2" onselect="fireflix.photoset.on_select()" | 199 | <tree id="setphotos" rows="2" onselect="fireflix.photoset.on_select()" |
201 | flex="1"> | 200 | 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 | <treecols> | 202 | <treecols> |
203 | <treecol id="sp_title" label="&panel.setphotos.title.label;" flex="1" crop="end" align="start" tooltiptext="&panel.setphotos.title.tip;" /> | 203 | <treecol id="sp_title" label="&panel.setphotos.title.label;" flex="1" crop="end" align="start" tooltiptext="&panel.setphotos.title.tip;" /> |
204 | <splitter class="tree-splitter" /> | 204 | <splitter class="tree-splitter" /> |
205 | <treecol id="sp_taken" label="&panel.setphotos.taken.label;" crop="end" align="start" tooltiptext="&panel.setphotos.taken.tip;" hidden="true" /> | 205 | <treecol id="sp_taken" label="&panel.setphotos.taken.label;" crop="end" align="start" tooltiptext="&panel.setphotos.taken.tip;" hidden="true" /> |
206 | <treecol id="sp_upload" label="&panel.setphotos.upload.label;" crop="end" align="start" tooltiptext="&panel.setphotos.upload.tip;" hidden="true" /> | 206 | <treecol id="sp_upload" label="&panel.setphotos.upload.label;" crop="end" align="start" tooltiptext="&panel.setphotos.upload.tip;" hidden="true" /> |
207 | </treecols> | 207 | </treecols> |
208 | <treechildren/> | 208 | <treechildren/> |
209 | </tree> | 209 | </tree> |
210 | <groupbox id="set_photo_props" orient="horizontal"> | 210 | <groupbox id="set_photo_props" orient="horizontal"> |
211 | <vbox width="100" pack="center"> | 211 | <vbox width="100" pack="center"> |
212 | <hbox pack="center"> | 212 | <hbox pack="center"> |
213 | <image id="set_photo" hidden="true"/> | 213 | <image id="set_photo" hidden="true" |
214 | ondblclick="fireflix.photoset.on_cmd_open(event)" /> | ||
214 | </hbox> | 215 | </hbox> |
215 | </vbox> | 216 | </vbox> |
216 | <spacer flex="1"/> | 217 | <spacer flex="1"/> |
217 | </groupbox> | 218 | </groupbox> |
218 | </vbox> | 219 | </vbox> |
219 | </tabpanel> | 220 | </tabpanel> |
220 | 221 | ||
221 | <tabpanel id="tabpanel_tags"> | 222 | <tabpanel id="tabpanel_tags"> |
222 | <listbox id="tagslist" rows="8" flex="1"> | 223 | <listbox id="tagslist" rows="8" flex="1"> |
223 | <listhead> | 224 | <listhead> |
224 | <listheader label="&panel.tagslist.tag.label;"/> | 225 | <listheader label="&panel.tagslist.tag.label;"/> |
225 | </listhead> | 226 | </listhead> |
226 | <listcols> | 227 | <listcols> |
227 | <listcol flex="1"/> | 228 | <listcol flex="1"/> |
228 | </listcols> | 229 | </listcols> |
229 | </listbox> | 230 | </listbox> |
230 | </tabpanel> | 231 | </tabpanel> |
231 | 232 | ||
232 | <tabpanel id="tabpanel_upload"> | 233 | <tabpanel id="tabpanel_upload"> |
233 | <vbox flex="1"> | 234 | <vbox flex="1"> |
234 | <tree id="uploadlist" rows="2" flex="1" | 235 | <tree id="uploadlist" rows="2" flex="1" |
235 | onselect="fireflix.uploads.selectionChanged()" | 236 | onselect="fireflix.uploads.selectionChanged()" |
236 | context="uploads_menu"> | 237 | context="uploads_menu"> |
237 | <treecols> | 238 | <treecols> |
238 | <treecol id="up_file" label="&panel.uploadlist.file.label;" flex="4" crop="start" align="start"/> | 239 | <treecol id="up_file" label="&panel.uploadlist.file.label;" flex="4" crop="start" align="start"/> |
239 | <splitter class="tree-splitter" /> | 240 | <splitter class="tree-splitter" /> |
240 | <treecol id="up_title" label="&panel.uploadlist.title.label;" flex="5" crop="end" align="start" /> | 241 | <treecol id="up_title" label="&panel.uploadlist.title.label;" flex="5" crop="end" align="start" /> |
241 | <splitter class="tree-splitter" /> | 242 | <splitter class="tree-splitter" /> |
242 | <treecol id="up_status" label="&panel.uploadlist.status.label;" flex="1" crop="end" align="start" /> | 243 | <treecol id="up_status" label="&panel.uploadlist.status.label;" flex="1" crop="end" align="start" /> |
243 | </treecols> | 244 | </treecols> |
244 | <treechildren/> | 245 | <treechildren/> |
245 | </tree> | 246 | </tree> |
246 | <progressmeter id="upload_progress" mode="undetermined" hidden="true" /> | 247 | <progressmeter id="upload_progress" mode="undetermined" hidden="true" /> |
247 | <groupbox id="upload_file_props" orient="horizontal" hidden="true"> | 248 | <groupbox id="upload_file_props" orient="horizontal" hidden="true"> |
248 | <image id="upload_file_preview" width="100" height="100" /> | 249 | <image id="upload_file_preview" width="100" height="100" /> |
249 | <grid flex="1"> | 250 | <grid flex="1"> |
250 | <columns> | 251 | <columns> |
251 | <column/> | 252 | <column/> |
252 | <column flex="1"/> | 253 | <column flex="1"/> |
253 | </columns> | 254 | </columns> |
254 | <rows> | 255 | <rows> |
255 | <row> | 256 | <row> |
256 | <label control="upload_filename" | 257 | <label control="upload_filename" |
257 | value="&panel.upload_props.filename.label;" /> | 258 | value="&panel.upload_props.filename.label;" /> |
258 | <textbox id="upload_filename" | 259 | <textbox id="upload_filename" |
259 | oninput="fireflix.uploads.propsToSel('filename')"/> | 260 | oninput="fireflix.uploads.propsToSel('filename')"/> |
260 | </row> | 261 | </row> |
261 | <row> | 262 | <row> |
diff --git a/content/fireflix.js b/content/fireflix.js index 0f51397..2ee408f 100644 --- a/content/fireflix.js +++ b/content/fireflix.js | |||
@@ -116,96 +116,104 @@ var fireflix = { | |||
116 | isSorted: function(r) { return false; }, | 116 | isSorted: function(r) { return false; }, |
117 | getLevel: function(r) { return 0; }, | 117 | getLevel: function(r) { return 0; }, |
118 | getImageSrc: function(r,c) { return null }, | 118 | getImageSrc: function(r,c) { return null }, |
119 | getRowProperties: function(r,p) {}, | 119 | getRowProperties: function(r,p) {}, |
120 | getCellProperties: function(cid,cel,p) {}, | 120 | getCellProperties: function(cid,cel,p) {}, |
121 | getColumnProperties: function(cid,cel,p) { }, | 121 | getColumnProperties: function(cid,cel,p) { }, |
122 | cycleHeader: function(cid,e) { }, | 122 | cycleHeader: function(cid,e) { }, |
123 | getParentIndex: function(r) { return -1; }, | 123 | getParentIndex: function(r) { return -1; }, |
124 | drop: function(r,o) { }, | 124 | drop: function(r,o) { }, |
125 | canDropBeforeAfter: function(r,b) { return false }, | 125 | canDropBeforeAfter: function(r,b) { return false }, |
126 | 126 | ||
127 | importXPR: function(xp) { | 127 | importXPR: function(xp) { |
128 | this.tree.beginUpdateBatch(); | 128 | this.tree.beginUpdateBatch(); |
129 | this.photos = new Array(); | 129 | this.photos = new Array(); |
130 | var n; while(n=xp.iterateNext()) { | 130 | var n; while(n=xp.iterateNext()) { |
131 | this.photos.push(new Photo(n)); | 131 | this.photos.push(new Photo(n)); |
132 | } | 132 | } |
133 | this.rowCount = this.photos.length; | 133 | this.rowCount = this.photos.length; |
134 | this.tree.endUpdateBatch(); | 134 | this.tree.endUpdateBatch(); |
135 | }, | 135 | }, |
136 | load_photos: function(psid) { | 136 | load_photos: function(psid) { |
137 | var _this = this; | 137 | var _this = this; |
138 | this.fireflix.flickr.api_call( | 138 | this.fireflix.flickr.api_call( |
139 | { | 139 | { |
140 | method: 'flickr.photosets.getPhotos', | 140 | method: 'flickr.photosets.getPhotos', |
141 | auth_token: 'default', | 141 | auth_token: 'default', |
142 | photoset_id: psid, | 142 | photoset_id: psid, |
143 | extras: 'license,date_upload,date_taken,owner_name,icon_server,original_format,last_update' | 143 | extras: 'license,date_upload,date_taken,owner_name,icon_server,original_format,last_update' |
144 | }, function(xr) { | 144 | }, function(xr) { |
145 | var x = xr.responseXML; | 145 | var x = xr.responseXML; |
146 | var xp = x.evaluate( | 146 | var xp = x.evaluate( |
147 | '/rsp/photoset/photo', x, null, | 147 | '/rsp/photoset/photo', x, null, |
148 | XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); | 148 | XPathResult.ORDERED_NODE_ITERATOR_TYPE, null ); |
149 | _this.importXPR(xp); | 149 | _this.importXPR(xp); |
150 | }, function(x,s,c,m) { | 150 | }, function(x,s,c,m) { |
151 | _this.fireflix.flickr_failure(x,s,c,m); | 151 | _this.fireflix.flickr_failure(x,s,c,m); |
152 | } | 152 | } |
153 | ); | 153 | ); |
154 | }, | 154 | }, |
155 | on_select: function() { | 155 | on_select: function() { |
156 | if(this.selection.count==1) { | 156 | if(this.selection.count==1) { |
157 | var p = this.photos[this.selection.currentIndex]; | 157 | var p = this.photos[this.selection.currentIndex]; |
158 | this.set_photo.src = | 158 | this.set_photo.src = |
159 | this.fireflix.flickr.get_photo_url(p.server,p.id,p.secret,'t'); | 159 | this.fireflix.flickr.get_photo_url(p.server,p.id,p.secret,'t'); |
160 | this.set_photo.hidden = false; | 160 | this.set_photo.hidden = false; |
161 | }else{ | 161 | }else{ |
162 | this.set_photo.hidden = true; | 162 | this.set_photo.hidden = true; |
163 | } | 163 | } |
164 | }, | ||
165 | on_cmd_open: function(ev) { | ||
166 | if(this.selection.currentIndex<0) | ||
167 | return; | ||
168 | var p = this.photos[this.selection.currentIndex]; | ||
169 | if(!p.id) | ||
170 | return; | ||
171 | this.fireflix.openTab(this.fireflix.flickr.make_photo_url(p,'p')); | ||
164 | } | 172 | } |
165 | }, | 173 | }, |
166 | 174 | ||
167 | /* photosets treeview */ | 175 | /* photosets treeview */ |
168 | photosets: { | 176 | photosets: { |
169 | sets: new Array(), | 177 | sets: new Array(), |
170 | fireflix: null, | 178 | fireflix: null, |
171 | init: function(f) { | 179 | init: function(f) { |
172 | this.fireflix = f; | 180 | this.fireflix = f; |
173 | document.getElementById('setslist').view = this; | 181 | document.getElementById('setslist').view = this; |
174 | }, | 182 | }, |
175 | rowCount: 0, | 183 | rowCount: 0, |
176 | getCellText: function(r,c) { | 184 | getCellText: function(r,c) { |
177 | var s = this.sets[r]; | 185 | var s = this.sets[r]; |
178 | if(c.id=='sl_name') return s.title; | 186 | if(c.id=='sl_name') return s.title; |
179 | if(c.id=='sl_photos') return s.photos; | 187 | if(c.id=='sl_photos') return s.photos; |
180 | return c.id; | 188 | return c.id; |
181 | }, | 189 | }, |
182 | setTree: function(t) { this.tree = t }, | 190 | setTree: function(t) { this.tree = t }, |
183 | isContainer: function(r) { return false; }, | 191 | isContainer: function(r) { return false; }, |
184 | isSeparator: function(r) { return false; }, | 192 | isSeparator: function(r) { return false; }, |
185 | isSorted: function() { return false; }, | 193 | isSorted: function() { return false; }, |
186 | getLevel: function(r) { return 0; }, | 194 | getLevel: function(r) { return 0; }, |
187 | getImageSrc: function(r,c) { return null }, | 195 | getImageSrc: function(r,c) { return null }, |
188 | getRowProperties: function(r,p) {}, | 196 | getRowProperties: function(r,p) {}, |
189 | getCellProperties: function(cid,cel,p) { }, | 197 | getCellProperties: function(cid,cel,p) { }, |
190 | getColumnProperties: function(cid,cel,p) { }, | 198 | getColumnProperties: function(cid,cel,p) { }, |
191 | cycleHeader: function(cid,e) { }, | 199 | cycleHeader: function(cid,e) { }, |
192 | getParentIndex: function(r) { return -1; }, | 200 | getParentIndex: function(r) { return -1; }, |
193 | drop: function(r,o) { }, | 201 | drop: function(r,o) { }, |
194 | canDropBeforeAfter: function(r,b) { return false }, | 202 | canDropBeforeAfter: function(r,b) { return false }, |
195 | 203 | ||
196 | importXPR: function(xp) { | 204 | importXPR: function(xp) { |
197 | this.tree.beginUpdateBatch(); | 205 | this.tree.beginUpdateBatch(); |
198 | this.sets = new Array(); | 206 | this.sets = new Array(); |
199 | var n; while(n=xp.iterateNext()) { | 207 | var n; while(n=xp.iterateNext()) { |
200 | this.sets.push(new Photoset(n)); | 208 | this.sets.push(new Photoset(n)); |
201 | } | 209 | } |
202 | this.rowCount = this.sets.length; | 210 | this.rowCount = this.sets.length; |
203 | this.tree.endUpdateBatch(); | 211 | this.tree.endUpdateBatch(); |
204 | }, | 212 | }, |
205 | refresh_sets: function() { | 213 | refresh_sets: function() { |
206 | var _this = this; | 214 | var _this = this; |
207 | this.fireflix.flickr.api_call( | 215 | this.fireflix.flickr.api_call( |
208 | { | 216 | { |
209 | method: 'flickr.photosets.getList', | 217 | method: 'flickr.photosets.getList', |
210 | auth_token: 'default' | 218 | auth_token: 'default' |
211 | }, function(xr) { | 219 | }, function(xr) { |