/* * Copyright 2008 Ben Boeckel * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU 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 General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ #ifndef SIGMODR_OBJECTUI #define SIGMODR_OBJECTUI // Qt includes #include // Forward declarations namespace Sigmod { class Object; class Sigmod; } namespace Sigmodr { class ValidationDialog; class ObjectUI : public QWidget { Q_OBJECT public: ObjectUI(QWidget* parent); virtual ~ObjectUI(); void reload(); bool isChanged() const; const Sigmod::Sigmod* sigmod() const; const Sigmod::Object* original() const; Sigmod::Object* original(); const Sigmod::Object* modified() const; Sigmod::Object* modified(); public slots: virtual void apply() = 0; virtual void discard() = 0; signals: void changed(bool = true); protected: void setObjects(Sigmod::Object* original, Sigmod::Object* modified); void init(); protected slots: void setChanged(const bool changed = true); void errorMessage(const QString& message); void warningMessage(const QString& message); virtual void initGui(); virtual void refreshGui(); virtual void setGui() = 0; private: bool m_changed; ValidationDialog* m_validator; Sigmod::Object* m_object; Sigmod::Object* m_object_mod; private slots: void contextMenu(const QPoint& pos); void validate(); }; } #endif