1 /*************************************************************************** 2 ** ** 3 ** Polyphone, a soundfont editor ** 4 ** Copyright (C) 2013-2020 Davy Triponney ** 5 ** ** 6 ** This program is free software: you can redistribute it and/or modify ** 7 ** it under the terms of the GNU General Public License as published by ** 8 ** the Free Software Foundation, either version 3 of the License, or ** 9 ** (at your option) any later version. ** 10 ** ** 11 ** This program is distributed in the hope that it will be useful, ** 12 ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** 13 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** 14 ** GNU General Public License for more details. ** 15 ** ** 16 ** You should have received a copy of the GNU General Public License ** 17 ** along with this program. If not, see http://www.gnu.org/licenses/. ** 18 ** ** 19 **************************************************************************** 20 ** Author: Davy Triponney ** 21 ** Website/Contact: https://www.polyphone-soundfonts.com ** 22 ** Date: 01.01.2013 ** 23 ***************************************************************************/ 24 25 #ifndef PITCHWHEELSLIDER_H 26 #define PITCHWHEELSLIDER_H 27 28 #include <QSlider> 29 #include <QTimer> 30 31 class StyledSlider : public QSlider 32 { 33 Q_OBJECT 34 35 public: 36 StyledSlider(QWidget * parent = nullptr); 37 38 // Configuration of the slider setColorFromMiddle(bool fromMiddle)39 void setColorFromMiddle(bool fromMiddle) { _fromMiddle = fromMiddle; } 40 41 // If set, the handle will be back to the specified position setBackToValue(int middleValue)42 void setBackToValue(int middleValue) { _middleValue = middleValue; } 43 44 // Stop the timer so that the slider stay in its position stopTimer()45 void stopTimer() { _timer.stop(); } 46 47 protected: 48 void paintEvent(QPaintEvent *event); 49 50 private slots: 51 void onTimeout(); 52 void onValueChanged(int value); onSliderPressed()53 void onSliderPressed() { _pressed = true; } onSliderReleased()54 void onSliderReleased() { _pressed = false; onValueChanged(this->value()); } 55 56 private: 57 QColor _highlightColor; 58 QColor _backgroundColor; 59 bool _fromMiddle; 60 int _middleValue; 61 bool _pressed; 62 bool _fast; 63 64 QTimer _timer; 65 }; 66 67 #endif // PITCHWHEELSLIDER_H 68