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 }