1 /***************************************************************************
2 * Copyright (C) 2011 by Till Theato (root@ttill.de) *
3 * This file is part of Kdenlive (www.kdenlive.org). *
5 * Kdenlive is free software: you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation, either version 2 of the License, or *
8 * (at your option) any later version. *
10 * Kdenlive is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with Kdenlive. If not, see <http://www.gnu.org/licenses/>. *
17 ***************************************************************************/
23 #include <kselectaction.h>
25 #include <QDoubleSpinBox>
27 #include <QProgressBar>
37 class CustomLabel : public QProgressBar
41 CustomLabel(const QString &label, bool showSlider = true, int precision = 0, QWidget *parent = 0);
42 void setProgressValue(double value);
43 void setStep(double step);
46 //virtual void mouseDoubleClickEvent(QMouseEvent * event);
47 virtual void mousePressEvent(QMouseEvent * event);
48 virtual void mouseReleaseEvent(QMouseEvent *event);
49 virtual void mouseMoveEvent(QMouseEvent *event);
50 //virtual void paintEvent(QPaintEvent *event);
51 virtual void wheelEvent(QWheelEvent * event);
54 QPoint m_dragStartPosition;
55 QPoint m_dragLastPosition;
61 void slotValueInc(double factor = 1);
62 void slotValueDec(double factor = 1);
63 void setNewValue(double, bool);
66 void valueChanged(double, bool);
72 * @brief A widget for modifing numbers by dragging, using the mouse wheel or entering them with the keyboard.
75 class DragValue : public QWidget
80 DragValue(const QString &label, double defaultValue, int decimals, int id, const QString suffix, bool showSlider = true, QWidget* parent = 0);
83 /** @brief Returns the precision = number of decimals */
84 int precision() const;
85 /** @brief Returns the maximum value */
86 qreal minimum() const;
87 /** @brief Returns the minimum value */
88 qreal maximum() const;
90 /** @brief Sets the precision (number of decimals) to @param precision. */
91 void setPrecision(int precision);
92 /** @brief Sets the minimum value. */
93 void setMinimum(qreal min);
94 /** @brief Sets the maximum value. */
95 void setMaximum(qreal max);
96 /** @brief Sets minimum and maximum value. */
97 void setRange(qreal min, qreal max);
98 /** @brief Sets the size of a step (when dragging or using the mouse wheel). */
99 void setStep(qreal step);
101 /** @brief Returns the current value */
103 /** @brief Change the "inTimeline" property to paint the intimeline widget differently. */
104 void setInTimelineProperty(bool intimeline);
105 /** @brief Returns minimum size for QSpinBox, used to set all spinboxes to the same width. */
107 /** @brief Sets the minimum size for QSpinBox, used to set all spinboxes to the same width. */
108 void setSpinSize(int width);
111 /** @brief Sets the value (forced to be in the valid range) and emits valueChanged. */
112 void setValue(double value, bool final = true);
113 /** @brief Resets to default value */
117 void valueChanged(int value, bool final = true);
118 void valueChanged(double value, bool final = true);
119 void inTimeline(int);
128 /*virtual void mousePressEvent(QMouseEvent *e);
129 virtual void mouseMoveEvent(QMouseEvent *e);
130 virtual void mouseReleaseEvent(QMouseEvent *e);*/
131 /** @brief Forwards tab focus to lineedit since it is disabled. */
132 virtual void focusInEvent(QFocusEvent *e);
133 //virtual void keyPressEvent(QKeyEvent *e);
134 //virtual void wheelEvent(QWheelEvent *e);
135 //virtual void paintEvent( QPaintEvent * event );
139 void slotEditingFinished();
141 void slotSetScaleMode(int mode);
142 void slotSetDirectUpdate(bool directUpdate);
143 void slotShowContextMenu(const QPoint &pos);
144 void slotSetValue(int value);
145 void slotSetValue(double value);
146 void slotSetInTimeline();
155 QDoubleSpinBox *m_doubleEdit;
158 KSelectAction *m_scale;
159 QAction *m_directUpdate;
160 CustomLabel *m_label;