const int DurationRole = Qt::UserRole + 1;
const int JobProgressRole = Qt::UserRole + 5;
const int JobTypeRole = Qt::UserRole + 6;
-const int JobCrasMessage = Qt::UserRole + 7;
+const int JobStatusMessage = Qt::UserRole + 7;
const int itemHeight = 38;
ProjectItem::ProjectItem(QTreeWidget * parent, DocClipBase *clip) :
{
QString tip;
if (m_clip->isPlaceHolder()) tip.append(i18n("Missing") + " | ");
- int s = data(0, JobProgressRole).toInt();
- if (s == CREATINGJOB || s > 0) {
- tip.append(i18n("Building proxy clip") + " | ");
- }
- else if (s == JOBWAITING) {
- tip.append(i18n("Waiting - proxy clip") + " | ");
+ QString jobInfo = data(0, JobStatusMessage).toString();
+ if (!jobInfo.isEmpty()) {
+ tip.append(jobInfo + " | ");
}
- else if (hasProxy()) {
+ if (hasProxy() && data(0, JobTypeRole).toInt() != PROXYJOB) {
tip.append(i18n("Proxy clip") + " | ");
}
tip.append("<b>");
}
}
-void ProjectItem::setJobStatus(CLIPJOBSTATUS status, int progress, JOBTYPE jobType)
+void ProjectItem::setJobStatus(CLIPJOBSTATUS status, int progress, JOBTYPE jobType, const QString &statusMessage)
{
- if (status == JOBCRASHED) {
- if (jobType == PROXYJOB) setData(0, JobCrasMessage, i18n("Proxy crashed"));
- else if (jobType == CUTJOB) setData(0, JobCrasMessage, i18n("Transcoding crashed"));
- }
setData(0, JobTypeRole, jobType);
if (progress > 0) setData(0, JobProgressRole, progress);
else {
setData(0, JobProgressRole, status);
+ setData(0, JobStatusMessage, statusMessage);
slotSetToolTip();
}
}
static int itemDefaultHeight();
void slotSetToolTip();
/** \brief Set the status of the clip job. */
- void setJobStatus(CLIPJOBSTATUS status, int progress = 0, JOBTYPE jobType = NOJOBTYPE);
+ void setJobStatus(CLIPJOBSTATUS status, int progress = 0, JOBTYPE jobType = NOJOBTYPE, const QString &statusMessage = QString());
/** \brief Returns the proxy status for this clip (true means there is a proxy clip). */
bool hasProxy() const;
/** \brief Returns true if the proxy for this clip is ready. */
slotGotProxy(path);
return;
}
- if (!item->isJobRunning()) setJobStatus(item, JOBWAITING);
m_processingProxy.append(path);
ProxyJob *job = new ProxyJob(item->clipType(), id, QStringList() << path << item->clipUrl().path() << item->referencedClip()->producerProperty("_exif_orientation") << m_doc->getDocumentProperty("proxyparams").simplified() << QString::number(m_render->frameRenderWidth()) << QString::number(m_render->renderHeight()));
m_jobList.append(job);
+ if (!item->isJobRunning()) setJobStatus(item, JOBWAITING, 0, job->jobType, job->statusMessage(JOBWAITING));
startJobProcess();
}
KdenliveSettings::setAdd_clip_cut(ui.add_clip->isChecked());
delete d;
- if (!item->isJobRunning()) setJobStatus(item, JOBWAITING);
m_processingProxy.append(dest);
QStringList jobParams;
jobParams << dest << item->clipUrl().path() << timeIn << timeOut << QString::number(duration) << QString::number(KdenliveSettings::add_clip_cut());
if (!extraParams.isEmpty()) jobParams << extraParams;
CutClipJob *job = new CutClipJob(item->clipType(), id, jobParams);
m_jobList.append(job);
+ if (!item->isJobRunning()) setJobStatus(item, JOBWAITING, 0, job->jobType, job->statusMessage(JOBWAITING));
startJobProcess();
}
file.close();
QFile::remove(job->destination());
- setJobStatus(processingItem, CREATINGJOB, 0, job->jobType);
+ setJobStatus(processingItem, CREATINGJOB, 0, job->jobType, job->statusMessage(CREATINGJOB));
bool success;
QProcess *jobProcess = job->startJob(&success);
}
else {
int progress = job->processLogInfo();
- if (progress > -1) emit processLog(processingItem, progress, job->jobType);
+ if (progress > 0) emit processLog(processingItem, progress, job->jobType);
}
jobProcess->waitForFinished(500);
}
QFile::remove(proxyPath);
}
-void ProjectList::setJobStatus(ProjectItem *item, CLIPJOBSTATUS status, int progress, JOBTYPE jobType)
+void ProjectList::setJobStatus(ProjectItem *item, CLIPJOBSTATUS status, int progress, JOBTYPE jobType, const QString &statusMessage)
{
if (item == NULL || m_abortAllJobs) return;
monitorItemEditing(false);
- item->setJobStatus(status, progress, jobType);
+ item->setJobStatus(status, progress, jobType, statusMessage);
if (status == JOBCRASHED) {
DocClipBase *clip = item->referencedClip();
if (!clip) {
}
else if (proxy == JOBCRASHED) {
proxyText = index.data(Qt::UserRole + 7).toString();
- QRectF txtBounding = painter->boundingRect(r2, Qt::AlignRight | Qt::AlignVCenter, " " + proxyText + " ");
- painter->setPen(Qt::NoPen);
- painter->setBrush(option.palette.highlight());
- painter->drawRoundedRect(txtBounding, 2, 2);
- painter->setPen(option.palette.highlightedText().color());
- painter->drawText(txtBounding, Qt::AlignHCenter | Qt::AlignVCenter , proxyText);
+ if (!proxyText.isEmpty()) {
+ QRectF txtBounding = painter->boundingRect(r2, Qt::AlignRight | Qt::AlignVCenter, " " + proxyText + " ");
+ painter->setPen(Qt::NoPen);
+ painter->setBrush(option.palette.highlight());
+ painter->drawRoundedRect(txtBounding, 2, 2);
+ painter->setPen(option.palette.highlightedText().color());
+ painter->drawText(txtBounding, Qt::AlignHCenter | Qt::AlignVCenter , proxyText);
+ }
}
}
/** @brief Set the Proxy status on a clip.
* @param item The clip item to set status
- * @param status The job status (see definitions.h) */
- void setJobStatus(ProjectItem *item, CLIPJOBSTATUS status, int progress = 0, JOBTYPE jobType = NOJOBTYPE);
+ * @param status The job status (see definitions.h)
+ * @param progress The job progress (in percents)
+ * @param jobType The job type
+ * @param statusMessage The job info message */
+ void setJobStatus(ProjectItem *item, CLIPJOBSTATUS status, int progress = 0, JOBTYPE jobType = NOJOBTYPE, const QString &statusMessage = QString());
void monitorItemEditing(bool enable);
/** @brief Get cached thumbnail for a project's clip or create it if no cache. */
void getCachedThumbnail(ProjectItem *item);
{
return -1;
}
+
+const QString AbstractClipJob::statusMessage(CLIPJOBSTATUS status)
+{
+ return QString();
+}
+
+
virtual QProcess *startJob(bool */*ok*/);
virtual stringMap cancelProperties();
virtual int processLogInfo();
+ virtual const QString statusMessage(CLIPJOBSTATUS status);
protected:
QString m_errorMessage;
return props;
}
+const QString CutClipJob::statusMessage(CLIPJOBSTATUS status)
+{
+ QString statusInfo;
+ switch (status) {
+ case CREATINGJOB:
+ statusInfo = i18n("Extracting clip cut");
+ break;
+ case JOBWAITING:
+ statusInfo = i18n("Waiting - clip cut");
+ break;
+ default:
+ break;
+ }
+ return statusInfo;
+}
stringMap cancelProperties();
int processLogInfo();
bool addClipToProject;
+ const QString statusMessage(CLIPJOBSTATUS status);
private:
QString m_dest;
return props;
}
+const QString ProxyJob::statusMessage(CLIPJOBSTATUS status)
+{
+ QString statusInfo;
+ switch (status) {
+ case CREATINGJOB:
+ statusInfo = i18n("Creating proxy");
+ break;
+ case JOBWAITING:
+ statusInfo = i18n("Waiting - proxy");
+ break;
+ default:
+ break;
+ }
+ return statusInfo;
+}
QProcess *startJob(bool *ok);
stringMap cancelProperties();
int processLogInfo();
+ const QString statusMessage(CLIPJOBSTATUS status);
private:
QString m_dest;