OpenMW
apps/opencs/view/settings/abstractwidget.hpp
Go to the documentation of this file.
00001 #ifndef ABSTRACTWIDGET_HPP
00002 #define ABSTRACTWIDGET_HPP
00003 
00004 #include <QWidget>
00005 #include "support.hpp"
00006 
00007 class QLayout;
00008 
00009 namespace CSVSettings
00010 {
00012     class AbstractWidget : public QObject
00013     {
00014         Q_OBJECT
00015 
00016         QLayout *mLayout;
00017 
00018     public:
00019 
00022         explicit AbstractWidget (QLayout *layout = 0, QWidget* parent = 0)
00023             : QObject (parent), mLayout (layout)
00024         {}
00025 
00027         QLayout *getLayout();
00028 
00030         void build (QWidget* widget, WidgetDef &def, bool noLabel = false);
00031 
00033         virtual QWidget *widget() = 0;
00034 
00035     protected:
00036 
00038         virtual void updateWidget (const QString &value) = 0;
00039 
00041         QFlags<Qt::AlignmentFlag> getAlignment (Alignment flag);
00042 
00043     private:
00044 
00046         void createLayout (Orientation direction, bool isZeroMargin);
00047 
00049         void buildLabelAndWidget (QWidget *widget, WidgetDef &def, bool noLabel);
00050 
00051 
00052     signals:
00053 
00055         void signalUpdateItem (const QString &value);
00056 
00057     public slots:
00058 
00060         void slotUpdateWidget (const QString &value);
00061 
00063         void slotUpdateItem  (const QString &value);
00064         void slotUpdateItem  (bool value);
00065         void slotUpdateItem  (int value);
00066         void slotUpdateItem (QListWidgetItem* current, QListWidgetItem* previous);
00067     };
00068 }
00069 #endif // ABSTRACTWIDGET_HPP