diff options
Diffstat (limited to 'src/fs_event_handler.c')
-rw-r--r-- | src/fs_event_handler.c | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/src/fs_event_handler.c b/src/fs_event_handler.c index d1c88d6b..ebadd9d7 100644 --- a/src/fs_event_handler.c +++ b/src/fs_event_handler.c | |||
@@ -42,6 +42,7 @@ struct SearchTab | |||
42 | GtkWidget *frame; | 42 | GtkWidget *frame; |
43 | GtkWidget *tab_label; | 43 | GtkWidget *tab_label; |
44 | GtkWidget *close_button; | 44 | GtkWidget *close_button; |
45 | GtkWidget *clear_button; | ||
45 | GtkWidget *play_button; | 46 | GtkWidget *play_button; |
46 | GtkWidget *pause_button; | 47 | GtkWidget *pause_button; |
47 | GtkLabel *label; | 48 | GtkLabel *label; |
@@ -226,12 +227,18 @@ download_lost_parent (struct DownloadEntry *de, | |||
226 | int is_active) | 227 | int is_active) |
227 | { | 228 | { |
228 | GtkTreeIter iter; | 229 | GtkTreeIter iter; |
230 | GtkTreePath *path; | ||
229 | 231 | ||
230 | gtk_tree_row_reference_free (de->rr); | 232 | gtk_tree_row_reference_free (de->rr); |
231 | de->sr = NULL; | 233 | de->sr = NULL; |
232 | de->ts = GNUNET_GTK_add_to_uri_tab (&iter, | 234 | de->ts = GNUNET_GTK_add_to_uri_tab (&iter, |
233 | de->meta, | 235 | de->meta, |
234 | de->uri); | 236 | de->uri); |
237 | path = gtk_tree_model_get_path (GTK_TREE_MODEL (de->ts), | ||
238 | &iter); | ||
239 | de->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (de->ts), | ||
240 | path); | ||
241 | gtk_tree_path_free (path); | ||
235 | mark_download_progress (de, size, completed); | 242 | mark_download_progress (de, size, completed); |
236 | if (size > completed) | 243 | if (size > completed) |
237 | { | 244 | { |
@@ -489,7 +496,7 @@ update_meta_data_views (GtkTreeView *tv, | |||
489 | struct GNUNET_CONTAINER_MetaData *meta; | 496 | struct GNUNET_CONTAINER_MetaData *meta; |
490 | GdkPixbuf *pixbuf; | 497 | GdkPixbuf *pixbuf; |
491 | 498 | ||
492 | GNUNET_assert (tab->sc != NULL); | 499 | GNUNET_assert (tab->query_txt != NULL); |
493 | image = GTK_IMAGE (GNUNET_GTK_get_main_window_object ("GNUNET_GTK_main_window_preview_image")); | 500 | image = GTK_IMAGE (GNUNET_GTK_get_main_window_object ("GNUNET_GTK_main_window_preview_image")); |
494 | ms = GTK_LIST_STORE (GNUNET_GTK_get_main_window_object ("GNUNET_GTK_meta_data_list_store")); | 501 | ms = GTK_LIST_STORE (GNUNET_GTK_get_main_window_object ("GNUNET_GTK_meta_data_list_store")); |
495 | 502 | ||
@@ -531,12 +538,19 @@ update_search_label (struct SearchTab *tab) | |||
531 | { | 538 | { |
532 | char *name; | 539 | char *name; |
533 | 540 | ||
534 | GNUNET_asprintf (&name, | 541 | if (tab->num_results > 0) |
535 | "%.*s%s (%u)", | 542 | GNUNET_asprintf (&name, |
536 | 20, | 543 | "%.*s%s (%u)", |
537 | tab->query_txt, | 544 | 20, |
538 | strlen (tab->query_txt) > 20 ? "..." : "", | 545 | tab->query_txt, |
539 | tab->num_results); | 546 | strlen (tab->query_txt) > 20 ? "..." : "", |
547 | tab->num_results); | ||
548 | else | ||
549 | GNUNET_asprintf (&name, | ||
550 | "%.*s%s", | ||
551 | 20, | ||
552 | tab->query_txt, | ||
553 | strlen (tab->query_txt) > 20 ? "..." : ""); | ||
540 | gtk_label_set_text (tab->label, name); | 554 | gtk_label_set_text (tab->label, name); |
541 | GNUNET_free (name); | 555 | GNUNET_free (name); |
542 | } | 556 | } |
@@ -623,6 +637,22 @@ stop_search (GtkButton *button, | |||
623 | 637 | ||
624 | 638 | ||
625 | /** | 639 | /** |
640 | * Stop completed downloads (or those that failed). | ||
641 | */ | ||
642 | static void | ||
643 | clear_downloads (GtkButton *button, | ||
644 | gpointer user_data) | ||
645 | { | ||
646 | struct SearchTab *tab = user_data; | ||
647 | if (tab->sc != NULL) | ||
648 | { | ||
649 | } | ||
650 | GNUNET_break (0); | ||
651 | } | ||
652 | |||
653 | |||
654 | |||
655 | /** | ||
626 | * Tell FS to pause a search. | 656 | * Tell FS to pause a search. |
627 | */ | 657 | */ |
628 | static void | 658 | static void |
@@ -715,6 +745,10 @@ setup_search (struct GNUNET_FS_SearchContext *sc, | |||
715 | "_search_result_label_close_button")); | 745 | "_search_result_label_close_button")); |
716 | g_signal_connect(G_OBJECT(tab->close_button), "clicked", | 746 | g_signal_connect(G_OBJECT(tab->close_button), "clicked", |
717 | G_CALLBACK(stop_search), tab); | 747 | G_CALLBACK(stop_search), tab); |
748 | tab->clear_button = GTK_WIDGET (gtk_builder_get_object (tab->builder, | ||
749 | "_search_result_label_clear_button")); | ||
750 | g_signal_connect(G_OBJECT(tab->clear_button), "clicked", | ||
751 | G_CALLBACK(clear_downloads), tab); | ||
718 | tab->play_button = GTK_WIDGET (gtk_builder_get_object (tab->builder, | 752 | tab->play_button = GTK_WIDGET (gtk_builder_get_object (tab->builder, |
719 | "_search_result_label_play_button")); | 753 | "_search_result_label_play_button")); |
720 | g_signal_connect(G_OBJECT(tab->play_button), "clicked", | 754 | g_signal_connect(G_OBJECT(tab->play_button), "clicked", |
@@ -885,6 +919,8 @@ GNUNET_GTK_add_to_uri_tab (GtkTreeIter *iter, | |||
885 | if (utab == NULL) | 919 | if (utab == NULL) |
886 | { | 920 | { |
887 | utab = setup_search (NULL, NULL); | 921 | utab = setup_search (NULL, NULL); |
922 | gtk_widget_set_visible (utab->close_button, | ||
923 | FALSE); | ||
888 | } | 924 | } |
889 | else | 925 | else |
890 | { | 926 | { |
@@ -894,6 +930,7 @@ GNUNET_GTK_add_to_uri_tab (GtkTreeIter *iter, | |||
894 | sr = add_search_result (utab, iter, | 930 | sr = add_search_result (utab, iter, |
895 | NULL, uri, meta, | 931 | NULL, uri, meta, |
896 | NULL, 0); | 932 | NULL, 0); |
933 | |||
897 | return GTK_TREE_STORE (gtk_builder_get_object (utab->builder, | 934 | return GTK_TREE_STORE (gtk_builder_get_object (utab->builder, |
898 | "GNUNET_GTK_file_sharing_result_tree_store")); | 935 | "GNUNET_GTK_file_sharing_result_tree_store")); |
899 | } | 936 | } |