diff --git a/include/ocarina/footer.h b/include/ocarina/footer.h index 50d01147..2fc271f5 100644 --- a/include/ocarina/footer.h +++ b/include/ocarina/footer.h @@ -6,6 +6,6 @@ GtkWidget *get_footer(); void put_footer(); -void set_footer_track(Track &); +void change_footer(Track &); #endif /* OCARINA_FOOTER */ diff --git a/ocarina/callback.cpp b/ocarina/callback.cpp index 2ce7050e..607918a6 100644 --- a/ocarina/callback.cpp +++ b/ocarina/callback.cpp @@ -38,7 +38,7 @@ void cb_library_refresh() void cb_track_loaded() { println("Ocarina TRACK_LOADED callback!"); - libsaria::current_track(set_footer_track); + libsaria::current_track(change_footer); } void setup_callbacks() diff --git a/ocarina/footer/footer.cpp b/ocarina/footer/footer.cpp index 52a247f9..cc18490d 100644 --- a/ocarina/footer/footer.cpp +++ b/ocarina/footer/footer.cpp @@ -36,3 +36,9 @@ void put_footer() if (footer != NULL) g_object_unref(footer); } + +void change_footer(Track &track) +{ + set_now_playing(track); + set_duration(track); +} diff --git a/ocarina/footer/footer.h b/ocarina/footer/footer.h index 4d3d8e42..03167ccb 100644 --- a/ocarina/footer/footer.h +++ b/ocarina/footer/footer.h @@ -1,8 +1,13 @@ #ifndef OCARINA_FOOTER_PRIVATE_H #define OCARINA_FOOTER_PRIVATE_H +#include + GtkWidget *get_controls(); GtkWidget *get_nowplaying(); GtkWidget *get_progress(); +void set_now_playing(Track &); +void set_duration(Track &); + #endif /* OCARINA_FOOTER_PRIVATE_H */ diff --git a/ocarina/footer/now_playing.cpp b/ocarina/footer/now_playing.cpp index 6a61d961..f1c2761f 100644 --- a/ocarina/footer/now_playing.cpp +++ b/ocarina/footer/now_playing.cpp @@ -54,7 +54,7 @@ GtkWidget *get_nowplaying() return now_playing; } -void set_footer_track(Track &track) +void set_now_playing(Track &track) { set_title(track.get_title()); set_artist("by " + track.get_artist()); diff --git a/ocarina/footer/progress.cpp b/ocarina/footer/progress.cpp index 905b1693..4f836f2f 100644 --- a/ocarina/footer/progress.cpp +++ b/ocarina/footer/progress.cpp @@ -4,7 +4,9 @@ #include #include "footer.h" +static GtkWidget *progress_box = NULL; static GtkWidget *progress = NULL; +static GtkWidget *duration = NULL; static gboolean update_progress(gpointer data) { @@ -13,18 +15,32 @@ static gboolean update_progress(gpointer data) return TRUE; } -static void make_progress() +static void make_scale() { progress = gtk_hscale_new_with_range(0, 1, 1); - gtk_scale_set_draw_value(GTK_SCALE(progress), FALSE); - gtk_widget_show(progress); gtk_timeout_add(100, update_progress, NULL); } +static void make_progress() +{ + progress_box = gtk_hbox_new(FALSE, 0); + duration = gtk_label_new(""); + make_scale(); + + box_pack_start(progress_box, progress, TRUE, TRUE, 0); + box_pack_start(progress_box, duration, FALSE, FALSE, 0); + gtk_widget_show_all(progress_box); +} + GtkWidget *get_progress() { - if (progress == NULL) + if (progress_box == NULL) make_progress(); - return progress; + return progress_box; +} + +void set_duration(Track &track) +{ + gtk_label_set_text(GTK_LABEL(duration), track.get_lenstr().c_str()); }