From d39e77f7e8635b435b527bc3d5bc5a5334ad567f Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Wed, 3 Sep 2014 18:04:10 +0200 Subject: [PATCH] New PrettyRadioButton, an alternative to QRadioButton with rich text. --- .../partition/gui/PrettyRadioButton.cpp | 85 +++++++++++++++++++ src/modules/partition/gui/PrettyRadioButton.h | 46 ++++++++++ 2 files changed, 131 insertions(+) create mode 100644 src/modules/partition/gui/PrettyRadioButton.cpp create mode 100644 src/modules/partition/gui/PrettyRadioButton.h diff --git a/src/modules/partition/gui/PrettyRadioButton.cpp b/src/modules/partition/gui/PrettyRadioButton.cpp new file mode 100644 index 000000000..4c4677cdf --- /dev/null +++ b/src/modules/partition/gui/PrettyRadioButton.cpp @@ -0,0 +1,85 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * + * Calamares 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. + * + * Calamares 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 Calamares. If not, see . + */ + +#include "PrettyRadioButton.h" + +#include "utils/CalamaresUtilsGui.h" +#include "widgets/ClickableLabel.h" + +#include +#include + + +PrettyRadioButton::PrettyRadioButton( QWidget* parent ) + : QWidget( parent ) +{ + QHBoxLayout* mainLayout = new QHBoxLayout; + setLayout( mainLayout ); + + m_radio = new QRadioButton; + m_label = new ClickableLabel; + + connect( m_label, &ClickableLabel::clicked, + m_radio, &QRadioButton::click ); + m_label->setBuddy( m_radio ); + + m_label->setWordWrap( true ); + m_label->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); + QMargins labelMargins = m_label->contentsMargins(); + labelMargins.setLeft( labelMargins.left() + CalamaresUtils::defaultFontHeight() * 0.8 ); + m_label->setContentsMargins( labelMargins ); + + mainLayout->addWidget( m_radio ); + mainLayout->addWidget( m_label ); + mainLayout->setContentsMargins( 0, 0, 0, 0 ); +} + + +void +PrettyRadioButton::setText( const QString& text ) +{ + m_label->setText( text ); +} + + +void +PrettyRadioButton::setIconSize( const QSize& size ) +{ + m_radio->setIconSize( size ); +} + + +void +PrettyRadioButton::setIcon( const QIcon& icon ) +{ + m_radio->setIcon( icon ); +} + + +QSize +PrettyRadioButton::iconSize() +{ + return m_radio->iconSize(); +} + + +QRadioButton* +PrettyRadioButton::buttonWidget() +{ + return m_radio; +} diff --git a/src/modules/partition/gui/PrettyRadioButton.h b/src/modules/partition/gui/PrettyRadioButton.h new file mode 100644 index 000000000..292a68d55 --- /dev/null +++ b/src/modules/partition/gui/PrettyRadioButton.h @@ -0,0 +1,46 @@ +/* === This file is part of Calamares - === + * + * Copyright 2014, Teo Mrnjavac + * + * Calamares 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. + * + * Calamares 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 Calamares. If not, see . + */ + +#ifndef PRETTYRADIOBUTTON_H +#define PRETTYRADIOBUTTON_H + +#include + +class ClickableLabel; + +class PrettyRadioButton : public QWidget +{ +public: + PrettyRadioButton( QWidget* parent = nullptr ); + + void setText( const QString& text ); + + void setIconSize( const QSize& size ); + + void setIcon( const QIcon& icon ); + + QSize iconSize(); + + QRadioButton* buttonWidget(); + +private: + ClickableLabel* m_label; + QRadioButton* m_radio; +}; + +#endif // PRETTYRADIOBUTTON_H