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
rQk^^@VK6v1QvQzv9)qhm0
literal 0
HcmV?d00001
diff --git a/src/resources/stop.png b/src/resources/stop.png
new file mode 100644
index 0000000000000000000000000000000000000000..b813bb05b43a84babbbafddbf7d61084f0601b9a
GIT binary patch
literal 11604
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
literal 0
HcmV?d00001
diff --git a/src/resources/wifi-standby.png b/src/resources/wifi-standby.png
index 5fa26f2985c2504edd114e132f33eef64d59f120..de669fbe7e6c4bf9436c7f2b547d98a01a0d09cc 100644
GIT binary patch
literal 15784
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
NOi@FjLe4zoe*x;fBIE!7
literal 3559
zcmdUxd010d7QoMYSp~A7fFNKJ&;b=SRE1cO1fmtn)U_&%3jvFkRtbu-2!RJdUv{pwEZPM05}2ui&p{QNX3E8MB;Va-9Z2>EkZ6|5g?ZfqjoB{L~IKOaNV!k
zzsSF4h1K5WtB*U)=Jp8N_Z7bz%(vcgccxXb-%0D=>=wuWSuj7sf7J#DMsuoKnze>C
zdFw{U4GdoctG2N*;P#UDFVCHEKC|yihwAItn{C=5C=L$)>fSu=$CtKmSry=(7h)|x
z%NC`&;+gdg?{rO@!D$`5bi(IU1^wpB-k~z5PpZRYvT29I(<3G+`OB3Lm`_#hwzF=`
z>|5BEA24}ZQs<@iKKrM?yMf=#F1X*|y(2rwZTGo5btT(Asa;*WW6cjULaxV`>}+W-
zS@XO^wS4qSly69I*SlvzztLn)_vaTE<(Qq)>@V8rQs49F{zk(dzW9~_M`*i8K}Ki5NX
z$jI6i@WB$+6BcI@E@_f?L;#p~1}ygdFz!LmW8X;oz=^Q(+oH|U_xmqQW^Rj{zVf5M
zjn=(qSo!X23ha(bM;}E}FZh2LWb)Oe@ae_Y-m0~x)_8{uEsjIbKz^k^l%G!~hWrpfe$Ujl2tT7CfG`Ded?+9pCip*t8Xo)K0HTH`r1Oyy(3EKQiKFuu
zVu}f&ZHhVWc{rI`?N|LMERsPmQjez;T>Z5R_
zz-ppWRN?C;KuwyO7n3(K9V~cUscx&W0K{(TbWLlwC#DcvFceSk$K#~X7D(=S8iQEc
zdz%(>ROJfZyK)^g&OQE^J~ZJjp^6CU!b!O?6Z5*u{hUE$Jim<_f3KQi4!QT_jPA7+
z3#?%3iDNunxpBK2c)yn+&?NM<1VJ3Zl`41-Yl^|3cSw@4bvMp|;rh6C8)=$xtr^jM
z<60}S#Zj6ex+2lrHkUze>g{>c=kLu2ugda{YsU<(&^_GJB;Zv$gJvvYD0$f6m<;7b
zv8=1SM{O)VradH1x<#e$+2f2p^==cEChOglE%>$rC45ip=3#J50?S(!q7K$ml-HD&
zMRroRYXTYl^^1CwXdy~?QS9ccysIb_u1%PiWSb);*v}pp_Q|8hLou}j*Bz3f;=PwzwTf1B-uqo>Wm-jkp#*B$eNU*b@4yY)Wo=vDPAXHksOVEI
z$Rxdq!TQf;zaqtEXbt`%UVaiB&C9>m+Ld0m}v7aeo9R`cfP^8l4Ib=
z&K-1fb%=@195~&y#sl0O-Rz>xp4jJEKp-Ql)nvVmF2w#=z4fmiCCNK^Nr77wsk!1XaQ>k9i`LeQV(;#$d|Zn{*|}A&jk1JBJ(XKWnw=jJilK)|MW;T
zC$|j~$yB-8_K}8}$x$_73YmrCtoDVr;og{@SrbL@$Sb!CGPG@Wi94W9-3f}$WeEMGJ)4Kx=uCF0dxW|(4S
z=)%yZ2Gj%muDo-lyTFT1Fw&l=gXd?l!JL)FEQ|241e@$Se9OHOCvcl|gWgd3oizjr
z53=&Z%iKUCb~6(ZQ@x0t&@xhxGT
zu@wf?V_bC8agv;}RaLKsAr=X%kG*3dlzf!RkgTEh%4OK;$$D32h;ir@Lo3lZ2
z;8>E)Idt#SnQob*hMes6)@0{xjf8
z{r(CJ7B_omWTkz5QyGZz~9WsdFwiy2~=r}gN~nEov4_jZ0cnOXPnx<
zUgJ-wj>ezV?D2Y_rsYT}f61s2*T*EhvIO=9It1mQe+r7T00J##0Kzy+P}t#Y0Q6wU
zQ&yt1ro!7taEa@;Bz>AjV;hHN+4F(CnlXBNY*Q$;DxEs%P}NE+0>Hz|6fzJ^T?oi@
zRtO(i97ZyHXztLeOr#H=uYVc)TFX-67!>bSexES8g|V*lERZ{^hPOUDOD$rJV06P?
zxSSJSH@&1%=a|%6mr(5qde5XpXS7iX$K=z|Cat5Ah4w|Osqb?@dogC@gQmXzoXa9Q
zq#Z0j-s2d*lnw0JO7n;7UmoNGfBhqy3+0`&MIbzXarURZ-zWHiY+J@J^v(1o;NOqZkuUnb+6gT0IpCi^E!@$tO%JL)*%y$
ziINS;rqgCHst=U^cQW>_EcK@UBt+v={6wgq12~D$^$)%Be>sly*}uHRx@kImvx@qR
NfF;Wom-;DE{{lkv$f5uM
diff --git a/src/settings/settings.cpp b/src/settings/settings.cpp
index a0a85ff..8a626d6 100644
--- a/src/settings/settings.cpp
+++ b/src/settings/settings.cpp
@@ -846,7 +846,7 @@ void settings::on_globalReadingSettingsCheckBox_toggled(bool checked)
void settings::on_checkOtaUpdateBtn_clicked()
{
log("'Check for OTA update' button clicked", className);
- if(testPing(true) == 0 or global::deviceID == "emu\n") {
+ if(testPing() == 0 or global::deviceID == "emu\n") {
launchOtaUpdater();
}
else {
diff --git a/src/widgets/dialogs/generaldialog.cpp b/src/widgets/dialogs/generaldialog.cpp
index 0a8cd1c..997dab6 100644
--- a/src/widgets/dialogs/generaldialog.cpp
+++ b/src/widgets/dialogs/generaldialog.cpp
@@ -419,7 +419,7 @@ void generalDialog::on_okBtn_clicked()
}
}
else if(ui->searchComboBox->currentText() == "Online library") {
- if(testPing(true) == 0 or global::deviceID == "emu\n") {
+ if(testPing() == 0 or global::deviceID == "emu\n") {
string_writeconfig("/inkbox/searchComboBoxFunction", "Online library");
log("Searching online library for '" + global::keyboard::keyboardText + "'", className);
@@ -648,20 +648,6 @@ void generalDialog::startVNC(QString server, QString password, QString port) {
qApp->quit();
}
-void generalDialog::connectToNetworkSlot() {
- if(connectToNetwork(wifiEssid, wifiPassphrase) == true) {
- emit updateWifiIcon(3);
- emit closeIndefiniteToast();
- emit showToast("Connection successful");
- }
- else {
- emit updateWifiIcon(2);
- emit closeIndefiniteToast();
- emit showToast("Connection failed");
- }
- generalDialog::close();
-}
-
void generalDialog::startOtaUpdate(bool wasDownloadSuccessful) {
emit closeIndefiniteToast();
if(wasDownloadSuccessful == true) {
diff --git a/src/widgets/dialogs/generaldialog.h b/src/widgets/dialogs/generaldialog.h
index 08d1001..a1e742c 100644
--- a/src/widgets/dialogs/generaldialog.h
+++ b/src/widgets/dialogs/generaldialog.h
@@ -63,7 +63,6 @@ private slots:
void adjust_size();
void restartSearchDialog();
void refreshScreenNative();
- void connectToNetworkSlot();
void startOtaUpdate(bool wasDownloadSuccessful);
void openBookFileNative(QString book, bool relativePath);
void showToastNative(QString messageToDisplay);
diff --git a/src/widgets/dialogs/wifi/wifidialog.cpp b/src/widgets/dialogs/wifi/wifidialog.cpp
index 34e3f6c..9fec05c 100644
--- a/src/widgets/dialogs/wifi/wifidialog.cpp
+++ b/src/widgets/dialogs/wifi/wifidialog.cpp
@@ -14,7 +14,6 @@ wifiDialog::wifiDialog(QWidget *parent) :
ui(new Ui::wifiDialog)
{
ui->setupUi(this);
- wifiListTimer = new QTimer(this);
// Stylesheet, style & misc.
QFile stylesheetFile("/mnt/onboard/.adds/inkbox/eink.qss");
@@ -23,15 +22,34 @@ wifiDialog::wifiDialog(QWidget *parent) :
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->setFont(QFont("u001"));
- ui->networksListWidget->setStyleSheet("font-size: 9pt");
+ ui->stopBtn->setIcon(QIcon(":/resources/stop.png"));
+ ui->logBtn->setIcon(QIcon(":/resources/file-text.png"));
+ ui->refreshBtn->setIcon(QIcon(":/resources/refresh.png"));
+
+ ui->Wificheckbox->setStyleSheet("QCheckBox::indicator { width:50px; height: 50px; }");
+
+ // Size
+ QRect screenGeometry = QGuiApplication::screens()[0]->geometry();
+ this->setFixedWidth(screenGeometry.width());
+
+ int halfOfHalfHeight = ((screenGeometry.height() / 2) / 2) / 2;
+ int finalHeight = screenGeometry.height() - halfOfHalfHeight * 2;
+
+ this->setFixedHeight(finalHeight);
+ this->move(0, halfOfHalfHeight);
+
+ // Button sizes
+ ui->stopBtn->setFixedWidth(screenGeometry.width() / 8);
+ ui->logBtn->setFixedWidth(screenGeometry.width() / 8);
+ ui->refreshBtn->setFixedWidth(screenGeometry.width() / 8);
+
+ int heighIncrease = 20;
+ ui->stopBtn->setFixedHeight(ui->stopBtn->height() + heighIncrease);
+ ui->logBtn->setFixedHeight(ui->logBtn->height() + heighIncrease);
+ ui->refreshBtn->setFixedHeight(ui->refreshBtn->height() + heighIncrease);
+
+ //ui->cancelBtn->setProperty("type", "borderless");
- checkWifiNetworks();
}
wifiDialog::~wifiDialog()
@@ -39,93 +57,6 @@ wifiDialog::~wifiDialog()
delete ui;
}
-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() {
- if(readFile("/run/wifi_networks_list").isEmpty()) {
- log("Wi-Fi networks list empty", className);
- QFile::remove("/run/wifi_networks_list");
- emit quit(1);
- wifiDialog::close();
- }
- else {
- log("Parsing Wi-Fi networks list", className);
- 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()
-{
- string_writeconfig("/opt/ibxd", "toggle_wifi_off\n");
- while(true) {
- if(QFile::exists("/run/toggle_wifi_off_done")) {
- QFile::remove("/run/toggle_wifi_off_done");
- break;
- }
- }
- emit quit(0);
- wifiDialog::close();
-}
-
-void wifiDialog::on_connectBtn_clicked()
-{
- index = ui->networksListWidget->currentIndex();
- itemText = index.data(Qt::DisplayRole).toString();
- if(itemText.isEmpty()) {
- showToast("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();
}
@@ -141,3 +72,99 @@ void wifiDialog::showToastNative(QString messageToDisplay) {
void wifiDialog::closeIndefiniteToastNative() {
emit closeIndefiniteToast();
}
+
+/*
+
+ 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();
+
+*/
+
+/*
+ bool connectToNetwork(QString essid, QString passphrase) {
+ log("Connecting to network '" + essid + "'", "functions");
+ std::string essid_str = essid.toStdString();
+ std::string passphrase_str = passphrase.toStdString();
+ string_writeconfig("/run/wifi_network_essid", essid_str);
+ string_writeconfig("/run/wifi_network_passphrase", passphrase_str);
+ string_writeconfig("/opt/ibxd", "connect_to_wifi_network\n");
+
+ int connectionSuccessful = 0;
+
+ while(connectionSuccessful == 0) {
+ if(QFile::exists("/run/wifi_connected_successfully")) {
+ if(checkconfig("/run/wifi_connected_successfully") == true) {
+ QFile::remove("/run/wifi_connected_successfully");
+ connectionSuccessful = 1;
+ global::network::isConnected = true;
+ setDefaultWorkDir();
+ string_writeconfig(".config/17-wifi_connection_information/essid", essid_str);
+ string_writeconfig(".config/17-wifi_connection_information/passphrase", passphrase_str);
+ QString function = __func__; log(function + ": Connection successful", "functions");
+ return true;
+ }
+ else {
+ QFile::remove("/run/wifi_connected_successfully");
+ connectionSuccessful = 0;
+ global::network::isConnected = false;
+ QString function = __func__; log(function + ": Connection failed", "functions");
+ return false;
+ }
+ }
+ else {
+ QThread::msleep(100);
+ }
+ }
+ }
+*/
+/*
+ int testPing(bool blocking) {
+ QProcess *pingProcess = new QProcess();
+ if(blocking == true) {
+ QString pingProg = "ping";
+ QStringList pingArgs;
+ pingArgs << "-c" << "1" << "1.1.1.1";
+ pingProcess->start(pingProg, pingArgs);
+ pingProcess->waitForFinished();
+ int exitCode = pingProcess->exitCode();
+ pingProcess->deleteLater();
+ if(exitCode == 0) {
+ global::network::isConnected = true;
+ }
+ else {
+ global::network::isConnected = false;
+ }
+ return exitCode;
+ }
+ // For some reason, implementing a non-blocking version of this functions triggers a "terminate called without an active exception" error with a platform plugin compiled with a newer GCC 11 toolchain. The problem has been solved by transplanting this function into the related area which uses it.
+ pingProcess->deleteLater();
+ }
+ bool getTestPingResults() {
+ // To be used when the testPing() function is used in non-blocking mode.
+ if(QFile::exists("/run/test_ping_status")) {
+ if(checkconfig("/run/test_ping_status") == true) {
+ global::network::isConnected = true;
+ return true;
+ }
+ else {
+ global::network::isConnected = false;
+ return false;
+ }
+ }
+ else {
+ global::network::isConnected = false;
+ return false;
+ }
+ }
+*/
diff --git a/src/widgets/dialogs/wifi/wifidialog.h b/src/widgets/dialogs/wifi/wifidialog.h
index cd98c92..78173ee 100644
--- a/src/widgets/dialogs/wifi/wifidialog.h
+++ b/src/widgets/dialogs/wifi/wifidialog.h
@@ -18,29 +18,17 @@ public:
QString className = this->metaObject()->className();
explicit wifiDialog(QWidget *parent = nullptr);
~wifiDialog();
- QString wifiNetworksList;
- QString itemText;
- QModelIndex index;
- void checkWifiNetworks();
- void printWifiNetworks();
- void centerDialog();
private:
Ui::wifiDialog *ui;
- QTimer * wifiListTimer;
- generalDialog * generalDialogWindow;
signals:
- void wifiNetworksListReady(int networksFound);
- void quit(int exitCode);
void refreshScreen();
void updateWifiIconSig(int mode);
void showToast(QString messageToDisplay);
void closeIndefiniteToast();
private slots:
- void on_cancelBtn_clicked();
- void on_connectBtn_clicked();
void refreshScreenNative();
void updateWifiIcon(int mode);
void showToastNative(QString messageToDisplay);
diff --git a/src/widgets/dialogs/wifi/wifidialog.ui b/src/widgets/dialogs/wifi/wifidialog.ui
index 10409eb..94702a2 100644
--- a/src/widgets/dialogs/wifi/wifidialog.ui
+++ b/src/widgets/dialogs/wifi/wifidialog.ui
@@ -6,8 +6,8 @@
0
0
- 400
- 300
+ 783
+ 679
@@ -15,83 +15,162 @@
-
-
-
-
-
-
- 0
+
+
+ QLayout::SetFixedSize
+
+
-
+
+
+ QLayout::SetMaximumSize
-
+
-
-