This commit is contained in:
Your Name
2024-05-11 23:00:32 -05:00
parent bef1770b58
commit 65bcdde866
9 changed files with 159 additions and 134 deletions

View File

@@ -416,8 +416,8 @@ FrogPilotControlsPanel::FrogPilotControlsPanel(SettingsWindow *parent) : FrogPil
toggle->setVisible(false);
}
deleteModelBtn->setVisible(true);
downloadModelBtn->setVisible(true);
// deleteModelBtn->setVisible(true);
// downloadModelBtn->setVisible(true);
selectModelBtn->setVisible(true);
});
toggle = modelsToggle;
@@ -425,138 +425,138 @@ FrogPilotControlsPanel::FrogPilotControlsPanel(SettingsWindow *parent) : FrogPil
// CLEARPILOT changed path.
QDir modelDir("/data/openpilot/selfdrive/clearpilot/models/");
deleteModelBtn = new ButtonControl(tr("Delete Model"), tr("DELETE"), "");
QObject::connect(deleteModelBtn, &ButtonControl::clicked, [=]() {
std::string currentModel = params.get("Model") + ".thneed";
// deleteModelBtn = new ButtonControl(tr("Delete Model"), tr("DELETE"), "");
// QObject::connect(deleteModelBtn, &ButtonControl::clicked, [=]() {
// std::string currentModel = params.get("Model") + ".thneed";
QStringList availableModels = QString::fromStdString(params.get("AvailableModels")).split(",");
QStringList modelLabels = QString::fromStdString(params.get("AvailableModelsNames")).split(",");
// QStringList availableModels = QString::fromStdString(params.get("AvailableModels")).split(",");
// QStringList modelLabels = QString::fromStdString(params.get("AvailableModelsNames")).split(",");
QStringList existingModelFiles = modelDir.entryList({"*.thneed"}, QDir::Files);
QMap<QString, QString> labelToFileMap;
QStringList deletableModelLabels;
for (int i = 0; i < availableModels.size(); ++i) {
QString modelFileName = availableModels[i] + ".thneed";
if (existingModelFiles.contains(modelFileName) && modelFileName != QString::fromStdString(currentModel)) {
QString readableName = modelLabels[i];
deletableModelLabels.append(readableName);
labelToFileMap[readableName] = modelFileName;
}
}
// QStringList existingModelFiles = modelDir.entryList({"*.thneed"}, QDir::Files);
// QMap<QString, QString> labelToFileMap;
// QStringList deletableModelLabels;
// for (int i = 0; i < availableModels.size(); ++i) {
// QString modelFileName = availableModels[i] + ".thneed";
// if (existingModelFiles.contains(modelFileName) && modelFileName != QString::fromStdString(currentModel)) {
// QString readableName = modelLabels[i];
// deletableModelLabels.append(readableName);
// labelToFileMap[readableName] = modelFileName;
// }
// }
QString selectedModel = MultiOptionDialog::getSelection(tr("Select a model to delete"), deletableModelLabels, "", this);
if (!selectedModel.isEmpty() && ConfirmationDialog::confirm(tr("Are you sure you want to delete this model?"), tr("Delete"), this)) {
std::thread([=]() {
deleteModelBtn->setValue(tr("Deleting..."));
// QString selectedModel = MultiOptionDialog::getSelection(tr("Select a model to delete"), deletableModelLabels, "", this);
// if (!selectedModel.isEmpty() && ConfirmationDialog::confirm(tr("Are you sure you want to delete this model?"), tr("Delete"), this)) {
// std::thread([=]() {
// deleteModelBtn->setValue(tr("Deleting..."));
deleteModelBtn->setEnabled(false);
downloadModelBtn->setEnabled(false);
selectModelBtn->setEnabled(false);
// deleteModelBtn->setEnabled(false);
// downloadModelBtn->setEnabled(false);
// selectModelBtn->setEnabled(false);
QString modelToDelete = labelToFileMap[selectedModel];
// QString modelToDelete = labelToFileMap[selectedModel];
QFile::remove(modelDir.absoluteFilePath(modelToDelete));
// QFile::remove(modelDir.absoluteFilePath(modelToDelete));
deleteModelBtn->setEnabled(true);
downloadModelBtn->setEnabled(true);
selectModelBtn->setEnabled(true);
// deleteModelBtn->setEnabled(true);
// downloadModelBtn->setEnabled(true);
// selectModelBtn->setEnabled(true);
deleteModelBtn->setValue(tr("Deleted!"));
std::this_thread::sleep_for(std::chrono::seconds(3));
deleteModelBtn->setValue("");
}).detach();
}
});
addItem(deleteModelBtn);
// deleteModelBtn->setValue(tr("Deleted!"));
// std::this_thread::sleep_for(std::chrono::seconds(3));
// deleteModelBtn->setValue("");
// }).detach();
// }
// });
// addItem(deleteModelBtn);
downloadModelBtn = new ButtonControl(tr("Download Model"), tr("DOWNLOAD"), "");
QObject::connect(downloadModelBtn, &ButtonControl::clicked, [=]() {
QStringList availableModels = QString::fromStdString(params.get("AvailableModels")).split(",");
QStringList modelLabels = QString::fromStdString(params.get("AvailableModelsNames")).split(",");
// downloadModelBtn = new ButtonControl(tr("Download Model"), tr("DOWNLOAD"), "");
// QObject::connect(downloadModelBtn, &ButtonControl::clicked, [=]() {
// QStringList availableModels = QString::fromStdString(params.get("AvailableModels")).split(",");
// QStringList modelLabels = QString::fromStdString(params.get("AvailableModelsNames")).split(",");
QMap<QString, QString> labelToModelMap;
QStringList downloadableModelLabels;
QStringList existingModelFiles = modelDir.entryList({"*.thneed"}, QDir::Files);
for (int i = 0; i < availableModels.size(); ++i) {
QString modelFileName = availableModels.at(i) + ".thneed";
if (!existingModelFiles.contains(modelFileName)) {
QString readableName = modelLabels.at(i);
if (!readableName.endsWith("(Default)")) {
downloadableModelLabels.append(readableName);
labelToModelMap.insert(readableName, availableModels.at(i));
}
}
}
// QMap<QString, QString> labelToModelMap;
// QStringList downloadableModelLabels;
// QStringList existingModelFiles = modelDir.entryList({"*.thneed"}, QDir::Files);
// for (int i = 0; i < availableModels.size(); ++i) {
// QString modelFileName = availableModels.at(i) + ".thneed";
// if (!existingModelFiles.contains(modelFileName)) {
// QString readableName = modelLabels.at(i);
// if (!readableName.endsWith("(Default)")) {
// downloadableModelLabels.append(readableName);
// labelToModelMap.insert(readableName, availableModels.at(i));
// }
// }
// }
QString modelToDownload = MultiOptionDialog::getSelection(tr("Select a driving model to download"), downloadableModelLabels, "", this);
if (!modelToDownload.isEmpty()) {
QString selectedModelValue = labelToModelMap.value(modelToDownload);
paramsMemory.put("ModelToDownload", selectedModelValue.toStdString());
// QString modelToDownload = MultiOptionDialog::getSelection(tr("Select a driving model to download"), downloadableModelLabels, "", this);
// if (!modelToDownload.isEmpty()) {
// QString selectedModelValue = labelToModelMap.value(modelToDownload);
// paramsMemory.put("ModelToDownload", selectedModelValue.toStdString());
deleteModelBtn->setEnabled(false);
downloadModelBtn->setEnabled(false);
selectModelBtn->setEnabled(false);
// deleteModelBtn->setEnabled(false);
// downloadModelBtn->setEnabled(false);
// selectModelBtn->setEnabled(false);
QTimer *failureTimer = new QTimer(this);
failureTimer->setSingleShot(true);
// QTimer *failureTimer = new QTimer(this);
// failureTimer->setSingleShot(true);
QTimer *progressTimer = new QTimer(this);
progressTimer->setInterval(100);
// QTimer *progressTimer = new QTimer(this);
// progressTimer->setInterval(100);
connect(failureTimer, &QTimer::timeout, this, [=]() {
deleteModelBtn->setEnabled(true);
downloadModelBtn->setEnabled(true);
selectModelBtn->setEnabled(true);
// connect(failureTimer, &QTimer::timeout, this, [=]() {
// deleteModelBtn->setEnabled(true);
// downloadModelBtn->setEnabled(true);
// selectModelBtn->setEnabled(true);
downloadModelBtn->setValue(tr("Download failed..."));
paramsMemory.remove("ModelDownloadProgress");
paramsMemory.remove("ModelToDownload");
// downloadModelBtn->setValue(tr("Download failed..."));
// paramsMemory.remove("ModelDownloadProgress");
// paramsMemory.remove("ModelToDownload");
progressTimer->stop();
progressTimer->deleteLater();
// progressTimer->stop();
// progressTimer->deleteLater();
QTimer::singleShot(3000, this, [this]() {
downloadModelBtn->setValue("");
});
});
// QTimer::singleShot(3000, this, [this]() {
// downloadModelBtn->setValue("");
// });
// });
connect(progressTimer, &QTimer::timeout, this, [=]() mutable {
static int lastProgress = -1;
int progress = paramsMemory.getInt("ModelDownloadProgress");
// connect(progressTimer, &QTimer::timeout, this, [=]() mutable {
// static int lastProgress = -1;
// int progress = paramsMemory.getInt("ModelDownloadProgress");
if (progress == lastProgress) {
if (!failureTimer->isActive()) {
failureTimer->start(30000);
}
} else {
lastProgress = progress;
downloadModelBtn->setValue(QString::number(progress) + "%");
failureTimer->stop();
// if (progress == lastProgress) {
// if (!failureTimer->isActive()) {
// failureTimer->start(30000);
// }
// } else {
// lastProgress = progress;
// downloadModelBtn->setValue(QString::number(progress) + "%");
// failureTimer->stop();
if (progress == 100) {
deleteModelBtn->setEnabled(true);
downloadModelBtn->setEnabled(true);
selectModelBtn->setEnabled(true);
// if (progress == 100) {
// deleteModelBtn->setEnabled(true);
// downloadModelBtn->setEnabled(true);
// selectModelBtn->setEnabled(true);
downloadModelBtn->setValue(tr("Downloaded!"));
paramsMemory.remove("ModelDownloadProgress");
paramsMemory.remove("ModelToDownload");
// downloadModelBtn->setValue(tr("Downloaded!"));
// paramsMemory.remove("ModelDownloadProgress");
// paramsMemory.remove("ModelToDownload");
progressTimer->stop();
progressTimer->deleteLater();
// progressTimer->stop();
// progressTimer->deleteLater();
QTimer::singleShot(3000, this, [this]() {
if (paramsMemory.get("ModelDownloadProgress").empty()) {
downloadModelBtn->setValue("");
}
});
}
}
});
progressTimer->start();
}
});
addItem(downloadModelBtn);
// QTimer::singleShot(3000, this, [this]() {
// if (paramsMemory.get("ModelDownloadProgress").empty()) {
// downloadModelBtn->setValue("");
// }
// });
// }
// }
// });
// progressTimer->start();
// }
// });
// addItem(downloadModelBtn);
selectModelBtn = new ButtonControl(tr("Select Model"), tr("SELECT"), "");
QObject::connect(selectModelBtn, &ButtonControl::clicked, [=]() {
@@ -882,7 +882,7 @@ FrogPilotControlsPanel::FrogPilotControlsPanel(SettingsWindow *parent) : FrogPil
void FrogPilotControlsPanel::showEvent(QShowEvent *event, const UIState &s) {
hasOpenpilotLongitudinal = hasOpenpilotLongitudinal && !params.getBool("DisableOpenpilotLongitudinal");
downloadModelBtn->setEnabled(s.scene.online && (!s.scene.started || s.scene.parked));
// downloadModelBtn->setEnabled(s.scene.online && (!s.scene.started || s.scene.parked));
}
void FrogPilotControlsPanel::updateState(const UIState &s) {
@@ -1040,16 +1040,16 @@ void FrogPilotControlsPanel::hideToggles() {
aggressiveProfile->setVisible(false);
conditionalSpeedsImperial->setVisible(false);
conditionalSpeedsMetric->setVisible(false);
deleteModelBtn->setVisible(false);
downloadModelBtn->setVisible(false);
// deleteModelBtn->setVisible(false);
// downloadModelBtn->setVisible(false);
selectModelBtn->setVisible(false);
slcPriorityButton->setVisible(false);
standardProfile->setVisible(false);
relaxedProfile->setVisible(false);
trafficProfile->setVisible(false);
//"ConditionalExperimental" , "ExperimentalModeActivation", "VisionTurnControl"
std::set<QString> longitudinalKeys = {"CustomPersonalities", "LongitudinalTune", "MTSCEnabled", "SpeedLimitController"};
//"ConditionalExperimental" , "ExperimentalModeActivation", "VisionTurnControl", "MTSCEnabled"
std::set<QString> longitudinalKeys = {"CustomPersonalities", "LongitudinalTune", "SpeedLimitController"};
for (auto &[key, toggle] : toggles) {
toggle->setVisible(false);

View File

@@ -25,8 +25,8 @@ private:
void updateState(const UIState &s);
void updateToggles();
ButtonControl *deleteModelBtn;
ButtonControl *downloadModelBtn;
// ButtonControl *deleteModelBtn;
// ButtonControl *downloadModelBtn;
ButtonControl *selectModelBtn;
ButtonControl *slcPriorityButton;