]> git.armaanb.net Git - chorizo.git/blobdiff - downloads.c
draft 4
[chorizo.git] / downloads.c
index c738863dee47964cf6c0a95aad00b092ca259484..1cf3bef9a5b80c79d652bb0b813ec3b5c72222ba 100644 (file)
@@ -19,6 +19,7 @@ struct DownloadItem {
        GtkToolButton *tb;
        WebKitDownload *download;
 };
+
 gboolean
 key_downloadmanager(GtkWidget *widget, GdkEvent *event, gpointer data)
 {
@@ -109,7 +110,7 @@ download_handle(WebKitDownload *download, gchar *suggested_filename,
 
        gtk_widget_destroy(chooser);
 
-       remove(uri + 7);
+       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);
@@ -148,14 +149,28 @@ download_cancel(GtkMenuItem *tb, gpointer data)
        webkit_download_cancel(payload->download);
 }
 
+const char *
+download_get_path(struct DownloadItem *payload)
+{
+       const char *path = webkit_download_get_destination(payload->download);
+       return path += 7;
+}
+
 void
-download_remove(GtkMenuItem *tb, gpointer data)
+download_hide(GtkMenuItem *tb, gpointer data)
 {
        struct DownloadItem *payload = data;
        g_object_unref(payload->download);
        gtk_widget_destroy(GTK_WIDGET(payload->tb));
 }
 
+void
+download_delete(GtkMenuItem *tb, gpointer data)
+{
+       remove(download_get_path((struct DownloadItem *)data));
+       download_hide(tb, data);
+}
+
 void
 download_copy_url(GtkMenuItem *tb, gpointer data)
 {
@@ -169,11 +184,9 @@ download_copy_url(GtkMenuItem *tb, gpointer data)
 void
 download_copy_path(GtkMenuItem *tb, gpointer data)
 {
-       struct DownloadItem *payload = data;
-       const gchar *path = webkit_download_get_destination(payload->download);
-       gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD),
-                              path + 7, strlen(path) - 7);
-       //Offset by 7 to remove "file://"
+       const char *path = download_get_path((struct DownloadItem *)data);
+       gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), path,
+                              strlen(path));
 }
 
 void
@@ -199,9 +212,16 @@ download_click(GtkToolButton *tb, gpointer data)
                gtk_widget_show(option);
                gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option);
        } else {
-               option = gtk_menu_item_new_with_label("Remove download");
+               option =
+                       gtk_menu_item_new_with_label("Hide download from list");
+               g_signal_connect(G_OBJECT(option), "activate",
+                                G_CALLBACK(download_hide), data);
+               gtk_widget_show(option);
+               gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option);
+
+               option = gtk_menu_item_new_with_label("Delete downloaded file");
                g_signal_connect(G_OBJECT(option), "activate",
-                                G_CALLBACK(download_remove), data);
+                                G_CALLBACK(download_delete), data);
                gtk_widget_show(option);
                gtk_menu_shell_append(GTK_MENU_SHELL(pmenu), option);
 
@@ -230,8 +250,7 @@ download_click(GtkToolButton *tb, gpointer data)
 gboolean
 downloadmanager_delete(GtkWidget *obj, gpointer data)
 {
-       if (!quit_if_nothing_active())
-               gtk_widget_hide(dm.win);
+       if (!quit_if_nothing_active()) gtk_widget_hide(dm.win);
 
        return TRUE;
 }