diff options
Diffstat (limited to 'src/download.c')
-rw-r--r-- | src/download.c | 129 |
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 | } |