From 0d75b1278cb4ef68e64850978a94d4c973f8c1e8 Mon Sep 17 00:00:00 2001 From: Micke Prag Date: Wed, 15 Apr 2009 17:48:49 +0000 Subject: [PATCH] Added parentnode 'type' to the list of vendors and devices --- telldus-gui/TelldusGui/vendordevicemodel.cpp | 8 ++--- .../TelldusGui/vendordevicetreeitem.cpp | 32 ++++++++++++++++--- telldus-gui/TelldusGui/vendordevicetreeitem.h | 3 +- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/telldus-gui/TelldusGui/vendordevicemodel.cpp b/telldus-gui/TelldusGui/vendordevicemodel.cpp index d1204bc0..cea28538 100644 --- a/telldus-gui/TelldusGui/vendordevicemodel.cpp +++ b/telldus-gui/TelldusGui/vendordevicemodel.cpp @@ -28,17 +28,13 @@ QVariant VendorDeviceModel::data(const QModelIndex &index, int role) const { if (role == Qt::DisplayRole) { VendorDeviceTreeItem *item = static_cast(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(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(); } diff --git a/telldus-gui/TelldusGui/vendordevicetreeitem.cpp b/telldus-gui/TelldusGui/vendordevicetreeitem.cpp index 8ee79fb4..4a07d089 100644 --- a/telldus-gui/TelldusGui/vendordevicetreeitem.cpp +++ b/telldus-gui/TelldusGui/vendordevicetreeitem.cpp @@ -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()) { diff --git a/telldus-gui/TelldusGui/vendordevicetreeitem.h b/telldus-gui/TelldusGui/vendordevicetreeitem.h index f822677a..276cef9d 100644 --- a/telldus-gui/TelldusGui/vendordevicetreeitem.h +++ b/telldus-gui/TelldusGui/vendordevicetreeitem.h @@ -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 );