Files
soundServe/src/PlayerLocal.cpp
T
fegger 00c8d9b843 Refactor containers and library loading
Replace trackPtr with raw Track* pointers in HashTable, add loadLibrary
to PlayerLocal, remove unused File helpers, and fix broken artwork/artist
SQL bindings.
2026-06-22 11:51:27 +02:00

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