diff options
| author | Robert Bieber <robby@bieberphoto.com> | 2010-05-30 01:20:05 +0000 |
|---|---|---|
| committer | Robert Bieber <robby@bieberphoto.com> | 2010-05-30 01:20:05 +0000 |
| commit | 9843626b6941f63b964c3352e996032247115aad (patch) | |
| tree | 157a0a54d14c403e859fe44c76ecb1fdb6f98bfb /utils/themeeditor/parsetreenode.cpp | |
| parent | cc07d688668d6e8ec3c6bb66fe2e36462ef6c8b7 (diff) | |
| download | rockbox-9843626b6941f63b964c3352e996032247115aad.zip rockbox-9843626b6941f63b964c3352e996032247115aad.tar.gz rockbox-9843626b6941f63b964c3352e996032247115aad.tar.bz2 rockbox-9843626b6941f63b964c3352e996032247115aad.tar.xz | |
Themeditor: Got the ParseTreeNode class in good shape, preparing to start on ParseTreeModel
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26400 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/parsetreenode.cpp')
| -rw-r--r-- | utils/themeeditor/parsetreenode.cpp | 160 |
1 files changed, 153 insertions, 7 deletions
diff --git a/utils/themeeditor/parsetreenode.cpp b/utils/themeeditor/parsetreenode.cpp index ccfac61..60a18b8 100644 --- a/utils/themeeditor/parsetreenode.cpp +++ b/utils/themeeditor/parsetreenode.cpp @@ -181,6 +181,10 @@ QString ParseTreeNode::genCode() const buffer.append(DEFAULTSYM); break; + case skin_tag_parameter::CODE: + buffer.append(QObject::tr("This doesn't belong here")); + break; + } } else @@ -191,10 +195,152 @@ QString ParseTreeNode::genCode() const return buffer; } -/* -ParseTreeNode* child(int row); -int numChildren() const; -QVariant data(int column) const; -int getRow() const; -ParseTreeNode* getParent(); -*/ + +ParseTreeNode* ParseTreeNode::child(int row) +{ + if(row < 0 || row >= children.count()) + return 0; + + return children[row]; +} + +int ParseTreeNode::numChildren() const +{ + return children.count(); +} + + +QVariant ParseTreeNode::data(int column) const +{ + switch(column) + { + /* Column 0 is the element type */ + case 0: + if(element) + { + switch(element->type) + { + case LINE: + return QObject::tr("Logical Line"); + + case SUBLINES: + return QObject::tr("Alternator"); + + case COMMENT: + return QObject::tr("Comment"); + + case CONDITIONAL: + return QObject::tr("Conditional Tag"); + + case TAG: + return QObject::tr("Tag"); + + case NEWLINE: + return QObject::tr("Newline"); + + case TEXT: + return QObject::tr("Plaintext"); + } + } + else if(param) + { + switch(param->type) + { + case skin_tag_parameter::STRING: + return QObject::tr("String"); + + case skin_tag_parameter::NUMERIC: + return QObject::tr("Number"); + + case skin_tag_parameter::DEFAULT: + return QObject::tr("Default Argument"); + + case skin_tag_parameter::CODE: + return QObject::tr("This doesn't belong here"); + } + } + else + { + return QObject::tr("Root"); + } + + break; + + /* Column 1 is the value */ + case 1: + if(element) + { + switch(element->type) + { + case LINE: + return QString(); + + case SUBLINES: + return QString(); + + case NEWLINE: + return QObject::tr("\\n"); + + case TEXT: + case COMMENT: + return QString(element->text); + + case CONDITIONAL: + case TAG: + return QString(element->name); + } + } + else if(param) + { + switch(param->type) + { + case skin_tag_parameter::DEFAULT: + return QObject::tr("-"); + + case skin_tag_parameter::STRING: + return QString(param->data.text); + + case skin_tag_parameter::NUMERIC: + return QString::number(param->data.numeric, 10); + + case skin_tag_parameter::CODE: + return QObject::tr("Seriously, something's wrong here"); + } + } + else + { + return QString(); + } + break; + + /* Column 2 is the line number */ + case 2: + if(element) + return QString::number(element->line, 10); + else + return QString(); + break; + } + + return QVariant(); +} + + +int ParseTreeNode::getRow() const +{ + if(!parent) + return -1; + + return parent->children.indexOf(const_cast<ParseTreeNode*>(this)); +} + +ParseTreeNode* ParseTreeNode::getParent() const +{ + return parent; +} + +ParseTreeNode::~ParseTreeNode() +{ + for(int i = 0; i < children.count(); i++) + delete children[i]; +} |