| 182 | } |
| 183 | |
| 184 | void MainWindow::filter(const QString& filterStr) |
| 185 | { |
| 186 | QStringList allErrors; |
| 187 | |
| 188 | for (const QString &errorItem : mAllErrors) { |
| 189 | if (filterStr.isEmpty()) { |
| 190 | allErrors << errorItem; |
| 191 | continue; |
| 192 | } |
| 193 | |
| 194 | const QStringList lines = errorItem.split("\n"); |
| 195 | if (lines.size() < 2) |
| 196 | continue; |
| 197 | |
| 198 | if (lines[1].startsWith(filterStr)) |
| 199 | allErrors << errorItem; |
| 200 | } |
| 201 | |
| 202 | ui->results->clear(); |
| 203 | |
| 204 | if (ui->random100->isChecked() && allErrors.size() > MAX_ERRORS) { |
| 205 | // remove items in /test/ |
| 206 | for (int i = allErrors.size() - 1; i >= 0 && allErrors.size() > MAX_ERRORS; --i) { |
| 207 | if (allErrors[i].indexOf("test") > 0) |
| 208 | allErrors.removeAt(i); |
| 209 | } |
| 210 | std::shuffle(allErrors.begin(), allErrors.end(), std::mt19937(std::random_device()())); |
| 211 | ui->results->addItems(allErrors.mid(0, MAX_ERRORS)); |
| 212 | ui->results->sortItems(); |
| 213 | } else { |
| 214 | ui->results->addItems(allErrors); |
| 215 | } |
| 216 | } |
| 217 | |
| 218 | bool MainWindow::runProcess(const QString &programName, const QStringList &arguments) |
| 219 | { |