summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--content/fireflix-panel.xul9
-rw-r--r--content/fireflix.js8
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) {