aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/fs/download.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/fs/download.c')
-rw-r--r--src/plugins/fs/download.c55
1 files changed, 44 insertions, 11 deletions
diff --git a/src/plugins/fs/download.c b/src/plugins/fs/download.c
index b58bb5ef..b77615d6 100644
--- a/src/plugins/fs/download.c
+++ b/src/plugins/fs/download.c
@@ -639,6 +639,18 @@ void on_statusDownloadURIEntry_editing_done_fs(GtkWidget * entry,
639 FREE(urid); 639 FREE(urid);
640} 640}
641 641
642struct FCBC {
643 int (*method)(struct FSUI_Context * ctx,
644 struct FSUI_DownloadList * list);
645 struct FSUI_DownloadList * argument;
646};
647
648static void * fsui_callback(void * cls) {
649 struct FCBC * fcbc = cls;
650 fcbc->method(ctx,
651 fcbc->argument);
652 return NULL;
653}
642 654
643static void 655static void
644clearCompletedDownloadCallback(GtkTreeModel * model, 656clearCompletedDownloadCallback(GtkTreeModel * model,
@@ -646,6 +658,7 @@ clearCompletedDownloadCallback(GtkTreeModel * model,
646 GtkTreeIter * iter, 658 GtkTreeIter * iter,
647 gpointer unused) { 659 gpointer unused) {
648 DownloadList * dl; 660 DownloadList * dl;
661 struct FCBC fcbc;
649 662
650 GE_ASSERT(ectx, 663 GE_ASSERT(ectx,
651 model == GTK_TREE_MODEL(download_summary)); 664 model == GTK_TREE_MODEL(download_summary));
@@ -653,9 +666,12 @@ clearCompletedDownloadCallback(GtkTreeModel * model,
653 iter, 666 iter,
654 DOWNLOAD_INTERNAL, &dl, 667 DOWNLOAD_INTERNAL, &dl,
655 -1); 668 -1);
656 if (dl->has_terminated) 669 if (dl->has_terminated) {
657 FSUI_stopDownload(ctx, 670 fcbc.method = &FSUI_stopDownload;
658 dl->fsui_list); 671 fcbc.argument = dl->fsui_list;
672 run_with_save_calls(&fsui_callback,
673 &fcbc);
674 }
659} 675}
660 676
661void on_clearCompletedDownloadsButton_clicked_fs(void * unused, 677void on_clearCompletedDownloadsButton_clicked_fs(void * unused,
@@ -673,11 +689,12 @@ void on_clearCompletedDownloadsButton_clicked_fs(void * unused,
673} 689}
674 690
675static void 691static void
676abortDownloadCallback(GtkTreeModel * model, 692fsuiCallDownloadCallback(GtkTreeModel * model,
677 GtkTreePath * path, 693 GtkTreePath * path,
678 GtkTreeIter * iter, 694 GtkTreeIter * iter,
679 gpointer unused) { 695 gpointer fsui_call) {
680 DownloadList * dl; 696 DownloadList * dl;
697 struct FCBC fcbc;
681 698
682 GE_ASSERT(ectx, 699 GE_ASSERT(ectx,
683 model == GTK_TREE_MODEL(download_summary)); 700 model == GTK_TREE_MODEL(download_summary));
@@ -685,8 +702,10 @@ abortDownloadCallback(GtkTreeModel * model,
685 iter, 702 iter,
686 DOWNLOAD_INTERNAL, &dl, 703 DOWNLOAD_INTERNAL, &dl,
687 -1); 704 -1);
688 FSUI_abortDownload(ctx, 705 fcbc.method = fsui_call;
689 dl->fsui_list); 706 fcbc.argument = dl->fsui_list;
707 run_with_save_calls(&fsui_callback,
708 &fcbc);
690} 709}
691 710
692void on_abortDownloadButton_clicked_fs(void * unused, 711void on_abortDownloadButton_clicked_fs(void * unused,
@@ -699,8 +718,22 @@ void on_abortDownloadButton_clicked_fs(void * unused,
699 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(downloadList)); 718 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(downloadList));
700 gtk_tree_selection_selected_foreach 719 gtk_tree_selection_selected_foreach
701 (selection, 720 (selection,
702 &abortDownloadCallback, 721 &fsuiCallDownloadCallback,
703 NULL); 722 &FSUI_abortDownload);
723}
724
725void on_stopDownloadButton_clicked_fs(void * unused,
726 GtkWidget * clearButton) {
727 GtkTreeSelection * selection;
728 GtkWidget * downloadList;
729
730 downloadList = glade_xml_get_widget(getMainXML(),
731 "activeDownloadsList");
732 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(downloadList));
733 gtk_tree_selection_selected_foreach
734 (selection,
735 &fsuiCallDownloadCallback,
736 &FSUI_stopDownload);
704} 737}
705 738
706/* end of download.c */ 739/* end of download.c */