uint Function::speedAdd(uint left, uint right) { if (speedNormalize(left) == infiniteSpeed() || speedNormalize(right) == infiniteSpeed()) return infiniteSpeed(); return speedNormalize(left + right); }
uint Function::speedSubstract(uint left, uint right) { if (right >= left) return 0; if (speedNormalize(right) == infiniteSpeed()) return 0; if (speedNormalize(left) == infiniteSpeed()) return infiniteSpeed(); return speedNormalize(left - right); }
uint Function::stringToSpeed(QString speed) { uint value = 0; if (speed == QChar(0x221E)) // Infinity symbol return infiniteSpeed(); QStringList hours = speed.split("h"); if (hours.count() > 1) { value += (hours.at(0).toUInt() * 60 * 60 * 1000); speed.remove(0, speed.indexOf("h") + 1); } QStringList mins = speed.split("m"); if (mins.count() > 1) { value += (mins.at(0).toUInt() * 60 * 1000); speed.remove(0, speed.indexOf("m") + 1); } QStringList secs = speed.split("s"); if (secs.count() > 1) { value += (secs.at(0).toUInt() * 1000); speed.remove(0, speed.indexOf("s") + 1); } // lround avoids toDouble precison issues (.03 transforms to .029) value += lround(speed.toDouble() * 1000.0); return speedNormalize(value); }
uint Function::stringToSpeed(QString speed) { uint value = 0; if (speed == QChar(0x221E)) // Infinity symbol return infiniteSpeed(); value += speedSplit(speed, "h") * 1000 * 60 * 60; value += speedSplit(speed, "m") * 1000 * 60; value += speedSplit(speed, "s") * 1000; if (speed.contains(".")) { // lround avoids toDouble precison issues (.03 transforms to .029) value += lround(speed.toDouble() * 1000.0); } else { if (speed.contains("ms")) speed = speed.split("ms").at(0); value += speed.toUInt(); } return speedNormalize(value); }