diff options
Diffstat (limited to 'src/plugins/fs/search.c')
-rw-r--r-- | src/plugins/fs/search.c | 103 |
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 * | |||
689 | search_start_helper (void *cls) | 710 | search_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 | ||
829 | struct FCBC | 859 | struct 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 | ||