gui/audio: Add accessor functions for audio tags
And begin working on new, cleaner unit test code. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
88bf71ac22
commit
869e83b7bd
23
gui/audio.c
23
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("<span size='%s'>%s</span>",
|
||||
size, text);
|
||||
gtk_label_set_markup(GTK_LABEL(gui_builder_widget(label)), markup);
|
||||
const gchar *fmt = "<span size='%s'>%s</span>";
|
||||
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);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
*/
|
||||
#ifndef OCARINA_GUI_AUDIO_H
|
||||
#define OCARINA_GUI_AUDIO_H
|
||||
#include <gui/builder.h>
|
||||
|
||||
/* 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 */
|
||||
|
|
|
@ -321,7 +321,7 @@
|
|||
<property name="column_spacing">5</property>
|
||||
<property name="row_homogeneous">True</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="o_title">
|
||||
<object class="GtkLabel" id="title_tag">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
|
@ -336,7 +336,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="o_artist">
|
||||
<object class="GtkLabel" id="artist_tag">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
|
@ -350,7 +350,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="o_album">
|
||||
<object class="GtkLabel" id="album_tag">
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="halign">start</property>
|
||||
|
|
|
@ -8,7 +8,11 @@
|
|||
#include <core/string.h>
|
||||
#include <gui/audio.h>
|
||||
#include <gui/builder.h>
|
||||
#include <gui/filter.h>
|
||||
#include <gui/model.h>
|
||||
#include <gui/playlist.h>
|
||||
#include <gui/sidebar.h>
|
||||
#include <gui/treeview.h>
|
||||
#include <gui/window.h>
|
||||
#include <tests/test.h>
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue