playqueue: Generate a string representing current runtime.
I almost did this on the gui side, but then I remembered that this isn't a trivial job. I chose to stick with my rule: "if something can be done in the backend then it should be done in the backend" Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This commit is contained in:
parent
0f11ba0ee6
commit
bc3220ae85
|
@ -32,6 +32,7 @@ public:
|
||||||
void unset_flag(playqueue_flags);
|
void unset_flag(playqueue_flags);
|
||||||
const unsigned int get_flags();
|
const unsigned int get_flags();
|
||||||
unsigned int get_length();
|
unsigned int get_length();
|
||||||
|
std::string get_length_str();
|
||||||
|
|
||||||
unsigned int add(unsigned int);
|
unsigned int add(unsigned int);
|
||||||
unsigned int add_front(unsigned int);
|
unsigned int add_front(unsigned int);
|
||||||
|
|
|
@ -4,7 +4,13 @@
|
||||||
#include <callback.h>
|
#include <callback.h>
|
||||||
#include <library.h>
|
#include <library.h>
|
||||||
#include <playqueue.h>
|
#include <playqueue.h>
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
|
#define O_MINUTES (60)
|
||||||
|
#define O_HOURS (60 * O_MINUTES)
|
||||||
|
#define O_DAYS (24 * O_HOURS)
|
||||||
|
|
||||||
Playqueue :: Playqueue()
|
Playqueue :: Playqueue()
|
||||||
: flags(0), cur(-1), length(0)
|
: flags(0), cur(-1), length(0)
|
||||||
|
@ -56,6 +62,36 @@ unsigned int Playqueue :: get_length()
|
||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void add_duration(std::stringstream &ss, unsigned int dur,
|
||||||
|
unsigned int remaining, const std::string &field)
|
||||||
|
{
|
||||||
|
if (dur > 0) {
|
||||||
|
ss << dur << " " << field;
|
||||||
|
if (remaining > 0)
|
||||||
|
ss << ", ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string Playqueue :: get_length_str()
|
||||||
|
{
|
||||||
|
std::stringstream ss;
|
||||||
|
unsigned int len = length;
|
||||||
|
|
||||||
|
unsigned int days = len / O_DAYS;
|
||||||
|
len -= days * O_DAYS;
|
||||||
|
add_duration(ss, days, len, "days");
|
||||||
|
|
||||||
|
unsigned int hours = len / O_HOURS;
|
||||||
|
len -= hours *O_HOURS;
|
||||||
|
add_duration(ss, hours, len, "hours");
|
||||||
|
unsigned int mins = len / O_MINUTES;
|
||||||
|
add_duration(ss, mins, len, "miutes");
|
||||||
|
unsigned int secs = len - (mins * O_MINUTES);
|
||||||
|
add_duration(ss, secs, 0, "seconds");
|
||||||
|
|
||||||
|
return ss.str();
|
||||||
|
}
|
||||||
|
|
||||||
unsigned int Playqueue :: add(unsigned int track_id)
|
unsigned int Playqueue :: add(unsigned int track_id)
|
||||||
{
|
{
|
||||||
unsigned int id = tracks.size();
|
unsigned int id = tracks.size();
|
||||||
|
|
Loading…
Reference in New Issue
Block a user