--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/radioGroup.h Sat Mar 29 05:26:10 2014 +0200 @@ -0,0 +1,92 @@ +/* + * LDForge: LDraw parts authoring CAD + * Copyright (C) 2013, 2014 Santeri Piippo + * + * 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 <http://www.gnu.org/licenses/>. + */ + +#pragma once +#include <QGroupBox> +#include <QSpinBox> +#include <map> +#include "main.h" +#include "basics.h" + +class QIcon; +class QCheckBox; +class QButtonGroup; +class QBoxLayout; +class QRadioButton; + +// ============================================================================= +// RadioGroup +// +// Convenience widget - is a groupbox of radio buttons. +// ============================================================================= +class RadioGroup : public QGroupBox +{ + Q_OBJECT + + public: + typedef QList<QRadioButton*>::Iterator Iterator; + + explicit RadioGroup() + { + init (Qt::Vertical); + } + + explicit RadioGroup (QWidget* parent = null) : QGroupBox (parent) + { + init (Qt::Vertical); + } + + explicit RadioGroup (const QString& title, QWidget* parent = null); + explicit RadioGroup (const QString& title, QList<char const*> entries, int const defaultId, + const Qt::Orientation orient = Qt::Vertical, QWidget* parent = null); + + void addButton (const char* entry); + void addButton (QRadioButton* button); + Iterator begin(); + Iterator end(); + void init (Qt::Orientation orient); + bool isChecked (int n) const; + void rowBreak(); + void setCurrentRow (int row); + void setValue (int val); + int value() const; + + QRadioButton* operator[] (int n) const; + RadioGroup& operator<< (QRadioButton* button); + RadioGroup& operator<< (const char* entry); + + signals: + void buttonPressed (int btn); + void buttonReleased (int btn); + void valueChanged (int val); + + private: + QList<QRadioButton*> m_objects; + QList<QBoxLayout*> m_layouts; + QBoxLayout* m_coreLayout; + QBoxLayout* m_currentLayout; + bool m_vert; + int m_curId, m_defId, m_oldId; + QButtonGroup* m_buttonGroup; + + Q_DISABLE_COPY (RadioGroup) + + private slots: + void slot_buttonPressed (int btn); + void slot_buttonReleased (int btn); +};