diff options
Diffstat (limited to 'src/gui/processesStartDialog.cpp')
| -rw-r--r-- | src/gui/processesStartDialog.cpp | 142 |
1 files changed, 106 insertions, 36 deletions
diff --git a/src/gui/processesStartDialog.cpp b/src/gui/processesStartDialog.cpp index b4c8c79..e0a6286 100644 --- a/src/gui/processesStartDialog.cpp +++ b/src/gui/processesStartDialog.cpp @@ -19,57 +19,127 @@ #include <src/gui/mainWindow.h> ProcessesStartDialog::ProcessesStartDialog(QWidget *parent) : - QDialog(parent) + QDialog(parent), + procStartUi(new Ui::ProcessesStartDialog) { - textLabel = new QLabel; - textLabel->setText("Process to start:"); + procStartUi->setupUi(this); + connect( procStartUi->sendButton, SIGNAL( clicked()), this, SLOT( send())); + connect( procStartUi->cancelButton, SIGNAL( clicked()), this, SLOT( notSend())); + connect( procStartUi->saveButton, SIGNAL( clicked()), this, SLOT ( save())); - messageEdit = new QLineEdit; + //if we click or double click one of our items we put it in our message + connect( procStartUi->processesList, SIGNAL( cellDoubleClicked(int,int)), this, SLOT ( itemClicked(int,int))); + connect( procStartUi->processesList, SIGNAL( cellClicked(int,int)), this, SLOT ( itemClicked(int,int))); - layout = new QGridLayout; - - sendButton = new QPushButton(tr("Start")); - cancelButton = new QPushButton(tr("Cancel")); - - connect( sendButton, SIGNAL( clicked()), this, SLOT( send())); - connect( cancelButton, SIGNAL( clicked()), this, SLOT( NotSend())); - - layout->addWidget(textLabel,0,0); - layout->addWidget(messageEdit,1,0); - layout->addWidget(cancelButton,2,0); - layout->addWidget(sendButton,2,0); - - setLayout(layout); - setWindowTitle(tr("PVS start Process")); + listProcesses(); } ProcessesStartDialog::~ProcessesStartDialog() { - //delete procstartui; + // } void ProcessesStartDialog::send() { - QString procd = messageEdit->text(); - MainWindow::getWindow()->setProcessesDialog(procd); - messageEdit->clear(); - emit accept(); + QString procd = procStartUi->message->text(); + save(); //save (if we made changes to our list) + if (procd.length()>0) + { + QMessageBox::StandardButton start = QMessageBox::question(0, + tr("PVS Start Process"), tr("Do you want to start the process: ") + procd + + tr(" on the selected Clients?"), + QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok); + + if (start == QMessageBox::Ok) + { + //write name of process to setProcessesDialog + MainWindow::getWindow()->setProcessesDialog(procd); + procStartUi->message->clear(); + emit accept(); + } + } } -void ProcessesStartDialog::NotSend() +void ProcessesStartDialog::notSend() { - messageEdit->clear(); + procStartUi->message->clear(); emit reject(); } -/*void ProcessesStartDialog::changeEvent(QEvent *e) +void ProcessesStartDialog::listProcesses() { - //QDialog::changeEvent(e); - //switch (e->type()) { - //case QEvent::LanguageChange: - // procstartui->retranslateUi(this); - // break; - //default: - // break; - //} -}*/ + /*settings.beginWriteArray("RemoteProcessesList"); + settings.setArrayIndex(0); + settings.setValue("command", "oowriter"); + settings.setValue("description", "Open Office Writer"); + settings.setArrayIndex(1); + settings.setValue("command", "oocalc"); + settings.setValue("description", "Open Office Calc"); + settings.endArray();*/ + + //read from settings + int size = settings.beginReadArray("RemoteProcessesList"); + for (int i = 0; i < size; ++i) + { + settings.setArrayIndex(i); + procStartUi->processesList->setRowCount(i+1); + procStartUi->processesList->setItem(i, 0, new QTableWidgetItem(settings.value("command").toString(),0)); + procStartUi->processesList->setItem(i, 1, new QTableWidgetItem(settings.value("description").toString(),0)); + } + settings.endArray(); + + //add empty items to our List + QString empty = " "; + procStartUi->processesList->setRowCount(procStartUi->processesList->rowCount()+1); + procStartUi->processesList->setItem(procStartUi->processesList->rowCount()-1, 0, new QTableWidgetItem(empty,0)); + procStartUi->processesList->setItem(procStartUi->processesList->rowCount()-1, 1, new QTableWidgetItem(empty,0)); +} + +void ProcessesStartDialog::save() +{ + //if we delete items from our list we increment our decrement - to decrement our arrayindex + int decrement = 0; + + // if both our last elements are empty dont read them + // we need this if we have added new elements + if ((procStartUi->processesList->item(procStartUi->processesList->rowCount()-1, 0) != 0) && + (procStartUi->processesList->item(procStartUi->processesList->rowCount()-1, 1) != 0)) + { + settings.beginWriteArray("RemoteProcessesList"); + for (int i = 0; i < procStartUi->processesList->rowCount(); ++i) + { + //if elements are only whitespaces we ignore them + if ((procStartUi->processesList->item(i, 0)->text().remove(QRegExp("\\s")) != "") && + (procStartUi->processesList->item(i, 1)->text().remove(QRegExp("\\s")) != "")) + { + settings.setArrayIndex(i-decrement); + settings.setValue("command", procStartUi->processesList->item(i, 0)->text()); + settings.setValue("description", procStartUi->processesList->item(i, 1)->text()); + } else decrement++; //and increment our decrement + } + settings.endArray(); + } + else + { + settings.beginWriteArray("RemoteProcessesList"); + for (int i = 0; i < procStartUi->processesList->rowCount()-1; ++i) + { + if ((procStartUi->processesList->item(i, 0)->text().remove(QRegExp("\\s")) != "") && + (procStartUi->processesList->item(i, 1)->text().remove(QRegExp("\\s")) != "")) + { + settings.setArrayIndex(i-decrement); + settings.setValue("command", procStartUi->processesList->item(i, 0)->text()); + settings.setValue("description", procStartUi->processesList->item(i, 1)->text()); + } else decrement++; + } + settings.endArray(); + } + listProcesses(); +} + +void ProcessesStartDialog::itemClicked(int row, int column) +{ + //if last item exists we put it in our message + if (procStartUi->processesList->item(row, 0) != 0) + procStartUi->message->setText(procStartUi->processesList->item(row, 0)->text()); +} |
