forked from len0rd/rockbox
Theme Editor: Fixed line numbering bug in parser. Implemented playlist display in renderer: playlist will use info for next track for all tracks other than the current track
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27227 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
c794c1feae
commit
26a2f810f1
5 changed files with 75 additions and 0 deletions
|
@ -463,6 +463,7 @@ static int skin_parse_tag(struct skin_element* element, char** document)
|
||||||
cursor++;
|
cursor++;
|
||||||
if (*cursor)
|
if (*cursor)
|
||||||
cursor++;
|
cursor++;
|
||||||
|
skin_line++;
|
||||||
*document = cursor;
|
*document = cursor;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -628,6 +629,7 @@ static int skin_parse_tag(struct skin_element* element, char** document)
|
||||||
cursor++;
|
cursor++;
|
||||||
if (*cursor)
|
if (*cursor)
|
||||||
cursor++;
|
cursor++;
|
||||||
|
skin_line++;
|
||||||
}
|
}
|
||||||
|
|
||||||
*document = cursor;
|
*document = cursor;
|
||||||
|
|
|
@ -183,6 +183,68 @@ void RBViewport::write(QString text)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RBViewport::showPlaylist(const RBRenderInfo &info, int start,
|
||||||
|
skin_element *id3, skin_element *noId3)
|
||||||
|
{
|
||||||
|
/* Determining whether ID3 info is available */
|
||||||
|
skin_element* root = info.device()->data("id3available").toBool()
|
||||||
|
? id3 : noId3;
|
||||||
|
|
||||||
|
/* The line will be a linked list */
|
||||||
|
root = root->children[0];
|
||||||
|
|
||||||
|
int song = start + info.device()->data("pp").toInt();
|
||||||
|
int numSongs = info.device()->data("pe").toInt();
|
||||||
|
|
||||||
|
while(song <= numSongs && textOffset.y() + lineHeight < size.height())
|
||||||
|
{
|
||||||
|
skin_element* current = root;
|
||||||
|
while(current)
|
||||||
|
{
|
||||||
|
|
||||||
|
if(current->type == TEXT)
|
||||||
|
{
|
||||||
|
write(QString((char*)current->data));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(current->type == TAG)
|
||||||
|
{
|
||||||
|
QString tag(current->tag->name);
|
||||||
|
if(tag == "pp")
|
||||||
|
{
|
||||||
|
write(QString::number(song));
|
||||||
|
}
|
||||||
|
else if(tag == "pt")
|
||||||
|
{
|
||||||
|
write(QObject::tr("00:00"));
|
||||||
|
}
|
||||||
|
else if(tag[0] == 'i' || tag[0] == 'f')
|
||||||
|
{
|
||||||
|
if(song == info.device()->data("pp").toInt())
|
||||||
|
{
|
||||||
|
write(info.device()->data(tag).toString());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* If we're not on the current track, use the next
|
||||||
|
* track info
|
||||||
|
*/
|
||||||
|
if(tag[0] == 'i')
|
||||||
|
tag = QString("I") + tag.right(1);
|
||||||
|
else
|
||||||
|
tag = QString("F") + tag.right(1);
|
||||||
|
write(info.device()->data(tag).toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
current = current->next;
|
||||||
|
}
|
||||||
|
newLine();
|
||||||
|
song++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void RBViewport::alignLeft()
|
void RBViewport::alignLeft()
|
||||||
{
|
{
|
||||||
int y = textOffset.y();
|
int y = textOffset.y();
|
||||||
|
|
|
@ -59,6 +59,9 @@ public:
|
||||||
|
|
||||||
void enableStatusBar(){ showStatusBar = true; }
|
void enableStatusBar(){ showStatusBar = true; }
|
||||||
|
|
||||||
|
void showPlaylist(const RBRenderInfo& info, int start, skin_element* id3,
|
||||||
|
skin_element* noId3);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void alignLeft();
|
void alignLeft();
|
||||||
|
|
|
@ -765,6 +765,13 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
|
||||||
Qt::black));
|
Qt::black));
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
case 'p':
|
||||||
|
/* %Vp */
|
||||||
|
viewport->showPlaylist(info, element->params[0].data.numeric,
|
||||||
|
element->params[1].data.code,
|
||||||
|
element->params[2].data.code);
|
||||||
|
return true;
|
||||||
|
|
||||||
case 'I':
|
case 'I':
|
||||||
/* %VI */
|
/* %VI */
|
||||||
info.screen()->makeCustomUI(element->params[0].data.text);
|
info.screen()->makeCustomUI(element->params[0].data.text);
|
||||||
|
|
|
@ -114,6 +114,7 @@ ra ; Autoscore ; spin(0,10) ; 7
|
||||||
?C ; Album Art Available ; check ; true
|
?C ; Album Art Available ; check ; true
|
||||||
artwidth ; Album Art Width ; spin(0,500) ; 100
|
artwidth ; Album Art Width ; spin(0,500) ; 100
|
||||||
artheight; Album Art Height ; spin(0,500) ; 100
|
artheight; Album Art Height ; spin(0,500) ; 100
|
||||||
|
id3available ; ID3 Info Available ; check ; true
|
||||||
|
|
||||||
[Hardware Status]
|
[Hardware Status]
|
||||||
bl ; Battery Level (-1 for unknown) ; spin(-1,100) ; 50
|
bl ; Battery Level (-1 for unknown) ; spin(-1,100) ; 50
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue