File indexing completed on 2024-05-05 09:12:59

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) : QWidgetAction(parent)
0017 {
0018 }
0019 
0020 FactorWidget::FactorWidget(const QString& text, MainWindow * receiver, QObject* parent)
0021     : QWidgetAction(parent)
0022     , m_receiver(receiver)
0023 {
0024     setText(text);
0025 }
0026 
0027 FactorWidget::~FactorWidget()
0028 {
0029 }
0030 
0031 /**
0032  * Each time action is add, the new QSlider widget is created and retun. As
0033  * the toolbar takes ownership of the widget, here we must take care of
0034  * conecting signals and slots to the MainWindow methods.
0035  *
0036  * The widget has by default 100 steps, and width of 100.
0037  */
0038 QWidget * FactorWidget::createWidget(QWidget * parent)
0039 {
0040     QToolBar *_parent = qobject_cast<QToolBar *>(parent);
0041     if (!_parent) {
0042         return QWidgetAction::createWidget(parent);
0043     }
0044 
0045     QSlider * s = new QSlider(Qt::Horizontal, _parent);
0046     s->setRange(100, 200);
0047     s->setMaximumWidth(100);
0048 
0049     connect(s, &QSlider::valueChanged, m_receiver, &MainWindow::setFactor);
0050     connect(m_receiver, &MainWindow::factorUpdated, s, &QSlider::setValue);
0051     connect(m_receiver, &MainWindow::scaleUpdated, s, &QSlider::setEnabled);
0052 
0053     return s;
0054 }
0055 
0056 void FactorWidget::deleteWidget(QWidget* widget)
0057 {
0058     disconnect(widget);
0059     QWidgetAction::deleteWidget(widget);
0060 }