88 lines
2.0 KiB
C++
88 lines
2.0 KiB
C++
|
|
#include <libsaria/track.h>
|
|
#include <ocarina/gtk.h>
|
|
#include "footer.h"
|
|
|
|
static GtkWidget *now_playing = NULL;
|
|
static GtkWidget *title = NULL;
|
|
static GtkWidget *artist = NULL;
|
|
static GtkWidget *album = NULL;
|
|
|
|
static void set_label(GtkWidget *label, string text, string size)
|
|
{
|
|
string escaped = g_markup_escape_text(text.c_str(), -1);
|
|
string markup = "<span size='" + size + "'>" + escaped + "</span>";
|
|
gtk_label_set_markup(GTK_LABEL(label), markup.c_str());
|
|
}
|
|
|
|
static void set_title(string new_title)
|
|
{
|
|
set_label(title, new_title, "xx-large");
|
|
}
|
|
|
|
static void set_artist(string new_artist)
|
|
{
|
|
set_label(artist, new_artist, "x-large");
|
|
}
|
|
|
|
static void set_album(string new_album)
|
|
{
|
|
set_label(album, new_album, "x-large");
|
|
}
|
|
|
|
static GtkWidget *align(GtkWidget *label)
|
|
{
|
|
GtkWidget *alignment = gtk_alignment_new(0.0, 0.5, 0.0, 0.0);
|
|
container_add(alignment, label);
|
|
return alignment;
|
|
}
|
|
|
|
static GtkWidget *setup_window()
|
|
{
|
|
GtkWidget *viewport = gtk_viewport_new(NULL, NULL);
|
|
now_playing = gtk_scrolled_window_new(NULL, NULL);
|
|
|
|
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(now_playing),
|
|
GTK_POLICY_AUTOMATIC,
|
|
GTK_POLICY_NEVER);
|
|
gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport), GTK_SHADOW_NONE);
|
|
container_add(now_playing, viewport);
|
|
|
|
return viewport;
|
|
}
|
|
|
|
static void make_now_playing()
|
|
{
|
|
GtkWidget *tag_box = gtk_vbox_new(FALSE, 0);
|
|
GtkWidget *container = setup_window();
|
|
|
|
title = gtk_label_new("");
|
|
artist = gtk_label_new("");
|
|
album = gtk_label_new("");
|
|
|
|
set_title(" ");
|
|
set_artist(" ");
|
|
set_album(" ");
|
|
|
|
box_pack_start(tag_box, align(title), TRUE, FALSE, 0);
|
|
box_pack_start(tag_box, align(artist), TRUE, FALSE, 0);
|
|
box_pack_start(tag_box, align(album), TRUE, FALSE, 0);
|
|
|
|
container_add(container, tag_box);
|
|
gtk_widget_show_all(now_playing);
|
|
}
|
|
|
|
GtkWidget *get_nowplaying()
|
|
{
|
|
if (now_playing == NULL)
|
|
make_now_playing();
|
|
return now_playing;
|
|
}
|
|
|
|
void set_now_playing(Track &track)
|
|
{
|
|
set_title(track.get_title());
|
|
set_artist("by " + track.get_artist());
|
|
set_album("from " + track.get_album());
|
|
}
|