| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -8,6 +8,7 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include <QtConcurrent> | 
					 | 
					 | 
					 | 
					#include <QtConcurrent> | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#include "networking.hpp" | 
					 | 
					 | 
					 | 
					#include "networking.hpp" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					#include "util.h" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void clearLayout(QLayout* layout) { | 
					 | 
					 | 
					 | 
					void clearLayout(QLayout* layout) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  while (QLayoutItem* item = layout->takeAt(0)) { | 
					 | 
					 | 
					 | 
					  while (QLayoutItem* item = layout->takeAt(0)) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -43,29 +44,38 @@ std::string exec(const char* cmd) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// Networking functions
 | 
					 | 
					 | 
					 | 
					// Networking functions
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					Networking::Networking(QWidget* parent, bool show_advanced) : QWidget(parent){ | 
					 | 
					 | 
					 | 
					Networking::Networking(QWidget* parent, bool show_advanced) : QWidget(parent), show_advanced(show_advanced){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  try { | 
					 | 
					 | 
					 | 
					  s = new QStackedLayout; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    wifi = new WifiManager(this); | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } catch (std::exception &e) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  QLabel* warning = new QLabel("Network manager is inactive!"); | 
					 | 
					 | 
					 | 
					  QLabel* warning = new QLabel("Network manager is inactive!"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  warning->setStyleSheet(R"(font-size: 65px;)"); | 
					 | 
					 | 
					 | 
					  warning->setStyleSheet(R"(font-size: 65px;)"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    QVBoxLayout* warning_layout = new QVBoxLayout; | 
					 | 
					 | 
					 | 
					  s->addWidget(warning); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    warning_layout->addWidget(warning, 0, Qt::AlignCenter); | 
					 | 
					 | 
					 | 
					  setLayout(s); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    setLayout(warning_layout); | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  QTimer* timer = new QTimer(this); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  QObject::connect(timer, SIGNAL(timeout()), this, SLOT(refresh())); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  timer->start(5000); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  attemptInitialization(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void Networking::attemptInitialization(){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  // Checks if network manager is active
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  try { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    wifi = new WifiManager(this); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  } catch (std::exception &e) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return; | 
					 | 
					 | 
					 | 
					    return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  } | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  connect(wifi, SIGNAL(wrongPassword(QString)), this, SLOT(wrongPassword(QString))); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  s = new QStackedLayout; | 
					 | 
					 | 
					 | 
					  connect(wifi, SIGNAL(wrongPassword(QString)), this, SLOT(wrongPassword(QString))); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  QVBoxLayout* vlayout = new QVBoxLayout; | 
					 | 
					 | 
					 | 
					  QVBoxLayout* vlayout = new QVBoxLayout; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if (show_advanced) { | 
					 | 
					 | 
					 | 
					  if (show_advanced) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    QPushButton* advancedSettings = new QPushButton("Advanced"); | 
					 | 
					 | 
					 | 
					    QPushButton* advancedSettings = new QPushButton("Advanced"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    advancedSettings->setStyleSheet(R"(margin-right: 30px)"); | 
					 | 
					 | 
					 | 
					    advancedSettings->setStyleSheet(R"(margin-right: 30px)"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    advancedSettings->setFixedSize(300, 100); | 
					 | 
					 | 
					 | 
					    advancedSettings->setFixedSize(350, 100); | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    connect(advancedSettings, &QPushButton::released, [=](){s->setCurrentIndex(1);}); | 
					 | 
					 | 
					 | 
					    connect(advancedSettings, &QPushButton::released, [=](){s->setCurrentWidget(an);}); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    vlayout->addSpacing(10); | 
					 | 
					 | 
					 | 
					    vlayout->addSpacing(10); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    vlayout->addWidget(advancedSettings, 0, Qt::AlignRight); | 
					 | 
					 | 
					 | 
					    vlayout->addWidget(advancedSettings, 0, Qt::AlignRight); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    vlayout->addSpacing(10); | 
					 | 
					 | 
					 | 
					    vlayout->addSpacing(10); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -75,24 +85,20 @@ Networking::Networking(QWidget* parent, bool show_advanced) : QWidget(parent){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  connect(wifiWidget, SIGNAL(connectToNetwork(Network)), this, SLOT(connectToNetwork(Network))); | 
					 | 
					 | 
					 | 
					  connect(wifiWidget, SIGNAL(connectToNetwork(Network)), this, SLOT(connectToNetwork(Network))); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  vlayout->addWidget(wifiWidget, 1); | 
					 | 
					 | 
					 | 
					  vlayout->addWidget(wifiWidget, 1); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  s->addWidget(layoutToWidget(vlayout, this)); | 
					 | 
					 | 
					 | 
					  wifiScreen = layoutToWidget(vlayout, this); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  s->addWidget(wifiScreen); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  an = new AdvancedNetworking(this, wifi); | 
					 | 
					 | 
					 | 
					  an = new AdvancedNetworking(this, wifi); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  connect(an, &AdvancedNetworking::backPress, [=](){s->setCurrentIndex(0);}); | 
					 | 
					 | 
					 | 
					  connect(an, &AdvancedNetworking::backPress, [=](){s->setCurrentWidget(wifiScreen);}); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  s->addWidget(an); | 
					 | 
					 | 
					 | 
					  s->addWidget(an); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  // Update network status
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  QTimer* timer = new QTimer(this); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  QObject::connect(timer, SIGNAL(timeout()), this, SLOT(refresh())); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  timer->start(5000); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  setStyleSheet(R"( | 
					 | 
					 | 
					 | 
					  setStyleSheet(R"( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    QPushButton { | 
					 | 
					 | 
					 | 
					    QPushButton { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      font-size: 50px; | 
					 | 
					 | 
					 | 
					      font-size: 50px; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      margin: 0px; | 
					 | 
					 | 
					 | 
					      margin: 0px; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      padding: 15px; | 
					 | 
					 | 
					 | 
					      padding: 15px; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      border-width: 0; | 
					 | 
					 | 
					 | 
					      border-width: 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      border-radius: 7px; | 
					 | 
					 | 
					 | 
					      border-radius: 30px; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      color: #dddddd; | 
					 | 
					 | 
					 | 
					      color: #dddddd; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      background-color: #444444; | 
					 | 
					 | 
					 | 
					      background-color: #444444; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -101,13 +107,20 @@ Networking::Networking(QWidget* parent, bool show_advanced) : QWidget(parent){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      background-color: #222222; | 
					 | 
					 | 
					 | 
					      background-color: #222222; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  )"); | 
					 | 
					 | 
					 | 
					  )"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  setLayout(s); | 
					 | 
					 | 
					 | 
					  s->setCurrentWidget(wifiScreen); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  ui_setup_complete = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void Networking::refresh(){ | 
					 | 
					 | 
					 | 
					void Networking::refresh(){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  if(!this->isVisible()){ | 
					 | 
					 | 
					 | 
					  if (!this->isVisible()) { | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  if (!ui_setup_complete) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    attemptInitialization(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if (!ui_setup_complete) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      return; | 
					 | 
					 | 
					 | 
					      return; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  wifiWidget->refresh(); | 
					 | 
					 | 
					 | 
					  wifiWidget->refresh(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  an->refresh(); | 
					 | 
					 | 
					 | 
					  an->refresh(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -233,7 +246,7 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  s->addWidget(settingsWidget); | 
					 | 
					 | 
					 | 
					  s->addWidget(settingsWidget); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  ssh = new SSH; | 
					 | 
					 | 
					 | 
					  ssh = new SSH; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  connect(ssh, &SSH::closeSSHSettings, [=](){s->setCurrentIndex(0);}); | 
					 | 
					 | 
					 | 
					  connect(ssh, &SSH::closeSSHSettings, [=](){s->setCurrentWidget(settingsWidget);}); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  s->addWidget(ssh); | 
					 | 
					 | 
					 | 
					  s->addWidget(ssh); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  setLayout(s); | 
					 | 
					 | 
					 | 
					  setLayout(s); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -319,14 +332,16 @@ void WifiUI::refresh() { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      // SSID
 | 
					 | 
					 | 
					 | 
					      // SSID
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      hlayout->addSpacing(50); | 
					 | 
					 | 
					 | 
					      hlayout->addSpacing(50); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      QString ssid = QString::fromUtf8(network.ssid); | 
					 | 
					 | 
					 | 
					      QString ssid = QString::fromUtf8(network.ssid); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if(ssid.length() > 30){ | 
					 | 
					 | 
					 | 
					      if(ssid.length() > 20){ | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ssid = ssid.left(30)+"…"; | 
					 | 
					 | 
					 | 
					        ssid = ssid.left(20 - 3) + "…"; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      } | 
					 | 
					 | 
					 | 
					      } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      QLabel *ssid_label = new QLabel(ssid); | 
					 | 
					 | 
					 | 
					      ssid += QString(20 - ssid.length(), ' '); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      QLabel *ssid_label = new QLabel("<pre>" + ssid + "</pre>"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      ssid_label->setStyleSheet(R"( | 
					 | 
					 | 
					 | 
					      ssid_label->setStyleSheet(R"( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        font-size: 55px; | 
					 | 
					 | 
					 | 
					        font-size: 55px; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      )"); | 
					 | 
					 | 
					 | 
					      )"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      hlayout->addWidget(ssid_label); | 
					 | 
					 | 
					 | 
					      hlayout->addWidget(ssid_label, 0, Qt::AlignLeft); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      // TODO: don't use images for this
 | 
					 | 
					 | 
					 | 
					      // TODO: don't use images for this
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      // strength indicator
 | 
					 | 
					 | 
					 | 
					      // strength indicator
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |