From dc191269f34c1eb76f2008b54793aaae9f8b3d54 Mon Sep 17 00:00:00 2001 From: Szybet <53944559+Szybet@users.noreply.github.com> Date: Wed, 17 Aug 2022 15:57:33 +0200 Subject: [PATCH] almost working logging and info wifi dialog --- src/homeWidget/mainwindow.cpp | 1 + src/homeWidget/mainwindow.h | 4 +- src/settings/settings.ui | 4 +- src/widgets/dialogs/wifi/network.h | 1 + src/widgets/dialogs/wifi/wifidialog.cpp | 18 +- src/widgets/dialogs/wifi/wifidialog.h | 3 + src/widgets/dialogs/wifi/wifilogger.cpp | 139 ++++++++ src/widgets/dialogs/wifi/wifilogger.h | 45 +++ src/widgets/dialogs/wifi/wifilogger.ui | 400 ++++++++++++++++++++++++ 9 files changed, 610 insertions(+), 5 deletions(-) create mode 100644 src/widgets/dialogs/wifi/wifilogger.cpp create mode 100644 src/widgets/dialogs/wifi/wifilogger.h create mode 100644 src/widgets/dialogs/wifi/wifilogger.ui diff --git a/src/homeWidget/mainwindow.cpp b/src/homeWidget/mainwindow.cpp index d7d4d56..cb24d71 100644 --- a/src/homeWidget/mainwindow.cpp +++ b/src/homeWidget/mainwindow.cpp @@ -790,6 +790,7 @@ void MainWindow::updateWifiState() { void MainWindow::on_wifiBtn_clicked() { wifiDialog* newWIfiDialog = new wifiDialog(); + QObject::connect(newWIfiDialog, &wifiDialog::showToast, this, &MainWindow::showToast); newWIfiDialog->exec(); } diff --git a/src/homeWidget/mainwindow.h b/src/homeWidget/mainwindow.h index fc76401..43110d7 100644 --- a/src/homeWidget/mainwindow.h +++ b/src/homeWidget/mainwindow.h @@ -63,6 +63,8 @@ public: void setBatteryIcon(); public slots: + void showToast(QString messageToDisplay); + void closeIndefiniteToast(); private slots: void on_settingsBtn_clicked(); @@ -80,8 +82,6 @@ private slots: void on_wifiBtn_clicked(); void updateWifiIcon(global::wifi::WifiState mode); void hello(int testNumber); - void showToast(QString messageToDisplay); - void closeIndefiniteToast(); void openUpdateDialogOTA(bool open); void launchOtaUpdater(); void openBookFile(QString book, bool relativePath); diff --git a/src/settings/settings.ui b/src/settings/settings.ui index a63a5ab..a121f64 100644 --- a/src/settings/settings.ui +++ b/src/settings/settings.ui @@ -49,7 +49,7 @@ 0 0 457 - 657 + 667 @@ -71,7 +71,7 @@ 0 - 0 + 1 diff --git a/src/widgets/dialogs/wifi/network.h b/src/widgets/dialogs/wifi/network.h index 171d5bc..9ef91f9 100644 --- a/src/widgets/dialogs/wifi/network.h +++ b/src/widgets/dialogs/wifi/network.h @@ -14,6 +14,7 @@ class network : public QWidget Q_OBJECT public: + QString className = this->metaObject()->className(); explicit network(QWidget *parent = nullptr); ~network(); global::wifi::wifiNetworkData mainData; diff --git a/src/widgets/dialogs/wifi/wifidialog.cpp b/src/widgets/dialogs/wifi/wifidialog.cpp index 2c81f13..a5fdf28 100644 --- a/src/widgets/dialogs/wifi/wifidialog.cpp +++ b/src/widgets/dialogs/wifi/wifidialog.cpp @@ -10,6 +10,7 @@ #include "functions.h" #include "mainwindow.h" #include "network.h" +#include "wifilogger.h" wifiDialog::wifiDialog(QWidget *parent) : QDialog(parent), @@ -265,6 +266,7 @@ void wifiDialog::refreshNetworksList() { network* connectedNetwork = new network; connectedNetwork->mainData = wifiNetwork; connectedNetwork->currentlyConnectedNetwork = currentNetwork; + connectedNetworkDataParent = wifiNetwork; // this doesnt work so a layout is needed // ui->scrollArea->addScrollBarWidget(connectedNetwork, Qt::AlignTop); connectedNetwork->applyVariables(); @@ -303,7 +305,7 @@ void wifiDialog::refreshNetworksList() { connect(this, SIGNAL(killNetworkWidgets()), connectedNetwork, SLOT(close())); ui->scrollBarLayout->addWidget(connectedNetwork, Qt::AlignTop); } - + scannedAtLeastOnce = true; } @@ -332,3 +334,17 @@ void wifiDialog::turnOnWifi() { void wifiDialog::turnOffWifi() { string_writeconfig("/opt/ibxd", "toggle_wifi_off\n"); } + +void wifiDialog::on_logBtn_clicked() +{ + // To avoid half informations + if(scannedAtLeastOnce == false and checkWifiState() == global::wifi::WifiState::Configured) { + log("Scanning at least once is needed"); + emit showToast("Scan at least once"); + } else { + wifilogger* wifiLoggerDialog = new wifilogger; + wifiLoggerDialog->connectedNetworkData = connectedNetworkDataParent; + wifiLoggerDialog->exec(); + } + +} diff --git a/src/widgets/dialogs/wifi/wifidialog.h b/src/widgets/dialogs/wifi/wifidialog.h index 1f30049..1ce10f2 100644 --- a/src/widgets/dialogs/wifi/wifidialog.h +++ b/src/widgets/dialogs/wifi/wifidialog.h @@ -18,10 +18,12 @@ public: QString className = this->metaObject()->className(); explicit wifiDialog(QWidget *parent = nullptr); ~wifiDialog(); + global::wifi::wifiNetworkData connectedNetworkDataParent; private: Ui::wifiDialog *ui; bool wifiButtonEnabled = false; + bool scannedAtLeastOnce = false; public slots: void launchRefresh(); @@ -39,6 +41,7 @@ private slots: void on_Wificheckbox_stateChanged(int arg1); void turnOnWifi(); void turnOffWifi(); + void on_logBtn_clicked(); }; #endif // WIFIDIALOG_H diff --git a/src/widgets/dialogs/wifi/wifilogger.cpp b/src/widgets/dialogs/wifi/wifilogger.cpp new file mode 100644 index 0000000..d6bd22b --- /dev/null +++ b/src/widgets/dialogs/wifi/wifilogger.cpp @@ -0,0 +1,139 @@ +#include + +#include "wifilogger.h" +#include "ui_wifilogger.h" +#include "functions.h" + +wifilogger::wifilogger(QWidget *parent) : + QDialog(parent), + ui(new Ui::wifilogger) +{ + ui->setupUi(this); + + // Stylesheet, style & misc. + QFile stylesheetFile("/mnt/onboard/.adds/inkbox/eink.qss"); + stylesheetFile.open(QFile::ReadOnly); + this->setStyleSheet(stylesheetFile.readAll()); + stylesheetFile.close(); + this->setModal(true); + + + setWifiInfoPage(); + QObject::connect(&updateLogsTimer, &QTimer::timeout, this, &wifilogger::updateLogs); + updateLogsTimer.start(1000); +} + +wifilogger::~wifilogger() +{ + delete ui; +} + +void wifilogger::setWifiInfoPage() { + if(checkWifiState() == global::wifi::WifiState::Configured) { + QTimer::singleShot(0, this, SLOT(getWifiInformations())); + ui->stackedWidget->setCurrentIndex(0); + ui->nameLabel->setText("Network informations"); + } + else { + ui->stackedWidget->setCurrentIndex(1); + ui->nameLabel->setText("No network connected"); + } +} + +void wifilogger::setFancyLoggingPage() { + ui->stackedWidget->setCurrentIndex(2); + ui->nameLabel->setText("Important logs"); +} + +void wifilogger::setAllLogsPage() { + ui->stackedWidget->setCurrentIndex(3); + ui->nameLabel->setText("All logs"); +} + +void wifilogger::on_nextBtn_clicked() +{ + if(currentPage == 2) { + currentPage = 0; + } + else { + currentPage = currentPage + 1; + } + changePage(); +} + +void wifilogger::on_previousBtn_clicked() +{ + if(currentPage == 0) { + currentPage = 2; + } + else { + currentPage = currentPage - 1; + } + changePage(); +} + +void wifilogger::changePage() { + if(currentPage == 0) { + setWifiInfoPage(); + } + else if(currentPage == 1) { + setFancyLoggingPage(); + } + else if(currentPage == 2) { + setAllLogsPage(); + } else { + log("This shouldnt happen.", className); + } +} + +void wifilogger::getWifiInformations() { + QFile wifiInformationsPath = QFile("/external_root/run/wifi_informations"); + wifiInformationsPath.remove(); + + string_writeconfig("/opt/ibxd", "get_wifi_informations\n"); + while(wifiInformationsPath.exists() == false) { + sleep(1); + } + + QString wifiInfo = readFile(wifiInformationsPath.fileName()); + QStringList wifiInfoList = wifiInfo.split("\n"); + int counter = 0; + for(QString infomation: wifiInfoList) { + if(counter == 0) { + ui->netNameLabel->setText(infomation); + } + if(counter == 1) { + ui->ipLabel->setText(infomation); + } + if(counter == 2) { + ui->maskLabel->setText(infomation); + } + if(counter == 3) { + ui->gatewayLabel->setText(infomation); + } + counter = counter + 1; + } + + ui->encryptionLabel->setText(QVariant(connectedNetworkData.encryption).toString()); + + ui->signalLabel->setText(QString::number(connectedNetworkData.signal) + "%"); + + ui->macLabel->setText(connectedNetworkData.mac); +} + + +void wifilogger::on_returnBtn_clicked() +{ + updateLogsTimer.stop(); + this->deleteLater(); +} + +void wifilogger::updateLogs() { + if(fancyLogs.exists() == true and allLogs.exists() == true) { + QString fancyLogsText = readFile(fancyLogs.fileName()); + QString allLogsText = readFile(allLogs.fileName()); + + ui->fancyLogsText->setText(fancyLogsText); + ui->allLogsText->setText(allLogsText); + } +} diff --git a/src/widgets/dialogs/wifi/wifilogger.h b/src/widgets/dialogs/wifi/wifilogger.h new file mode 100644 index 0000000..4776844 --- /dev/null +++ b/src/widgets/dialogs/wifi/wifilogger.h @@ -0,0 +1,45 @@ +#ifndef WIFILOGGER_H +#define WIFILOGGER_H + +#include +#include "functions.h" + +namespace Ui { +class wifilogger; +} + +class wifilogger : public QDialog +{ + Q_OBJECT + +public: + QString className = this->metaObject()->className(); + explicit wifilogger(QWidget *parent = nullptr); + ~wifilogger(); + global::wifi::wifiNetworkData connectedNetworkData; + +private: + Ui::wifilogger *ui; + /* + * 0 is wifi info / no wifi info page + * 1 is fancy logs page + * 2 is all logs + */ + int currentPage = 0; + QTimer updateLogsTimer; + QFile fancyLogs = QFile("/external_root/run/wifi_stats"); + QFile allLogs = QFile("/external_root/run/wifi_logs"); + +private slots: + void setWifiInfoPage(); + void setFancyLoggingPage(); + void setAllLogsPage(); + void on_nextBtn_clicked(); + void on_previousBtn_clicked(); + void changePage(); + void getWifiInformations(); + void on_returnBtn_clicked(); + void updateLogs(); +}; + +#endif // WIFILOGGER_H diff --git a/src/widgets/dialogs/wifi/wifilogger.ui b/src/widgets/dialogs/wifi/wifilogger.ui new file mode 100644 index 0000000..ff5344b --- /dev/null +++ b/src/widgets/dialogs/wifi/wifilogger.ui @@ -0,0 +1,400 @@ + + + wifilogger + + + + 0 + 0 + 755 + 613 + + + + Dialog + + + + + + 0 + + + 0 + + + + + + + + + + 75 + true + + + + Network name: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 75 + false + true + + + + IP address: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 75 + true + + + + Mask: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 75 + true + + + + Gateway: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 75 + true + + + + Password protected: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 75 + true + + + + Signal strength: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + 75 + true + + + + MAC address: + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + 75 + true + + + + 0 + + + No wifi connected + + + Qt::AlignCenter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + :/resources/chevron-left.png:/resources/chevron-left.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + TextLabel + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + :/resources/chevron-right.png:/resources/chevron-right.png + + + + + + + + + Return + + + + + + + + + +