summaryrefslogtreecommitdiff
path: root/ZeroTierUI/mainwindow.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2013-11-21 15:11:22 -0500
committerAdam Ierymenko <adam.ierymenko@gmail.com>2013-11-21 15:11:22 -0500
commit4296db235894f8d403fc656f76e2a3578ca2d597 (patch)
tree68701e7134ff051c5d5dbf7ca4df9b149186a275 /ZeroTierUI/mainwindow.cpp
parent31d718c4a49ddebea2fdb6c64c438295f1284a6f (diff)
downloadinfinitytier-4296db235894f8d403fc656f76e2a3578ca2d597.tar.gz
infinitytier-4296db235894f8d403fc656f76e2a3578ca2d597.zip
Add configuration age to listnetworks results and GUI.
Diffstat (limited to 'ZeroTierUI/mainwindow.cpp')
-rw-r--r--ZeroTierUI/mainwindow.cpp50
1 files changed, 29 insertions, 21 deletions
diff --git a/ZeroTierUI/mainwindow.cpp b/ZeroTierUI/mainwindow.cpp
index e427a6a1..6e972c73 100644
--- a/ZeroTierUI/mainwindow.cpp
+++ b/ZeroTierUI/mainwindow.cpp
@@ -52,9 +52,10 @@ MainWindow::MainWindow(QWidget *parent) :
ui(new Ui::MainWindow)
{
ui->setupUi(this);
- this->startTimer(1000);
+ this->startTimer(1000); // poll service every second
this->setEnabled(false); // gets enabled when updates are received
mainWindow = this;
+ this->cyclesSinceResponseFromService = 0;
}
MainWindow::~MainWindow()
@@ -101,6 +102,11 @@ void MainWindow::timerEvent(QTimerEvent *event)
zeroTierClient = new ZeroTier::Node::LocalClient(authToken.c_str(),0,&handleZTMessage,this);
}
+ // TODO: do something more user-friendly here... or maybe try to restart
+ // the service?
+ if (++this->cyclesSinceResponseFromService == 3)
+ QMessageBox::critical(this,"No Response from Service","The ZeroTier One service does not appear to be running.",QMessageBox::Ok,QMessageBox::NoButton);
+
zeroTierClient->send("info");
zeroTierClient->send("listnetworks");
zeroTierClient->send("listpeers");
@@ -119,9 +125,7 @@ void MainWindow::customEvent(QEvent *event)
if (hdr[0] != "200")
return;
- // Enable main window on valid communication with service
- if (!this->isEnabled())
- this->setEnabled(true);
+ this->cyclesSinceResponseFromService = 0;
if (hdr[1] == "info") {
if (hdr.size() >= 3)
@@ -134,8 +138,8 @@ void MainWindow::customEvent(QEvent *event)
std::map< std::string,std::vector<std::string> > byNwid;
for(unsigned long i=1;i<m->ztMessage.size();++i) {
std::vector<std::string> l(ZeroTier::Node::LocalClient::splitLine(m->ztMessage[i]));
- // 200 listnetworks <nwid> <name> <status> <type> <dev> <ips>
- if ((l.size() == 8)&&(l[2].length() == 16))
+ // 200 listnetworks <nwid> <name> <status> <config age> <type> <dev> <ips>
+ if ((l.size() == 9)&&(l[2].length() == 16))
byNwid[l[2]] = l;
}
@@ -149,10 +153,10 @@ void MainWindow::customEvent(QEvent *event)
if (byNwid.count(i->first)) {
std::vector<std::string> &l = byNwid[i->first];
i->second.second->setNetworkName(l[3]);
- i->second.second->setStatus(l[4]);
- i->second.second->setNetworkType(l[5]);
- i->second.second->setNetworkDeviceName(l[6]);
- i->second.second->setIps(l[7]);
+ i->second.second->setStatus(l[4],l[5]);
+ i->second.second->setNetworkType(l[6]);
+ i->second.second->setNetworkDeviceName(l[7]);
+ i->second.second->setIps(l[8]);
} else {
delete ui->networkListWidget->takeItem(i->second.first);
}
@@ -163,10 +167,10 @@ void MainWindow::customEvent(QEvent *event)
std::vector<std::string> &l = i->second;
Network *nw = new Network((QWidget *)0,i->first);
nw->setNetworkName(l[3]);
- nw->setStatus(l[4]);
- nw->setNetworkType(l[5]);
- nw->setNetworkDeviceName(l[6]);
- nw->setIps(l[7]);
+ nw->setStatus(l[4],l[5]);
+ nw->setNetworkType(l[6]);
+ nw->setNetworkDeviceName(l[7]);
+ nw->setIps(l[8]);
QListWidgetItem *item = new QListWidgetItem();
item->setSizeHint(nw->sizeHint());
ui->networkListWidget->addItem(item);
@@ -186,13 +190,23 @@ void MainWindow::customEvent(QEvent *event)
QString st(this->myAddress);
st += " (";
st += this->myStatus;
+ st += ", v";
+ st += this->myVersion;
st += ", ";
st += QString::number(this->numPeers);
st += " peers)";
- while (st.size() < 38)
+ while (st.size() < 45)
st += QChar::Space;
ui->statusAndAddressButton->setText(st);
}
+
+ if (this->myStatus == "ONLINE") {
+ if (!this->isEnabled())
+ this->setEnabled(true);
+ } else {
+ if (this->isEnabled())
+ this->setEnabled(false);
+ }
}
void MainWindow::on_joinNetworkButton_clicked()
@@ -217,12 +231,6 @@ void MainWindow::on_actionAbout_triggered()
about->show();
}
-void MainWindow::on_actionJoin_Network_triggered()
-{
- // Does the same thing as clicking join button on main UI
- on_joinNetworkButton_clicked();
-}
-
void MainWindow::on_networkIdLineEdit_textChanged(const QString &text)
{
QString newText;