src/stats/pbsnodes.cpp

Go to the documentation of this file.
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     // Set the model of the treeView and configure it
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++; // escape the empty line
00143 
00144         addNodeEntry(name, state, nbproc, properties, type, status);
00145     }
00146 
00147     lAnim->clear();
00148 }
00149 

Generated on Mon Mar 16 18:46:05 2009 for QCJM by  doxygen 1.5.4