Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef BATCHES_H
Toshihiro Shimizu 890ddd
#define BATCHES_H
Toshihiro Shimizu 890ddd
Campbell Barton d0e335
#include <qobject></qobject>
Toshihiro Shimizu 890ddd
#include <map></map>
Toshihiro Shimizu 890ddd
#include <set></set>
Toshihiro Shimizu 890ddd
#include <vector></vector>
Campbell Barton d0e335
#include <qstring></qstring>
Toshihiro Shimizu 890ddd
#include "tfarmtask.h"
Toshihiro Shimizu 890ddd
#include "tfilepath.h"
Toshihiro Shimizu 890ddd
#include "tthread.h"
Toshihiro Shimizu 890ddd
#include "filebrowserpopup.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TFarmController;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//------------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
e280ae
#ifdef _MSC_VER
Toshihiro Shimizu 890ddd
#pragma warning(push)
Toshihiro Shimizu 890ddd
#pragma warning(disable : 4786)
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//------------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
class TaskTreeModel;
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class BatchesController final : public QObject {  // singleton
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  static BatchesController *instance();
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void setDirtyFlag(bool state);
Shinya Kitaoka 120a6e
  QString getListName() const;
Shinya Kitaoka 120a6e
  void addComposerTask(const TFilePath &taskFilePath);
Shinya Kitaoka 120a6e
  void addCleanupTask(const TFilePath &taskFilePath);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void addTask(const QString &id, TFarmTask *task, bool doUpdate = true);
Shinya Kitaoka 120a6e
  void removeTask(const QString &id);
Shinya Kitaoka 120a6e
  void removeAllTasks();
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  int getTaskCount() const;
Shinya Kitaoka 120a6e
  QString getTaskId(int index) const;
Shinya Kitaoka 120a6e
  TFarmTask *getTask(int index) const;
Shinya Kitaoka 120a6e
  TFarmTask *getTask(const QString &id) const;
Shinya Kitaoka 120a6e
  bool getTaskInfo(const QString &id, QString &parent, QString &name,
Shinya Kitaoka 120a6e
                   TaskState &status);
Shinya Kitaoka 120a6e
  TaskState getTaskStatus(const QString &id) const;
Shinya Kitaoka 120a6e
  void loadTask(bool isRenderTask);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void getTasks(const QString &parentId, std::vector<qstring> &tasks) const;</qstring>
Shinya Kitaoka 120a6e
  void setTasksTree(TaskTreeModel *tree);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  TaskTreeModel *getTasksTree() { return m_tasksTree; }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void startAll();
Shinya Kitaoka 120a6e
  void start(const QString &taskId);
Shinya Kitaoka 120a6e
  void stopAll();
Shinya Kitaoka 120a6e
  void stop(const QString &taskId);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void load();
Shinya Kitaoka 120a6e
  void doLoad(const TFilePath &fp);
Shinya Kitaoka 120a6e
  void save();
Shinya Kitaoka 120a6e
  void saveas();
Shinya Kitaoka 120a6e
  void doSave(const TFilePath &fp = TFilePath());
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  class Observer {
Shinya Kitaoka 120a6e
  public:
Shinya Kitaoka 120a6e
    virtual ~Observer();
Shinya Kitaoka 120a6e
    virtual void update() = 0;
Shinya Kitaoka 120a6e
  };
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void attach(Observer *obs);
Shinya Kitaoka 120a6e
  void detach(Observer *obs);
Shinya Kitaoka 120a6e
  void notify();
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void setController(TFarmController *controller);
Shinya Kitaoka 120a6e
  TFarmController *getController() const;
Shinya Kitaoka 120a6e
  void update();  // aggiorna lo stato del Batch interrogando il FarmController
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public slots:
Shinya Kitaoka 120a6e
  void onExit(bool &);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
protected:
Shinya Kitaoka 120a6e
  BatchesController();
Shinya Kitaoka 120a6e
  ~BatchesController();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  // non implementati
Shinya Kitaoka 120a6e
  BatchesController(const BatchesController &);
Shinya Kitaoka 120a6e
  void operator=(const BatchesController &);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 120a6e
  bool m_dirtyFlag;
Shinya Kitaoka 120a6e
  TFilePath m_filepath;
Shinya Kitaoka 120a6e
  std::map<qstring, *="" tfarmtask=""> m_tasks;</qstring,>
otakuto 158f9f
  std::set<observer *=""> m_observers;</observer>
Shinya Kitaoka 120a6e
  int m_localControllerPortNumber;
Shinya Kitaoka 120a6e
  TFarmController *m_controller;
Shinya Kitaoka 120a6e
  std::map<qstring, qstring=""> m_farmIdsTable;</qstring,>
Shinya Kitaoka 120a6e
  TaskTreeModel *m_tasksTree;
Shinya Kitaoka 120a6e
  TThread::Executor m_localExecutor;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  static BatchesController *m_instance;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 120a6e
  static inline QString taskBusyStr();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Shinya Kitaoka d1f6c4
class LoadTaskListPopup final : public FileBrowserPopup {
shun-iwasawa e87e08
  Q_OBJECT
shun-iwasawa e87e08
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  LoadTaskListPopup();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  bool execute() override;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class LoadTaskPopup final : public FileBrowserPopup {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  bool m_isRenderTask;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  LoadTaskPopup();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  bool execute() override;
Shinya Kitaoka 120a6e
  void open(bool isRenderTask);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class SaveTaskListPopup final : public FileBrowserPopup {
Shinya Kitaoka 120a6e
  Q_OBJECT
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  SaveTaskListPopup();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 473e70
  bool execute() override;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//------------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
e280ae
#ifdef _MSC_VER
Toshihiro Shimizu 890ddd
#pragma warning(pop)
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif