summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--utils/themeeditor/graphics/rbviewport.cpp15
-rw-r--r--utils/themeeditor/graphics/rbviewport.h4
-rw-r--r--utils/themeeditor/models/parsetreenode.cpp12
-rw-r--r--utils/themeeditor/resources/deviceoptions1
4 files changed, 14 insertions, 18 deletions
diff --git a/utils/themeeditor/graphics/rbviewport.cpp b/utils/themeeditor/graphics/rbviewport.cpp
index 5197c2edc6..a2e7bf49d3 100644
--- a/utils/themeeditor/graphics/rbviewport.cpp
+++ b/utils/themeeditor/graphics/rbviewport.cpp
@@ -34,7 +34,7 @@ RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info)
foreground(info.screen()->foreground()),
background(info.screen()->background()), textOffset(0,0),
screen(info.screen()), textAlign(Left), showStatusBar(false),
- statusBarTexture(":/render/statusbar.png"), line(node->line)
+ statusBarTexture(":/render/statusbar.png")
{
if(!node->tag)
{
@@ -187,17 +187,24 @@ 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;
+ skin_element* root = id3;
/* The line will be a linked list */
- root = root->children[0];
+ if(root->children_count > 0)
+ root = root->children[0];
int song = start + info.device()->data("pp").toInt();
int numSongs = info.device()->data("pe").toInt();
+ int halfWay = (numSongs - song) / 2 + 1 + song;
while(song <= numSongs && textOffset.y() + lineHeight < size.height())
{
+ if(song == halfWay)
+ {
+ root = noId3;
+ if(root->children_count > 0)
+ root = root->children[0];
+ }
skin_element* current = root;
while(current)
{
diff --git a/utils/themeeditor/graphics/rbviewport.h b/utils/themeeditor/graphics/rbviewport.h
index 37c642574f..624a9686da 100644
--- a/utils/themeeditor/graphics/rbviewport.h
+++ b/utils/themeeditor/graphics/rbviewport.h
@@ -66,8 +66,6 @@ public:
void showPlaylist(const RBRenderInfo& info, int start, skin_element* id3,
skin_element* noId3);
- int declarationLine(){ return line; }
-
private:
void alignLeft();
@@ -93,8 +91,6 @@ private:
bool showStatusBar;
QPixmap statusBarTexture;
-
- int line;
};
#endif // RBVIEWPORT_H
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp
index f786819b17..08ce703859 100644
--- a/utils/themeeditor/models/parsetreenode.cpp
+++ b/utils/themeeditor/models/parsetreenode.cpp
@@ -518,13 +518,7 @@ void ParseTreeNode::render(const RBRenderInfo &info, RBViewport* viewport,
{
for(int i = 0; i < children.count(); i++)
children[i]->render(info, viewport);
- /* TODO
- * The second element of this if is a temporary hack to allow Vf and Vb
- * tags in a viewport without forcing the first line of text down. A
- * proper solution to this problem needs to be worked out in the parser
- * as soon as possible
- */
- if(!noBreak && element->line != viewport->declarationLine())
+ if(!noBreak)
viewport->newLine();
}
else if(element->type == TEXT)
@@ -787,8 +781,8 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
case 'p':
/* %Vp */
viewport->showPlaylist(info, element->params[0].data.numeric,
- element->params[2].data.code,
- element->params[1].data.code);
+ element->params[1].data.code,
+ element->params[2].data.code);
return true;
case 'I':
diff --git a/utils/themeeditor/resources/deviceoptions b/utils/themeeditor/resources/deviceoptions
index 5417ca6b2d..10a1a89d75 100644
--- a/utils/themeeditor/resources/deviceoptions
+++ b/utils/themeeditor/resources/deviceoptions
@@ -114,7 +114,6 @@ ra ; Autoscore ; spin(0,10) ; 7
?C ; Album Art Available ; check ; true
artwidth ; Album Art Width ; spin(0,500) ; 100
artheight; Album Art Height ; spin(0,500) ; 100
-id3available ; ID3 Info Available ; check ; true
[Hardware Status]
bl ; Battery Level (-1 for unknown) ; spin(-1,100) ; 50