00c8d9b843
Replace trackPtr with raw Track* pointers in HashTable, add loadLibrary to PlayerLocal, remove unused File helpers, and fix broken artwork/artist SQL bindings.
69 lines
1.6 KiB
C++
69 lines
1.6 KiB
C++
#include "../include/PlayerLocal.h"
|
|
#include "../include/Player.h"
|
|
#include "../include/File.h"
|
|
#include "../include/Database.h"
|
|
#include "../include/Containers.h"
|
|
|
|
#include <memory>
|
|
|
|
using db = Database;
|
|
|
|
void Player::play () { PE_.startPlayback(); }
|
|
void Player::stop () { PE_.stopPlayback(); }
|
|
void PlayerLocal::next() {
|
|
unsigned int nextTrack = ++currentTrack_;
|
|
PE_.uninitDecoder();
|
|
loadFile( queue_.at( ++currentTrack_));
|
|
PE_.startPlayback();
|
|
}
|
|
void PlayerLocal::previous() {
|
|
unsigned int previousTrack = --currentTrack_;
|
|
PE_.uninitDecoder();
|
|
loadFile( queue_.at( --currentTrack_));
|
|
PE_.startPlayback();
|
|
|
|
}
|
|
|
|
ma_uint64 Player::getPlayheadPosition () { return PE_.getPosition(); };
|
|
|
|
void PlayerLocal::loadFile ( Track track ) {
|
|
const char *fp = track.filePath.c_str();
|
|
PE_.initDecoder ( fp );
|
|
}
|
|
|
|
void PlayerLocal::addToQueue( Track& track ) {
|
|
queue_.push_back( track );
|
|
}
|
|
|
|
void::PlayerLocal::playQueue() {
|
|
for ( Track track : queue_ ) {
|
|
loadFile( track );
|
|
play();
|
|
++currentTrack_;
|
|
}
|
|
}
|
|
|
|
void PlayerLocal::scanLibrary(){
|
|
File f;
|
|
Track t;
|
|
std::vector<Track> tracks;
|
|
|
|
f.scanFolder( musicFolder_, tracks );
|
|
|
|
for ( auto t : tracks ) {
|
|
db_.addArtist( t.artist.toCString() );
|
|
db_.addGenre( t.genre.toCString() );
|
|
db_.addAlbum( t );
|
|
db_.addTrack( t );
|
|
}
|
|
}
|
|
|
|
void PlayerLocal::loadLibrary() {
|
|
db_.fetchAll( library );
|
|
for ( auto t : library ) {
|
|
tracks_.ht_insert(t.title.toCString(), &t );
|
|
artists_.ht_insert( t.artist.toCString(), &t );
|
|
albums_.ht_insert( t.album.toCString(), &t );
|
|
}
|
|
}
|