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>
|
#include <list>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
#include <libsaria/audio.h>
|
#include <libsaria/audio.h>
|
||||||
|
#include <libsaria/prefs.h>
|
||||||
#include <libsaria/print.h>
|
#include <libsaria/print.h>
|
||||||
#include "library.h"
|
#include "library.h"
|
||||||
|
|
||||||
|
@ -76,6 +79,21 @@ static void insert_list(list<TrackTag> *tag_list)
|
||||||
play_list.push_back(&(*it));
|
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
|
namespace libsaria
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -121,9 +139,10 @@ namespace libsaria
|
||||||
|
|
||||||
void library::next()
|
void library::next()
|
||||||
{
|
{
|
||||||
cur_track++;
|
if (libsaria::prefs::get_bool("random") == true)
|
||||||
if (cur_track == play_list.end())
|
random_next();
|
||||||
cur_track = play_list.begin();
|
else
|
||||||
|
sequential_next();
|
||||||
libsaria::audio::load((*cur_track)->get_filepath());
|
libsaria::audio::load((*cur_track)->get_filepath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <libsaria/libsaria.h>
|
#include <libsaria/libsaria.h>
|
||||||
#include <libsaria/audio.h>
|
#include <libsaria/audio.h>
|
||||||
#include <libsaria/path.h>
|
#include <libsaria/path.h>
|
||||||
|
@ -11,6 +13,7 @@ namespace libsaria
|
||||||
|
|
||||||
void init(int argc, char **argv)
|
void init(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
srand( time(NULL) );
|
||||||
println("Initializing libsaria");
|
println("Initializing libsaria");
|
||||||
audio::init(argc, argv);
|
audio::init(argc, argv);
|
||||||
print("saria dir: ");
|
print("saria dir: ");
|
||||||
|
|
Loading…
Reference in New Issue