2013-12-31 15:44:44 -05:00
|
|
|
/*
|
|
|
|
* Copyright 2013 (c) Anna Schumaker.
|
|
|
|
*/
|
2014-01-02 21:12:46 -05:00
|
|
|
#ifndef OCARINA_PLAYQUEUE_H
|
|
|
|
#define OCARINA_PLAYQUEUE_H
|
2013-12-31 15:44:44 -05:00
|
|
|
|
|
|
|
#include <file.h>
|
2014-01-02 21:58:18 -05:00
|
|
|
#include <library.h>
|
2013-12-31 15:44:44 -05:00
|
|
|
#include <vector>
|
|
|
|
|
2014-01-02 21:12:46 -05:00
|
|
|
enum playqueue_flags {
|
|
|
|
PQ_ENABLED = (1 << 0),
|
|
|
|
PQ_RANDOM = (1 << 1),
|
|
|
|
PQ_REPEAT = (1 << 2),
|
2013-12-31 15:44:44 -05:00
|
|
|
};
|
|
|
|
|
2014-01-02 21:12:46 -05:00
|
|
|
class Playqueue {
|
2013-12-31 15:44:44 -05:00
|
|
|
private:
|
|
|
|
std :: vector <unsigned int> tracks;
|
|
|
|
unsigned int flags;
|
|
|
|
unsigned int cur;
|
2014-01-02 21:58:18 -05:00
|
|
|
unsigned int length;
|
2013-12-31 15:44:44 -05:00
|
|
|
|
|
|
|
public:
|
2014-01-02 21:12:46 -05:00
|
|
|
Playqueue();
|
|
|
|
Playqueue(playqueue_flags);
|
|
|
|
~Playqueue();
|
2013-12-31 15:44:44 -05:00
|
|
|
void write(File &);
|
|
|
|
void read(File &);
|
|
|
|
|
2014-01-02 21:12:46 -05:00
|
|
|
void set_flag(playqueue_flags);
|
|
|
|
void unset_flag(playqueue_flags);
|
2013-12-31 15:44:44 -05:00
|
|
|
const unsigned int get_flags();
|
2014-01-02 21:58:18 -05:00
|
|
|
unsigned int get_length();
|
2014-01-22 21:17:51 -05:00
|
|
|
std::string get_length_str();
|
2013-12-31 15:44:44 -05:00
|
|
|
|
|
|
|
unsigned int add(unsigned int);
|
2014-01-02 21:58:18 -05:00
|
|
|
unsigned int add_front(unsigned int);
|
2013-12-31 15:44:44 -05:00
|
|
|
void del(unsigned int);
|
2014-01-16 22:05:36 -05:00
|
|
|
void del_track(unsigned int);
|
2013-12-31 15:44:44 -05:00
|
|
|
unsigned int size();
|
2014-01-20 19:06:52 -05:00
|
|
|
unsigned int operator[](unsigned int);
|
2013-12-31 15:44:44 -05:00
|
|
|
|
|
|
|
unsigned int next();
|
2014-01-04 10:54:02 -05:00
|
|
|
void reset_cur();
|
2014-01-22 19:34:01 -05:00
|
|
|
#ifdef CONFIG_TEST
|
|
|
|
void reset();
|
|
|
|
#endif /* CONFIG_TEST */
|
2013-12-31 15:44:44 -05:00
|
|
|
};
|
|
|
|
|
2014-01-02 21:12:46 -05:00
|
|
|
#endif /* OCARINA_PLAYQUEUE_H */
|