From af44a2201bd70e2705cbd0b0a26adad5355e3d7f Mon Sep 17 00:00:00 2001 From: Qball Cow Date: Tue, 10 Mar 2009 15:26:16 +0100 Subject: [PATCH] Show an error if taglib returns FALSE on saving changes. Don't add files that are invalid. Don't try to set a widget inactive that does not exists. --- src/plugin.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/plugin.c b/src/plugin.c index b8bd96a..100abdb 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -46,9 +46,10 @@ static gulong signal_entries[7]; static void info_entry_edited(GtkWidget *entry) { const char *str = gtk_entry_get_text(GTK_ENTRY(entry)); - if(str) + + cfg_set_single_value_as_string(config, CONFIG_NAME, "music_root",(char *)str); + if(str && browser_box) { - cfg_set_single_value_as_string(config, CONFIG_NAME, "music_root",(char *)str); if(strlen(str) > 0){ gtk_widget_set_sensitive(browser_box, TRUE); }else { @@ -90,13 +91,13 @@ static void __pref_construct(GtkWidget *container) static mpd_Song * get_song_from_file(const char *root, const char *filename) { - TagLib_File *file; + TagLib_File *file = NULL; TagLib_Tag *tag; mpd_Song *song = NULL; gchar *url = g_build_path(G_DIR_SEPARATOR_S, root, filename,NULL); file = taglib_file_new(url); - if(file) + if(file && taglib_file_is_valid(file)) { char *a = NULL; song = mpd_newSong(); @@ -121,9 +122,9 @@ static mpd_Song * get_song_from_file(const char *root, const char *filename) } taglib_tag_free_strings(); - - taglib_file_free(file); } + if(file) + taglib_file_free(file); g_free(url); return song; } @@ -158,10 +159,14 @@ static void save_song_to_file(const char *root, const mpd_Song *song) guint year = (guint) g_ascii_strtoll(song->date, NULL, 10); taglib_tag_set_year(tag, year); } - taglib_file_save(file); + if(taglib_file_save(file)){ + printf("failed\n"); + playlist3_show_error_message("Failed to save tags", DEBUG_ERROR); + }else { + g_timeout_add_seconds_full(G_PRIORITY_DEFAULT ,1, (GSourceFunc)__timeout_mpd_update, g_strdup(song->file), g_free); + } taglib_tag_free_strings(); taglib_file_free(file); - g_timeout_add_seconds_full(G_PRIORITY_DEFAULT ,1, (GSourceFunc)__timeout_mpd_update, g_strdup(song->file), g_free); } g_free(url); @@ -657,7 +662,7 @@ static void __browser_init ( ) { gchar *root = cfg_get_single_value_as_string(config, CONFIG_NAME, "music_root"); - if(root == NULL || strlen(root) ==0) + if((root == NULL || strlen(root) ==0) && browser_box) gtk_widget_set_sensitive(browser_box, FALSE); if(root) g_free(root); } @@ -774,6 +779,11 @@ static void __save_myself(void) } } } +static void __init(void) +{ + taglib_id3v2_set_default_text_encoding(TagLib_ID3v2_UTF8); +} + int plugin_api_version = PLUGIN_API_VERSION; gmpcPlBrowserPlugin __browser = { @@ -793,6 +803,7 @@ gmpcPlugin plugin = { .plugin_type = GMPC_PLUGIN_PL_BROWSER, .save_yourself = __save_myself, + .init = __init, .destroy = __destroy, .pref = &__pref, .browser = &__browser, -- 2.11.4.GIT