File indexing completed on 2024-05-19 05:35:24

0001 //////////////////////////////////////////////////////////////////////////////
0002 // oxygensliderdemowidget.cpp
0003 // oxygen sliders demo widget
0004 // -------------------
0005 //
0006 // SPDX-FileCopyrightText: 2010 Hugo Pereira Da Costa <hugo.pereira@free.fr>
0007 //
0008 // SPDX-License-Identifier: MIT
0009 //////////////////////////////////////////////////////////////////////////////
0010 
0011 #include "oxygensliderdemowidget.h"
0012 
0013 #include <QMenu>
0014 #include <QStyleOptionSlider>
0015 
0016 namespace Oxygen
0017 {
0018 //_____________________________________________________________
0019 ProgressBar::ProgressBar(QObject *parent, QProgressBar *progressBar, QCheckBox *checkBox)
0020     : QObject(parent)
0021     , _progressBar(progressBar)
0022     , _checkBox(checkBox)
0023     , _value(0)
0024 {
0025     connect(_checkBox, SIGNAL(toggled(bool)), SLOT(toggleBusy(bool)));
0026 }
0027 
0028 //_____________________________________________________________
0029 void ProgressBar::toggleBusy(bool value)
0030 {
0031     if (value) {
0032         _value = _progressBar->value();
0033         _progressBar->setMinimum(0);
0034         _progressBar->setMaximum(0);
0035 
0036     } else {
0037         _progressBar->setMinimum(0);
0038         _progressBar->setMaximum(100);
0039         _progressBar->setValue(_value);
0040     }
0041 
0042     _progressBar->update();
0043 }
0044 
0045 //_____________________________________________________________
0046 void ProgressBar::setValue(int value)
0047 {
0048     if (!_checkBox->isChecked()) {
0049         _progressBar->setValue(value);
0050     }
0051 }
0052 
0053 //_____________________________________________________________
0054 SliderDemoWidget::SliderDemoWidget(QWidget *parent)
0055     : DemoWidget(parent)
0056     , _locked(false)
0057 {
0058     ui.setupUi(this);
0059 
0060     _horizontalProgressBar = new ProgressBar(this, ui.horizontalProgressBar, ui.animateProgressBarCheckBox);
0061     _verticalProgressBar = new ProgressBar(this, ui.verticalProgressBar, ui.animateProgressBarCheckBox);
0062 
0063     connect(ui.invertProgressBarCheckBox, SIGNAL(toggled(bool)), _horizontalProgressBar, SLOT(toggleInvertedAppearance(bool)));
0064     connect(ui.invertProgressBarCheckBox, SIGNAL(toggled(bool)), _verticalProgressBar, SLOT(toggleInvertedAppearance(bool)));
0065     connect(ui.tickPositionComboBox, SIGNAL(currentIndexChanged(int)), SLOT(updateTickPosition(int)));
0066 
0067     connect(ui.horizontalSlider, SIGNAL(valueChanged(int)), SLOT(updateSliders(int)));
0068     connect(ui.horizontalScrollBar, SIGNAL(valueChanged(int)), SLOT(updateSliders(int)));
0069     connect(ui.verticalSlider, SIGNAL(valueChanged(int)), SLOT(updateSliders(int)));
0070     connect(ui.verticalScrollBar, SIGNAL(valueChanged(int)), SLOT(updateSliders(int)));
0071     connect(ui.dial, SIGNAL(valueChanged(int)), SLOT(updateSliders(int)));
0072 }
0073 
0074 //_____________________________________________________________
0075 void SliderDemoWidget::benchmark(void)
0076 {
0077     if (!isVisible())
0078         return;
0079 
0080     // horizontal
0081     simulator().slide(ui.horizontalSlider, QPoint(50, 0));
0082     simulator().slide(ui.horizontalSlider, QPoint(-50, 0));
0083 
0084     simulator().slide(ui.horizontalScrollBar, QPoint(50, 0));
0085     simulator().slide(ui.horizontalScrollBar, QPoint(-50, 0));
0086 
0087     // vertical
0088     simulator().slide(ui.verticalScrollBar, QPoint(0, 50));
0089     simulator().slide(ui.verticalScrollBar, QPoint(0, -50));
0090 
0091     simulator().slide(ui.verticalSlider, QPoint(0, 50));
0092     simulator().slide(ui.verticalSlider, QPoint(0, -50));
0093 
0094     // dial button
0095     // nothing for now.
0096 
0097     simulator().run();
0098 }
0099 
0100 //_____________________________________________________________
0101 void SliderDemoWidget::updateSliders(int value)
0102 {
0103     if (_locked)
0104         return;
0105 
0106     _locked = true;
0107     _horizontalProgressBar->setValue(value);
0108     _verticalProgressBar->setValue(value);
0109 
0110     ui.horizontalSlider->setValue(value);
0111     ui.verticalSlider->setValue(value);
0112     ui.horizontalScrollBar->setValue(value);
0113     ui.verticalScrollBar->setValue(value);
0114     ui.dial->setValue(value);
0115 
0116     _locked = false;
0117 }
0118 
0119 //_____________________________________________________________
0120 void SliderDemoWidget::updateTickPosition(int value)
0121 {
0122     ui.horizontalSlider->setTickPosition(QSlider::TickPosition(value));
0123     ui.verticalSlider->setTickPosition(QSlider::TickPosition(value));
0124     ui.dial->setNotchesVisible(value > 0);
0125 }
0126 }