summaryrefslogtreecommitdiff
path: root/plugins/gtkui/plcommon.c
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-06 14:40:56 +0200
committerGravatar Alexey Yakovenko <wakeroid@gmail.com>2010-04-06 14:40:56 +0200
commit3348d1c4e5897a9b1d2ae63bf170fa7edf390435 (patch)
tree66990340d8c8905a90bada2f0770c4418d711aa5 /plugins/gtkui/plcommon.c
parente41f4453e2c5311a0534643c4eeddfc4bb56dfe9 (diff)
added delete files from disk context menu item
Diffstat (limited to 'plugins/gtkui/plcommon.c')
-rw-r--r--plugins/gtkui/plcommon.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/plugins/gtkui/plcommon.c b/plugins/gtkui/plcommon.c
index 79ca1994..9890f303 100644
--- a/plugins/gtkui/plcommon.c
+++ b/plugins/gtkui/plcommon.c
@@ -18,6 +18,7 @@
*/
#include <stdlib.h>
#include <string.h>
+#include <unistd.h>
#include "gtkui.h"
#include "plcommon.h"
#include "coverart.h"
@@ -295,6 +296,42 @@ on_remove2_activate (GtkMenuItem *menuitem,
}
void
+on_remove_from_disk_activate (GtkMenuItem *menuitem,
+ gpointer user_data)
+{
+ GtkWidget *widget = GTK_WIDGET (menuitem);
+
+ GtkWidget *dlg = gtk_message_dialog_new (GTK_WINDOW (mainwin), GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_YES_NO, "Delete files from disk");
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dlg), "Files will be lost. Proceed?");
+
+ int response = gtk_dialog_run (GTK_DIALOG (dlg));
+ gtk_widget_destroy (dlg);
+ if (response != GTK_RESPONSE_YES) {
+ return;
+ }
+
+ deadbeef->pl_lock ();
+ deadbeef->plt_lock ();
+
+ DB_playItem_t *it = deadbeef->pl_get_first (PL_MAIN);
+ while (it) {
+ if (deadbeef->pl_is_selected (it) && deadbeef->is_local_file (it->fname)) {
+ unlink (it->fname);
+ }
+ DB_playItem_t *next = deadbeef->pl_get_next (it, PL_MAIN);
+ deadbeef->pl_item_unref (it);
+ it = next;
+ }
+
+ int cursor = deadbeef->pl_delete_selected ();
+ deadbeef->plt_unlock ();
+ deadbeef->pl_unlock ();
+
+ main_refresh ();
+ search_refresh ();
+}
+
+void
list_context_menu (DdbListview *listview, DdbListviewIter it, int idx) {
clicked_idx = deadbeef->pl_get_idx_of (it);
int inqueue = deadbeef->pl_playqueue_test (it);
@@ -303,6 +340,7 @@ list_context_menu (DdbListview *listview, DdbListviewIter it, int idx) {
GtkWidget *remove_from_playback_queue1;
GtkWidget *separator9;
GtkWidget *remove2;
+ GtkWidget *remove_from_disk;
GtkWidget *separator8;
GtkWidget *properties1;
GtkWidget *reload_metadata;
@@ -337,6 +375,11 @@ list_context_menu (DdbListview *listview, DdbListviewIter it, int idx) {
gtk_container_add (GTK_CONTAINER (playlist_menu), remove2);
gtk_object_set_data (GTK_OBJECT (remove2), "ps", listview);
+ remove_from_disk = gtk_menu_item_new_with_mnemonic ("Remove from disk");
+ gtk_widget_show (remove_from_disk);
+ gtk_container_add (GTK_CONTAINER (playlist_menu), remove_from_disk);
+ gtk_object_set_data (GTK_OBJECT (remove_from_disk), "ps", listview);
+
separator8 = gtk_separator_menu_item_new ();
gtk_widget_show (separator8);
gtk_container_add (GTK_CONTAINER (playlist_menu), separator8);
@@ -359,6 +402,9 @@ list_context_menu (DdbListview *listview, DdbListviewIter it, int idx) {
g_signal_connect ((gpointer) remove2, "activate",
G_CALLBACK (on_remove2_activate),
NULL);
+ g_signal_connect ((gpointer) remove_from_disk, "activate",
+ G_CALLBACK (on_remove_from_disk_activate),
+ NULL);
g_signal_connect ((gpointer) properties1, "activate",
G_CALLBACK (main_properties_activate),
NULL);