Added parentnode 'type' to the list of vendors and devices

This commit is contained in:
Micke Prag 2009-04-15 17:48:49 +00:00
parent b2bc7c9a9f
commit 0d75b1278c
3 changed files with 32 additions and 11 deletions

View file

@ -28,17 +28,13 @@ QVariant VendorDeviceModel::data(const QModelIndex &index, int role) const {
if (role == Qt::DisplayRole) {
VendorDeviceTreeItem *item = static_cast<VendorDeviceTreeItem*>(index.internalPointer());
if (item->isDevice()) {
return item->data(index.column());
}
return "";
return item->data(index.column());
} else if (role == Qt::DecorationRole) {
VendorDeviceTreeItem *item = static_cast<VendorDeviceTreeItem*>(index.internalPointer());
QPixmap pixmap = item->image();
if (item->isDevice()) {
QPixmap pixmap = item->image();
return pixmap.scaled(22, 22, Qt::KeepAspectRatio, Qt::SmoothTransformation);
}
return pixmap.scaled(150, 15, Qt::KeepAspectRatio, Qt::SmoothTransformation);
}
return QVariant();
}

View file

@ -112,8 +112,8 @@ bool VendorDeviceTreeItem::parseXml( const QString &filename ) {
if (reader.isStartElement()) {
if (reader.name() == "devices") { //First element
reader.readNext();
} else if (reader.name() == "vendor") {
parseVendor( &reader );
} else if (reader.name() == "type") {
parseType( &reader );
} else {
reader.raiseError( QObject::tr("Not a Telldus device-file"));
}
@ -138,12 +138,36 @@ bool VendorDeviceTreeItem::parseXml( const QString &filename ) {
return true;
}
void VendorDeviceTreeItem::parseVendor( QXmlStreamReader *reader ) {
void VendorDeviceTreeItem::parseType( QXmlStreamReader *reader ) {
VendorDeviceTreeItem *item = new VendorDeviceTreeItem(0, this);
item->deviceName = reader->attributes().value("name").toString();
item->img = reader->attributes().value("image").toString();
appendChild(item);
reader->readNext();
while(!reader->atEnd()) {
if (reader->isEndElement()) {
reader->readNext();
break;
}
if (reader->isStartElement()) {
if (reader->name() == "vendor") {
parseVendor( reader, item );
} else {
skipUnknownElement( reader );
}
} else {
reader->readNext();
}
}
}
void VendorDeviceTreeItem::parseVendor( QXmlStreamReader *reader, VendorDeviceTreeItem *parent ) {
VendorDeviceTreeItem *item = new VendorDeviceTreeItem(0, parent);
item->deviceName = reader->attributes().value("name").toString();
item->img = reader->attributes().value("image").toString();
parent->appendChild(item);
reader->readNext();
while(!reader->atEnd()) {
if (reader->isEndElement()) {

View file

@ -31,7 +31,8 @@ public:
VendorDeviceTreeItem *findByDeviceId( int deviceId ) const;
private:
void parseVendor( QXmlStreamReader *reader );
void parseType( QXmlStreamReader *reader );
void parseVendor( QXmlStreamReader *reader, VendorDeviceTreeItem *parent );
void parseDevice( QXmlStreamReader *reader, VendorDeviceTreeItem *parent );
void skipUnknownElement( QXmlStreamReader *reader );