/* 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 pivariant_edit_widgets_H #define pivariant_edit_widgets_H #include "pivariant_edit.h" #include #include #include #include #include #include #include #include #include namespace PIVariantEditors { class QAD_PIQT_UTILS_EXPORT Bool: public PIVariantEditorBase { Q_OBJECT public: Bool() { widget = new QCheckBox(); layout()->addWidget(widget); } void setValue(const PIVariant & v) override { widget->setChecked(v.toBool()); } PIVariant value() const override { return widget->isChecked(); } private: QCheckBox * widget; }; class QAD_PIQT_UTILS_EXPORT Int: public PIVariantEditorBase { Q_OBJECT public: Int() { widget = new QSpinBox(); widget->setRange(-std::numeric_limits::max(), std::numeric_limits::max()); layout()->addWidget(widget); } void setValue(const PIVariant & v) override { widget->setValue(v.toInt()); } PIVariant value() const override { return widget->value(); } PIVariantMap attributes() const override; static PIVariantMap defaultAttributes(); private: void applyAttributes(const PIVariantMap & a) override; QSpinBox * widget; }; class QAD_PIQT_UTILS_EXPORT Double: public PIVariantEditorBase { Q_OBJECT public: Double() { widget = new QDoubleSpinBox(); widget->setRange(-std::numeric_limits::max(), std::numeric_limits::max()); layout()->addWidget(widget); } void setValue(const PIVariant & v) override { widget->setValue(v.toDouble()); } PIVariant value() const override { return widget->value(); } PIVariantMap attributes() const override; static PIVariantMap defaultAttributes(); private: void applyAttributes(const PIVariantMap & a) override; QDoubleSpinBox * widget; }; class QAD_PIQT_UTILS_EXPORT String: public PIVariantEditorBase { Q_OBJECT public: String() { widget = new CLineEdit(); layout()->addWidget(widget); } void setValue(const PIVariant & v) override { widget->setText(PI2QString(v.toString())); } PIVariant value() const override { return Q2PIString(widget->text()); } PIVariantMap attributes() const override; static PIVariantMap defaultAttributes(); private: void applyAttributes(const PIVariantMap & a) override; CLineEdit * widget; }; class QAD_PIQT_UTILS_EXPORT Color: public PIVariantEditorBase { Q_OBJECT public: Color() { widget = new ColorButton(); layout()->addWidget(widget); } void setValue(const PIVariant & v) override { widget->setColor(PI2QColor(v.toColor())); } PIVariant value() const override { return Q2PIColor(widget->color()); } PIVariantMap attributes() const override; static PIVariantMap defaultAttributes(); private: void applyAttributes(const PIVariantMap & a) override; ColorButton * widget; }; class QAD_PIQT_UTILS_EXPORT Time: public PIVariantEditorBase { Q_OBJECT public: Time() { widget = new QTimeEdit(); widget->setDisplayFormat("h:mm:ss"); layout()->addWidget(widget); } void setValue(const PIVariant & v) override { widget->setTime(PI2QTime(v.toTime())); } PIVariant value() const override { return Q2PITime(widget->time()); } PIVariantMap attributes() const override { return {}; } private: void applyAttributes(const PIVariantMap & a) override; QTimeEdit * widget; }; class QAD_PIQT_UTILS_EXPORT Date: public PIVariantEditorBase { Q_OBJECT public: Date() { widget = new QDateEdit(); widget->setDisplayFormat("d.MM.yyyy"); layout()->addWidget(widget); } void setValue(const PIVariant & v) override { widget->setDate(PI2QDate(v.toDate())); } PIVariant value() const override { return Q2PIDate(widget->date()); } PIVariantMap attributes() const override { return {}; } private: void applyAttributes(const PIVariantMap & a) override; QDateEdit * widget; }; class QAD_PIQT_UTILS_EXPORT DateTime: public PIVariantEditorBase { Q_OBJECT public: DateTime() { widget = new QDateTimeEdit(); widget->setDisplayFormat("d.MM.yyyy h:mm:ss"); layout()->addWidget(widget); } void setValue(const PIVariant & v) override { widget->setDateTime(PI2QDateTime(v.toDateTime())); } PIVariant value() const override { return Q2PIDateTime(widget->dateTime()); } PIVariantMap attributes() const override { return {}; } private: void applyAttributes(const PIVariantMap & a) override; QDateTimeEdit * widget; }; class QAD_PIQT_UTILS_EXPORT Enum: public PIVariantEditorBase { Q_OBJECT public: Enum() { widget = new QComboBox(); layout()->addWidget(widget); } void setValue(const PIVariant & v) override; PIVariant value() const override; PIVariantMap attributes() const override { return {}; } private: void applyAttributes(const PIVariantMap & a) override; mutable PIVariantTypes::Enum src; QComboBox * widget; }; }; // namespace PIVariantEditors #endif