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:
Bryan Schumaker 2011-11-07 18:33:15 -05:00
parent e409c2317f
commit 258ebbc081
2 changed files with 25 additions and 3 deletions

View File

@ -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());
}

View File

@ -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: ");