GH-1053 add back update progress dialog

This commit is contained in:
Petr Mrázek
2015-07-26 17:55:29 +02:00
parent 6310f6569c
commit d8caab515a
35 changed files with 151 additions and 63 deletions

View File

@ -48,12 +48,8 @@ void SequentialTask::subTaskProgress(qint64 current, qint64 total)
{
if(total == 0)
{
setProgress(0);
setProgress(0, 100);
return;
}
auto dcurrent = (double) current;
auto dtotal = (double) total;
auto partial = ((dcurrent / dtotal) * 100.0f)/* / double(m_queue.size())*/;
// auto bigpartial = double(m_currentIndex) * 100.0f / double(m_queue.size());
setProgress(partial);
setProgress(current, total);
}

View File

@ -23,12 +23,18 @@ Task::Task(QObject *parent) : QObject(parent)
void Task::setStatus(const QString &new_status)
{
emit status(new_status);
if(m_status != new_status)
{
m_status = new_status;
emit status(m_status);
}
}
void Task::setProgress(int new_progress)
void Task::setProgress(qint64 current, qint64 total)
{
emit progress(new_progress, 100);
m_progress = current;
m_progressTotal = total;
emit progress(m_progress, m_progressTotal);
}
void Task::start()
@ -41,6 +47,7 @@ void Task::start()
void Task::emitFailed(QString reason)
{
m_running = false;
m_finished = true;
m_succeeded = false;
m_failReason = reason;
qCritical() << "Task failed: " << reason;
@ -52,6 +59,7 @@ void Task::emitSucceeded()
{
if (!m_running) { return; } // Don't succeed twice.
m_running = false;
m_finished = true;
m_succeeded = true;
qDebug() << "Task succeeded";
emit succeeded();
@ -63,6 +71,11 @@ bool Task::isRunning() const
return m_running;
}
bool Task::isFinished() const
{
return m_finished;
}
bool Task::successful() const
{
return m_succeeded;

View File

@ -27,6 +27,8 @@ public:
virtual bool isRunning() const;
virtual bool isFinished() const;
/*!
* True if this task was successful.
* If the task failed or is still running, returns false.
@ -41,6 +43,21 @@ public:
virtual bool canAbort() const { return false; }
QString getStatus()
{
return m_status;
}
qint64 getProgress()
{
return m_progress;
}
qint64 getTotalProgress()
{
return m_progressTotal;
}
signals:
void started();
void progress(qint64 current, qint64 total);
@ -61,14 +78,17 @@ protected slots:
virtual void emitSucceeded();
virtual void emitFailed(QString reason);
protected
slots:
public slots:
void setStatus(const QString &status);
void setProgress(int progress);
void setProgress(qint64 current, qint64 total);
protected:
bool m_running = false;
bool m_finished = false;
bool m_succeeded = false;
QString m_failReason = "";
QString m_status;
int m_progress = 0;
int m_progressTotal = 100;
};