aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/fs/search.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/fs/search.c')
-rw-r--r--src/plugins/fs/search.c103
1 files changed, 67 insertions, 36 deletions
diff --git a/src/plugins/fs/search.c b/src/plugins/fs/search.c
index 3addb5dd..055f126d 100644
--- a/src/plugins/fs/search.c
+++ b/src/plugins/fs/search.c
@@ -119,7 +119,10 @@ addEntryToSearchTree (SearchList * searchContext,
119 desc = getDescriptionFromMetaData (info->meta); 119 desc = getDescriptionFromMetaData (info->meta);
120 name = getFileNameFromMetaData (info->meta); 120 name = getFileNameFromMetaData (info->meta);
121 size = GNUNET_ECRS_uri_test_chk (info->uri) 121 size = GNUNET_ECRS_uri_test_chk (info->uri)
122 || GNUNET_ECRS_uri_test_loc (info->uri) ? GNUNET_ECRS_uri_get_file_siz (info->uri) : 0; 122 || GNUNET_ECRS_uri_test_loc (info->
123 uri) ? GNUNET_ECRS_uri_get_file_siz (info->
124 uri) :
125 0;
123 pixbuf = getThumbnailFromMetaData (info->meta); 126 pixbuf = getThumbnailFromMetaData (info->meta);
124 size_h = GNUNET_get_byte_size_as_fancy_string (size); 127 size_h = GNUNET_get_byte_size_as_fancy_string (size);
125 gtk_tree_store_set (searchContext->tree, 128 gtk_tree_store_set (searchContext->tree,
@@ -131,13 +134,14 @@ addEntryToSearchTree (SearchList * searchContext,
131 SEARCH_DESC, desc, 134 SEARCH_DESC, desc,
132 SEARCH_PIXBUF, pixbuf, 135 SEARCH_PIXBUF, pixbuf,
133 SEARCH_URI, GNUNET_ECRS_uri_duplicate (info->uri), 136 SEARCH_URI, GNUNET_ECRS_uri_duplicate (info->uri),
134 SEARCH_META, GNUNET_ECRS_meta_data_duplicate (info->meta), 137 SEARCH_META,
138 GNUNET_ECRS_meta_data_duplicate (info->meta),
135 SEARCH_CELL_BG_COLOR, getColorCode (state), 139 SEARCH_CELL_BG_COLOR, getColorCode (state),
136 SEARCH_CELL_FG_COLOR, "black", 140 SEARCH_CELL_FG_COLOR, "black", SEARCH_INTERNAL,
137 SEARCH_INTERNAL, searchContext, 141 searchContext, SEARCH_INTERNAL_PARENT, downloadParent,
138 SEARCH_INTERNAL_PARENT, downloadParent, -1); 142 -1);
139 if (pixbuf != NULL) 143 if (pixbuf != NULL)
140 g_object_unref(pixbuf); 144 g_object_unref (pixbuf);
141 GNUNET_free (size_h); 145 GNUNET_free (size_h);
142 GNUNET_free (name); 146 GNUNET_free (name);
143 GNUNET_free (desc); 147 GNUNET_free (desc);
@@ -165,8 +169,9 @@ fs_search_result_received (SearchList * searchContext,
165 if ((state & (GNUNET_URITRACK_INSERTED | 169 if ((state & (GNUNET_URITRACK_INSERTED |
166 GNUNET_URITRACK_INDEXED)) && 170 GNUNET_URITRACK_INDEXED)) &&
167 (GNUNET_YES == GNUNET_GC_get_configuration_value_yesno (cfg, 171 (GNUNET_YES == GNUNET_GC_get_configuration_value_yesno (cfg,
168 "GNUNET-GTK", 172 "GNUNET-GTK",
169 "DISABLE-OWN", GNUNET_YES))) 173 "DISABLE-OWN",
174 GNUNET_YES)))
170 return; 175 return;
171 model = GTK_TREE_STORE (gtk_tree_view_get_model (searchContext->treeview)); 176 model = GTK_TREE_STORE (gtk_tree_view_get_model (searchContext->treeview));
172 gtk_tree_store_append (model, &iter, NULL); 177 gtk_tree_store_append (model, &iter, NULL);
@@ -289,10 +294,12 @@ on_save_search_activate (void *cls, GtkWidget * searchEntry)
289 while (gtk_tree_model_iter_next (model, &iter)); 294 while (gtk_tree_model_iter_next (model, &iter));
290 meta = GNUNET_ECRS_meta_data_create (); 295 meta = GNUNET_ECRS_meta_data_create ();
291 GNUNET_ECRS_meta_data_inser (meta, EXTRACTOR_KEYWORDS, list->searchString); 296 GNUNET_ECRS_meta_data_inser (meta, EXTRACTOR_KEYWORDS, list->searchString);
292 GNUNET_ECRS_meta_data_inser (meta, EXTRACTOR_DESCRIPTION, _("Saved search results")); 297 GNUNET_ECRS_meta_data_inser (meta, EXTRACTOR_DESCRIPTION,
298 _("Saved search results"));
293 GNUNET_ECRS_meta_data_inser (meta, EXTRACTOR_SOFTWARE, "gnunet-gtk"); 299 GNUNET_ECRS_meta_data_inser (meta, EXTRACTOR_SOFTWARE, "gnunet-gtk");
294 if (GNUNET_OK != GNUNET_ECRS_directory_create (NULL, 300 if (GNUNET_OK != GNUNET_ECRS_directory_create (NULL,
295 &directory, &dir_len, fis_size, fis, meta)) 301 &directory, &dir_len,
302 fis_size, fis, meta))
296 { 303 {
297 GNUNET_GTK_add_log_entry (_("Internal error.")); 304 GNUNET_GTK_add_log_entry (_("Internal error."));
298 GNUNET_GEBREAK (NULL, 0); 305 GNUNET_GEBREAK (NULL, 0);
@@ -303,7 +310,8 @@ on_save_search_activate (void *cls, GtkWidget * searchEntry)
303 } 310 }
304 GNUNET_ECRS_meta_data_destroy (meta); 311 GNUNET_ECRS_meta_data_destroy (meta);
305 GNUNET_array_grow (fis, fis_size, 0); 312 GNUNET_array_grow (fis, fis_size, 0);
306 if (GNUNET_OK != GNUNET_disk_file_write (NULL, name, directory, dir_len, "644")) 313 if (GNUNET_OK !=
314 GNUNET_disk_file_write (NULL, name, directory, dir_len, "644"))
307 { 315 {
308 GNUNET_GTK_add_log_entry (_("Error writing file `%s'."), name); 316 GNUNET_GTK_add_log_entry (_("Error writing file `%s'."), name);
309 } 317 }
@@ -361,7 +369,8 @@ fs_search_started (struct GNUNET_FSUI_SearchList * fsui_list,
361 const struct GNUNET_ECRS_URI * uri, 369 const struct GNUNET_ECRS_URI * uri,
362 unsigned int anonymityLevel, 370 unsigned int anonymityLevel,
363 unsigned int resultCount, 371 unsigned int resultCount,
364 const GNUNET_ECRS_FileInfo * results, GNUNET_FSUI_State state) 372 const GNUNET_ECRS_FileInfo * results,
373 GNUNET_FSUI_State state)
365{ 374{
366 SearchList *list; 375 SearchList *list;
367 gint pages; 376 gint pages;
@@ -381,12 +390,16 @@ fs_search_started (struct GNUNET_FSUI_SearchList * fsui_list,
381 GNUNET_GEBREAK (ectx, 0); 390 GNUNET_GEBREAK (ectx, 0);
382 return NULL; 391 return NULL;
383 } 392 }
384 GNUNET_GEASSERT (ectx, strlen (description) >= strlen (GNUNET_ECRS_URI_PREFIX)); 393 GNUNET_GEASSERT (ectx,
394 strlen (description) >= strlen (GNUNET_ECRS_URI_PREFIX));
385 dhead = &description[strlen (GNUNET_ECRS_URI_PREFIX)]; 395 dhead = &description[strlen (GNUNET_ECRS_URI_PREFIX)];
386 if (0 == strncmp (dhead, GNUNET_ECRS_SEARCH_INFIX, strlen (GNUNET_ECRS_SEARCH_INFIX))) 396 if (0 ==
397 strncmp (dhead, GNUNET_ECRS_SEARCH_INFIX,
398 strlen (GNUNET_ECRS_SEARCH_INFIX)))
387 dhead = &dhead[strlen (GNUNET_ECRS_SEARCH_INFIX)]; 399 dhead = &dhead[strlen (GNUNET_ECRS_SEARCH_INFIX)];
388 else if (0 == strncmp (dhead, 400 else if (0 == strncmp (dhead,
389 GNUNET_ECRS_SUBSPACE_INFIX, strlen (GNUNET_ECRS_SUBSPACE_INFIX))) 401 GNUNET_ECRS_SUBSPACE_INFIX,
402 strlen (GNUNET_ECRS_SUBSPACE_INFIX)))
390 dhead = &dhead[strlen (GNUNET_ECRS_SUBSPACE_INFIX)]; 403 dhead = &dhead[strlen (GNUNET_ECRS_SUBSPACE_INFIX)];
391 list = GNUNET_malloc (sizeof (SearchList)); 404 list = GNUNET_malloc (sizeof (SearchList));
392 memset (list, 0, sizeof (SearchList)); 405 memset (list, 0, sizeof (SearchList));
@@ -396,7 +409,9 @@ fs_search_started (struct GNUNET_FSUI_SearchList * fsui_list,
396 list->next = search_head; 409 list->next = search_head;
397 search_head = list; 410 search_head = list;
398 list->searchXML 411 list->searchXML
399 = glade_xml_new (GNUNET_GTK_get_glade_filename (), "searchResultsFrame", PACKAGNUNET_GENAME); 412 =
413 glade_xml_new (GNUNET_GTK_get_glade_filename (), "searchResultsFrame",
414 PACKAGNUNET_GENAME);
400 GNUNET_GTK_connect_glade_with_plugins (list->searchXML); 415 GNUNET_GTK_connect_glade_with_plugins (list->searchXML);
401 list->searchpage 416 list->searchpage
402 = extractMainWidgetFromWindow (list->searchXML, "searchResultsFrame"); 417 = extractMainWidgetFromWindow (list->searchXML, "searchResultsFrame");
@@ -478,8 +493,9 @@ fs_search_started (struct GNUNET_FSUI_SearchList * fsui_list,
478 gtk_tree_view_column_set_sort_column_id (column, SEARCH_MIME); 493 gtk_tree_view_column_set_sort_column_id (column, SEARCH_MIME);
479 494
480 if (GNUNET_YES != GNUNET_GC_get_configuration_value_yesno (cfg, 495 if (GNUNET_YES != GNUNET_GC_get_configuration_value_yesno (cfg,
481 "GNUNET-GTK", 496 "GNUNET-GTK",
482 "DISABLE-PREVIEWS", GNUNET_NO)) 497 "DISABLE-PREVIEWS",
498 GNUNET_NO))
483 { 499 {
484 renderer = gtk_cell_renderer_pixbuf_new (); 500 renderer = gtk_cell_renderer_pixbuf_new ();
485 col = gtk_tree_view_insert_column_with_attributes (list->treeview, 501 col = gtk_tree_view_insert_column_with_attributes (list->treeview,
@@ -541,7 +557,9 @@ fs_search_started (struct GNUNET_FSUI_SearchList * fsui_list,
541 557
542 /* insert new page into search notebook */ 558 /* insert new page into search notebook */
543 notebook 559 notebook
544 = GTK_NOTEBOOK (glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "downloadNotebook")); 560 =
561 GTK_NOTEBOOK (glade_xml_get_widget
562 (GNUNET_GTK_get_main_glade_XML (), "downloadNotebook"));
545 pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook)); 563 pages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (notebook));
546 gtk_notebook_append_page (notebook, list->searchpage, list->tab_label); 564 gtk_notebook_append_page (notebook, list->searchpage, list->tab_label);
547 gtk_notebook_set_current_page (notebook, pages); 565 gtk_notebook_set_current_page (notebook, pages);
@@ -632,7 +650,9 @@ fs_search_stopped (SearchList * list)
632 650
633 /* remove page from notebook */ 651 /* remove page from notebook */
634 notebook 652 notebook
635 = GTK_NOTEBOOK (glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "downloadNotebook")); 653 =
654 GTK_NOTEBOOK (glade_xml_get_widget
655 (GNUNET_GTK_get_main_glade_XML (), "downloadNotebook"));
636 index = -1; 656 index = -1;
637 for (i = gtk_notebook_get_n_pages (notebook) - 1; i >= 0; i--) 657 for (i = gtk_notebook_get_n_pages (notebook) - 1; i >= 0; i--)
638 if (list->searchpage == gtk_notebook_get_nth_page (notebook, i)) 658 if (list->searchpage == gtk_notebook_get_nth_page (notebook, i))
@@ -673,7 +693,8 @@ on_fssearchKeywordComboBoxEntry_changed_fs (gpointer dummy2,
673 693
674 searchString = getEntryLineValue (GNUNET_GTK_get_main_glade_XML (), 694 searchString = getEntryLineValue (GNUNET_GTK_get_main_glade_XML (),
675 "fssearchKeywordComboBoxEntry"); 695 "fssearchKeywordComboBoxEntry");
676 searchButton = glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "fssearchbutton"); 696 searchButton =
697 glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "fssearchbutton");
677 gtk_widget_set_sensitive (searchButton, strlen (searchString) > 0); 698 gtk_widget_set_sensitive (searchButton, strlen (searchString) > 0);
678} 699}
679 700
@@ -689,7 +710,8 @@ static void *
689search_start_helper (void *cls) 710search_start_helper (void *cls)
690{ 711{
691 FSSS *fsss = cls; 712 FSSS *fsss = cls;
692 GNUNET_FSUI_search_start (ctx, fsss->anonymity, fsss->max, fsss->delay, fsss->uri); 713 GNUNET_FSUI_search_start (ctx, fsss->anonymity, fsss->max, fsss->delay,
714 fsss->uri);
693 return NULL; 715 return NULL;
694} 716}
695 717
@@ -715,8 +737,8 @@ on_fssearchbutton_clicked_fs (gpointer dummy2, GtkWidget * searchButton)
715 if ((searchString == NULL) || (strlen (searchString) == 0)) 737 if ((searchString == NULL) || (strlen (searchString) == 0))
716 { 738 {
717 GNUNET_GELOG (ectx, 739 GNUNET_GELOG (ectx,
718 GNUNET_GEERROR | GNUNET_GEUSER | GNUNET_GEIMMEDIATE, 740 GNUNET_GEERROR | GNUNET_GEUSER | GNUNET_GEIMMEDIATE,
719 _("Need a keyword to search!\n")); 741 _("Need a keyword to search!\n"));
720 return; 742 return;
721 } 743 }
722 /* add the keyword to the list of keywords that have 744 /* add the keyword to the list of keywords that have
@@ -736,7 +758,9 @@ on_fssearchbutton_clicked_fs (gpointer dummy2, GtkWidget * searchButton)
736 fsss.uri = NULL; 758 fsss.uri = NULL;
737 /* check for namespace search */ 759 /* check for namespace search */
738 searchNamespaceGtkCB 760 searchNamespaceGtkCB
739 = glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "searchNamespaceComboBoxEntry"); 761 =
762 glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (),
763 "searchNamespaceComboBoxEntry");
740 if (TRUE == 764 if (TRUE ==
741 gtk_combo_box_get_active_iter (GTK_COMBO_BOX (searchNamespaceGtkCB), 765 gtk_combo_box_get_active_iter (GTK_COMBO_BOX (searchNamespaceGtkCB),
742 &iter)) 766 &iter))
@@ -765,9 +789,10 @@ on_fssearchbutton_clicked_fs (gpointer dummy2, GtkWidget * searchButton)
765 { 789 {
766 char *ustring; 790 char *ustring;
767 791
768 ustring = GNUNET_malloc (strlen (searchString) + sizeof (GNUNET_EncName) + 792 ustring =
769 strlen (GNUNET_ECRS_URI_PREFIX) + 793 GNUNET_malloc (strlen (searchString) + sizeof (GNUNET_EncName) +
770 strlen (GNUNET_ECRS_SUBSPACE_INFIX) + 10); 794 strlen (GNUNET_ECRS_URI_PREFIX) +
795 strlen (GNUNET_ECRS_SUBSPACE_INFIX) + 10);
771 strcpy (ustring, GNUNET_ECRS_URI_PREFIX); 796 strcpy (ustring, GNUNET_ECRS_URI_PREFIX);
772 strcat (ustring, GNUNET_ECRS_SUBSPACE_INFIX); 797 strcat (ustring, GNUNET_ECRS_SUBSPACE_INFIX);
773 strcat (ustring, ns); 798 strcat (ustring, ns);
@@ -777,9 +802,9 @@ on_fssearchbutton_clicked_fs (gpointer dummy2, GtkWidget * searchButton)
777 if (fsss.uri == NULL) 802 if (fsss.uri == NULL)
778 { 803 {
779 GNUNET_GELOG (ectx, 804 GNUNET_GELOG (ectx,
780 GNUNET_GEERROR | GNUNET_GEBULK | GNUNET_GEUSER, 805 GNUNET_GEERROR | GNUNET_GEBULK | GNUNET_GEUSER,
781 _("Failed to create namespace URI from `%s'.\n"), 806 _("Failed to create namespace URI from `%s'.\n"),
782 ustring); 807 ustring);
783 } 808 }
784 GNUNET_free (ustring); 809 GNUNET_free (ustring);
785 } 810 }
@@ -797,7 +822,9 @@ on_fssearchbutton_clicked_fs (gpointer dummy2, GtkWidget * searchButton)
797 } 822 }
798 /* check if search is already running */ 823 /* check if search is already running */
799 notebook 824 notebook
800 = GTK_NOTEBOOK (glade_xml_get_widget (GNUNET_GTK_get_main_glade_XML (), "downloadNotebook")); 825 =
826 GTK_NOTEBOOK (glade_xml_get_widget
827 (GNUNET_GTK_get_main_glade_XML (), "downloadNotebook"));
801 pages = gtk_notebook_get_n_pages (notebook); 828 pages = gtk_notebook_get_n_pages (notebook);
802 list = search_head; 829 list = search_head;
803 while (list != NULL) 830 while (list != NULL)
@@ -819,16 +846,20 @@ on_fssearchbutton_clicked_fs (gpointer dummy2, GtkWidget * searchButton)
819 } 846 }
820 fsss.anonymity = getSpinButtonValue (GNUNET_GTK_get_main_glade_XML (), 847 fsss.anonymity = getSpinButtonValue (GNUNET_GTK_get_main_glade_XML (),
821 "searchAnonymitySelectionSpinButton"); 848 "searchAnonymitySelectionSpinButton");
822 fsss.max = getSpinButtonValue (GNUNET_GTK_get_main_glade_XML (), "maxResultsSpinButton"); 849 fsss.max =
823 fsss.delay = getSpinButtonValue (GNUNET_GTK_get_main_glade_XML (), 850 getSpinButtonValue (GNUNET_GTK_get_main_glade_XML (),
824 "searchDelaySpinButton") * GNUNET_CRON_SECONDS; 851 "maxResultsSpinButton");
852 fsss.delay =
853 getSpinButtonValue (GNUNET_GTK_get_main_glade_XML (),
854 "searchDelaySpinButton") * GNUNET_CRON_SECONDS;
825 GNUNET_GTK_run_with_save_calls (search_start_helper, &fsss); 855 GNUNET_GTK_run_with_save_calls (search_start_helper, &fsss);
826 GNUNET_ECRS_uri_destroy (fsss.uri); 856 GNUNET_ECRS_uri_destroy (fsss.uri);
827} 857}
828 858
829struct FCBC 859struct FCBC
830{ 860{
831 int (*method) (struct GNUNET_FSUI_Context * ctx, struct GNUNET_FSUI_SearchList * list); 861 int (*method) (struct GNUNET_FSUI_Context * ctx,
862 struct GNUNET_FSUI_SearchList * list);
832 struct GNUNET_FSUI_SearchList *argument; 863 struct GNUNET_FSUI_SearchList *argument;
833}; 864};
834 865