summaryrefslogtreecommitdiff
path: root/ZeroTierUI/networkwidget.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-12 15:47:00 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-12 15:47:00 -0800
commit9ffda4f955283c50e559c23541567cca5fbf1607 (patch)
tree12a9a5ac38eaaa2a676c1e6f3d3fbc6495ec4f0f /ZeroTierUI/networkwidget.cpp
parent239c9e46ea7e0279f95197cc2dc62bb1dd69aa8f (diff)
downloadinfinitytier-9ffda4f955283c50e559c23541567cca5fbf1607.tar.gz
infinitytier-9ffda4f955283c50e559c23541567cca5fbf1607.zip
Update Qt build to enable building against local static libraries, rename Network to NetworkWidget to avoid filesystem or object naming collision with Network.o in node/.
Diffstat (limited to 'ZeroTierUI/networkwidget.cpp')
-rw-r--r--ZeroTierUI/networkwidget.cpp106
1 files changed, 106 insertions, 0 deletions
diff --git a/ZeroTierUI/networkwidget.cpp b/ZeroTierUI/networkwidget.cpp
new file mode 100644
index 00000000..3b461d80
--- /dev/null
+++ b/ZeroTierUI/networkwidget.cpp
@@ -0,0 +1,106 @@
+#include "networkwidget.h"
+#include "mainwindow.h"
+#include "ui_networkwidget.h"
+
+#include <QClipboard>
+#include <QString>
+#include <QStringList>
+#include <QCoreApplication>
+#include <QProcess>
+#include <QList>
+#include <QMessageBox>
+
+NetworkWidget::NetworkWidget(QWidget *parent,const std::string &nwid) :
+ QWidget(parent),
+ ui(new Ui::NetworkWidget),
+ networkIdStr(nwid)
+{
+ ui->setupUi(this);
+ ui->networkIdPushButton->setText(QString(nwid.c_str()));
+ QFontMetrics fm(ui->ipListWidget->font());
+ int lineHeight = ui->ipListWidget->spacing() + fm.height();
+ ui->ipListWidget->setMinimumHeight(lineHeight * 3);
+ ui->ipListWidget->setMaximumHeight(lineHeight * 3);
+}
+
+NetworkWidget::~NetworkWidget()
+{
+ delete ui;
+}
+
+void NetworkWidget::setStatus(const std::string &status,const std::string &age)
+{
+ ui->statusLabel->setText(QString(status.c_str()));
+ if (status == "OK")
+ ui->ageLabel->setText(QString("(configuration is ") + age.c_str() + " seconds old)");
+ else ui->ageLabel->setText(QString());
+}
+
+void NetworkWidget::setNetworkName(const std::string &name)
+{
+ ui->nameLabel->setText(QString(name.c_str()));
+}
+
+void NetworkWidget::setNetworkType(const std::string &type)
+{
+ ui->networkTypeLabel->setText(QString(type.c_str()));
+ if (type == "?")
+ ui->networkTypeLabel->setToolTip("Waiting for configuration...");
+ else if (type == "public")
+ ui->networkTypeLabel->setToolTip("This network can be joined by anyone.");
+ else if (type == "private")
+ ui->networkTypeLabel->setToolTip("This network is private, only authorized peers can join.");
+ else ui->networkTypeLabel->setToolTip(QString());
+}
+
+void NetworkWidget::setNetworkDeviceName(const std::string &dev)
+{
+ ui->deviceLabel->setText(QString(dev.c_str()));
+}
+
+void NetworkWidget::setIps(const std::string &commaSeparatedList)
+{
+ QStringList ips(QString(commaSeparatedList.c_str()).split(QChar(','),QString::SkipEmptyParts));
+ if (commaSeparatedList == "-")
+ ips.clear();
+
+ QStringList tmp;
+ ips.sort();
+ for(QStringList::iterator i(ips.begin());i!=ips.end();++i) {
+ QString ipOnly(*i);
+ int slashIdx = ipOnly.indexOf('/');
+ if (slashIdx > 0)
+ ipOnly.truncate(slashIdx);
+ tmp.append(ipOnly);
+ }
+ ips = tmp;
+
+ for(QStringList::iterator i(ips.begin());i!=ips.end();++i) {
+ if (ui->ipListWidget->findItems(*i,Qt::MatchCaseSensitive).size() == 0)
+ ui->ipListWidget->addItem(*i);
+ }
+
+ for(int i=0;i<ui->ipListWidget->count();++i) {
+ QListWidgetItem *item = ui->ipListWidget->item(i);
+ if (!ips.contains(item->text()))
+ ui->ipListWidget->removeItemWidget(item);
+ }
+}
+
+const std::string &NetworkWidget::networkId()
+{
+ return networkIdStr;
+}
+
+void NetworkWidget::on_leaveNetworkButton_clicked()
+{
+ if (QMessageBox::question(this,"Leave Network?",QString("Are you sure you want to leave network '") + networkIdStr.c_str() + "'?",QMessageBox::No,QMessageBox::Yes) == QMessageBox::Yes) {
+ zeroTierClient->send((QString("leave ") + networkIdStr.c_str()).toStdString());
+ this->setEnabled(false);
+ }
+}
+
+void NetworkWidget::on_networkIdPushButton_clicked()
+{
+ QApplication::clipboard()->setText(ui->networkIdPushButton->text());
+}