diff options
Diffstat (limited to 'src/gui/processesStartDialog.cpp')
-rw-r--r-- | src/gui/processesStartDialog.cpp | 89 |
1 files changed, 84 insertions, 5 deletions
diff --git a/src/gui/processesStartDialog.cpp b/src/gui/processesStartDialog.cpp index d1a7017..e0a6286 100644 --- a/src/gui/processesStartDialog.cpp +++ b/src/gui/processesStartDialog.cpp @@ -25,7 +25,13 @@ ProcessesStartDialog::ProcessesStartDialog(QWidget *parent) : procStartUi->setupUi(this); connect( procStartUi->sendButton, SIGNAL( clicked()), this, SLOT( send())); connect( procStartUi->cancelButton, SIGNAL( clicked()), this, SLOT( notSend())); - procStartUi->listOfProcessesButton->hide(); + connect( procStartUi->saveButton, SIGNAL( clicked()), this, SLOT ( save())); + + //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))); + + listProcesses(); } ProcessesStartDialog::~ProcessesStartDialog() @@ -36,7 +42,7 @@ ProcessesStartDialog::~ProcessesStartDialog() void ProcessesStartDialog::send() { QString procd = procStartUi->message->text(); - + save(); //save (if we made changes to our list) if (procd.length()>0) { QMessageBox::StandardButton start = QMessageBox::question(0, @@ -48,9 +54,9 @@ void ProcessesStartDialog::send() { //write name of process to setProcessesDialog MainWindow::getWindow()->setProcessesDialog(procd); + procStartUi->message->clear(); + emit accept(); } - procStartUi->message->clear(); - emit accept(); } } @@ -62,5 +68,78 @@ void ProcessesStartDialog::notSend() void ProcessesStartDialog::listProcesses() { - // + /*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()); } |