]> git.armaanb.net Git - chorizo.git/blobdiff - downloads.c
draft 2
[chorizo.git] / downloads.c
index c738863dee47964cf6c0a95aad00b092ca259484..439f2a017442f1e397a12312967408d051f9c937 100644 (file)
@@ -19,6 +19,7 @@ struct DownloadItem {
        GtkToolButton *tb;
        WebKitDownload *download;
 };
+
 gboolean
 key_downloadmanager(GtkWidget *widget, GdkEvent *event, gpointer data)
 {
@@ -148,14 +149,29 @@ 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);
+       // Offset by 7 to remove "file://"
+       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 +185,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);
+       const char *path = download_get_path((struct DownloadItem *)data);
        gtk_clipboard_set_text(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD),
                               path + 7, strlen(path) - 7);
-       //Offset by 7 to remove "file://"
 }
 
 void
@@ -199,9 +213,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 +251,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;
 }