File indexing completed on 2025-04-27 04:37:42
0001 /* 0002 SPDX-FileCopyrightText: 2021 RafaĆ Lalik <rafallalik@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "factorwidget.h" 0008 0009 #include "mainwindow.h" 0010 0011 #include <QSlider> 0012 #include <QToolBar> 0013 0014 #include <cstdio> 0015 0016 FactorWidget::FactorWidget(QWidget *parent) 0017 : QWidgetAction(parent) 0018 { 0019 } 0020 0021 FactorWidget::FactorWidget(const QString &text, MainWindow *receiver, QObject *parent) 0022 : QWidgetAction(parent) 0023 , m_receiver(receiver) 0024 { 0025 setText(text); 0026 } 0027 0028 FactorWidget::~FactorWidget() 0029 { 0030 } 0031 0032 /** 0033 * Each time action is add, the new QSlider widget is created and retun. As 0034 * the toolbar takes ownership of the widget, here we must take care of 0035 * conecting signals and slots to the MainWindow methods. 0036 * 0037 * The widget has by default 100 steps, and width of 100. 0038 */ 0039 QWidget *FactorWidget::createWidget(QWidget *parent) 0040 { 0041 QToolBar *_parent = qobject_cast<QToolBar *>(parent); 0042 if (!_parent) { 0043 return QWidgetAction::createWidget(parent); 0044 } 0045 0046 QSlider *s = new QSlider(Qt::Horizontal, _parent); 0047 s->setRange(100, 200); 0048 s->setMaximumWidth(100); 0049 0050 connect(s, &QSlider::valueChanged, m_receiver, &MainWindow::setFactor); 0051 connect(m_receiver, &MainWindow::factorUpdated, s, &QSlider::setValue); 0052 connect(m_receiver, &MainWindow::scaleUpdated, s, &QSlider::setEnabled); 0053 0054 return s; 0055 } 0056 0057 void FactorWidget::deleteWidget(QWidget *widget) 0058 { 0059 disconnect(widget); 0060 QWidgetAction::deleteWidget(widget); 0061 }