summaryrefslogtreecommitdiffstats
path: root/src/gui/processWidget.cpp
diff options
context:
space:
mode:
authorSebastien Braun2010-11-10 01:47:26 +0100
committerSebastien Braun2010-11-10 01:47:26 +0100
commitb2c87269579df6cdd10e4419e0817d6d829a302e (patch)
tree70d93ceb460dc34b851fe928eedd71a8fffe1f6a /src/gui/processWidget.cpp
parentAdd Makefile to generate PDF from DIA figures and call pdflatex and (diff)
parentMerge branch 'master' of openslx.org:pvs (diff)
downloadpvs-b2c87269579df6cdd10e4419e0817d6d829a302e.tar.gz
pvs-b2c87269579df6cdd10e4419e0817d6d829a302e.tar.xz
pvs-b2c87269579df6cdd10e4419e0817d6d829a302e.zip
Merge branch 'master' of ssh://git.openslx.org/pvs
Diffstat (limited to 'src/gui/processWidget.cpp')
-rw-r--r--src/gui/processWidget.cpp72
1 files changed, 58 insertions, 14 deletions
diff --git a/src/gui/processWidget.cpp b/src/gui/processWidget.cpp
index 9b59b2a..38dd2ae 100644
--- a/src/gui/processWidget.cpp
+++ b/src/gui/processWidget.cpp
@@ -28,10 +28,11 @@ ProcessWidget::ProcessWidget(QWidget *parent, PVSClient *cl):
client = cl;
connect( prowui->startButton, SIGNAL( clicked()), this, SLOT( startProcess()));
- connect( prowui->refreshButton, SIGNAL( clicked()), this, SLOT( refrProcessList()));
+ connect( prowui->refreshButton, SIGNAL( clicked()), this, SLOT( resendProcessList()));
connect( prowui->stopButton, SIGNAL( clicked()), this, SLOT( stopProcess()));
connect( client, SIGNAL( processVectorReady(bool)), this, SLOT( refrProcessList()));
+ //tell client we want to see his processes
sendCommand("SHOWPROCESSES", "");
}
@@ -39,7 +40,7 @@ void ProcessWidget::startProcess()
{
QMessageBox::StandardButton start = QMessageBox::question(0,
tr("PVS Start Process"), tr("Do you want to start the process: ") + prowui->processLineEdit->text() +
- tr(" on User '") + client->getDesktopName() + tr("' ?"),
+ tr(" on this Client?"),
QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
if (start == QMessageBox::Ok)
@@ -50,15 +51,33 @@ void ProcessWidget::startProcess()
prowui->processLineEdit->clear();
}
-void ProcessWidget::refrProcessList()
+void ProcessWidget::resendProcessList()
{
+ sendCommand("SHOWPROCESSES", "");
+}
+
+void ProcessWidget::refrProcessList(bool timerEvent)
+{
+ if (timerEvent)
+ {
+ if (prowui->processTable->selectedItems().length() > 0)
+ return;
+ else
+ {
+ resendProcessList();
+ return;
+ }
+ }
+
+ //remove every item of our list
for(int i=prowui->processTable->rowCount(); i == 0; i--)
{
prowui->processTable->removeRow(i);
}
prowui->processTable->setRowCount(0);
- QVector<QString> processes = client->getProcessesVector();
+ //read every entry of the vector - split it - and put it to the list
+ QVector<QString> processes = client->getProcessesVector();
for (int i=0; i<processes.size(); i++)
{
prowui->processTable->setRowCount(i+1);
@@ -68,22 +87,47 @@ void ProcessWidget::refrProcessList()
prowui->processTable->setItem(i,j,new QTableWidgetItem(processesList.at(j),0));
}
}
- prowui->processTable->selectRow(0);
}
void ProcessWidget::stopProcess()
{
if (prowui->processTable->rowCount() > 0)
{
- QMessageBox::StandardButton start = QMessageBox::question(0,
- tr("PVS Start Process"), tr("Do you want to stop the process: ") + prowui->processTable->item(prowui->processTable->currentRow(),1)->text() +
- tr(" on User '") + client->getDesktopName() + tr("' ?"),
- QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
- if (start == QMessageBox::Ok)
- {
- sendCommand("KILLPROCESS", prowui->processTable->item(prowui->processTable->currentRow(),0)->text());
- sendCommand("SHOWPROCESSES", "");
- }
+ //get a list of all selected items
+ QList<QTableWidgetItem *> selectedItems = prowui->processTable->selectedItems();
+ QList<int> rows;
+ for (int i=0;i<selectedItems.length();i++)
+ {
+ //only add rows one time
+ if (rows.indexOf(selectedItems.at(i)->row()) < 0)
+ rows.append(selectedItems.at(i)->row());
+ }
+ //append names of processes
+ QString processesMessage = "";
+ for (int i=0;i<rows.size();i++)
+ {
+ if (i==0)
+ processesMessage.append(QString(tr(" ")));
+ else
+ processesMessage.append(QString(tr(",")));
+ processesMessage.append(prowui->processTable->item(rows.at(i),1)->text());
+ processesMessage.append(QString(tr(" ")));
+ }
+
+ QMessageBox::StandardButton start = QMessageBox::question(0,
+ tr("PVS Start Process"), tr("Do you want to stop the process(es):") + processesMessage +
+ tr("on this Client?"),
+ QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok);
+ if (start == QMessageBox::Ok)
+ {
+ //send KILLPROCESS for every row
+ for (int i=0;i<rows.size();i++)
+ {
+ sendCommand("KILLPROCESS", prowui->processTable->item(rows.at(i),0)->text());
+ }
+ }
+ //tell client to update his list
+ sendCommand("SHOWPROCESSES", "");
}
}