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

Function describeRule

src/core/NetRecurrence.cpp:270–303  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

268}
269
270QString describeRule(const QString& rrule)
271{
272 if (rrule.trimmed().isEmpty())
273 return QStringLiteral("Once");
274
275 const ParsedRule rule = parseRule(rrule);
276 if (!rule.isValid())
277 return {};
278
279 switch (rule.freq) {
280 case ParsedRule::Freq::Daily:
281 return rule.interval > 1 ? QString("Every %1 days").arg(rule.interval) : "Daily";
282 case ParsedRule::Freq::Weekly: {
283 QStringList names;
284 for (int dow : rule.weekdays)
285 names << weekdayLongName(dow);
286 const QString on = names.isEmpty() ? QString() : QString(" on %1").arg(names.join(", "));
287 if (rule.interval > 1)
288 return QString("Every %1 weeks%2").arg(rule.interval).arg(on);
289 return QString("Weekly%1").arg(on);
290 }
291 case ParsedRule::Freq::Monthly: {
292 const QString body = QString("on the %1 %2")
293 .arg(ordinalName(rule.monthlyOrdinal))
294 .arg(weekdayLongName(rule.monthlyWeekday));
295 if (rule.interval > 1)
296 return QString("Every %1 months %2").arg(rule.interval).arg(body);
297 return QString("Monthly %1").arg(body);
298 }
299 case ParsedRule::Freq::Invalid:
300 break;
301 }
302 return {};
303}
304
305} // namespace NetRecurrence
306} // namespace AetherSDR

Callers 2

populateTableMethod · 0.85
mainFunction · 0.85

Calls 5

parseRuleFunction · 0.85
weekdayLongNameFunction · 0.85
ordinalNameFunction · 0.85
isEmptyMethod · 0.45
isValidMethod · 0.45

Tested by 1

mainFunction · 0.68