diff options
Diffstat (limited to 'videoqueue.cpp')
-rw-r--r-- | videoqueue.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/videoqueue.cpp b/videoqueue.cpp new file mode 100644 index 0000000..f7a5991 --- /dev/null +++ b/videoqueue.cpp @@ -0,0 +1,32 @@ +#include "videoqueue.h" +#include "video.h" +#include "jobqueue.h" +#include "job.h" + +#include <QDebug> + +VideoQueue::VideoQueue(QObject *parent) : + QObject(parent), + m_jobQueues(QVector<JobQueue*>(4)) +{ + m_jobQueues.insert(Video::DVDImage, new JobQueue(this)); + m_jobQueues.insert(Video::EncodeMP4, new JobQueue(this)); + m_jobQueues.insert(Video::Upload, new JobQueue(this)); + m_jobQueues.insert(Video::TitleLoad, new JobQueue(this)); +} +void VideoQueue::newVideo(Video *video) +{ + connect(video, SIGNAL(jobCompleted(Video::Jobs,bool)), this, SLOT(videoChanged())); + enqueueVideo(video); +} +void VideoQueue::enqueueVideo(Video *video) +{ + foreach(Job *job, video->availableJobs()) { + qDebug() << "enqueueing job type" << job->jobType() << "for video" << video->title(); + m_jobQueues.at(job->jobType())->addJob(job); + } +} +void VideoQueue::videoChanged() +{ + enqueueVideo(qobject_cast<Video*>(sender())); +} |