![]() |
Mixxx
|
00001 #include <QtDebug> 00002 00003 #include "track/beatgrid.h" 00004 #include "track/beatmatrix.h" 00005 #include "track/beatfactory.h" 00006 00007 BeatsPointer BeatFactory::loadBeatsFromByteArray(TrackPointer pTrack, 00008 QString beatsVersion, 00009 QByteArray* beatsSerialized) { 00010 // TODO(XXX) make it so the version strings are not in multiple places 00011 if (beatsVersion == "BeatGrid-1.0") { 00012 BeatGrid* pGrid = new BeatGrid(pTrack, beatsSerialized); 00013 pGrid->moveToThread(pTrack->thread()); 00014 pGrid->setParent(pTrack.data()); 00015 qDebug() << "Successfully deserialized BeatGrid"; 00016 return BeatsPointer(pGrid, &BeatFactory::deleteBeats); 00017 } else if (beatsVersion == "BeatMatrix-1.0") { 00018 BeatMatrix* pMatrix = new BeatMatrix(pTrack, beatsSerialized); 00019 pMatrix->moveToThread(pTrack->thread()); 00020 pMatrix->setParent(pTrack.data()); 00021 qDebug() << "Successfully deserialized BeatMatrix"; 00022 return BeatsPointer(pMatrix, &BeatFactory::deleteBeats); 00023 } 00024 qDebug() << "BeatFactory::loadBeatsFromByteArray could not parse serialized beats."; 00025 return BeatsPointer(); 00026 } 00027 00028 BeatsPointer BeatFactory::makeBeatGrid(TrackPointer pTrack, double dBpm, double dFirstBeatSample) { 00029 BeatGrid* pGrid = new BeatGrid(pTrack); 00030 pGrid->setGrid(dBpm, dFirstBeatSample); 00031 return BeatsPointer(pGrid, &BeatFactory::deleteBeats); 00032 } 00033 00034 void BeatFactory::deleteBeats(Beats* pBeats) { 00035 // This assumes all Beats* variants multiply-inherit from QObject. Kind of 00036 // ugly. Oh well. 00037 QObject* pObject = dynamic_cast<QObject*>(pBeats); 00038 00039 if (pObject != NULL) { 00040 pObject->deleteLater(); 00041 } 00042 }