From cd98d01926c9a8fbc981a93546726c3d4f7d4a03 Mon Sep 17 00:00:00 2001 From: Robert Bieber Date: Thu, 8 Jul 2010 08:14:04 +0000 Subject: Theme Editor: Implemented the song time (pS, pE, px, pc, etc.) in the device configuration panel, all depending on one value for current time in song and one value for length of song git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27347 a1c6a512-1295-4272-9138-f99709370657 --- utils/themeeditor/gui/devicestate.cpp | 80 +++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) (limited to 'utils/themeeditor/gui/devicestate.cpp') diff --git a/utils/themeeditor/gui/devicestate.cpp b/utils/themeeditor/gui/devicestate.cpp index 12198f5..8802bd5 100644 --- a/utils/themeeditor/gui/devicestate.cpp +++ b/utils/themeeditor/gui/devicestate.cpp @@ -30,7 +30,9 @@ #include #include #include +#include +#include DeviceState::DeviceState(QWidget *parent) : QWidget(parent), tabs(this) @@ -227,6 +229,47 @@ QVariant DeviceState::data(QString tag, int paramCount, else return QVariant(); } + else if(tag == "pc") + { + int secs = data("?pc").toInt(); + return secsToString(secs); + } + else if(tag == "pr") + { + int secs = data("?pt").toInt() - data("?pc").toInt(); + if(secs < 0) + secs = 0; + return secsToString(secs); + } + else if(tag == "pt") + { + int secs = data("?pt").toInt(); + return secsToString(secs); + } + else if(tag == "px") + { + int totalTime = data("?pt").toInt(); + int currentTime = data("?pc").toInt(); + return currentTime * 100 / totalTime; + } + else if(tag == "pS") + { + double threshhold = paramCount > 0 + ? std::atof(params[0].data.text) : 10; + if(data("?pc").toDouble() <= threshhold) + return true; + else + return false; + } + else if(tag == "pE") + { + double threshhold = paramCount > 0 + ? std::atof(params[0].data.text) : 10; + if(data("?pt").toDouble() - data("?pc").toDouble() <= threshhold) + return true; + else + return false; + } QPair found = inputs.value(tag, QPair(Slide, 0)); @@ -335,3 +378,40 @@ QString DeviceState::directory(QString path, int level) index = 0; return dirs[index]; } + +QString DeviceState::secsToString(int secs) +{ + int hours = 0; + int minutes = 0; + while(secs >= 60) + { + minutes++; + secs -= 60; + } + + while(minutes >= 60) + { + hours++; + minutes -= 60; + } + + QString retval; + + if(hours > 0) + { + retval += QString::number(hours); + if(minutes < 10) + retval += ":0"; + else + retval += ":"; + } + + retval += QString::number(minutes); + if(secs < 10) + retval += ":0"; + else + retval += ":"; + + retval += QString::number(secs); + return retval; +} -- cgit v1.1