Mercurial > audlegacy
view src/audacious/discovery.c @ 3408:aea3349e2c62 trunk
oops, missed an untranslated string in last.fm GUI
author | mf0102 <0102@gmx.at> |
---|---|
date | Thu, 30 Aug 2007 17:41:40 +0200 |
parents | 2619f4c62abe |
children | 3092a8b3fe34 |
line wrap: on
line source
/* BMP - Cross-platform multimedia player * Copyright (C) 2003-2004 BMP development team. * * Based on XMMS: * Copyright (C) 1998-2003 XMMS development team. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Discovery Public License as published by * the Free Software Foundation; under version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Discovery Public License for more details. * * You should have received a copy of the GNU Discovery Public License * along with this program. If not, see <http://www.gnu.org/licenses>. * * The Audacious team does not consider modular code linking to * Audacious or using our public API to be a derived work. */ #include <glib.h> #include <string.h> #include "plugin.h" #include "discovery.h" DiscoveryPluginData dp_data = { NULL, NULL }; GList * get_discovery_list(void) { return dp_data.discovery_list; } GList * get_discovery_enabled_list(void) { return dp_data.enabled_list; } static DiscoveryPlugin * get_discovery_plugin(gint i) { GList *node = g_list_nth(get_discovery_list(), i); if (!node) return NULL; return DISCOVERY_PLUGIN(node->data); } void discovery_about(gint i) { DiscoveryPlugin *plugin = get_discovery_plugin(i); if (!plugin || !plugin->about) return; plugin->about(); } void discovery_configure(gint i) { DiscoveryPlugin *plugin = get_discovery_plugin(i); if (!plugin || !plugin->configure) return; plugin->configure(); } static gboolean discovery_plugin_is_enabled(DiscoveryPlugin * plugin) { return (g_list_find(get_discovery_enabled_list(), plugin) != NULL); } void enable_discovery_plugin(gint i, gboolean enable) { DiscoveryPlugin *plugin = get_discovery_plugin(i); if (!plugin) return; if (enable && !discovery_plugin_is_enabled(plugin)) { dp_data.enabled_list = g_list_append(dp_data.enabled_list, plugin); if (plugin->init) plugin->init(); } else if (!enable && discovery_plugin_is_enabled(plugin)) { dp_data.enabled_list = g_list_remove(dp_data.enabled_list, plugin); if (plugin->cleanup) plugin->cleanup(); } } gboolean discovery_enabled(gint i) { return (g_list_find(dp_data.enabled_list, get_discovery_plugin(i)) != NULL); } gchar * discovery_stringify_enabled_list(void) { GString *enable_str; gchar *name; GList *node = get_discovery_enabled_list(); if (!node) return NULL; name = g_path_get_basename(DISCOVERY_PLUGIN(node->data)->filename); enable_str = g_string_new(name); g_free(name); for (node = g_list_next(node); node; node = g_list_next(node)) { name = g_path_get_basename(DISCOVERY_PLUGIN(node->data)->filename); g_string_append_c(enable_str, ','); g_string_append(enable_str, name); g_free(name); } return g_string_free(enable_str, FALSE); } void discovery_enable_from_stringified_list(const gchar * list_str) { gchar **list, **str; DiscoveryPlugin *plugin; if (!list_str || !strcmp(list_str, "")) return; list = g_strsplit(list_str, ",", 0); for (str = list; *str; str++) { GList *node; for (node = get_discovery_list(); node; node = g_list_next(node)) { gchar *base; base = g_path_get_basename(DISCOVERY_PLUGIN(node->data)->filename); if (!strcmp(*str, base)) { plugin = DISCOVERY_PLUGIN(node->data); dp_data.enabled_list = g_list_append(dp_data.enabled_list, plugin); if (plugin->init) plugin->init(); } g_free(base); } } g_strfreev(list); }