diff --git a/gui/audio.c b/gui/audio.c
index 48453b44..d7165306 100644
--- a/gui/audio.c
+++ b/gui/audio.c
@@ -13,27 +13,32 @@
static guint audio_timeout = 0;
-static inline void __audio_set_label(const gchar *label, const gchar *size,
- const gchar *text)
+static inline void __gui_audio_set_label_markup(GtkLabel *label,
+ const gchar *size,
+ const gchar *text)
{
- gchar *markup = g_markup_printf_escaped("%s",
- size, text);
- gtk_label_set_markup(GTK_LABEL(gui_builder_widget(label)), markup);
+ const gchar *fmt = "%s";
+ gchar *markup = g_markup_printf_escaped(fmt, size, text);
+ gtk_label_set_markup(label, markup);
g_free(markup);
}
static inline void __audio_set_time_label(const gchar *label, unsigned int time)
{
gchar *str = string_sec2str(time);
- __audio_set_label(label, "large", str);
+ __gui_audio_set_label_markup(GTK_LABEL(gui_builder_widget(label)),
+ "large",str);
g_free(str);
}
static void __audio_load(struct track *track)
{
- __audio_set_label("o_title", "xx-large", track->tr_title);
- __audio_set_label("o_artist", "x-large", track->tr_album->al_artist->ar_name);
- __audio_set_label("o_album", "x-large", track->tr_album->al_name);
+ __gui_audio_set_label_markup(gui_title_tag(), "xx-large",
+ track->tr_title);
+ __gui_audio_set_label_markup(gui_album_tag(), "x-large",
+ track->tr_album->al_name);
+ __gui_audio_set_label_markup(gui_artist_tag(), "x-large",
+ track->tr_album->al_artist->ar_name);
__audio_set_time_label("o_duration", track->tr_length);
gui_pl_system_track_loaded(track);
diff --git a/include/gui/audio.h b/include/gui/audio.h
index c42eb04e..ac834da1 100644
--- a/include/gui/audio.h
+++ b/include/gui/audio.h
@@ -3,6 +3,7 @@
*/
#ifndef OCARINA_GUI_AUDIO_H
#define OCARINA_GUI_AUDIO_H
+#include
/* Audio callback functions. */
extern struct audio_ops audio_ops;
@@ -13,6 +14,24 @@ void gui_audio_init();
/* Called to stop the GUI audio timeout function. */
void gui_audio_deinit();
+/* Called to get the label displaying the album tag. */
+static inline GtkLabel *gui_album_tag(void)
+{
+ return GTK_LABEL(gui_builder_widget("album_tag"));
+}
+
+/* Called to get the label displaying the artist tag. */
+static inline GtkLabel *gui_artist_tag(void)
+{
+ return GTK_LABEL(gui_builder_widget("artist_tag"));
+}
+
+/* Called to get the label displaying the title tag. */
+static inline GtkLabel *gui_title_tag(void)
+{
+ return GTK_LABEL(gui_builder_widget("title_tag"));
+}
+
#ifdef CONFIG_TESTING
void test_gui_audio_timeout();
#endif /* CONFIG_TESTING */
diff --git a/share/ocarina/ocarina.ui b/share/ocarina/ocarina.ui
index 7e88b91d..27793b36 100644
--- a/share/ocarina/ocarina.ui
+++ b/share/ocarina/ocarina.ui
@@ -321,7 +321,7 @@
5
True
-
-
+
True
False
start
@@ -350,7 +350,7 @@
-
+
True
False
start
diff --git a/tests/gui/audio.c b/tests/gui/audio.c
index 11ca7f91..c2e3f612 100644
--- a/tests/gui/audio.c
+++ b/tests/gui/audio.c
@@ -8,7 +8,11 @@
#include
#include
#include
+#include
#include
+#include
+#include
+#include
#include
#include
@@ -53,12 +57,34 @@ static void test_audio_seek(gint64 pos)
state = audio_cur_state();
}
+static void test_audio_init()
+{
+ g_assert_cmpstr(gtk_label_get_text(gui_album_tag()), ==, " ");
+ g_assert_cmpstr(gtk_label_get_text(gui_artist_tag()), ==, " ");
+ g_assert_cmpstr(gtk_label_get_text(gui_title_tag()), ==, " ");
+}
+
+static void test_audio_load()
+{
+ struct track *track = track_get(0);
+
+ audio_load(track);
+ g_assert_cmpstr(gtk_label_get_text(gui_album_tag()), ==,
+ track->tr_album->al_name);
+ g_assert_cmpstr(gtk_label_get_text(gui_artist_tag()), ==,
+ track->tr_album->al_artist->ar_name);
+ g_assert_cmpstr(gtk_label_get_text(gui_title_tag()), ==,
+ track->tr_title);
+}
+
static void test_audio()
{
struct db_entry *dbe, *next;
struct track *track;
gchar *duration;
+ audio_load(track_get(1));
+ audio_pause();
g_assert_true(gtk_widget_is_visible(gui_builder_widget("o_play")));
g_assert_false(gtk_widget_is_visible(gui_builder_widget("o_pause")));
g_assert_cmpstr_free(test_get_pause_text(), ==, "(disabled)");
@@ -79,9 +105,6 @@ static void test_audio()
g_assert_cmpuint(audio_cur_track()->tr_track, ==, track->tr_track);
duration = string_sec2str(track->tr_length);
- g_assert_cmpstr(test_get_label_text("o_title"), ==, track->tr_title);
- g_assert_cmpstr(test_get_label_text("o_album"), ==, track->tr_album->al_name);
- g_assert_cmpstr(test_get_label_text("o_artist"), ==, track->tr_album->al_artist->ar_name);
g_assert_cmpstr(test_get_label_text("o_position"), ==, "0:00");
g_assert_cmpstr(test_get_label_text("o_duration"), ==, duration);
g_assert_true(test_get_toggle_state("favorite_button"));
@@ -133,21 +156,29 @@ int main(int argc, char **argv)
int ret;
gtk_init(&argc, NULL);
+ core_init(&argc, &argv, &init_data);
gui_builder_init("share/ocarina/ocarina.ui");
gui_model_init();
- core_init(&argc, NULL, &init_data);
+ gui_filter_init();
+ gui_treeview_init();
+ gui_sidebar_init();
+ gui_playlist_init();
gui_audio_init();
- playlist_new(PL_LIBRARY, "tests/Music/Hyrule Symphony");
+ gui_pl_library_add("tests/Music/Hyrule Symphony");
while (idle_run_task()) {};
g_test_init(&argc, &argv, NULL);
- g_test_add_func("/Gui/Audio", test_audio);
+ g_test_add_func("/Gui/Audio/Init", test_audio_init);
+ g_test_add_func("/Gui/Audio/Load", test_audio_load);
+ g_test_add_func("/Gui/Audio/Test", test_audio);
ret = g_test_run();
- gui_audio_deinit();
- gui_window_deinit();
- gui_model_deinit();
- gui_builder_deinit();
core_deinit();
+ gui_audio_deinit();
+ gui_filter_deinit();
+ gui_treeview_deinit();
+ gui_model_deinit();
+ gui_window_deinit();
+ gui_builder_deinit();
return ret;
}