MCPcopy Create free account
hub / github.com/aethersdr/AetherSDR / onRemove

Method onRemove

src/gui/MemoryDialog.cpp:1172–1306  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1170}
1171
1172void MemoryDialog::onRemove()
1173{
1174 const QSet<int> selectedIndices = selectedMemoryIndices();
1175 if (selectedIndices.isEmpty())
1176 return;
1177
1178 QList<int> indices = selectedIndices.values();
1179 std::sort(indices.begin(), indices.end());
1180
1181 QStringList memoryDescriptions;
1182 memoryDescriptions.reserve(indices.size());
1183 for (int idx : indices) {
1184 const auto it = m_model->memories().constFind(idx);
1185 memoryDescriptions << (it != m_model->memories().constEnd()
1186 ? describeMemory(it.value())
1187 : QString("Memory %1").arg(idx));
1188 }
1189
1190 QMessageBox confirm(this);
1191 confirm.setIcon(QMessageBox::Warning);
1192 confirm.setWindowTitle(indices.size() == 1 ? "Delete Memory" : "Delete Memories");
1193 confirm.setText(indices.size() == 1
1194 ? QString("Delete %1?").arg(memoryDescriptions.value(0, "the selected memory"))
1195 : QString("Delete %1 selected memories?").arg(indices.size()));
1196 confirm.setInformativeText("This can't be undone.");
1197 if (memoryDescriptions.size() > 1)
1198 confirm.setDetailedText(memoryDescriptions.join('\n'));
1199 confirm.setStandardButtons(QMessageBox::Yes | QMessageBox::Cancel);
1200 confirm.setDefaultButton(QMessageBox::Cancel);
1201 if (confirm.exec() != QMessageBox::Yes) {
1202 focusTableOnCurrentRow();
1203 return;
1204 }
1205
1206 RadioModel* const model = m_model;
1207 const QPointer<MemoryDialog> dialogGuard(this);
1208 struct RemovalState {
1209 QList<int> indices;
1210 QStringList descriptions;
1211 int nextIndex{0};
1212 int processedCount{0};
1213 int failed{0};
1214 QStringList failedDescriptions;
1215 };
1216 const auto state = QSharedPointer<RemovalState>::create();
1217 state->indices = indices;
1218 state->descriptions = memoryDescriptions;
1219
1220 auto* progressDialog = new QProgressDialog(
1221 QString("Deleting 0 of %1 memories...").arg(indices.size()),
1222 QString(), 0, indices.size(), this);
1223 auto* progressBar = new QProgressBar(progressDialog);
1224 progressBar->setTextVisible(false);
1225 progressDialog->setBar(progressBar);
1226 progressDialog->setWindowTitle(indices.size() == 1 ? "Delete Memory" : "Delete Memories");
1227 progressDialog->setWindowModality(Qt::WindowModal);
1228 progressDialog->setMinimumDuration(0);
1229 progressDialog->setAutoClose(false);

Callers

nothing calls this directly

Calls 11

describeMemoryFunction · 0.85
beginMethod · 0.80
sendCmdPublicMethod · 0.80
handleMemoryStatusMethod · 0.80
isEmptyMethod · 0.45
sizeMethod · 0.45
valueMethod · 0.45
setValueMethod · 0.45
closeMethod · 0.45
populateTableMethod · 0.45

Tested by

no test coverage detected