1 #include <QtGui/QListWidgetItem>
2 #include <QtGui/QMessageBox>
4 #include "lgconfig.h" /* VLPEntry */
5 #include "NodeListDialog.h"
6 #include "AddNodeDialog.h"
12 NodeListDialog::NodeListDialog(QList<VLPEntry*> *nodes, QWidget * parent)
19 connect(saveButton, SIGNAL(clicked()), this, SLOT(accept()));
20 connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
23 NodeListDialog::~NodeListDialog()
27 bool NodeListDialog::check_id(int id)
29 QListIterator<VLPEntry *> nodesIterator(*_nodes);
30 VLPEntry *node = NULL;
32 while (nodesIterator.hasNext()) {
33 node = nodesIterator.next();
40 bool NodeListDialog::check_addr(QString addr)
42 QListIterator<VLPEntry *> nodesIterator(*_nodes);
43 VLPEntry *node = NULL;
45 while (nodesIterator.hasNext()) {
46 node = nodesIterator.next();
47 if (node->addr == addr)
53 void NodeListDialog::on_addButton_clicked()
55 dialog::AddNodeDialog dialog(this);
58 int nodeId = dialog.getNodeNumber();
59 QString ipAddress = dialog.getIPAddress();
60 if (check_id(nodeId)) {
61 if (check_addr(ipAddress)) {
63 VLPEntry *vlpEntry = new VLPEntry;
64 vlpEntry->ID = nodeId;
65 if (dialog.getConnectionType() == "Explicit") {
68 strcpy(vlpEntry->addr, ipAddress.toStdString().c_str());
69 strcpy(vlpEntry->progdir, dialog.getProgramsDirectory().toStdString().c_str());
70 strcpy(vlpEntry->homedir, dialog.getVLPDirectory().toStdString().c_str());
73 info.sprintf("Node: %d\tAddr: %s\tHome dir: %s",
79 strcpy(vlpEntry->item, info.toStdString().c_str());
81 QListWidgetItem * listWidgetItem = new QListWidgetItem;
82 listWidgetItem->setText(info);
83 nodeList->addItem(listWidgetItem);
84 _nodes->append(vlpEntry);
87 QMessageBox::warning(this,
89 "Only one VLP on a single computer!",
95 QMessageBox::warning(this,
104 void NodeListDialog::removeNodes(QList<QListWidgetItem *> selectedNodes)
106 QListIterator<VLPEntry *> nodesIterator(*_nodes);
108 fprintf(stderr, " > Removing nodes\n");
109 for (auto selectedItem : selectedNodes) {
110 fprintf(stderr, " > Selected item\n");
111 VLPEntry *node = NULL;
112 QString selectedNodeInfo = selectedItem->text();
114 while (nodesIterator.hasNext()) {
115 node = nodesIterator.next();
116 if (selectedNodeInfo == node->item) {
117 fprintf(stderr, " - found\n");
122 fprintf(stderr, " - removed\n");
123 int row = nodeList->row(selectedItem);
124 delete nodeList->takeItem(row);
125 _nodes->removeOne(node);
130 void NodeListDialog::on_deleteButton_clicked()
132 if (nodeList->selectedItems().size() > 0) {
133 if (QMessageBox::question(this,
136 QMessageBox::Ok | QMessageBox::Cancel
137 ) == QMessageBox::Ok) {
138 removeNodes(nodeList->selectedItems());
143 void NodeListDialog::on_saveButton_clicked()
148 void NodeListDialog::on_cancelButton_clicked()