From 47e37635f50c09b4f9a9ee7699e3120bab3e4088 Mon Sep 17 00:00:00 2001
From: Petr Mrázek <peterix@gmail.com>
Date: Sun, 10 Apr 2016 04:29:29 +0200
Subject: NOISSUE split GUI stuff from logic library

---
 libraries/logic/tasks/Task.h | 96 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100644 libraries/logic/tasks/Task.h

(limited to 'libraries/logic/tasks/Task.h')

diff --git a/libraries/logic/tasks/Task.h b/libraries/logic/tasks/Task.h
new file mode 100644
index 00000000..2b0ccbcd
--- /dev/null
+++ b/libraries/logic/tasks/Task.h
@@ -0,0 +1,96 @@
+/* Copyright 2013-2015 MultiMC Contributors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <QObject>
+#include <QString>
+
+#include "multimc_logic_export.h"
+
+class MULTIMC_LOGIC_EXPORT Task : public QObject
+{
+	Q_OBJECT
+public:
+	explicit Task(QObject *parent = 0);
+	virtual ~Task() {};
+
+	virtual bool isRunning() const;
+
+	virtual bool isFinished() const;
+
+	/*!
+	 * True if this task was successful.
+	 * If the task failed or is still running, returns false.
+	 */
+	virtual bool successful() const;
+
+	/*!
+	 * Returns the string that was passed to emitFailed as the error message when the task failed.
+	 * If the task hasn't failed, returns an empty string.
+	 */
+	virtual QString failReason() const;
+
+	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);
+	void finished();
+	void succeeded();
+	void failed(QString reason);
+	void status(QString status);
+
+public
+slots:
+	virtual void start();
+	virtual bool abort() { return false; };
+
+protected:
+	virtual void executeTask() = 0;
+
+protected slots:
+	virtual void emitSucceeded();
+	virtual void emitFailed(QString reason);
+
+public slots:
+	void setStatus(const QString &status);
+	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;
+};
+
-- 
cgit