From a1be80d76695511f7996f366f2e983db2e96b972 Mon Sep 17 00:00:00 2001 From: Fabian Schillinger Date: Tue, 9 Nov 2010 02:25:21 +0100 Subject: added a list to processesStartDialog: we can chose some commands from this list to start them or we can add new entries for a later usage modified documentation --- src/gui/processesStartDialog.cpp | 89 ++++++++++++++++- src/gui/processesStartDialog.h | 9 +- src/gui/ui/processesStartDialog.ui | 193 ++++++++++++++++++++++++++++++------- 3 files changed, 243 insertions(+), 48 deletions(-) (limited to 'src') 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()); } diff --git a/src/gui/processesStartDialog.h b/src/gui/processesStartDialog.h index 856279b..358a356 100644 --- a/src/gui/processesStartDialog.h +++ b/src/gui/processesStartDialog.h @@ -19,17 +19,14 @@ public: private: Ui::ProcessesStartDialog *procStartUi; - - /*QGridLayout *layout; - QLabel *textLabel; - QLineEdit *messageEdit; - QPushButton *sendButton; - QPushButton *cancelButton;*/ + QSettings settings; private slots: void send(); void notSend(); void listProcesses(); + void save(); + void itemClicked(int row, int column); }; #endif // PROCESSESSTARTDIALOG_H diff --git a/src/gui/ui/processesStartDialog.ui b/src/gui/ui/processesStartDialog.ui index 0f6c60a..2003c57 100644 --- a/src/gui/ui/processesStartDialog.ui +++ b/src/gui/ui/processesStartDialog.ui @@ -6,71 +6,190 @@ 0 0 - 418 - 120 + 524 + 309 Start Process - + 10 10 - 401 - 101 + 503 + 291 - + - - - Process to start: - - - - - - - - - - 5 - + - + - List of Processes + Either use a command from this list or type in the process in the lower field. - - - Qt::Horizontal + + + Qt::ScrollBarAsNeeded + + + Qt::ScrollBarAlwaysOff + + + QAbstractItemView::DoubleClicked|QAbstractItemView::SelectedClicked + + + true + + + QAbstractItemView::SingleSelection + + + QAbstractItemView::SelectRows + + + Qt::DotLine + + + false + + + false - - - 108 - 20 - + + false - + + true + + + false + + + 200 + + + false + + + true + + + false + + + false + + + true + + + false + + + true + + + false + + + 200 + + + + Command + + + + + Description + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Save + + + + + + + + + + Qt::Horizontal + + + + + - + - Cancel + Process to start: - - - Start + + + + + + 5 - + + + + Qt::Horizontal + + + + 108 + 20 + + + + + + + + Cancel + + + + + + + Start + + + + -- cgit v1.2.3-55-g7522