File indexing completed on 2024-04-21 04:58:37

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 }