ocarina: Show length of song next to progress bar
This makes it easy to tell the total length of the current song.
This commit is contained in:
parent
90bc64131d
commit
9236dcbb50
|
@ -6,6 +6,6 @@
|
|||
|
||||
GtkWidget *get_footer();
|
||||
void put_footer();
|
||||
void set_footer_track(Track &);
|
||||
void change_footer(Track &);
|
||||
|
||||
#endif /* OCARINA_FOOTER */
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
#ifndef OCARINA_FOOTER_PRIVATE_H
|
||||
#define OCARINA_FOOTER_PRIVATE_H
|
||||
|
||||
#include <libsaria/track.h>
|
||||
|
||||
GtkWidget *get_controls();
|
||||
GtkWidget *get_nowplaying();
|
||||
GtkWidget *get_progress();
|
||||
|
||||
void set_now_playing(Track &);
|
||||
void set_duration(Track &);
|
||||
|
||||
#endif /* OCARINA_FOOTER_PRIVATE_H */
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
#include <libsaria/print.h>
|
||||
#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());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue