+
+ emit processFinished();
+}
+
+////////////////////////////////////////////////////////////
+// Init Function
+////////////////////////////////////////////////////////////
+
+bool ProcessThread::init(void)
+{
+ if(m_initialized < 0)
+ {
+ m_initialized = 0;
+
+ //Initialize job status
+ qDebug("Process thread %s has started.", m_jobId.toString().toLatin1().constData());
+ emit processStateInitialized(m_jobId, QFileInfo(m_audioFile.filePath()).fileName(), tr("Starting..."), ProgressModel::JobRunning);
+
+ //Initialize log
+ handleMessage(QString().sprintf("LameXP v%u.%02u (Build #%u), compiled on %s at %s", lamexp_version_major(), lamexp_version_minor(), lamexp_version_build(), lamexp_version_date().toString(Qt::ISODate).toLatin1().constData(), lamexp_version_time()));
+ handleMessage("\n-------------------------------\n");
+
+ return true;
+ }
+
+ qWarning("[ProcessThread::init] Job %s already initialialized, skipping!", m_jobId.toString().toLatin1().constData());
+ return false;
+}
+
+bool ProcessThread::start(QThreadPool *pool)
+{
+ //Make sure object was initialized correctly
+ if(m_initialized < 0)
+ {
+ THROW("Object not initialized yet!");
+ }
+
+ if(m_initialized < 1)
+ {
+ m_initialized = 1;
+
+ m_outFileName.clear();
+ bool bSuccess = false;
+
+ //Generate output file name
+ switch(generateOutFileName(m_outFileName))
+ {
+ case 1:
+ //File name generated successfully :-)
+ bSuccess = true;
+ pool->start(this);
+ break;
+ case -1:
+ //File name already exists -> skipping!
+ emit processStateChanged(m_jobId, tr("Skipped."), ProgressModel::JobSkipped);
+ emit processStateFinished(m_jobId, m_outFileName, -1);
+ break;
+ default:
+ //File name could not be generated
+ emit processStateChanged(m_jobId, tr("Not found!"), ProgressModel::JobFailed);
+ emit processStateFinished(m_jobId, m_outFileName, 0);
+ break;
+ }
+
+ if(!bSuccess)
+ {
+ emit processFinished();
+ }
+
+ return bSuccess;
+ }
+
+ qWarning("[ProcessThread::start] Job %s already started, skipping!", m_jobId.toString().toLatin1().constData());
+ return false;