1 /* smplayer, GUI front-end for mplayer. 2 Copyright (C) 2006-2021 Ricardo Villalba <ricardo@smplayer.info> 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; either version 2 of the License, or 7 (at your option) any later version. 8 9 This program is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU General Public License for more details. 13 14 You should have received a copy of the GNU General Public License 15 along with this program; if not, write to the Free Software 16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 */ 18 19 #ifndef WIDGETACTIONS_H 20 #define WIDGETACTIONS_H 21 22 #include <QWidgetAction> 23 #include "timeslider.h" 24 #include "config.h" 25 #include "guiconfig.h" 26 27 class QStyle; 28 29 class MyWidgetAction : public QWidgetAction 30 { 31 Q_OBJECT 32 33 public: 34 MyWidgetAction( QWidget * parent ); 35 ~MyWidgetAction(); 36 setCustomStyle(QStyle * style)37 void setCustomStyle(QStyle * style) { custom_style = style; }; customStyle()38 QStyle * customStyle() { return custom_style; }; 39 setStyleSheet(QString style)40 void setStyleSheet(QString style) { custom_stylesheet = style; }; styleSheet()41 QString styleSheet() { return custom_stylesheet; }; 42 43 public slots: 44 virtual void enable(); // setEnabled in QAction is not virtual :( 45 virtual void disable(); 46 47 protected: 48 virtual void propagate_enabled(bool); 49 50 protected: 51 QStyle * custom_style; 52 QString custom_stylesheet; 53 }; 54 55 56 class TimeSliderAction : public MyWidgetAction 57 { 58 Q_OBJECT 59 60 public: 61 TimeSliderAction( QWidget * parent ); 62 ~TimeSliderAction(); 63 64 public slots: 65 virtual void setPos(int); 66 virtual int pos(); 67 virtual void setDuration(double); duration()68 virtual double duration() { return total_time; }; 69 #if ENABLE_DELAYED_DRAGGING 70 void setDragDelay(int); 71 int dragDelay(); 72 73 private: 74 int drag_delay; 75 #endif 76 77 private: 78 double total_time; 79 80 signals: 81 void posChanged(int value); 82 void draggingPos(int value); 83 #if ENABLE_DELAYED_DRAGGING 84 void delayedDraggingPos(int); 85 #endif 86 void wheelUp(); 87 void wheelDown(); 88 89 protected: 90 virtual QWidget * createWidget ( QWidget * parent ); 91 }; 92 93 94 class VolumeSliderAction : public MyWidgetAction 95 { 96 Q_OBJECT 97 98 public: 99 VolumeSliderAction( QWidget * parent ); 100 ~VolumeSliderAction(); 101 setFixedSize(QSize size)102 void setFixedSize(QSize size) { fixed_size = size; }; fixedSize()103 QSize fixedSize() { return fixed_size; }; 104 105 void setTickPosition(QSlider::TickPosition position); tickPosition()106 QSlider::TickPosition tickPosition() { return tick_position; }; 107 108 public slots: 109 virtual void setValue(int); 110 virtual int value(); 111 112 signals: 113 void valueChanged(int value); 114 115 protected: 116 virtual QWidget * createWidget ( QWidget * parent ); 117 118 private: 119 QSize fixed_size; 120 QSlider::TickPosition tick_position; 121 }; 122 123 124 class TimeLabelAction : public MyWidgetAction 125 { 126 Q_OBJECT 127 128 public: 129 enum TimeLabelType { CurrentTime = 0, TotalTime = 1, CurrentAndTotalTime = 2, RemainingTime = 3 }; 130 131 TimeLabelAction(TimeLabelType type, QWidget * parent ); 132 ~TimeLabelAction(); 133 text()134 virtual QString text() { return current_text; }; 135 136 public slots: 137 virtual void setText(QString s); 138 virtual void setCurrentTime(double); 139 virtual void setTotalTime(double); 140 141 signals: 142 void newText(QString s); 143 144 protected: 145 virtual QWidget * createWidget ( QWidget * parent ); 146 virtual void updateText(); 147 148 private: 149 QString current_text; 150 double current_time, total_time; 151 TimeLabelType label_type; 152 }; 153 154 155 #if MINI_ARROW_BUTTONS 156 class SeekingButton : public QWidgetAction 157 { 158 Q_OBJECT 159 160 public: 161 SeekingButton( QList<QAction*> actions, QWidget * parent ); 162 ~SeekingButton(); 163 164 protected: 165 virtual QWidget * createWidget ( QWidget * parent ); 166 167 QList<QAction*> _actions; 168 }; 169 #endif 170 171 #endif 172 173