/*****************************************************************************
 *
 *  process.cpp -- Process (command line) class based on QProcess.
 *
 *  Copyright (C) 2010 Starbuck <starbuck@labdv.com>
 *  All rights reserved.
 *
 *  This file is part of the Process module of the DVDx 4 application.
 *
 *  GNU Lesser General Public License Usage
 *  This file may be used under the terms of the GNU Lesser General
 *  Public License version 2.1 as published by the Free Software
 *  Foundation and appearing in the file LICENSE.LGPL included in the
 *  packaging of this file.  Please review the following information to
 *  ensure the GNU Lesser General Public License version 2.1 requirements
 *  will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 *
 *  GNU General Public License Usage
 *  Alternatively, this file may be used under the terms of the GNU
 *  General Public License version 3.0 as published by the Free Software
 *  Foundation and appearing in the file LICENSE.GPL included in the
 *  packaging of this file.  Please review the following information to
 *  ensure the GNU General Public License version 3.0 requirements will be
 *  met: http://www.gnu.org/copyleft/gpl.html.
 *
 *****************************************************************************/

#ifndef PROCESS_H
#define PROCESS_H

#include "job.h"
#include "task.h"
#include "../gui4/consoledialog.h"
#include <QProcess>

class Process : public QProcess
{
	Q_OBJECT

public:
	Process();

	inline void setJob(Job *j) { job = j; };
	inline void setTask(Task *t) { task = t; t->setParent(this); };
	inline void setCommand(QString *c) { cmd = c; };
	inline void setConsole(ConsoleDialog *c) { console = c; };

	inline Job *getJob() const { return job; };
	inline Task *getTask() const { return task; };

	inline bool isAbortedByUser () const { return abortedByUser; };
	inline void setAbortedByUser () { abortedByUser = true; };

	void *updateOnTerminated();

public slots:
	void interrupt();

protected:
	Job * job;
	Task *task;
	QString *cmd;
	ConsoleDialog *console;

	bool abortedByUser;
};

#endif
