00001
00008 #include "pbsnodes.h"
00009 #include "../mainwindowimpl.h"
00010 #include "../thread/sshexecutethread.h"
00011 #include <QDebug>
00012 #include <QStandardItemModel>
00013 #include <QMovie>
00014
00015
00021 PBSNodes::PBSNodes(QWidget *parent)
00022 : QWidget(parent)
00023 {
00024 setupUi(this);
00025 connect(actionRefresh, SIGNAL(triggered()), this, SLOT(refresh()));
00026
00027
00028 model = new QStandardItemModel(0, 6, parent);
00029
00030 model->setHeaderData(0, Qt::Horizontal, QObject::tr("Name"));
00031 model->setHeaderData(1, Qt::Horizontal, QObject::tr("State"));
00032 model->setHeaderData(2, Qt::Horizontal, QObject::tr("Nb proc"));
00033 model->setHeaderData(3, Qt::Horizontal, QObject::tr("Properties"));
00034 model->setHeaderData(4, Qt::Horizontal, QObject::tr("Type"));
00035 model->setHeaderData(5, Qt::Horizontal, QObject::tr("Status"));
00036
00037 treeView->setModel(model);
00038 treeView->setRootIsDecorated(false);
00039 treeView->setAlternatingRowColors(true);
00040 treeView->setSortingEnabled(true);
00041 treeView->setWordWrap(false);
00042 treeView->setUniformRowHeights(true);
00043 }
00044
00055 void PBSNodes::addNodeEntry(const QString &name,
00056 const QString &state, const QString &nbproc,
00057 const QString &properties, const QString &type, const QString &status)
00058 {
00059 model->insertRow(0);
00060 model->setData(model->index(0, 0), name);
00061 model->setData(model->index(0, 1), state);
00062 model->setData(model->index(0, 2), nbproc);
00063 model->setData(model->index(0, 3), properties);
00064 model->setData(model->index(0, 4), type);
00065 model->setData(model->index(0, 5), status);
00066 }
00067
00068
00072 void PBSNodes::clearNodesListing ()
00073 {
00074 model->removeRows(0, model->rowCount());
00075 }
00076
00080 void PBSNodes::refresh()
00081 {
00082 Myssh & ssh = dynamic_cast<MainWindowImpl*>(window())->_ssh;
00083
00084 if (ssh.isConnected())
00085 {
00086 QMovie * movie = new QMovie(":/imgs/anim.gif");
00087 lAnim->setMovie(movie);
00088 movie->start();
00089
00090 SSHExecuteThread * thread = new SSHExecuteThread(&ssh, QString("pbsnodes -a"));
00091 QObject::connect (thread, SIGNAL(cmdSent(QStringList)), this, SLOT(onNodesReceived(QStringList)));
00092 thread->start();
00093 }
00094 }
00095
00101 void PBSNodes::onNodesReceived(QStringList outerr)
00102 {
00103 QString showq;
00104 QStringList l, l2;
00105 QStringList::const_iterator constIterator;
00106
00107 showq = outerr[0];
00108
00109 this->clearNodesListing();
00110
00111 l = showq.split('\n');
00112 for (constIterator = l.constBegin(); constIterator != l.constEnd(); ++constIterator)
00113 {
00114 QString name,
00115 state,
00116 nbproc,
00117 properties,
00118 type,
00119 status;
00120
00121 name = (*constIterator);
00122 constIterator++;
00123 if (constIterator == l.constEnd())
00124 break;
00125 state = (*constIterator).mid(13);
00126 constIterator++;
00127 if (constIterator == l.constEnd())
00128 break;
00129 nbproc = (*constIterator).mid(10);
00130 constIterator++;
00131 if (constIterator == l.constEnd())
00132 break;
00133 properties = (*constIterator).mid(18);
00134 constIterator++;
00135 if (constIterator == l.constEnd())
00136 break;
00137 type = (*constIterator).mid(13);
00138 constIterator++;
00139 if (constIterator == l.constEnd())
00140 break;
00141 status = (*constIterator).mid(13);
00142 constIterator++;
00143
00144 addNodeEntry(name, state, nbproc, properties, type, status);
00145 }
00146
00147 lAnim->clear();
00148 }
00149