From bf02c6661a637428968e7b06ae7dc35c18fd44a4 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 19 Nov 2013 15:05:14 -0500 Subject: UI work... --- ZeroTierUI/mainwindow.cpp | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) (limited to 'ZeroTierUI/mainwindow.cpp') diff --git a/ZeroTierUI/mainwindow.cpp b/ZeroTierUI/mainwindow.cpp index d96ab207..5131b95f 100644 --- a/ZeroTierUI/mainwindow.cpp +++ b/ZeroTierUI/mainwindow.cpp @@ -5,9 +5,15 @@ #include #include #include +#include #include #include +#include +#include +#include +#include +#include static std::map< unsigned long,std::vector > ztReplies; static QMutex ztReplies_m; @@ -17,7 +23,7 @@ static void handleZTMessage(void *arg,unsigned long id,const char *line) if (*line) { ztReplies[id].push_back(std::string(line)); ztReplies_m.unlock(); - } else { + } else { // empty lines conclude transmissions std::vector resp(ztReplies[id]); ztReplies.erase(id); ztReplies_m.unlock(); @@ -25,13 +31,15 @@ static void handleZTMessage(void *arg,unsigned long id,const char *line) } // Globally visible -ZeroTier::Node::LocalClient *zeroTierClient = (ZeroTier::Node::LocalClient *)0; +ZeroTier::Node::LocalClient *volatile zeroTierClient = (ZeroTier::Node::LocalClient *)0; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); + this->startTimer(500); + this->setEnabled(false); // first timer actually enables controls } MainWindow::~MainWindow() @@ -39,6 +47,34 @@ MainWindow::~MainWindow() delete ui; } +void MainWindow::timerEvent(QTimerEvent *event) +{ + QMainWindow::timerEvent(event); + + if (!this->isEnabled()) + this->setEnabled(true); + + if (!zeroTierClient) { + std::string dotAuthFile((QDir::homePath() + QDir::separator() + ".zeroTierOneAuthToken").toStdString()); + std::string authToken; + if (!ZeroTier::Utils::readFile(dotAuthFile.c_str(),authToken)) { +#ifdef __APPLE__ + QString authHelperPath(QCoreApplication::applicationDirPath() + "/../Applications/ZeroTier One (Authenticate).app"); + if (!QFile::exists(authHelperPath)) { + // Allow this to also work from the source tree if it's run from there. + // This is for debugging purposes but shouldn't harm the live release + // in any way. + //authHelperPath = QCoreApplication::applicationFilePath() + "/../ZeroTierUI/helpers/mac/ZeroTier One (Authenticate).app"; + if (!QFile::exists(authHelperPath)) { + QMessageBox::critical(this,"Unable to Locate Helper","Unable to locate authorization helper, cannot obtain authentication token.",QMessageBox::Ok,QMessageBox::NoButton); + QApplication::exit(1); + } + } +#endif + } + } +} + void MainWindow::on_joinNetworkButton_clicked() { } -- cgit v1.2.3