aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/download.c34
-rw-r--r--src/download.h4
-rw-r--r--src/fs_event_handler.c6
-rw-r--r--src/main_window_file_download.c96
-rw-r--r--src/main_window_open_directory.c27
5 files changed, 153 insertions, 14 deletions
diff --git a/src/download.c b/src/download.c
index a260783d..73a3146c 100644
--- a/src/download.c
+++ b/src/download.c
@@ -88,15 +88,31 @@ GNUNET_GTK_open_download_as_dialog (struct DownloadContext *dc)
88 len = GNUNET_FS_uri_chk_get_file_size (dc->uri); 88 len = GNUNET_FS_uri_chk_get_file_size (dc->uri);
89 gtk_widget_destroy (ad); 89 gtk_widget_destroy (ad);
90 g_object_unref (G_OBJECT (builder)); 90 g_object_unref (G_OBJECT (builder));
91 GNUNET_FS_download_start_from_search (fs, 91 if (dc->sr != NULL)
92 dc->sr, 92 GNUNET_break (NULL !=
93 dc->filename, 93 GNUNET_FS_download_start_from_search (fs,
94 NULL /* tempname */, 94 dc->sr,
95 0 /* offset */, 95 dc->filename,
96 len, 96 NULL /* tempname */,
97 anonymity, 97 0 /* offset */,
98 opt, 98 len,
99 dc); 99 anonymity,
100 opt,
101 dc));
102 else
103 GNUNET_break (NULL !=
104 GNUNET_FS_download_start (fs,
105 dc->uri,
106 NULL,
107 dc->filename,
108 NULL /* tempname */,
109 0 /* offset */,
110 len,
111 anonymity,
112 opt,
113 dc,
114 NULL));
115
100} 116}
101 117
102/* end of download.c */ 118/* end of download.c */
diff --git a/src/download.h b/src/download.h
index f1878e55..595d5c60 100644
--- a/src/download.h
+++ b/src/download.h
@@ -63,6 +63,10 @@ struct DownloadContext
63 */ 63 */
64 int is_recursive; 64 int is_recursive;
65 65
66 /**
67 * Desired (default) anonymity level.
68 */
69 int anonymity;
66}; 70};
67 71
68 72
diff --git a/src/fs_event_handler.c b/src/fs_event_handler.c
index 9837ec98..b4cc9d13 100644
--- a/src/fs_event_handler.c
+++ b/src/fs_event_handler.c
@@ -259,9 +259,10 @@ setup_download (struct DownloadEntry *pde,
259 } 259 }
260 else 260 else
261 { 261 {
262 /* find or create tab with just download results and 262 /* FIXME: find or create tab with just download results and
263 create new entry! */ 263 create new entry! */
264 GNUNET_break (0); 264 GNUNET_break (0);
265 return de;
265 } 266 }
266 path = gtk_tree_row_reference_get_path (de->rr); 267 path = gtk_tree_row_reference_get_path (de->rr);
267 if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), 268 if (TRUE != gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts),
@@ -318,6 +319,7 @@ start_download (GtkTreeView *tree_view,
318 dlc->filename = GNUNET_FS_meta_data_suggest_filename (meta); 319 dlc->filename = GNUNET_FS_meta_data_suggest_filename (meta);
319 dlc->rr = gtk_tree_row_reference_new (tm, path); 320 dlc->rr = gtk_tree_row_reference_new (tm, path);
320 dlc->sr = sr->result; 321 dlc->sr = sr->result;
322 dlc->anonymity = 1; /* FIXME: grab from search? */
321 GNUNET_GTK_open_download_as_dialog (dlc); 323 GNUNET_GTK_open_download_as_dialog (dlc);
322} 324}
323 325
@@ -1115,6 +1117,8 @@ GNUNET_GTK_fs_event_handler (void *cls,
1115 GNUNET_YES); 1117 GNUNET_YES);
1116 break; 1118 break;
1117 case GNUNET_FS_STATUS_SEARCH_START: 1119 case GNUNET_FS_STATUS_SEARCH_START:
1120 fprintf (stderr,
1121 "Search started!\n");
1118 if (info->value.search.pctx != NULL) 1122 if (info->value.search.pctx != NULL)
1119 { 1123 {
1120 GNUNET_break (0); 1124 GNUNET_break (0);
diff --git a/src/main_window_file_download.c b/src/main_window_file_download.c
index 0c4aa04b..b38bf513 100644
--- a/src/main_window_file_download.c
+++ b/src/main_window_file_download.c
@@ -23,16 +23,108 @@
23 * @author Christian Grothoff 23 * @author Christian Grothoff
24 */ 24 */
25#include "common.h" 25#include "common.h"
26#include "download.h"
27
28
29static GtkBuilder *builder;
30
31void
32GNUNET_GTK_open_url_dialog_url_entry_changed_cb (GtkEditable *editable,
33 gpointer user_data)
34{
35 struct GNUNET_FS_Uri *uri;
36 char *perr;
37 const char *uris;
38
39 perr = NULL;
40 uris = gtk_entry_get_text (GTK_ENTRY (gtk_builder_get_object (builder,
41 "GNUNET_GTK_open_url_dialog_url_entry")));
42 if (uris != NULL)
43 uri = GNUNET_FS_uri_parse (uris, &perr);
44 else
45 uri = NULL;
46 gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder,
47 "GNUNET_GTK_open_url_dialog_execute_button")),
48 (uri == NULL) ? FALSE : TRUE);
49 if (uri != NULL)
50 GNUNET_FS_uri_destroy (uri);
51 else
52 GNUNET_free_non_null (perr);
53}
54
26 55
27/** 56/**
28 * Thumbnail view is toggled. 57 * User selected "Open URI" in main window.
29 */ 58 */
30void 59void
31GNUNET_GTK_main_menu_file_download_uri_activate_cb (GtkWidget * dummy, 60GNUNET_GTK_main_menu_file_download_uri_activate_cb (GtkWidget * dummy,
32 gpointer data) 61 gpointer data)
33{ 62{
34 /* not implemented */ 63 GtkWidget *ad;
64 const char *uris;
65 uint32_t anonymity;
66 struct GNUNET_FS_Uri *uri;
67 char *perr;
68 struct DownloadContext *dc;
69
70 GNUNET_assert (builder == NULL);
71 builder = GNUNET_GTK_get_new_builder ("open_url_dialog.glade");
72 if (builder == NULL)
73 {
74 GNUNET_break (0);
75 return;
76 }
77 ad = GTK_WIDGET (gtk_builder_get_object (builder,
78 "GNUNET_GTK_open_url_dialog"));
79 if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad)))
80 {
81 gtk_widget_destroy (ad);
82 g_object_unref (G_OBJECT (builder));
83 builder = NULL;
84 fprintf (stderr,
85 "Dialog closed!\n");
86 return;
87 }
88 uris = gtk_entry_get_text (GTK_ENTRY (gtk_builder_get_object (builder,
89 "GNUNET_GTK_open_url_dialog_url_entry")));
90 anonymity = gtk_spin_button_get_value (GTK_SPIN_BUTTON (gtk_builder_get_object (builder,
91 "GNUNET_GTK_open_url_dialog_anonymity_spin_button")));
92 uri = GNUNET_FS_uri_parse (uris, &perr);
93 gtk_widget_destroy (ad);
94 g_object_unref (G_OBJECT (builder));
95 builder = NULL;
96 if (uri == NULL)
97 {
98 GNUNET_free (perr);
99 /* Why was "execute" button sensitive!? */
100 GNUNET_break (0);
101 return;
102 }
103 if (GNUNET_FS_uri_test_sks (uri) ||
104 GNUNET_FS_uri_test_ksk (uri))
105 {
106 fprintf (stderr,
107 "Starting search!\n");
108 GNUNET_break (NULL !=
109 GNUNET_FS_search_start (GNUNET_GTK_get_fs_handle (),
110 uri,
111 anonymity,
112 GNUNET_FS_SEARCH_OPTION_NONE,
113 NULL));
114 GNUNET_FS_uri_destroy (uri);
115 return;
116 }
117 if (GNUNET_FS_uri_test_chk (uri) ||
118 GNUNET_FS_uri_test_loc (uri))
119 {
120 dc = GNUNET_malloc (sizeof (struct DownloadContext));
121 dc->uri = uri;
122 dc->anonymity = anonymity;
123 GNUNET_GTK_open_download_as_dialog (dc);
124 return;
125 }
35 GNUNET_break (0); 126 GNUNET_break (0);
127 GNUNET_FS_uri_destroy (uri);
36} 128}
37 129
38/* end of main_window_file_download.c */ 130/* end of main_window_file_download.c */
diff --git a/src/main_window_open_directory.c b/src/main_window_open_directory.c
index 6f1c2df3..cd67adba 100644
--- a/src/main_window_open_directory.c
+++ b/src/main_window_open_directory.c
@@ -25,14 +25,37 @@
25#include "common.h" 25#include "common.h"
26 26
27/** 27/**
28 * Thumbnail view is toggled. 28 * User selected "Open directory" in menu. Display dialog, open
29 * file and then display a new tab with its contents.
29 */ 30 */
30void 31void
31GNUNET_GTK_main_menu_file_open_gnunet_directory_activate_cb (GtkWidget * dummy, 32GNUNET_GTK_main_menu_file_open_gnunet_directory_activate_cb (GtkWidget * dummy,
32 gpointer data) 33 gpointer data)
33{ 34{
34 /* not implemented */ 35 GtkWidget *ad;
36 GtkBuilder *builder;
37 char *filename;
38
39 builder = GNUNET_GTK_get_new_builder ("open_directory_dialog.glade");
40 if (builder == NULL)
41 {
42 GNUNET_break (0);
43 return;
44 }
45 ad = GTK_WIDGET (gtk_builder_get_object (builder,
46 "GNUNET_GTK_open_directory_dialog"));
47 if (GTK_RESPONSE_OK != gtk_dialog_run (GTK_DIALOG (ad)))
48 {
49 gtk_widget_destroy (ad);
50 g_object_unref (G_OBJECT (builder));
51 return;
52 }
53 filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER(ad));
54 gtk_widget_destroy (ad);
55 g_object_unref (G_OBJECT (builder));
56
35 GNUNET_break (0); 57 GNUNET_break (0);
58 g_free (filename);
36} 59}
37 60
38/* end of main_window_open_directory.c */ 61/* end of main_window_open_directory.c */