2021-07-13 22:24:30 -07:00
|
|
|
#include <QTimer>
|
|
|
|
#include <QStringListModel>
|
|
|
|
#include <QScreen>
|
|
|
|
#include <QDesktopWidget>
|
2021-07-14 15:23:54 -07:00
|
|
|
#include <QMessageBox>
|
2021-07-13 22:24:30 -07:00
|
|
|
|
2021-07-13 09:27:38 -07:00
|
|
|
#include "wifidialog.h"
|
|
|
|
#include "ui_wifidialog.h"
|
2021-07-13 22:24:30 -07:00
|
|
|
#include "functions.h"
|
|
|
|
#include "mainwindow.h"
|
2021-07-13 09:27:38 -07:00
|
|
|
|
|
|
|
wifiDialog::wifiDialog(QWidget *parent) :
|
|
|
|
QDialog(parent),
|
|
|
|
ui(new Ui::wifiDialog)
|
|
|
|
{
|
|
|
|
ui->setupUi(this);
|
2021-07-13 22:24:30 -07:00
|
|
|
wifiListTimer = new QTimer(this);
|
|
|
|
|
|
|
|
// Stylesheet, style & misc.
|
|
|
|
QFile stylesheetFile(":/resources/eink.qss");
|
|
|
|
stylesheetFile.open(QFile::ReadOnly);
|
|
|
|
this->setStyleSheet(stylesheetFile.readAll());
|
|
|
|
stylesheetFile.close();
|
|
|
|
this->setModal(true);
|
|
|
|
|
|
|
|
ui->cancelBtn->setProperty("type", "borderless");
|
|
|
|
ui->connectBtn->setProperty("type", "borderless");
|
|
|
|
ui->cancelBtn->setStyleSheet("font-size: 9pt; padding: 10px; font-weight: bold; background: lightGrey");
|
|
|
|
ui->connectBtn->setStyleSheet("font-size: 9pt; padding: 10px; font-weight: bold; background: lightGrey");
|
|
|
|
ui->mainLabel->setStyleSheet("padding-left: 125px; padding-right: 125px");
|
|
|
|
ui->networksListWidget->setStyleSheet("font-size: 9pt");
|
|
|
|
|
|
|
|
checkWifiNetworks();
|
2021-07-13 09:27:38 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
wifiDialog::~wifiDialog()
|
|
|
|
{
|
|
|
|
delete ui;
|
|
|
|
}
|
2021-07-13 22:24:30 -07:00
|
|
|
|
|
|
|
void wifiDialog::checkWifiNetworks() {
|
|
|
|
string_writeconfig("/opt/ibxd", "list_wifi_networks\n");
|
|
|
|
wifiListTimer->setInterval(100);
|
|
|
|
connect(wifiListTimer, &QTimer::timeout, [&]() {
|
|
|
|
if(QFile::exists("/run/wifi_networks_list")) {
|
|
|
|
printWifiNetworks();
|
|
|
|
wifiListTimer->stop();
|
|
|
|
}
|
|
|
|
} );
|
|
|
|
wifiListTimer->start();
|
|
|
|
}
|
|
|
|
|
|
|
|
void wifiDialog::printWifiNetworks() {
|
|
|
|
string_checkconfig_ro("/run/wifi_networks_list");
|
|
|
|
if(checkconfig_str_val == "") {
|
2021-07-14 15:23:54 -07:00
|
|
|
emit quit(1);
|
2021-07-13 22:24:30 -07:00
|
|
|
wifiDialog::close();
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
QFile wifiNetworksListFile("/run/wifi_networks_list");
|
|
|
|
wifiNetworksListFile.open(QIODevice::ReadWrite);
|
|
|
|
QTextStream in (&wifiNetworksListFile);
|
|
|
|
wifiNetworksList = in.readAll();
|
|
|
|
wifiNetworksListFile.close();
|
|
|
|
QFile::remove("/run/wifi_networks_list");
|
|
|
|
|
|
|
|
QStringListModel* model = new QStringListModel(this);
|
|
|
|
QStringList list = wifiNetworksList.split("\n", QString::SkipEmptyParts);
|
|
|
|
model->setStringList(list);
|
|
|
|
ui->networksListWidget->setModel(model);
|
|
|
|
ui->networksListWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
|
|
|
|
|
|
|
|
emit wifiNetworksListReady(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void wifiDialog::centerDialog() {
|
|
|
|
// Centering dialog
|
|
|
|
// Get current screen size
|
|
|
|
QRect rec = QGuiApplication::screenAt(this->pos())->geometry();
|
|
|
|
// Using minimum size of window
|
|
|
|
QSize size = this->minimumSize();
|
|
|
|
// Set top left point
|
|
|
|
QPoint topLeft = QPoint((rec.width() / 2) - (size.width() / 2), (rec.height() / 2) - (size.height() / 2));
|
|
|
|
// set window position
|
|
|
|
setGeometry(QRect(topLeft, size));
|
|
|
|
}
|
|
|
|
|
|
|
|
void wifiDialog::on_cancelBtn_clicked()
|
|
|
|
{
|
2021-07-14 15:23:54 -07:00
|
|
|
emit quit(0);
|
2021-07-13 22:24:30 -07:00
|
|
|
wifiDialog::close();
|
|
|
|
}
|
|
|
|
|
2021-07-14 15:23:54 -07:00
|
|
|
void wifiDialog::on_connectBtn_clicked()
|
|
|
|
{
|
|
|
|
index = ui->networksListWidget->currentIndex();
|
|
|
|
itemText = index.data(Qt::DisplayRole).toString();
|
|
|
|
if(itemText == "") {
|
|
|
|
QMessageBox::critical(this, tr("Invalid argument"), tr("You must select a network."));
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
this->hide();
|
|
|
|
global::keyboard::keyboardDialog = true;
|
|
|
|
global::keyboard::wifiPassphraseDialog = true;
|
|
|
|
global::keyboard::keyboardText = "";
|
|
|
|
generalDialogWindow = new generalDialog();
|
|
|
|
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
|
|
|
|
generalDialogWindow->wifiEssid = itemText;
|
|
|
|
connect(generalDialogWindow, SIGNAL(refreshScreen()), SLOT(refreshScreenNative()));
|
|
|
|
connect(generalDialogWindow, SIGNAL(updateWifiIcon(int)), SLOT(updateWifiIcon(int)));
|
|
|
|
connect(generalDialogWindow, SIGNAL(showToast(QString)), SLOT(showToastNative(QString)));
|
|
|
|
connect(generalDialogWindow, SIGNAL(closeIndefiniteToast()), SLOT(closeIndefiniteToastNative()));
|
|
|
|
connect(generalDialogWindow, SIGNAL(destroyed(QObject*)), SLOT(close()));
|
|
|
|
generalDialogWindow->show();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void wifiDialog::refreshScreenNative() {
|
|
|
|
emit refreshScreen();
|
|
|
|
}
|
|
|
|
|
|
|
|
void wifiDialog::updateWifiIcon(int mode) {
|
|
|
|
emit updateWifiIconSig(mode);
|
|
|
|
}
|
|
|
|
|
|
|
|
void wifiDialog::showToastNative(QString messageToDisplay) {
|
|
|
|
emit showToast(messageToDisplay);
|
|
|
|
}
|
|
|
|
|
|
|
|
void wifiDialog::closeIndefiniteToastNative() {
|
|
|
|
emit closeIndefiniteToast();
|
|
|
|
}
|