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;
83 QString DataUtils::formatDateTime(const QDateTime &dt) {
84 const qint64 seconds = dt.secsTo(QDateTime::currentDateTime());
88 s = qApp->translate("DataUtils", "Just now");
89 } else if (seconds < (f *= 60)) {
90 s = qApp->translate("DataUtils", "%n minute(s) ago", "", seconds / 60);
91 } else if (seconds < (f *= 24)) {
92 s = qApp->translate("DataUtils", "%n hour(s) ago", "", seconds / (60*60));
93 } else if (seconds < (f *= 7)) {
94 s = qApp->translate("DataUtils", "%n day(s) ago", "", seconds / (60*60*24));
95 } else if (seconds < (f = 60*60*24*30)) {
96 s = qApp->translate("DataUtils", "%n weeks(s) ago", "", seconds / (60*60*24*7));
97 } else if (seconds < (f = 60*60*24*365)) {
98 s = qApp->translate("DataUtils", "%n month(s) ago", "", seconds / (60*60*24*30));
100 s = dt.date().toString(Qt::DefaultLocaleShortDate);
105 QString DataUtils::formatDuration(uint secs) {
108 uint seconds = d % 60;
110 uint minutes = d % 60;
114 return res.sprintf("%d:%02d", minutes, seconds);
115 return res.sprintf("%d:%02d:%02d", hours, minutes, seconds);