1 /* SearchSlider.h 2 3 * Copyright (C) 2011-2020 Michael Lugmair (Lucio Carreras) 4 * 5 * This file is part of sayonara-player 6 * 7 * This program is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 19 * 20 * created by Michael Lugmair (Lucio Carreras), 21 * Sep 14, 2012 22 * 23 */ 24 25 #ifndef SEARCHSLIDER_H_ 26 #define SEARCHSLIDER_H_ 27 28 #include "Gui/Utils/Widgets/Slider.h" 29 30 class QColor; 31 namespace Gui 32 { 33 /** 34 * @brief A slider as it is used by the progress bar 35 * You can also set a different value by calling set_buffering 36 * which is displayed in a different color when using the 37 * dark skin 38 */ 39 class SearchSlider : 40 public Gui::Slider 41 { 42 Q_OBJECT 43 PIMPL(SearchSlider) 44 45 signals: 46 void sig_slider_moved(int); 47 48 public: 49 explicit SearchSlider(QWidget* parent = nullptr); 50 ~SearchSlider() override; 51 52 /** 53 * @brief Returns true if it's actually moved by the user 54 * @return 55 */ 56 bool is_busy() const; 57 58 /** 59 * @brief Set a second value beside QSlider::setValue() which 60 * is displayed in another color 61 * @param progress 62 */ 63 void set_buffering(int progress); 64 65 protected: 66 void mousePressEvent(QMouseEvent* e) override; 67 void mouseReleaseEvent(QMouseEvent* e) override; 68 void mouseMoveEvent(QMouseEvent* e) override; 69 bool event(QEvent* event) override; 70 71 bool hasAdditionalValue() const override; 72 int additionalValue() const override; 73 QColor additionalValueColor() const override; 74 75 private: 76 void emitNewValue(int value); 77 }; 78 } 79 80 #endif /* SEARCHSLIDER_H_ */ 81