"Delete Driving Data" button

This commit is contained in:
James
2025-12-01 12:00:00 -07:00
parent c08c17ce66
commit 3da8c27cc9
+43
View File
@@ -1,3 +1,5 @@
#include <sys/xattr.h>
#include "frogpilot/ui/qt/offroad/data_settings.h"
FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent, bool forceOpen) : FrogPilotListWidget(parent), parent(parent) {
@@ -14,6 +16,47 @@ FrogPilotDataPanel::FrogPilotDataPanel(FrogPilotSettingsWindow *parent, bool for
ScrollView *statsLabelsPanel = new ScrollView(statsLabelsList, this);
dataLayout->addWidget(statsLabelsPanel);
ButtonControl *deleteDrivingDataButton = new ButtonControl(tr("Delete Driving Data"), tr("DELETE"), tr("<b>Delete all stored driving footage and data</b> to free up storage space or to simply just erase driving data."));
QObject::connect(deleteDrivingDataButton, &ButtonControl::clicked, [=]() {
if (ConfirmationDialog::confirm(tr("Delete all driving data and footage?"), tr("Delete"), this)) {
std::thread([=]() {
parent->keepScreenOn = true;
deleteDrivingDataButton->setEnabled(false);
deleteDrivingDataButton->setValue(tr("Deleting..."));
std::vector<QString> drivePaths = {"/data/media/0/realdata/", "/data/media/0/realdata_HD/", "/data/media/0/realdata_konik/"};
for (const QString &path : drivePaths) {
QDir dir(path);
if (!dir.exists()) {
continue;
}
for (const QFileInfo &entry : dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) {
char preserveValue[10] = {0};
bool isPreserved = (getxattr(entry.absoluteFilePath().toUtf8().constData(), "user.preserve", preserveValue, sizeof(preserveValue)) > 0 && strcmp(preserveValue, "1") == 0);
if (!isPreserved) {
QDir(entry.absoluteFilePath()).removeRecursively();
}
}
}
deleteDrivingDataButton->setValue(tr("Deleted!"));
util::sleep_for(2500);
deleteDrivingDataButton->setEnabled(true);
deleteDrivingDataButton->setValue("");
parent->keepScreenOn = false;
}).detach();
}
});
if (forceOpenDescriptions) {
deleteDrivingDataButton->showDescription();
}
dataMainList->addItem(deleteDrivingDataButton);
FrogPilotButtonsControl *frogpilotBackupButton = new FrogPilotButtonsControl(tr("FrogPilot Backups"), tr("<b>Create, delete, or restore FrogPilot backups.</b>"), "", {tr("BACKUP"), tr("DELETE"), tr("DELETE ALL"), tr("RESTORE")});
QObject::connect(frogpilotBackupButton, &FrogPilotButtonsControl::buttonClicked, [=](int id) {
QDir backupDir("/data/backups");