libsaria: Choose the next song based on the random setting
If random is enabled, I choose a random song from the list. If random is disabled I choose the next song sequentially.
This commit is contained in:
parent
e409c2317f
commit
258ebbc081
|
@ -1,8 +1,11 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <list>
|
||||
using namespace std;
|
||||
|
||||
#include <libsaria/audio.h>
|
||||
#include <libsaria/prefs.h>
|
||||
#include <libsaria/print.h>
|
||||
#include "library.h"
|
||||
|
||||
|
@ -76,6 +79,21 @@ static void insert_list(list<TrackTag> *tag_list)
|
|||
play_list.push_back(&(*it));
|
||||
}
|
||||
|
||||
static void random_next()
|
||||
{
|
||||
unsigned int index = rand() % play_list.size();
|
||||
cur_track = play_list.begin();
|
||||
for (unsigned int i = 0; i < index; i++)
|
||||
cur_track++;
|
||||
}
|
||||
|
||||
static void sequential_next()
|
||||
{
|
||||
cur_track++;
|
||||
if (cur_track == play_list.end())
|
||||
cur_track = play_list.begin();
|
||||
}
|
||||
|
||||
namespace libsaria
|
||||
{
|
||||
|
||||
|
@ -121,9 +139,10 @@ namespace libsaria
|
|||
|
||||
void library::next()
|
||||
{
|
||||
cur_track++;
|
||||
if (cur_track == play_list.end())
|
||||
cur_track = play_list.begin();
|
||||
if (libsaria::prefs::get_bool("random") == true)
|
||||
random_next();
|
||||
else
|
||||
sequential_next();
|
||||
libsaria::audio::load((*cur_track)->get_filepath());
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <libsaria/libsaria.h>
|
||||
#include <libsaria/audio.h>
|
||||
#include <libsaria/path.h>
|
||||
|
@ -11,6 +13,7 @@ namespace libsaria
|
|||
|
||||
void init(int argc, char **argv)
|
||||
{
|
||||
srand( time(NULL) );
|
||||
println("Initializing libsaria");
|
||||
audio::init(argc, argv);
|
||||
print("saria dir: ");
|
||||
|
|
Loading…
Reference in New Issue