3 QString DataUtils::stringToFilename(const QString &s) {
18 if (!f.isEmpty() && f.at(0) == '.')
19 f = f.mid(1).trimmed();
24 QString DataUtils::regioneCode(const QLocale &locale) {
25 QString name = locale.name();
26 int index = name.indexOf('_');
27 if (index == -1) return QString();
28 return name.right(index);
31 QString DataUtils::systemRegioneCode() {
32 return regioneCode(QLocale::system());
35 uint DataUtils::parseIsoPeriod(const QString &isoPeriod) {
36 // QTime time = QTime::fromString("1mm12car00", "PT8M50S");
37 // ^P((\d+Y)?(\d+M)?(\d+W)?(\d+D)?)?(T(\d+H)?(\d+M)?(\d+S)?)?$
39 QRegExp isoPeriodRE("^PT(\d+H)?(\d+M)?(\d+S)?)?$");
40 if (!isoPeriodRE.indexIn(isoPeriod)) {
41 qWarning() << "Cannot parse ISO period" << isoPeriod;
45 int totalCaptures = isoPeriodRE.capturedTexts();
46 for (int i = totalCaptures; i > 0; --i) {
51 uint days = 0, hours = 0, minutes = 0, seconds = 0;
53 QByteArray ba = isoPeriod.toLocal8Bit();
54 const char *ptr = ba.data();
57 if(*ptr == 'P' || *ptr == 'T') {
64 if (sscanf(ptr, "%d%c%n", &value, &type, &charsRead) != 2)
79 uint period = ((days * 24 + hours) * 60 + minutes) * 60 + seconds;