]> git.armaanb.net Git - chorizo.git/blobdiff - downloads.c
draft 8
[chorizo.git] / downloads.c
index 1cf3bef9a5b80c79d652bb0b813ec3b5c72222ba..45f63fb793e5112156d160ac01e84c2ed2615e35 100644 (file)
@@ -1,6 +1,6 @@
 #include <webkit2/webkit2.h>
 
-#include "downloads.h"
+#include "chorizo.h"
 
 gboolean download_handle(WebKitDownload *, gchar *, gpointer);
 void download_click(GtkToolButton *, gpointer);
@@ -15,11 +15,6 @@ struct DownloadManager {
 
 gint downloads = 0;
 
-struct DownloadItem {
-       GtkToolButton *tb;
-       WebKitDownload *download;
-};
-
 gboolean
 key_downloadmanager(GtkWidget *widget, GdkEvent *event, gpointer data)
 {
@@ -85,9 +80,9 @@ download_handle(WebKitDownload *download, gchar *suggested_filename,
        GtkToolItem *tb;
 
        GtkWidget *chooser = gtk_file_chooser_dialog_new(
-               "Choose download location", GTK_WINDOW(dm.win),
-               GTK_FILE_CHOOSER_ACTION_SAVE, "Save file", GTK_RESPONSE_ACCEPT,
-               "Cancel", GTK_RESPONSE_CANCEL, NULL);
+               "Save File", GTK_WINDOW(dm.win), GTK_FILE_CHOOSER_ACTION_SAVE,
+               "Cancel", GTK_RESPONSE_CANCEL, "Save", GTK_RESPONSE_ACCEPT,
+               NULL);
        gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser),
                                            (char *)data);
        gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser),
@@ -95,48 +90,44 @@ download_handle(WebKitDownload *download, gchar *suggested_filename,
        gtk_file_chooser_set_do_overwrite_confirmation(
                GTK_FILE_CHOOSER(chooser), TRUE);
        gint res = gtk_dialog_run(GTK_DIALOG(chooser));
-       switch (res) {
-       case GTK_RESPONSE_ACCEPT:
+
+       if (res != GTK_RESPONSE_ACCEPT) {
+               gtk_widget_destroy(chooser);
+       } else {
                uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(chooser));
-               webkit_download_set_destination(
-                       download,
-                       gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(chooser)));
-               break;
-       case GTK_RESPONSE_CANCEL:
-               return FALSE;
-       default:
-               return FALSE;
+               webkit_download_set_destination(download, uri);
+
+               remove(uri + 7); // Remove before overwrite
+
+               gtk_widget_destroy(chooser);
+
+               tb = gtk_tool_button_new(NULL, NULL);
+               gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(tb),
+                                             "network-receive");
+               gtk_tool_button_set_label(GTK_TOOL_BUTTON(tb), uri);
+               gtk_toolbar_insert(GTK_TOOLBAR(dm.toolbar), tb, 0);
+               gtk_widget_show_all(dm.win);
+
+               g_signal_connect(G_OBJECT(download),
+                                "notify::estimated-progress",
+                                G_CALLBACK(changed_download_progress), tb);
+
+               downloads++;
+               g_signal_connect(G_OBJECT(download), "finished",
+                                G_CALLBACK(download_finished), tb);
+
+               g_object_ref(download);
+
+               struct DownloadItem *payload = malloc(sizeof(*payload));
+               payload->tb = (GtkToolButton *)tb;
+               payload->download = download;
+               g_signal_connect(G_OBJECT(tb), "clicked",
+                                G_CALLBACK(download_click), payload);
+               g_signal_connect(G_OBJECT(payload->download), "failed",
+                                G_CALLBACK(download_cancel), payload);
+               g_signal_connect(G_OBJECT(tb), "destroy_event",
+                                G_CALLBACK(g_free), payload);
        }
-
-       gtk_widget_destroy(chooser);
-
-       remove(uri + 7); // Remove before overwrite
-       tb = gtk_tool_button_new(NULL, NULL);
-       gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(tb), "network-receive");
-       gtk_tool_button_set_label(GTK_TOOL_BUTTON(tb), uri);
-       gtk_toolbar_insert(GTK_TOOLBAR(dm.toolbar), tb, 0);
-       gtk_widget_show_all(dm.win);
-
-       g_signal_connect(G_OBJECT(download), "notify::estimated-progress",
-                        G_CALLBACK(changed_download_progress), tb);
-
-       downloads++;
-       g_signal_connect(G_OBJECT(download), "finished",
-                        G_CALLBACK(download_finished), tb);
-
-       g_object_ref(download);
-
-       struct DownloadItem *payload = malloc(sizeof(*payload));
-       payload->tb = (GtkToolButton *)tb;
-       payload->download = download;
-       g_signal_connect(G_OBJECT(tb), "clicked", G_CALLBACK(download_click),
-                        payload);
-       g_signal_connect(G_OBJECT(tb), "failed", G_CALLBACK(download_cancel),
-                        payload);
-       g_signal_connect(G_OBJECT(tb), "destroy_event", G_CALLBACK(g_free),
-                        payload);
-
-       //Propagate-- to whom it may concern.
        return FALSE;
 }