summaryrefslogtreecommitdiff
path: root/plugins/gtkui/fileman.c
blob: ecda32ae74366d61f41f6135e8092accf2d4c002 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "../../deadbeef.h"
#include <gtk/gtk.h>
#include <stdlib.h>
#include "gtkui.h"
#include "gtkplaylist.h"

static void
add_dirs_worker (void *data) {
    GSList *lst = (GSList *)data;
    gtkpl_add_dirs (&main_playlist, lst);
}

void
gtkui_add_dirs (GSList *lst) {
    deadbeef->thread_start (add_dirs_worker, lst);
}

static void
add_files_worker (void *data) {
    GSList *lst = (GSList *)data;
    gtkpl_add_files (&main_playlist, lst);
}

void
gtkui_add_files (struct _GSList *lst) {
    deadbeef->thread_start (add_files_worker, lst);
}

static void
open_files_worker (void *data) {
    GSList *lst = (GSList *)data;
    gtkpl_add_files (&main_playlist, lst);
    gtkpl_set_cursor (PL_MAIN, 0);
    deadbeef->sendmessage (M_PLAYSONG, 0, 0, 0);
}

void
gtkui_open_files (struct _GSList *lst) {
    deadbeef->pl_clear ();
    deadbeef->thread_start (open_files_worker, lst);
}

struct fmdrop_data {
    char *mem;
    int length;
    int drop_y;
};

static void
fmdrop_worker (void *ctx) {
    struct fmdrop_data *data = (struct fmdrop_data *)ctx;
    gtkpl_add_fm_dropped_files (&main_playlist, data->mem, data->length, data->drop_y);
    free (data);
}

void
gtkui_receive_fm_drop (char *mem, int length, int drop_y) {
    struct fmdrop_data *data = malloc (sizeof (struct fmdrop_data));
    if (!data) {
        fprintf (stderr, "gtkui_receive_fm_drop: malloc failed\n");
        return;
    }
    data->mem = mem;
    data->length = length;
    data->drop_y = drop_y;
    deadbeef->thread_start (fmdrop_worker, data);
}