aboutsummaryrefslogtreecommitdiff
path: root/src/fs_event_handler.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fs_event_handler.c')
-rw-r--r--src/fs_event_handler.c51
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 */
642static void
643clear_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 */
628static void 658static 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}