Beispiel #1
0
uint Function::speedAdd(uint left, uint right)
{
    if (speedNormalize(left) == infiniteSpeed()
        || speedNormalize(right) == infiniteSpeed())
        return infiniteSpeed();

    return speedNormalize(left + right);
}
Beispiel #2
0
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);
}
Beispiel #3
0
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);
}
Beispiel #4
0
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);
}