pgLab/core/QueuedBackgroundTask.h

53 lines
1.4 KiB
C
Raw Normal View History

#pragma once
#include <QRunnable>
#include <QVector>
/** Base class for an object that can be queued for execution in the background.
*
* It is meaned for long running processes the end user might want to abort, pause and check progress on.
*/
class QueuedBackgroundTask: public QRunnable
{
/** Task should exit it's run method but remember it's state, it might be resumed later.
*/
void requestPause();
/** Request to stop running and forget progress
*/
void requestAbort();
QString getProgressInfo();
};
class BackgroundTaskInfo {
public:
};
/** Manages objects of type QueuedBackgroundTask
*
* The basic operation of this queue is hand everything directly of to the default
* threadpool and that will decide when to run each task. But extra functions are
* provided to control tasks to allow the program to have a UI for controlling the tasks
*/
class BackgroundTaskQueue {
public:
/** Returns a list of tasks in the queue and their progress.
*
* When building a UI to show realtime activity then make sure to first register the update events
* then get the snapshot. After that you can use the events to update the contents of the UI.
*/
QVector<BackgroundTaskInfo> getTaskInfoSnapshort();
void pauseTask( );
/** Resume a paused task
*/
void resumeTask( );
void abortTask( );
};