diff --git a/libs/ui/widgets/KisCheckboxWordWrap.cpp b/libs/ui/widgets/KisCheckboxWordWrap.cpp index 68596c8c3a..334e665038 100644 --- a/libs/ui/widgets/KisCheckboxWordWrap.cpp +++ b/libs/ui/widgets/KisCheckboxWordWrap.cpp @@ -1,115 +1,117 @@ /* This file is part of the KDE project * Copyright 2019 (C) Scott Petrovic * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB. If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. */ #include "KisCheckboxWordWrap.h" #include "krita_utils.h" #include #include #include KisCheckboxWordWrap::KisCheckboxWordWrap(QWidget* parent) + : QWidget(parent) { initialize(parent, ""); } KisCheckboxWordWrap::KisCheckboxWordWrap(const QString &text, QWidget *parent) + : QWidget(parent) { initialize(parent, text); } void KisCheckboxWordWrap::initialize(QWidget *parent, const QString &text) { m_label = new KisClickableLabel(text, parent); m_label->setWordWrap(true); m_checkbox = new QCheckBox(parent); m_layout = new QHBoxLayout(parent); m_layout->addWidget(m_checkbox); m_layout->addWidget(m_label); setLayout(m_layout); connect(m_label, SIGNAL(pressed(QMouseEvent*)), this, SLOT(pressedEvent(QMouseEvent*))); connect(m_label, SIGNAL(moved(QMouseEvent*)), this, SLOT(movedEvent(QMouseEvent*))); connect(m_label, SIGNAL(released(QMouseEvent*)), this, SLOT(releasedEvent(QMouseEvent*))); } KisCheckboxWordWrap::~KisCheckboxWordWrap() { } void KisCheckboxWordWrap::setText(const QString &text) { m_label->setText(text); } void KisCheckboxWordWrap::setChecked(bool isChecked) { m_checkbox->setChecked(isChecked); } void KisCheckboxWordWrap::toggle() { m_checkbox->toggle(); } void KisCheckboxWordWrap::pressedEvent(QMouseEvent *event) { // give small style "down" state visually to help give feedback QColor textColor = qApp->palette().color(QPalette::Text); QColor backgroundColor = qApp->palette().color(QPalette::Background); QColor blendedColor = KritaUtils::blendColors(textColor, backgroundColor, 0.1); QString finalStylesheet = QString("QCheckBox{ background:").append(blendedColor.name()).append(" }") ; m_checkbox->setStyleSheet(finalStylesheet); KisCheckboxWordWrap::mousePressEvent(event); } void KisCheckboxWordWrap::movedEvent(QMouseEvent *event) { KisCheckboxWordWrap::mouseMoveEvent(event); } void KisCheckboxWordWrap::releasedEvent(QMouseEvent *event) { m_checkbox->setStyleSheet(""); toggle(); KisCheckboxWordWrap::mouseReleaseEvent(event); } // KisClickableLabel implementation (mostly empty) KisClickableLabel::KisClickableLabel(QWidget* parent):QLabel(parent) {} KisClickableLabel::KisClickableLabel(const QString &text, QWidget* parent):QLabel(text, parent) {} KisClickableLabel::~KisClickableLabel() {} void KisClickableLabel::mouseReleaseEvent(QMouseEvent *event) { emit released(event); } void KisClickableLabel::mousePressEvent(QMouseEvent *event) { emit pressed(event); } void KisClickableLabel::mouseMoveEvent(QMouseEvent *event) { emit moved(event); }