]> git.armaanb.net Git - chorizo.git/blobdiff - downloads.c
draft 5
[chorizo.git] / downloads.c
index 1cf3bef9a5b80c79d652bb0b813ec3b5c72222ba..9f8c73de54a968492577163213bde342c8ad90ea 100644 (file)
@@ -85,9 +85,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 +95,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;
 }