#pragma once #include #include /** 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 getTaskInfoSnapshort(); void pauseTask( ); /** Resume a paused task */ void resumeTask( ); void abortTask( ); };