#pragma once
#ifndef TASKSVIEWER_H
#define TASKSVIEWER_H
#include <QSplitter>
#include <QScrollArea>
#include "toonzqt/treemodel.h"
#include "toonzqt/lineedit.h"
#include "toonzqt/checkbox.h"
#include "toonz/observer.h"
#include "batches.h"
class TFarmTask;
class TaskTreeView;
class QListWidgetItem;
class QComboBox;
class TaskTreeModel : public TreeModel {
Q_OBJECT
// QModelIndex m_selectedIndex;
TaskTreeView *m_view;
public:
class Item : public TreeModel::Item {
friend class TaskTreeModel;
public:
Item(const QString &name);
Item(TFarmTask *task);
//~Item();
void *getInternalPointer() const { return m_task; }
TFarmTask *getTask() const { return m_task; }
void setName(QString name) { m_name = name; }
QString getName() const { return m_name; }
private:
TFarmTask *m_task;
QString m_name;
}; // class TaskItem
TaskTreeModel(TaskTreeView *parent = 0);
//~TaskTreeModel();
// void setSelected(const QModelIndex& index) {m_selectedIndex=index;}
// void openContextMenu(const QPoint& p);
void update();
public slots:
void start(bool);
void stop(bool);
void remove(bool);
void save(bool);
void saveas(bool);
void load(bool);
void addCleanupTask(bool);
void addRenderTask(bool);
void setupModelData();
protected:
QVariant data(const QModelIndex &index, int role) const;
private:
// void setLayout(Item *oldPegs);
};
//------------------------------------------------------------------------------------------
class TasksViewer;
class TaskTreeView : public TreeView {
Q_OBJECT
public:
TasksViewer *m_mainViewer;
TaskTreeView(TasksViewer *parent, TaskTreeModel *treeModel);
QModelIndexList getSelectedIndexes() const { return selectedIndexes(); }
protected:
void onClick(TreeModel::Item *item, const QPoint &pos, QMouseEvent *e);
void openContextMenu(TreeModel::Item *item, const QPoint &globalPos);
};
//------------------------------------------------------------------------------------------
//=============================================================================
class QLabel;
class QGridLayout;
class TFarmTask;
class QTextEdit;
class QListWidget;
class TaskSheet : public QScrollArea {
Q_OBJECT
TasksViewer *m_viewer;
QFrame *m_boxCleanup;
QFrame *m_boxComposer;
TFarmTask *m_task;
DVGui::LineEdit *m_name;
DVGui::LineEdit *m_priority;
DVGui::LineEdit *m_from;
DVGui::LineEdit *m_to;
DVGui::LineEdit *m_step;
DVGui::LineEdit *m_shrink;
DVGui::LineEdit *m_chunkSize;
DVGui::LineEdit *m_outputPath;
QLabel *m_id;
QLabel *m_status;
QTextEdit *m_commandLine;
QLabel *m_server;
QLabel *m_submittedBy;
QLabel *m_submittedOn;
QLabel *m_submitDate;
QLabel *m_startDate;
QLabel *m_complDate;
QLabel *m_duration;
QLabel *m_stepCount;
QLabel *m_failedSteps;
QLabel *m_succSteps;
QListWidget *m_addedBox;
QListWidget *m_notAddedBox;
DVGui::CheckBox *m_visible;
QComboBox *m_overwrite;
QComboBox *m_multimedia;
QComboBox *m_threadsCombo;
QComboBox *m_rasterGranularityCombo;
protected slots:
void onAdded(bool);
void onRemoved(bool);
void onRemovedItemDoubleClicked(QListWidgetItem *item);
void onAddedItemDoubleClicked(QListWidgetItem *item);
void onFocusIn();
void setName();
void setFrom();
void setTo();
void setShrink();
void setStep();
void setOutput();
void setChunkSize();
void setVisible(int);
void setOverwrite(int);
void setMultimedia(int);
void setThreadsCombo(int);
void setGranularityCombo(int);
void setPriority();
public:
TaskSheet(TasksViewer *owner);
void update(TFarmTask *task);
void updateChunks(TFarmTask *task);
TFarmTask *getCurrentTask() { return m_task; }
};
//=============================================================================
class QToolBar;
class TasksViewer : public QSplitter, public BatchesController::Observer {
Q_OBJECT
public:
TaskSheet *m_taskSheet;
TaskTreeView *m_treeView;
QTimer *m_timer;
#if QT_VERSION >= 0x050500
TasksViewer(QWidget *parent = 0, Qt::WindowFlags flags = 0);
#else
TasksViewer(QWidget *parent = 0, Qt::WFlags flags = 0);
#endif
~TasksViewer();
void update();
void setSelected(TFarmTask *task);
const std::vector<QAction *> &getActions() const;
void startTimer();
void stopTimer();
public slots:
void onTimer();
protected:
QWidget *createToolBar();
std::vector<QAction *> m_actions;
void add(const QString &iconName, QString text, QToolBar *toolBar,
const char *slot, QString iconText);
void showEvent(QShowEvent *);
void hideEvent(QHideEvent *);
};
//=============================================================================
#endif // TASKSVIEWER_H