diff --git a/ZeroTierUI/mainwindow.cpp b/ZeroTierUI/mainwindow.cpp index 53cfe2a28..913ced1c8 100644 --- a/ZeroTierUI/mainwindow.cpp +++ b/ZeroTierUI/mainwindow.cpp @@ -85,31 +85,17 @@ MainWindow::MainWindow(QWidget *parent) : pollServiceTimerId(0) { ui->setupUi(this); + if (ui->networkListWidget->verticalScrollBar()) + ui->networkListWidget->verticalScrollBar()->setSingleStep(8); + QWidgetList widgets = this->findChildren(); + foreach(QWidget *widget, widgets) + widget->setAttribute(Qt::WA_MacShowFocusRect,false); -#ifdef __APPLE__ - if (!QFile::exists("/Library/Application Support/ZeroTier/One/zerotier-one")) { - // If the service is not installed, download the installer and run it - // for the first time. - this->setEnabled(false); - InstallDialog *id = new InstallDialog(this); - id->setModal(true); - id->show(); - this->setHidden(true); - return; - } -#endif + mainWindow = this; this->pollServiceTimerId = this->startTimer(1000); this->setEnabled(false); // gets enabled when updates are received - mainWindow = this; this->cyclesSinceResponseFromService = 0; - - if (ui->networkListWidget->verticalScrollBar()) - ui->networkListWidget->verticalScrollBar()->setSingleStep(8); - - QWidgetList widgets = this->findChildren(); - foreach(QWidget* widget, widgets) - widget->setAttribute(Qt::WA_MacShowFocusRect,false); } MainWindow::~MainWindow() @@ -132,8 +118,6 @@ void MainWindow::timerEvent(QTimerEvent *event) if (!ZeroTier::Utils::readFile(ZeroTier::Node::LocalClient::authTokenDefaultUserPath().c_str(),authToken)) { #ifdef __APPLE__ if (QFile::exists("/Library/Application Support/ZeroTier/One/zerotier-one")) { - // Run the little AppleScript hack that asks for admin credentials and - // then installs the auth token file in the current user's home. QMessageBox::information(this,"Authorization Required","You must authenticate to authorize this user to administrate ZeroTier One on this computer.\n\n(This only needs to be done once.)",QMessageBox::Ok,QMessageBox::NoButton); QString authHelperPath(QCoreApplication::applicationDirPath() + "/../Resources/helpers/mac/ZeroTier One (Authenticate).app/Contents/MacOS/applet"); if (!QFile::exists(authHelperPath)) { @@ -143,13 +127,7 @@ void MainWindow::timerEvent(QTimerEvent *event) } QProcess::execute(authHelperPath,QStringList()); } else { - // If the service is not installed, download the installer and run it - // for the first time. - this->setEnabled(false); - InstallDialog *id = new InstallDialog(this); - id->setModal(true); - id->show(); - this->setHidden(true); + doInstallDialog(); return; } #endif @@ -279,6 +257,14 @@ void MainWindow::customEvent(QEvent *event) } } +void MainWindow::showEvent(QShowEvent *event) +{ +#ifdef __APPLE__ + if (!QFile::exists("/Library/Application Support/ZeroTier/One/zerotier-one")) + doInstallDialog(); +#endif +} + void MainWindow::on_joinNetworkButton_clicked() { QString toJoin(ui->networkIdLineEdit->text()); @@ -340,3 +326,15 @@ void MainWindow::on_addressButton_clicked() { QApplication::clipboard()->setText(this->myAddress); } + +void MainWindow::doInstallDialog() +{ +#ifdef __APPLE__ + this->setEnabled(false); + this->setHidden(true); + + InstallDialog *id = new InstallDialog(this); + id->setModal(true); + id->show(); +#endif +} diff --git a/ZeroTierUI/mainwindow.h b/ZeroTierUI/mainwindow.h index b66e4f01f..7450b1a38 100644 --- a/ZeroTierUI/mainwindow.h +++ b/ZeroTierUI/mainwindow.h @@ -31,6 +31,8 @@ #include #include #include +#include +#include #include #include @@ -59,10 +61,7 @@ public: public: ZTMessageEvent(const std::vector &m) : QEvent(QEvent::User), - ztMessage(m) - { - } - + ztMessage(m) {} std::vector ztMessage; }; @@ -72,6 +71,7 @@ public: protected: virtual void timerEvent(QTimerEvent *event); virtual void customEvent(QEvent *event); + virtual void showEvent(QShowEvent *event); private slots: void on_joinNetworkButton_clicked(); @@ -80,6 +80,8 @@ private slots: void on_addressButton_clicked(); private: + void doInstallDialog(); + Ui::MainWindow *ui; QString myAddress;