diff --git a/gui/audio.c b/gui/audio.c index f2af9f23..d462d2ba 100644 --- a/gui/audio.c +++ b/gui/audio.c @@ -9,6 +9,7 @@ #include #include #include +#include static bool __audio_have_cover = false; @@ -54,11 +55,40 @@ static void __audio_get_cover(struct track *track) gtk_image_set_from_pixbuf(cover, pix); g_object_unref(G_OBJECT(pix)); } else - gtk_image_set_from_icon_name(cover, NULL, GTK_ICON_SIZE_DIALOG); + gtk_image_set_from_icon_name(cover, "image-missing", GTK_ICON_SIZE_DIALOG); + gtk_widget_set_sensitive(GTK_WIDGET(cover), pix != NULL); __audio_have_cover = (pix != NULL); } +void __audio_select_cover(GtkButton *button) +{ + GtkFileFilter *filter; + GtkWidget *dialog; + gchar *path; + + filter = gtk_file_filter_new(); + dialog = gtk_file_chooser_dialog_new("Choose an image", + GTK_WINDOW(gui_builder_widget("o_window")), + GTK_FILE_CHOOSER_ACTION_OPEN, + _("_Cancel"), GTK_RESPONSE_CANCEL, + _("_Open"), GTK_RESPONSE_ACCEPT, + NULL); + + gtk_file_filter_add_mime_type(filter, "image/*"); + gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(dialog), filter); + gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(dialog), true); + + if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { + path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + album_artwork_import(audio_cur_track()->tr_album, path); + g_free(path); + } + + gtk_widget_destroy(dialog); + g_object_unref(filter); +} + static void __audio_load(struct track *track) { __audio_set_label("o_title", "xx-large", track->tr_title); diff --git a/share/ocarina/ocarina6.glade b/share/ocarina/ocarina6.glade index 555386a4..49149d8b 100644 --- a/share/ocarina/ocarina6.glade +++ b/share/ocarina/ocarina6.glade @@ -245,6 +245,11 @@ + + True + False + 6 + @@ -452,10 +457,13 @@ - + True False - 6 + True + o_cover + none + 1 @@ -1447,10 +1455,10 @@ - +