aboutsummaryrefslogtreecommitdiff
path: root/src/download.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/download.c')
-rw-r--r--src/download.c129
1 files changed, 32 insertions, 97 deletions
diff --git a/src/download.c b/src/download.c
index 0154e9ac..eca922c8 100644
--- a/src/download.c
+++ b/src/download.c
@@ -63,14 +63,6 @@ static int addFilesToDirectory
63 GtkTreeIter iter; 63 GtkTreeIter iter;
64 GtkTreeIter child; 64 GtkTreeIter child;
65 int i; 65 int i;
66 unsigned long long size;
67 char * name;
68 char * mime;
69 char * desc;
70 unsigned char * thumb;
71 size_t ts;
72 GdkPixbuf * pixbuf;
73 GdkPixbufLoader * loader;
74 GtkTreePath * path; 66 GtkTreePath * path;
75 67
76 if (! gtk_tree_row_reference_valid(pos->rr)) 68 if (! gtk_tree_row_reference_valid(pos->rr))
@@ -89,7 +81,7 @@ static int addFilesToDirectory
89 uri = NULL; 81 uri = NULL;
90 gtk_tree_model_get(pos->model, 82 gtk_tree_model_get(pos->model,
91 &iter, 83 &iter,
92 5, &uri, 84 SEARCH_URI, &uri,
93 -1); 85 -1);
94 if ( (uri != NULL) && 86 if ( (uri != NULL) &&
95 (ECRS_equalsUri(uri, 87 (ECRS_equalsUri(uri,
@@ -100,69 +92,10 @@ static int addFilesToDirectory
100 gtk_tree_store_append(GTK_TREE_STORE(pos->model), 92 gtk_tree_store_append(GTK_TREE_STORE(pos->model),
101 &child, 93 &child,
102 &iter); 94 &iter);
103 95 addEntryToSearchTree(GTK_TREE_STORE(pos->model),
104 /* FIXME: this code is identical to some 96 &child,
105 code in search.c -- refactor into one 97 fi->uri,
106 function (on model, iter and fi) */ 98 fi->meta);
107 mime = ECRS_getFromMetaData(fi->meta,
108 EXTRACTOR_MIMETYPE);
109 if (mime == NULL)
110 mime = STRDUP(_("unknown"));
111 desc = ECRS_getFirstFromMetaData(fi->meta,
112 EXTRACTOR_DESCRIPTION,
113 EXTRACTOR_GENRE,
114 EXTRACTOR_ALBUM,
115 EXTRACTOR_COMMENT,
116 EXTRACTOR_SUBJECT,
117 EXTRACTOR_FORMAT,
118 EXTRACTOR_SIZE,
119 EXTRACTOR_KEYWORDS,
120 -1);
121 if (desc == NULL)
122 desc = STRDUP(_(""));
123 name = ECRS_getFirstFromMetaData(fi->meta,
124 EXTRACTOR_FILENAME,
125 EXTRACTOR_TITLE,
126 EXTRACTOR_ARTIST,
127 EXTRACTOR_AUTHOR,
128 EXTRACTOR_PUBLISHER,
129 EXTRACTOR_CREATOR,
130 EXTRACTOR_PRODUCER,
131 EXTRACTOR_UNKNOWN,
132 -1);
133 if (name == NULL)
134 name = STRDUP(_("no name given"));
135 size = ECRS_fileSize(fi->uri);
136 thumb = NULL;
137 ts = ECRS_getThumbnailFromMetaData(fi->meta,
138 &thumb);
139 if (ts != 0) {
140 loader = gdk_pixbuf_loader_new();
141 gdk_pixbuf_loader_write(loader,
142 (const guchar*) thumb,
143 ts,
144 NULL);
145 pixbuf = gdk_pixbuf_loader_get_pixbuf(loader);
146 gdk_pixbuf_loader_close(loader,
147 NULL);
148 } else {
149 pixbuf = NULL;
150 }
151 gtk_tree_store_set(GTK_TREE_STORE(pos->model),
152 &child,
153 0, name,
154 1, size,
155 2, mime,
156 3, desc,
157 4, pixbuf,
158 5, ECRS_dupUri(fi->uri),
159 6, ECRS_dupMetaData(fi->meta),
160 7, NULL, /* internal */
161 -1);
162 FREE(mime);
163 FREE(desc);
164 FREE(name);
165 FREENONNULL(thumb);
166 } 99 }
167 return OK; 100 return OK;
168} 101}
@@ -186,9 +119,9 @@ static void initiateDownload(GtkTreeModel *model,
186 name = NULL; 119 name = NULL;
187 gtk_tree_model_get(model, 120 gtk_tree_model_get(model,
188 iter, 121 iter,
189 0, &name, 122 SEARCH_NAME, &name,
190 5, &uri, 123 SEARCH_URI, &uri,
191 6, &meta, 124 SEARCH_META, &meta,
192 -1); 125 -1);
193 if (uri == NULL) { 126 if (uri == NULL) {
194 BREAK(); 127 BREAK();
@@ -258,12 +191,12 @@ static void initiateDownload(GtkTreeModel *model,
258 0); 191 0);
259 gtk_tree_store_set(summary, 192 gtk_tree_store_set(summary,
260 &iiter, 193 &iiter,
261 0, name, 194 DOWNLOAD_FILENAME, name,
262 1, ECRS_fileSize(uri), 195 DOWNLOAD_SIZE, ECRS_fileSize(uri),
263 2, 0, /* progress */ 196 DOWNLOAD_PROGRESS, 0, /* progress */
264 3, filename, 197 DOWNLOAD_URISTRING, filename,
265 4, ECRS_dupUri(uri), 198 DOWNLOAD_URI, ECRS_dupUri(uri),
266 5, list->rr, /* internal: row reference! */ 199 DOWNLOAD_TREEPATH, list->rr, /* internal: row reference! */
267 -1); 200 -1);
268 FREE(filename); 201 FREE(filename);
269 FREE(name); 202 FREE(name);
@@ -303,8 +236,8 @@ void displayDownloadUpdate(const struct ECRS_URI * uri,
303 do { 236 do {
304 gtk_tree_model_get(GTK_TREE_MODEL(summary), 237 gtk_tree_model_get(GTK_TREE_MODEL(summary),
305 &iter, 238 &iter,
306 1, &total, 239 DOWNLOAD_SIZE, &total,
307 4, &u, 240 DOWNLOAD_URI, &u,
308 -1); 241 -1);
309 if (ECRS_equalsUri(u, uri)) { 242 if (ECRS_equalsUri(u, uri)) {
310 if (total != 0) 243 if (total != 0)
@@ -313,7 +246,7 @@ void displayDownloadUpdate(const struct ECRS_URI * uri,
313 val = 100; 246 val = 100;
314 gtk_tree_store_set(GTK_TREE_STORE(summary), 247 gtk_tree_store_set(GTK_TREE_STORE(summary),
315 &iter, 248 &iter,
316 2, val, 249 DOWNLOAD_PROGRESS, val,
317 -1); 250 -1);
318 break; 251 break;
319 } 252 }
@@ -409,12 +342,12 @@ static int addDownloadView(void * cls,
409 0); 342 0);
410 gtk_tree_store_set(summary, 343 gtk_tree_store_set(summary,
411 &iiter, 344 &iiter,
412 0, filename, 345 DOWNLOAD_FILENAME, filename,
413 1, filesize, 346 DOWNLOAD_SIZE, filesize,
414 2, progress, 347 DOWNLOAD_PROGRESS, progress,
415 3, uriname, 348 DOWNLOAD_URISTRING, uriname,
416 4, ECRS_dupUri(uri), 349 DOWNLOAD_URI, ECRS_dupUri(uri),
417 5, NULL, 350 DOWNLOAD_TREEPATH, NULL,
418 -1); 351 -1);
419 FREE(uriname); 352 FREE(uriname);
420 return OK; 353 return OK;
@@ -430,7 +363,7 @@ void fs_download_start() {
430 downloadList = glade_xml_get_widget(mainXML, 363 downloadList = glade_xml_get_widget(mainXML,
431 "activeDownloadsList"); 364 "activeDownloadsList");
432 summary = 365 summary =
433 gtk_tree_store_new(6, 366 gtk_tree_store_new(DOWNLOAD_NUM,
434 G_TYPE_STRING, /* name */ 367 G_TYPE_STRING, /* name */
435 G_TYPE_UINT64, /* size */ 368 G_TYPE_UINT64, /* size */
436 G_TYPE_INT, /* progress */ 369 G_TYPE_INT, /* progress */
@@ -444,22 +377,22 @@ void fs_download_start() {
444 -1, 377 -1,
445 _("Name"), 378 _("Name"),
446 renderer, 379 renderer,
447 "value", 2, 380 "value", DOWNLOAD_PROGRESS,
448 "text", 0, 381 "text", DOWNLOAD_FILENAME,
449 NULL); 382 NULL);
450 renderer = gtk_cell_renderer_text_new(); 383 renderer = gtk_cell_renderer_text_new();
451 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList), 384 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
452 -1, 385 -1,
453 _("Size"), 386 _("Size"),
454 renderer, 387 renderer,
455 "text", 1, 388 "text", DOWNLOAD_SIZE,
456 NULL); 389 NULL);
457 renderer = gtk_cell_renderer_text_new(); 390 renderer = gtk_cell_renderer_text_new();
458 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList), 391 gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(downloadList),
459 -1, 392 -1,
460 _("URI"), 393 _("URI"),
461 renderer, 394 renderer,
462 "text", 3, 395 "text", DOWNLOAD_URISTRING,
463 NULL); 396 NULL);
464 FSUI_listDownloads(ctx, 397 FSUI_listDownloads(ctx,
465 NULL, 398 NULL,
@@ -480,13 +413,15 @@ void fs_download_stop() {
480 do { 413 do {
481 gtk_tree_model_get(GTK_TREE_MODEL(summary), 414 gtk_tree_model_get(GTK_TREE_MODEL(summary),
482 &iter, 415 &iter,
483 4, &u, 416 DOWNLOAD_URI, &u,
484 -1); 417 -1);
485 gtk_tree_store_set(GTK_TREE_STORE(summary), 418 gtk_tree_store_set(GTK_TREE_STORE(summary),
486 &iter, 419 &iter,
487 4, NULL, 420 DOWNLOAD_URI, NULL,
488 -1); 421 -1);
489 ECRS_freeUri(u); 422 ECRS_freeUri(u);
423 /* FIXME:
424 also free DOWNLOAD_TREEPATH! */
490 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(summary), 425 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(summary),
491 &iter)); 426 &iter));
492} 427}