1
0
Fork 0
forked from len0rd/rockbox

Theme Editor: Began working on special cases for device option panel. Implemented path info for current and next file

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27346 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Bieber 2010-07-08 06:54:08 +00:00
parent eb93e3b3d2
commit 6358d41f31
4 changed files with 67 additions and 21 deletions

View file

@ -198,6 +198,36 @@ DeviceState::~DeviceState()
QVariant DeviceState::data(QString tag, int paramCount,
skin_tag_parameter *params)
{
/* Handling special cases */
if(tag.toLower() == "fm")
{
QString path = tag[0].isLower()
? data("file").toString() : data("nextfile").toString();
return fileName(path, true);
}
else if(tag.toLower() == "fn")
{
QString path = tag[0].isLower()
? data("file").toString() : data("nextfile").toString();
return fileName(path, false);
}
else if(tag.toLower() == "fp")
{
if(tag[0].isLower())
return data("file").toString();
else
return data("nextfile").toString();
}
else if(tag.toLower() == "d")
{
QString path = tag[0].isLower()
? data("file").toString() : data("nextfile").toString();
if(paramCount > 0)
return directory(path, params[0].data.numeric);
else
return QVariant();
}
QPair<InputType, QWidget*> found =
inputs.value(tag, QPair<InputType, QWidget*>(Slide, 0));
@ -279,3 +309,29 @@ void DeviceState::input()
{
emit settingsChanged();
}
QString DeviceState::fileName(QString path, bool extension)
{
path = path.split("/").last();
if(!extension)
{
QString sum;
QStringList name = path.split(".");
for(int i = 0; i < name.count() - 1; i++)
sum.append(name[i]);
return sum;
}
else
{
return path;
}
}
QString DeviceState::directory(QString path, int level)
{
QStringList dirs = path.split("/");
int index = dirs.count() - 1 - level;
if(index < 0)
index = 0;
return dirs[index];
}