| 2248 | } |
| 2249 | |
| 2250 | static QStringList audibleSliceLabels(const RadioModel* model) |
| 2251 | { |
| 2252 | QStringList labels; |
| 2253 | if (!model) { |
| 2254 | return labels; |
| 2255 | } |
| 2256 | |
| 2257 | const QList<SliceModel*> slices = model->slices(); |
| 2258 | for (const SliceModel* slice : slices) { |
| 2259 | if (!slice || slice->audioMute() || slice->audioGain() <= 0.5f) { |
| 2260 | continue; |
| 2261 | } |
| 2262 | labels.push_back(slice->letter()); |
| 2263 | } |
| 2264 | labels.removeDuplicates(); |
| 2265 | std::sort(labels.begin(), labels.end(), [](const QString& a, const QString& b) { |
| 2266 | return QString::localeAwareCompare(a, b) < 0; |
| 2267 | }); |
| 2268 | return labels; |
| 2269 | } |
| 2270 | |
| 2271 | static QString formatSliceMix(const QStringList& sliceLabels) |
| 2272 | { |