diff options
Diffstat (limited to 'src/plugins/fs/upload.c')
-rw-r--r-- | src/plugins/fs/upload.c | 96 |
1 files changed, 61 insertions, 35 deletions
diff --git a/src/plugins/fs/upload.c b/src/plugins/fs/upload.c index aa800b34..f5b922f6 100644 --- a/src/plugins/fs/upload.c +++ b/src/plugins/fs/upload.c | |||
@@ -316,16 +316,48 @@ void on_fileInformationKeywordEntry_changed_fs(gpointer dummy2, | |||
316 | strlen(input) > 0); | 316 | strlen(input) > 0); |
317 | } | 317 | } |
318 | 318 | ||
319 | typedef struct { | ||
320 | const char * filename; | ||
321 | unsigned int anonymity; | ||
322 | unsigned int priority; | ||
323 | int index; | ||
324 | int extract; | ||
325 | int deep_index; | ||
326 | cron_t expire; | ||
327 | struct ECRS_MetaData * meta; | ||
328 | struct ECRS_URI * gkeywordURI; | ||
329 | struct ECRS_URI * keywordURI; | ||
330 | } FSUC; | ||
331 | |||
332 | static void * start_upload_helper(void * cls) { | ||
333 | FSUC * fsuc = cls; | ||
334 | |||
335 | FSUI_startUpload(ctx, | ||
336 | fsuc->filename, | ||
337 | (DirectoryScanCallback) &disk_directory_scan, | ||
338 | ectx, | ||
339 | fsuc->anonymity, | ||
340 | fsuc->priority, | ||
341 | fsuc->index, | ||
342 | fsuc->extract, | ||
343 | fsuc->deep_index, | ||
344 | fsuc->expire, | ||
345 | fsuc->meta, | ||
346 | fsuc->gkeywordURI, | ||
347 | fsuc->keywordURI); | ||
348 | return NULL; | ||
349 | } | ||
350 | |||
351 | |||
319 | void on_fsinsertuploadbutton_clicked_fs(gpointer dummy, | 352 | void on_fsinsertuploadbutton_clicked_fs(gpointer dummy, |
320 | GtkWidget * uploadButton) { | 353 | GtkWidget * uploadButton) { |
354 | FSUC fsuc; | ||
321 | const char * filenamerest; | 355 | const char * filenamerest; |
322 | const char * filename; | ||
323 | GtkWidget * dialog; | 356 | GtkWidget * dialog; |
324 | EXTRACTOR_ExtractorList * extractors; | 357 | EXTRACTOR_ExtractorList * extractors; |
325 | char * config; | 358 | char * config; |
326 | struct ECRS_URI * keywordURI; | ||
327 | struct ECRS_URI * gkeywordURI; | ||
328 | struct ECRS_MetaData * meta; | 359 | struct ECRS_MetaData * meta; |
360 | struct ECRS_URI * keywordURI; | ||
329 | 361 | ||
330 | extractors = EXTRACTOR_loadDefaultLibraries(); | 362 | extractors = EXTRACTOR_loadDefaultLibraries(); |
331 | config = NULL; | 363 | config = NULL; |
@@ -340,8 +372,8 @@ void on_fsinsertuploadbutton_clicked_fs(gpointer dummy, | |||
340 | FREE(config); | 372 | FREE(config); |
341 | } | 373 | } |
342 | 374 | ||
343 | filename = getEntryLineValue(getMainXML(), | 375 | fsuc.filename = getEntryLineValue(getMainXML(), |
344 | "uploadFilenameComboBoxEntry"); | 376 | "uploadFilenameComboBoxEntry"); |
345 | metaXML | 377 | metaXML |
346 | = glade_xml_new(getGladeFileName(), | 378 | = glade_xml_new(getGladeFileName(), |
347 | "metaDataDialog", | 379 | "metaDataDialog", |
@@ -352,11 +384,11 @@ void on_fsinsertuploadbutton_clicked_fs(gpointer dummy, | |||
352 | meta = ECRS_createMetaData(); | 384 | meta = ECRS_createMetaData(); |
353 | ECRS_extractMetaData(ectx, | 385 | ECRS_extractMetaData(ectx, |
354 | meta, | 386 | meta, |
355 | filename, | 387 | fsuc.filename, |
356 | extractors); | 388 | extractors); |
357 | EXTRACTOR_removeAll(extractors); | 389 | EXTRACTOR_removeAll(extractors); |
358 | filenamerest = &filename[strlen(filename)-1]; | 390 | filenamerest = &fsuc.filename[strlen(fsuc.filename)-1]; |
359 | while ( (filenamerest > filename) && | 391 | while ( (filenamerest > fsuc.filename) && |
360 | (filenamerest[-1] != DIR_SEPARATOR) ) | 392 | (filenamerest[-1] != DIR_SEPARATOR) ) |
361 | filenamerest--; | 393 | filenamerest--; |
362 | ECRS_addToMetaData(meta, | 394 | ECRS_addToMetaData(meta, |
@@ -397,36 +429,30 @@ void on_fsinsertuploadbutton_clicked_fs(gpointer dummy, | |||
397 | gtk_dialog_set_default_response(GTK_DIALOG(dialog), | 429 | gtk_dialog_set_default_response(GTK_DIALOG(dialog), |
398 | GTK_RESPONSE_OK); | 430 | GTK_RESPONSE_OK); |
399 | if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL) { | 431 | if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_CANCEL) { |
400 | meta = getMetaDataFromList(metaXML, | 432 | fsuc.anonymity = getSpinButtonValue(getMainXML(), |
401 | "metaDataDialogMetaDataList", | 433 | "uploadAnonymityLevelSpinButton"); |
402 | "previewImage"); | 434 | fsuc.priority = getSpinButtonValue(getMainXML(), |
403 | keywordURI = getKeywordURIFromList(metaXML, | 435 | "contentPrioritySpinButton"); |
436 | fsuc.index = getToggleButtonValue(getMainXML(), | ||
437 | "indexbutton"); | ||
438 | fsuc.extract = getToggleButtonValue(getMainXML(), | ||
439 | "doExtractCheckButton"); | ||
440 | fsuc.deep_index = getToggleButtonValue(getMainXML(), | ||
441 | "deepIndexCheckButton"); | ||
442 | fsuc.expire = get_time() + 2 * cronYEARS; | ||
443 | fsuc.meta = getMetaDataFromList(metaXML, | ||
444 | "metaDataDialogMetaDataList", | ||
445 | "previewImage"); | ||
446 | fsuc.keywordURI = getKeywordURIFromList(metaXML, | ||
404 | "metaDataDialogKeywordList"); | 447 | "metaDataDialogKeywordList"); |
405 | gkeywordURI = ECRS_stringToUri(ectx, | 448 | fsuc.gkeywordURI = ECRS_stringToUri(ectx, |
406 | ECRS_URI_PREFIX | 449 | ECRS_URI_PREFIX |
407 | ECRS_SEARCH_INFIX); | 450 | ECRS_SEARCH_INFIX); |
408 | /* FIXME: DEADLOCK! */ | 451 | run_with_save_calls(&start_upload_helper, |
409 | FSUI_startUpload(ctx, | 452 | &fsuc); |
410 | filename, | 453 | ECRS_freeMetaData(fsuc.meta); |
411 | (DirectoryScanCallback) &disk_directory_scan, | 454 | ECRS_freeUri(fsuc.gkeywordURI); |
412 | ectx, | 455 | ECRS_freeUri(fsuc.keywordURI); |
413 | getSpinButtonValue(getMainXML(), | ||
414 | "uploadAnonymityLevelSpinButton"), | ||
415 | getSpinButtonValue(getMainXML(), | ||
416 | "contentPrioritySpinButton"), | ||
417 | getToggleButtonValue(getMainXML(), | ||
418 | "indexbutton"), | ||
419 | getToggleButtonValue(getMainXML(), | ||
420 | "doExtractCheckButton"), | ||
421 | getToggleButtonValue(getMainXML(), | ||
422 | "deepIndexCheckButton"), | ||
423 | get_time() + 2 * cronYEARS, | ||
424 | meta, | ||
425 | gkeywordURI, | ||
426 | keywordURI); | ||
427 | ECRS_freeMetaData(meta); | ||
428 | ECRS_freeUri(gkeywordURI); | ||
429 | ECRS_freeUri(keywordURI); | ||
430 | } | 456 | } |
431 | gtk_widget_destroy (dialog); | 457 | gtk_widget_destroy (dialog); |
432 | UNREF(metaXML); | 458 | UNREF(metaXML); |