1 // Copyright (C) 2009-2016 CEA/DEN, EDF R&D
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 // Lesser General Public License for more details.
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
20 #include "BL_QModelManager.hxx"
21 #include "BL_JobsManager_QT.hxx"
23 #include <QStandardItemModel>
29 BL::QModelManager::QModelManager(QObject * parent, BL::JobsManager_QT * jobs_manager) : QObject(parent)
31 DEBTRACE("Creating BL::QModelManager");
32 BL_ASSERT(jobs_manager);
33 _jobs_manager = jobs_manager;
35 _model = new QStandardItemModel(this);
36 jobs_manager->set_model_manager(this);
38 headers << "Job Name" << "Type" << "State" << "Resource" << "Launcher Id";
39 _model->setHorizontalHeaderLabels(headers);
42 BL::QModelManager::~QModelManager()
44 DEBTRACE("Destroying BL::QModelManager");
48 BL::QModelManager::getModel()
50 DEBTRACE("getModel BL::QModelManager called");
56 BL::QModelManager::new_job_added(const QString & name)
58 DEBTRACE("Adding new job in the model manager");
59 BL::Job * job = _jobs_manager->getJob(name.toUtf8().constData());
60 QStandardItem * new_job_name = new QStandardItem(name);
62 QStandardItem * new_job_type;
63 if (job->getType() == BL::Job::YACS_SCHEMA)
64 new_job_type = new QStandardItem("YACS_Schema");
65 else if (job->getType() == BL::Job::COMMAND)
66 new_job_type = new QStandardItem("Command");
67 else if (job->getType() == BL::Job::PYTHON_SALOME)
68 new_job_type = new QStandardItem("Python_Salome");
70 QStandardItem * new_job_state;
71 if (job->getState() == BL::Job::CREATED)
72 new_job_state = new QStandardItem("Created");
73 else if (job->getState() == BL::Job::QUEUED)
74 new_job_state = new QStandardItem("Queued");
75 else if (job->getState() == BL::Job::RUNNING)
76 new_job_state = new QStandardItem("Running");
77 else if (job->getState() == BL::Job::PAUSED)
78 new_job_state = new QStandardItem("Paused");
79 else if (job->getState() == BL::Job::ERROR)
80 new_job_state = new QStandardItem("Error");
81 else if (job->getState() == BL::Job::FAILED)
82 new_job_state = new QStandardItem("Failed");
83 else if (job->getState() == BL::Job::NOT_CREATED)
84 new_job_state = new QStandardItem("Not Created");
86 new_job_state = new QStandardItem("Finished");
88 QStandardItem * new_job_resource = new QStandardItem(job->getResource().c_str());
90 id_str.setNum(job->getSalomeLauncherId());
91 QStandardItem * new_job_id = new QStandardItem(id_str);
93 int row = _model->rowCount();
94 _model->setItem(row, 0, new_job_name);
95 _model->setItem(row, 1, new_job_type);
96 _model->setItem(row, 2, new_job_state);
97 _model->setItem(row, 3, new_job_resource);
98 _model->setItem(row, 4, new_job_id);
102 BL::QModelManager::job_state_changed(const QString & name)
104 DEBTRACE("BL::QModelManager::job_state_changed received");
106 BL::Job * job = _jobs_manager->getJob(name.toUtf8().constData());
107 QList<QStandardItem *> item_list = _model->findItems(name);
108 QStandardItem * job_state_item = _model->item(item_list.at(0)->row(), 2);
110 if (job->getState() == BL::Job::CREATED)
111 job_state_item->setText("Created");
112 else if (job->getState() == BL::Job::QUEUED)
113 job_state_item->setText("Queued");
114 else if (job->getState() == BL::Job::RUNNING)
115 job_state_item->setText("Running");
116 else if (job->getState() == BL::Job::PAUSED)
117 job_state_item->setText("Paused");
118 else if (job->getState() == BL::Job::ERROR)
119 job_state_item->setText("Error");
120 else if (job->getState() == BL::Job::FAILED)
121 job_state_item->setText("Failed");
122 else if (job->getState() == BL::Job::NOT_CREATED)
123 job_state_item->setText("Not Created");
125 job_state_item->setText("Finished");
129 BL::QModelManager::delete_job(const QString & name)
131 QList<QStandardItem *> list = _model->findItems(name);
132 if (list.size() != 1)
134 DEBMSG("LIST SIZE IS :" << list.size());
135 DEBMSG("FOR NAME :" << name.toUtf8().constData());
138 _model->removeRow(list[0]->row());