Warning, file /education/kmplot/kmplot/ksliderwindow.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 KmPlot - a math. function plotter for the KDE-Desktop 0003 0004 SPDX-FileCopyrightText: 2005 Fredrik Edemar <f_edemar@linux.se> 0005 SPDX-FileCopyrightText: 2007 David Saxton <david@bluehaze.org> 0006 0007 This file is part of the KDE Project. 0008 KmPlot is part of the KDE-EDU Project. 0009 0010 SPDX-License-Identifier: GPL-2.0-or-later 0011 0012 */ 0013 0014 // local includes 0015 #include "ksliderwindow.h" 0016 #include "view.h" 0017 #include "xparser.h" 0018 0019 #include <KConfigGroup> 0020 0021 #include <QCloseEvent> 0022 #include <QDialogButtonBox> 0023 #include <QPushButton> 0024 #include <QVBoxLayout> 0025 0026 // BEGIN class SliderWidget 0027 SliderWidget::SliderWidget(QWidget *parent, int number) 0028 : QGroupBox(i18n("Slider %1", number + 1), parent) 0029 { 0030 m_number = number; 0031 0032 setupUi(this); 0033 0034 slider->setToolTip(i18n("Move slider to change the parameter of the function plot connected to this slider.")); 0035 0036 KConfig config("kmplotrc"); 0037 KConfigGroup group = config.group("slider" + QString::number(m_number)); 0038 0039 min->setText(group.readEntry("min", "0")); 0040 max->setText(group.readEntry("max", "10")); 0041 slider->setValue(group.readEntry("value", 500)); 0042 0043 connect(slider, &QSlider::valueChanged, this, &SliderWidget::updateValue); 0044 connect(min, &EquationEdit::editingFinished, this, &SliderWidget::updateValue); 0045 connect(max, &EquationEdit::editingFinished, this, &SliderWidget::updateValue); 0046 0047 updateValue(); 0048 } 0049 0050 SliderWidget::~SliderWidget() 0051 { 0052 KConfig config("kmplotrc"); 0053 KConfigGroup group = config.group("slider" + QString::number(m_number)); 0054 0055 group.writeEntry("min", min->text()); 0056 group.writeEntry("max", max->text()); 0057 group.writeEntry("value", slider->value()); 0058 } 0059 0060 void SliderWidget::updateValue() 0061 { 0062 valueLabel->setText(View::self()->posToString(value(), 0.001 * (max->value() - min->value()), View::DecimalFormat)); 0063 emit valueChanged(); 0064 } 0065 0066 double SliderWidget::value() 0067 { 0068 double prop = double(slider->value() - slider->minimum()) / double(slider->maximum() - slider->minimum()); 0069 return prop * (max->value() - min->value()) + min->value(); 0070 } 0071 // END class SliderWidget 0072 0073 // BEGIN class KSliderWindow 0074 KSliderWindow::KSliderWindow(QWidget *parent) 0075 : QDialog(parent) 0076 { 0077 setModal(false); 0078 QWidget *widget = new QWidget(this); 0079 setWindowTitle(i18nc("@title:window", "Sliders")); 0080 0081 QVBoxLayout *layout = new QVBoxLayout(this); 0082 layout->addWidget(widget); 0083 0084 Q_ASSERT(SLIDER_COUNT == 4); // safety check, in case SLIDER_COUNT is increased but not this code 0085 0086 for (int i = 0; i < SLIDER_COUNT; ++i) { 0087 m_sliders[i] = new SliderWidget(widget, i); 0088 connect(m_sliders[i], &SliderWidget::valueChanged, this, &KSliderWindow::valueChanged); 0089 layout->addWidget(m_sliders[i]); 0090 } 0091 QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Close); 0092 connect(buttonBox, &QDialogButtonBox::rejected, this, &KSliderWindow::reject); 0093 layout->addWidget(buttonBox); 0094 0095 resize(layout->minimumSize()); 0096 } 0097 0098 KSliderWindow::~KSliderWindow() 0099 { 0100 } 0101 0102 double KSliderWindow::value(int slider) 0103 { 0104 Q_ASSERT((slider >= 0) && (slider < SLIDER_COUNT)); 0105 return m_sliders[slider]->value(); 0106 } 0107 0108 void KSliderWindow::closeEvent(QCloseEvent *e) 0109 { 0110 emit windowClosed(); 0111 e->accept(); 0112 } 0113 // END class KSliderWindow