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 QList<VLPEntry*> NodeListDialog::getNodes()
58 void NodeListDialog::on_addButton_clicked()
60 dialog::AddNodeDialog dialog(this);
63 int nodeId = dialog.getNodeNumber();
64 QString ipAddress = dialog.getIPAddress();
65 if (check_id(nodeId)) {
66 if (check_addr(ipAddress)) {
68 VLPEntry *vlpEntry = new VLPEntry;
69 vlpEntry->ID = nodeId;
70 if (dialog.getConnectionType() == "Explicit") {
73 strcpy(vlpEntry->addr, ipAddress.toStdString().c_str());
74 strcpy(vlpEntry->progdir, dialog.getProgramsDirectory().toStdString().c_str());
75 strcpy(vlpEntry->homedir, dialog.getVLPDirectory().toStdString().c_str());
78 info.sprintf("Node: %d\tAddr: %s\tHome dir: %s",
84 strcpy(vlpEntry->item, info.toStdString().c_str());
86 QListWidgetItem * listWidgetItem = new QListWidgetItem;
87 listWidgetItem->setText(info);
88 nodeList->addItem(listWidgetItem);
89 _nodes.append(vlpEntry);
92 QMessageBox::warning(this,
94 "Only one VLP on a single computer!",
100 QMessageBox::warning(this,
102 "ID must be unique!",
109 void NodeListDialog::removeNodes(QList<QListWidgetItem *> selectedNodes)
111 QListIterator<VLPEntry *> nodesIterator(_nodes);
113 fprintf(stderr, " > Removing nodes\n");
114 for (auto selectedItem : selectedNodes) {
115 fprintf(stderr, " > Selected item\n");
116 VLPEntry *node = NULL;
117 QString selectedNodeInfo = selectedItem->text();
119 while (nodesIterator.hasNext()) {
120 node = nodesIterator.next();
121 if (selectedNodeInfo == node->item) {
122 fprintf(stderr, " - found\n");
127 fprintf(stderr, " - removed\n");
128 int row = nodeList->row(selectedItem);
129 delete nodeList->takeItem(row);
130 _nodes.removeOne(node);
135 void NodeListDialog::on_deleteButton_clicked()
137 if (nodeList->selectedItems().size() > 0) {
138 if (QMessageBox::question(this,
141 QMessageBox::Ok | QMessageBox::Cancel
142 ) == QMessageBox::Ok) {
143 removeNodes(nodeList->selectedItems());
148 void NodeListDialog::on_saveButton_clicked()
153 void NodeListDialog::on_cancelButton_clicked()