From c79db5631de57a8aba81de40056c8c13f8c99455 Mon Sep 17 00:00:00 2001 From: Till Theato Date: Tue, 3 Jan 2012 22:45:36 +0100 Subject: [PATCH 1/1] Fix job progress bar not disappearing when job is cancelled --- src/projectlist.cpp | 5 ++--- src/projectlist.h | 30 +++++++++++++----------------- src/projecttree/cutclipjob.cpp | 18 ++++++++++-------- 3 files changed, 25 insertions(+), 28 deletions(-) diff --git a/src/projectlist.cpp b/src/projectlist.cpp index 8802e80a..2f95fac6 100644 --- a/src/projectlist.cpp +++ b/src/projectlist.cpp @@ -2850,9 +2850,8 @@ void ProjectList::slotProcessJobs() if (job->addClipToProject) { emit addClip(destination, QString(), QString()); } - } - else if (job->jobStatus == JOBCRASHED) { - emit updateJobStatus(job->clipId(), job->jobType, JOBCRASHED, job->errorMessage()); + } else if (job->jobStatus == JOBCRASHED || job->jobStatus == JOBABORTED) { + emit updateJobStatus(job->clipId(), job->jobType, job->jobStatus, job->errorMessage()); } } // Thread finished, cleanup & update count diff --git a/src/projectlist.h b/src/projectlist.h index 785cbff5..d203c195 100644 --- a/src/projectlist.h +++ b/src/projectlist.h @@ -148,25 +148,22 @@ public: QRectF bounding; painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , subText, &bounding); - int proxy = index.data(Qt::UserRole + 5).toInt(); - if (proxy != 0 && proxy != JOBDONE) { - QString proxyText; - QColor color; - if (proxy != JOBCRASHED) { - // Draw proxy progress bar - color = option.palette.alternateBase().color(); + int jobProgress = index.data(Qt::UserRole + 5).toInt(); + if (jobProgress != 0 && jobProgress != JOBDONE && jobProgress != JOBABORTED) { + if (jobProgress != JOBCRASHED) { + // Draw job progress bar + QColor color = option.palette.alternateBase().color(); painter->setPen(Qt::NoPen); color.setAlpha(180); painter->setBrush(QBrush(color)); QRect progress(pixmapPoint.x() + 1, pixmapPoint.y() + pixmap.height() - 5, pixmap.width() - 2, 4); painter->drawRect(progress); painter->setBrush(option.palette.text()); - if (proxy > 0) { + if (jobProgress > 0) { progress.adjust(1, 1, 0, -1); - progress.setWidth((pixmap.width() - 4) * proxy / 100); + progress.setWidth((pixmap.width() - 4) * jobProgress / 100); painter->drawRect(progress); - } - else if (proxy == JOBWAITING) { + } else if (jobProgress == JOBWAITING) { // Draw kind of a pause icon progress.adjust(1, 1, 0, -1); progress.setWidth(2); @@ -174,16 +171,15 @@ public: progress.moveLeft(progress.right() + 2); painter->drawRect(progress); } - } - else if (proxy == JOBCRASHED) { - proxyText = index.data(Qt::UserRole + 7).toString(); - if (!proxyText.isEmpty()) { - QRectF txtBounding = painter->boundingRect(r2, Qt::AlignRight | Qt::AlignVCenter, " " + proxyText + " "); + } else if (jobProgress == JOBCRASHED) { + QString jobText = index.data(Qt::UserRole + 7).toString(); + if (!jobText.isEmpty()) { + QRectF txtBounding = painter->boundingRect(r2, Qt::AlignRight | Qt::AlignVCenter, " " + jobText + " "); 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); + painter->drawText(txtBounding, Qt::AlignHCenter | Qt::AlignVCenter , jobText); } } } diff --git a/src/projecttree/cutclipjob.cpp b/src/projecttree/cutclipjob.cpp index 31caf5fe..c72543ad 100644 --- a/src/projecttree/cutclipjob.cpp +++ b/src/projecttree/cutclipjob.cpp @@ -35,8 +35,9 @@ CutClipJob::CutClipJob(CLIPTYPE cType, const QString &id, QStringList parameters if (m_start.isEmpty()) { // this is a transcoding job description = i18n("Transcode clip"); + } else { + description = i18n("Cut clip"); } - else description = i18n("Cut clip"); m_jobDuration = parameters.at(4).toInt(); addClipToProject = parameters.at(5).toInt(); replaceClip = false; @@ -47,7 +48,7 @@ void CutClipJob::startJob() { // Special case: playlist clips (.mlt or .kdenlive project files) if (clipType == AV || clipType == AUDIO || clipType == VIDEO) { - QStringList parameters; + QStringList parameters; parameters << "-i" << m_src; if (!m_start.isEmpty()) parameters << "-ss" << m_start <<"-t" << m_end; @@ -61,7 +62,7 @@ void CutClipJob::startJob() parameters << m_dest; m_jobProcess = new QProcess; m_jobProcess->setProcessChannelMode(QProcess::MergedChannels); - kDebug()<<"// STARTING CIUT JOS: "<start("ffmpeg", parameters); m_jobProcess->waitForStarted(); while (m_jobProcess->state() != QProcess::NotRunning) { @@ -82,19 +83,20 @@ void CutClipJob::startJob() processLogInfo(); m_errorMessage.append(i18n("Failed to create file.")); setStatus(JOBCRASHED); + } else { + setStatus(JOBDONE); } - else setStatus(JOBDONE); - } - else if (result == QProcess::CrashExit) { + } else if (result == QProcess::CrashExit) { // Proxy process crashed QFile::remove(m_dest); setStatus(JOBCRASHED); } } - delete m_jobProcess; + delete m_jobProcess; return; + } else { + m_errorMessage = i18n("Cannot process this clip type."); } - else m_errorMessage = i18n("Cannot process this clip type."); setStatus(JOBCRASHED); return; } -- 2.39.2