[libcalamaresui] Sanitize API of PrettyRadioButton

- Don't expose internals
- Drop unnecessary virtual
- Offer new API to do the things, for which internals were exposed
This commit is contained in:
Adriaan de Groot 2020-05-18 11:17:36 +02:00
parent 3b7c3c4f5d
commit 17231ae41f
2 changed files with 38 additions and 10 deletions

View File

@ -21,6 +21,7 @@
#include "utils/CalamaresUtilsGui.h" #include "utils/CalamaresUtilsGui.h"
#include "widgets/ClickableLabel.h" #include "widgets/ClickableLabel.h"
#include <QButtonGroup>
#include <QComboBox> #include <QComboBox>
#include <QGridLayout> #include <QGridLayout>
#include <QHBoxLayout> #include <QHBoxLayout>
@ -80,12 +81,26 @@ PrettyRadioButton::iconSize() const
} }
QRadioButton* void
PrettyRadioButton::buttonWidget() const PrettyRadioButton::setChecked( bool checked )
{ {
return m_radio; m_radio->setChecked( checked );
} }
bool
PrettyRadioButton::isChecked() const
{
return m_radio->isChecked();
}
void
PrettyRadioButton::addToGroup( QButtonGroup* group, int id )
{
group->addButton( m_radio, id );
}
void void
PrettyRadioButton::addOptionsComboBox( QComboBox* box ) PrettyRadioButton::addOptionsComboBox( QComboBox* box )
{ {

View File

@ -23,6 +23,7 @@
#include <QRadioButton> #include <QRadioButton>
class QButtonGroup;
class QComboBox; class QComboBox;
class QGridLayout; class QGridLayout;
class QHBoxLayout; class QHBoxLayout;
@ -32,6 +33,9 @@ namespace Calamares
class ClickableLabel; class ClickableLabel;
/** @brief A radio button with fancy label next to it. /** @brief A radio button with fancy label next to it.
*
* The fancy label is used so that the text alongside the radio
* button can word-wrap, be multi-line, and support rich text.
* *
* The radio button itself can be retrieved with buttonWidget(), * The radio button itself can be retrieved with buttonWidget(),
* and the whole behaves a lot like a label. Extra options can be * and the whole behaves a lot like a label. Extra options can be
@ -45,17 +49,26 @@ public:
explicit PrettyRadioButton( QWidget* parent = nullptr ); explicit PrettyRadioButton( QWidget* parent = nullptr );
virtual ~PrettyRadioButton() { } virtual ~PrettyRadioButton() { }
virtual void setText( const QString& text ); /// @brief Passes @p text on to the ClickableLabel
void setText( const QString& text );
virtual void setIconSize( const QSize& size ); // Icon applies to the radio-button part
void setIconSize( const QSize& size );
QSize iconSize() const;
void setIcon( const QIcon& icon );
virtual void setIcon( const QIcon& icon ); // Applies to the radio-button part
void setChecked( bool checked );
bool isChecked() const;
virtual QSize iconSize() const; /** @brief Adds the radio-button part to the given @p group
*
* For managing the pretty-radio-button in button groups like normal
* radio buttons, call addToGroup() rather that group->addButton().
*/
void addToGroup( QButtonGroup* group, int id = -1 );
virtual QRadioButton* buttonWidget() const; /// @brief Add an options drop-down to this button.
/** @brief Add an options drop-down to this button. */
void addOptionsComboBox( QComboBox* ); void addOptionsComboBox( QComboBox* );
protected slots: protected slots: