Code that works until the last step, then crashes the binary

This commit is contained in:
Nicolas Mailloux 2024-01-13 14:08:37 -05:00
parent f2a8d5ce57
commit 8f1003f6bb
5 changed files with 94 additions and 4 deletions

View file

@ -97,6 +97,7 @@ namespace global {
inline bool encfsDialog; inline bool encfsDialog;
inline bool vncDialog; inline bool vncDialog;
inline bool wifiPassphraseDialog; inline bool wifiPassphraseDialog;
inline bool telemetryMessageDialog;
inline QString keyboardText; inline QString keyboardText;
inline QString keypadText; inline QString keypadText;
inline bool embed = true; inline bool embed = true;
@ -232,6 +233,14 @@ namespace global {
namespace telemetry { namespace telemetry {
inline bool enabled = false; inline bool enabled = false;
inline bool telemetryDialog = false; inline bool telemetryDialog = false;
namespace collectedData {
inline QString message;
inline QString deviceUID;
inline QString systemVersion;
inline QString device;
inline bool deviceRooted;
inline bool developerKeyInstalled;
}
} }
inline QString systemInfoText; inline QString systemInfoText;
inline bool forbidOpenSearchDialog; inline bool forbidOpenSearchDialog;
@ -582,7 +591,7 @@ namespace {
proc->deleteLater(); proc->deleteLater();
} }
} }
void getUID() { QString getUID() {
QString prog ("dd"); QString prog ("dd");
QStringList args; QStringList args;
args << "if=/dev/mmcblk0" << "bs=512" << "skip=1" << "count=1" << "status=none"; args << "if=/dev/mmcblk0" << "bs=512" << "skip=1" << "count=1" << "status=none";
@ -594,6 +603,8 @@ namespace {
deviceUID = deviceUID.left(256); deviceUID = deviceUID.left(256);
proc->deleteLater(); proc->deleteLater();
return deviceUID;
} }
void getKernelVersion() { void getKernelVersion() {
QString prog ("uname"); QString prog ("uname");
@ -1221,6 +1232,36 @@ namespace {
fhandler << str.toStdString(); fhandler << str.toStdString();
fhandler.close(); fhandler.close();
} }
QJsonObject collectDeviceInformation() {
global::telemetry::collectedData::deviceUID = getUID();
global::telemetry::collectedData::systemVersion = readFile("/opt/version").trimmed();
global::telemetry::collectedData::device = global::deviceID.trimmed();
if(checkconfig("/external_root/opt/root/rooted")) {
global::telemetry::collectedData::deviceRooted = "true";
}
else {
global::telemetry::collectedData::deviceRooted = "false";
}
if(checkconfig("/external_root/opt/developer/valid-key")) {
global::telemetry::collectedData::developerKeyInstalled = "true";
}
else {
global::telemetry::collectedData::developerKeyInstalled = "false";
}
QJsonObject data;
data.insert("UID", global::telemetry::collectedData::deviceUID);
data.insert("SystemVersion", global::telemetry::collectedData::systemVersion);
data.insert("DeviceModel", global::telemetry::collectedData::device);
data.insert("DeviceRooted", global::telemetry::collectedData::deviceRooted);
data.insert("DeveloperKeyInstalled", global::telemetry::collectedData::developerKeyInstalled);
data.insert("Message", global::telemetry::collectedData::message);
return(data);
}
bool sendDeviceInformation(QJsonObject data) {
qDebug() << data;
}
} }
#endif // FUNCTIONS_H #endif // FUNCTIONS_H

View file

@ -1099,6 +1099,27 @@ void MainWindow::openTelemetryDialog() {
global::telemetry::telemetryDialog = true; global::telemetry::telemetryDialog = true;
generalDialogWindow = new generalDialog(this); generalDialogWindow = new generalDialog(this);
QObject::connect(generalDialogWindow, &generalDialog::destroyed, this, &MainWindow::openTelemetryMessageDialog);
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose); generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
QApplication::processEvents(); QApplication::processEvents();
} }
void MainWindow::openTelemetryMessageDialog() {
if(global::keyboard::telemetryMessageDialog == true) {
log("Showing telemetry message dialog", className);
global::keyboard::keyboardDialog = true;
global::keyboard::keyboardText = "";
generalDialogWindow = new generalDialog(this);
QObject::connect(generalDialogWindow, &generalDialog::destroyed, this, &MainWindow::sendDeviceInformationSlot);
generalDialogWindow->setAttribute(Qt::WA_DeleteOnClose);
QApplication::processEvents();
}
}
void MainWindow::sendDeviceInformationSlot() {
QJsonObject data = collectDeviceInformation();
qDebug() << data;
sendDeviceInformation(data);
writeFile("/mnt/onboard/.adds/inkbox/.config/24-telemetry/asked", "true");
writeFile("/mnt/onboard/.adds/inkbox/.config/24-telemetry/enabled", "true");
}

View file

@ -104,6 +104,8 @@ private slots:
void launchOnlineLibrary(); void launchOnlineLibrary();
void on_audioBtn_clicked(); void on_audioBtn_clicked();
void openTelemetryDialog(); void openTelemetryDialog();
void openTelemetryMessageDialog();
void sendDeviceInformationSlot();
private: private:
Ui::MainWindow * ui; Ui::MainWindow * ui;

View file

@ -309,6 +309,12 @@ void generalDialog::on_cancelBtn_clicked()
log("User declined telemetry request", className); log("User declined telemetry request", className);
writeFile("/mnt/onboard/.adds/inkbox/.config/24-telemetry/asked", "true"); writeFile("/mnt/onboard/.adds/inkbox/.config/24-telemetry/asked", "true");
} }
else if(global::keyboard::telemetryMessageDialog == true) {
global::keyboard::telemetryMessageDialog = false;
global::keyboard::keyboardText = "";
global::telemetry::collectedData::message = "";
log("No message to be sent along with collected data", className);
}
generalDialog::close(); generalDialog::close();
} }
} }
@ -550,6 +556,20 @@ void generalDialog::on_okBtn_clicked()
showToast("Please type in the required argument"); showToast("Please type in the required argument");
} }
} }
else if(global::keyboard::telemetryMessageDialog == true) {
if(!global::keyboard::keyboardText.isEmpty()) {
global::telemetry::collectedData::message = global::keyboard::keyboardText;
global::keyboard::keyboardText = "";
global::keyboard::telemetryMessageDialog = false;
global::keyboard::keyboardDialog = false;
log("Message to be sent along with collected data is: " + global::telemetry::collectedData::message, className);
this->close();
}
else {
global::toast::delay = 3000;
showToast("Please type in the required argument");
}
}
else { else {
global::keyboard::keyboardDialog = false; global::keyboard::keyboardDialog = false;
generalDialog::close(); generalDialog::close();
@ -580,7 +600,7 @@ void generalDialog::on_okBtn_clicked()
} }
else if(global::telemetry::telemetryDialog == true) { else if(global::telemetry::telemetryDialog == true) {
global::telemetry::telemetryDialog = false; global::telemetry::telemetryDialog = false;
global::keyboard::telemetryMessageDialog = true;
generalDialog::close(); generalDialog::close();
} }
} }
@ -677,6 +697,12 @@ void generalDialog::setupKeyboardDialog() {
ui->okBtn->setText("OK"); ui->okBtn->setText("OK");
ui->cancelBtn->setText("Cancel"); ui->cancelBtn->setText("Cancel");
} }
else if(global::keyboard::telemetryMessageDialog == true) {
ui->headerLabel->setWordWrap(true);
ui->headerLabel->setText("If you'd like, feel free to send us a random message along with the collected data");
ui->okBtn->setText("Continue");
ui->cancelBtn->setText("No, thanks");
}
else { else {
ui->headerLabel->setText("Enter a string"); ui->headerLabel->setText("Enter a string");
ui->okBtn->setText("OK"); ui->okBtn->setText("OK");