wip
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -25,8 +25,8 @@ private:
|
||||
void updateState(const UIState &s);
|
||||
void updateToggles();
|
||||
|
||||
ButtonControl *deleteModelBtn;
|
||||
ButtonControl *downloadModelBtn;
|
||||
// ButtonControl *deleteModelBtn;
|
||||
// ButtonControl *downloadModelBtn;
|
||||
ButtonControl *selectModelBtn;
|
||||
ButtonControl *slcPriorityButton;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user