Move from qballcow-svn to musicpd-svn
[gmpc-random-playlist.git] / src / main.c
blob6cf939ac6811845f08e664baa1f89de5f3edaa0c
1 #include <stdio.h>
2 #include <string.h>
6 #include <glade/glade.h>
7 #include <gmpc/plugin.h>
8 #include <libmpd/debug_printf.h>
10 /* External pointer + function, there internal from gmpc */
11 extern GladeXML *pl3_xml;
12 /** in gmpc */
13 void pl3_option_menu_activate();
15 static int get_enabled() {
16 return cfg_get_single_value_as_int_with_default(config,"random-playlist", "enabled",TRUE);
18 static void set_enabled(int enabled) {
19 cfg_set_single_value_as_int(config,"random-playlist", "enabled", enabled);
20 pl3_option_menu_activate();
22 static void rp_start()
24 MpdData *data = mpd_database_get_complete(connection);
25 GRand *rand = g_rand_new();
26 mpd_playlist_clear(connection);
27 for(;data;data = mpd_data_get_next(data))
29 /** add 20% */
30 if(g_rand_int_range(rand, 0,10000) < 2000)
32 mpd_playlist_queue_add(connection, data->song->file);
35 mpd_playlist_queue_commit(connection);
36 g_rand_free(rand);
40 static int rp_right_mouse_menu(GtkWidget *menu, int type, GtkWidget *tree, GdkEventButton *event)
42 gmpcPlugin *plug = plugin_get_from_id(type);
43 if(!cfg_get_single_value_as_int_with_default(config, "random-playlist", "enabled", TRUE)) {
44 return 0;
46 debug_printf(DEBUG_INFO,"Random playlist right mouse clicked");
47 if(!strcmp(plug->name, "Current Playlist Browser"))
49 GtkWidget *item;
50 item = gtk_image_menu_item_new_with_label("Generate Random Playlist");
51 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item),
52 gtk_image_new_from_stock(GTK_STOCK_ADD, GTK_ICON_SIZE_MENU));
53 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
54 g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(rp_start), NULL);
55 return 1;
57 return 0;
62 gmpcPlBrowserPlugin rp_gpb = {
63 NULL, /**Add */
64 NULL, /** Selected */
65 NULL, /** Unselected */
66 NULL, /** slection changed */
67 NULL, /** expanded */
68 rp_right_mouse_menu, /* right mouse menu */
69 NULL, /** cat key press */
70 NULL, /** add go menu */
71 NULL /** key press event */
75 gmpcPlugin plugin = {
76 "Random Playlist",
77 {0,0,3},
78 GMPC_PLUGIN_PL_BROWSER,
79 0, /* plugin id */
80 NULL, /* path to plugin */
81 NULL, /* initialization */
82 &rp_gpb, /* browser intergration */
83 NULL, /* status changed */
84 NULL, /* connection changed */
85 NULL, /* preferences */
86 NULL, /* MetaData */
87 get_enabled,
88 set_enabled
90 int plugin_api_version = PLUGIN_API_VERSION;