/* PIQt Utils - Qt utilites for PIP Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef CONNECTION_VIEW_H #define CONNECTION_VIEW_H #include "blockview.h" #include "piconnection.h" #include "qad_piqt_utils_export.h" const int __CV_Device = 1; const int __CV_Filter = 2; const int __CV_Sender = 3; class QAD_PIQT_UTILS_EXPORT DeviceItem: public BlockItem { public: DeviceItem(); void setName(const QString & n) {addProperty(BlockItem::Property("name", "", n)); rename();} void setPath(const QString & p) {addProperty(BlockItem::Property("device", "", p)); rename();} void setMode(PIIODevice::DeviceMode m) {addProperty(BlockItem::Property("mode", "", int(m))); rename();} void setOptions(PIIODevice::DeviceOptions o) {addProperty(BlockItem::Property("options", "", int(o))); rename();} void setDisconnectTimeout(double v) {addProperty(BlockItem::Property("disconnectTimeout", "", v)); rename();} void setBufferSize(int v) {addProperty(BlockItem::Property("bufferSize", "", v)); rename();} QString name() const {return propertyByName("name").value.toString();} QString path() const {return propertyByName("device").value.toString();} PIIODevice::DeviceMode mode() const {return PIIODevice::DeviceMode(propertyByName("mode").value.toInt());} PIIODevice::DeviceOptions options() const {return PIIODevice::DeviceOptions(propertyByName("options").value.toInt());} double disconnectTimeout() const {return propertyByName("disconnectTimeout").value.toDouble();} int bufferSize() const {return propertyByName("bufferSize").value.toInt();} void rename(); protected: AlignedTextItem * text_name, * text_path; }; class QAD_PIQT_UTILS_EXPORT FilterItem: public BlockItem { public: FilterItem(); void setName(const QString & n) {addProperty(BlockItem::Property("name", "", n)); rename();} void setMode(PIPacketExtractor::SplitMode m) {addProperty(BlockItem::Property("mode", "", int(m))); rename();} void setHeader(const QString & v) {addProperty(BlockItem::Property("header", "", v)); rename();} void setFooter(const QString & v) {addProperty(BlockItem::Property("footer", "", v)); rename();} void setTimeout(double v) {addProperty(BlockItem::Property("timeout", "", v)); rename();} void setPacketSize(int v) {addProperty(BlockItem::Property("size", "", v)); rename();} void setDisconnectTimeout(double v) {addProperty(BlockItem::Property("disconnectTimeout", "", v)); rename();} void setBufferSize(int v) {addProperty(BlockItem::Property("bufferSize", "", v)); rename();} QString name() const {return propertyByName("name").value.toString();} PIPacketExtractor::SplitMode mode() const {return PIPacketExtractor::SplitMode(propertyByName("mode").value.toInt());} QString header() const {return propertyByName("header").value.toString();} QString footer() const {return propertyByName("footer").value.toString();} double timeout() const {return propertyByName("timeout").value.toDouble();} int packetSize() const {return propertyByName("size").value.toInt();} double disconnectTimeout() const {return propertyByName("disconnectTimeout").value.toDouble();} int bufferSize() const {return propertyByName("bufferSize").value.toInt();} void rename(); protected: AlignedTextItem * text_name, * text_mode; }; class QAD_PIQT_UTILS_EXPORT SenderItem: public BlockItem { public: SenderItem(); void setName(const QString & n) {addProperty(BlockItem::Property("name", "", n)); rename();} void setData(const QString & p) {addProperty(BlockItem::Property("data", "", p)); rename();} void setFrequency(double m) {addProperty(BlockItem::Property("frequency", "", m)); rename();} QString name() const {return propertyByName("name").value.toString();} QString data() const {return propertyByName("data").value.toString();} double frequency() const {return propertyByName("frequency").value.toDouble();} void rename(); protected: AlignedTextItem * text_name, * text_frequency; }; class QAD_PIQT_UTILS_EXPORT ConnectionView: public BlockView { Q_OBJECT public: explicit ConnectionView(QWidget * parent = 0); ~ConnectionView(); DeviceItem * addDevice(const QString & name, const QString & path); FilterItem * addFilter(const QString & name); SenderItem * addSender(const QString & name); DeviceItem * findDevice(const QString & name) const; QList allDevices() const {return allByType(__CV_Device);} QList allFilters() const {return allByType(__CV_Filter);} QList allSenders() const {return allByType(__CV_Sender);} private: QSize sizeHint() const {return QSize(800, 600);} void loadBus(BlockBusItem * bus); void placeBlock(BlockItem * b, QList coll); QList allByType(int type_) const; private slots: }; #endif // CONNECTION_VIEW_H