From 714a0eee50b922695153cdf4f07c05ee8c2f8576 Mon Sep 17 00:00:00 2001 From: Max-Wilhelm Bruker Date: Thu, 13 Jan 2011 15:02:13 +0100 Subject: [PATCH] don't waste bandwidth with spaces or default-value items --- cockatrice/src/remoteclient.cpp | 1 - common/decklist.cpp | 6 ------ common/decklist.h | 2 +- common/protocol.h | 2 ++ common/serializable_item.cpp | 3 +++ common/serializable_item.h | 9 +++++++++ servatrice/src/serversocketinterface.cpp | 1 - 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/cockatrice/src/remoteclient.cpp b/cockatrice/src/remoteclient.cpp index dd7c12d9..876f1b72 100644 --- a/cockatrice/src/remoteclient.cpp +++ b/cockatrice/src/remoteclient.cpp @@ -21,7 +21,6 @@ RemoteClient::RemoteClient(QObject *parent) xmlReader = new QXmlStreamReader; xmlWriter = new QXmlStreamWriter; - xmlWriter->setAutoFormatting(true); xmlWriter->setDevice(socket); } diff --git a/common/decklist.cpp b/common/decklist.cpp index ec5efbf5..1e7e0b07 100644 --- a/common/decklist.cpp +++ b/common/decklist.cpp @@ -109,7 +109,6 @@ AbstractDecklistNode *InnerDecklistNode::findChild(const QString &name) int InnerDecklistNode::height() const { - Q_ASSERT(!isEmpty()); return at(0)->height() + 1; } @@ -469,11 +468,6 @@ void DeckList::cleanList() setComments(); } -bool DeckList::isEmpty() const -{ - return root->isEmpty(); -} - DecklistCardNode *DeckList::addCard(const QString &cardName, const QString &zoneName) { InnerDecklistNode *zoneNode = dynamic_cast(root->findChild(zoneName)); diff --git a/common/decklist.h b/common/decklist.h index eca8dda0..d54959e2 100644 --- a/common/decklist.h +++ b/common/decklist.h @@ -148,7 +148,7 @@ public: static FileFormat getFormatFromNameFilter(const QString &selectedNameFilter); void cleanList(); - bool isEmpty() const; + bool isEmpty() const { return root->isEmpty() && name.isEmpty() && comments.isEmpty() && sideboardPlans.isEmpty(); } InnerDecklistNode *getRoot() const { return root; } DecklistCardNode *addCard(const QString &cardName, const QString &zoneName); diff --git a/common/protocol.h b/common/protocol.h index 7b7ba5c8..522b4974 100644 --- a/common/protocol.h +++ b/common/protocol.h @@ -60,6 +60,7 @@ public: bool getReceiverMayDelete() const { return receiverMayDelete; } void setReceiverMayDelete(bool _receiverMayDelete) { receiverMayDelete = _receiverMayDelete; } ProtocolItem(const QString &_itemType, const QString &_itemSubType); + bool isEmpty() const { return false; } }; class ProtocolItem_Invalid : public ProtocolItem { @@ -79,6 +80,7 @@ public: TopLevelProtocolItem(); bool readElement(QXmlStreamReader *xml); void writeElement(QXmlStreamWriter *xml); + bool isEmpty() const { return false; } }; // ---------------- diff --git a/common/serializable_item.cpp b/common/serializable_item.cpp index c7c2d913..3928e1cd 100644 --- a/common/serializable_item.cpp +++ b/common/serializable_item.cpp @@ -25,6 +25,9 @@ bool SerializableItem::readElement(QXmlStreamReader *xml) void SerializableItem::write(QXmlStreamWriter *xml) { + if (isEmpty()) + return; + xml->writeStartElement(itemType); if (!itemSubType.isEmpty()) xml->writeAttribute("type", itemSubType); diff --git a/common/serializable_item.h b/common/serializable_item.h index ef1e91ad..14e383e9 100644 --- a/common/serializable_item.h +++ b/common/serializable_item.h @@ -29,6 +29,7 @@ public: const QString &getItemSubType() const { return itemSubType; } virtual bool readElement(QXmlStreamReader *xml); virtual void writeElement(QXmlStreamWriter *xml) = 0; + virtual bool isEmpty() const = 0; void write(QXmlStreamWriter *xml); }; @@ -36,6 +37,7 @@ class SerializableItem_Invalid : public SerializableItem { public: SerializableItem_Invalid(const QString &_itemType) : SerializableItem(_itemType) { } void writeElement(QXmlStreamWriter * /*xml*/) { } + bool isEmpty() const { return true; } }; class SerializableItem_Map : public SerializableItem { @@ -67,6 +69,7 @@ public: ~SerializableItem_Map(); bool readElement(QXmlStreamReader *xml); void writeElement(QXmlStreamWriter *xml); + bool isEmpty() const { return itemMap.isEmpty() && itemList.isEmpty(); } void appendItem(SerializableItem *item) { itemList.append(item); } }; @@ -81,6 +84,7 @@ public: : SerializableItem(_itemType), data(_data) { } const QString &getData() { return data; } void setData(const QString &_data) { data = _data; } + bool isEmpty() const { return data.isEmpty(); } }; class SerializableItem_Int : public SerializableItem { @@ -94,6 +98,7 @@ public: : SerializableItem(_itemType), data(_data) { } int getData() { return data; } void setData(int _data) { data = _data; } + bool isEmpty() const { return data == -1; } }; class SerializableItem_Bool : public SerializableItem { @@ -107,6 +112,7 @@ public: : SerializableItem(_itemType), data(_data) { } bool getData() { return data; } void setData(bool _data) { data = _data; } + bool isEmpty() const { return data == false; } }; class SerializableItem_Color : public SerializableItem { @@ -120,6 +126,7 @@ public: : SerializableItem(_itemType), data(_data) { } const Color &getData() { return data; } void setData(const Color &_data) { data = _data; } + bool isEmpty() const { return data.getValue() == 0; } }; class SerializableItem_DateTime : public SerializableItem { @@ -133,6 +140,7 @@ public: : SerializableItem(_itemType), data(_data) { } const QDateTime &getData() { return data; } void setData(const QDateTime &_data) { data = _data; } + bool isEmpty() const { return data == QDateTime(); } }; class SerializableItem_ByteArray : public SerializableItem { @@ -146,6 +154,7 @@ public: : SerializableItem(_itemType), data(_data) { } const QByteArray &getData() { return data; } void setData(const QByteArray &_data) { data = _data; } + bool isEmpty() const { return data.isEmpty(); } }; #endif diff --git a/servatrice/src/serversocketinterface.cpp b/servatrice/src/serversocketinterface.cpp index a57a660c..6d26d2ac 100644 --- a/servatrice/src/serversocketinterface.cpp +++ b/servatrice/src/serversocketinterface.cpp @@ -34,7 +34,6 @@ ServerSocketInterface::ServerSocketInterface(Servatrice *_server, QTcpSocket *_s { xmlWriter = new QXmlStreamWriter; xmlWriter->setDevice(socket); - xmlWriter->setAutoFormatting(true); xmlReader = new QXmlStreamReader;