diff --git a/utils/themeeditor/graphics/rbviewport.cpp b/utils/themeeditor/graphics/rbviewport.cpp index f646d830dd..fea1055935 100644 --- a/utils/themeeditor/graphics/rbviewport.cpp +++ b/utils/themeeditor/graphics/rbviewport.cpp @@ -255,69 +255,15 @@ void RBViewport::write(QString text) } void RBViewport::showPlaylist(const RBRenderInfo &info, int start, - skin_element *id3, skin_element *noId3) + ParseTreeNode* lines) { - /* Determining whether ID3 info is available */ - skin_element* root = id3; - - /* The line will be a linked list */ - 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) - { - - 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; - } + lines->render(info, this); newLine(); song++; } diff --git a/utils/themeeditor/graphics/rbviewport.h b/utils/themeeditor/graphics/rbviewport.h index cc47e41666..8e17ac15de 100644 --- a/utils/themeeditor/graphics/rbviewport.h +++ b/utils/themeeditor/graphics/rbviewport.h @@ -78,8 +78,8 @@ public: void enableStatusBar(){ showStatusBar = true; } - void showPlaylist(const RBRenderInfo& info, int start, skin_element* id3, - skin_element* noId3); + void showPlaylist(const RBRenderInfo& info, int start, + ParseTreeNode* lines); void makeFullScreen(); diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp index 9d23428349..f15fa8e31a 100644 --- a/utils/themeeditor/models/parsetreenode.cpp +++ b/utils/themeeditor/models/parsetreenode.cpp @@ -918,8 +918,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport) case 'p': /* %Vp */ viewport->showPlaylist(info, element->params[0].data.number, - element->params[1].data.code, - element->params[2].data.code); + children[1]); return true; case 'I':