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);
45 //virtual void mouseDoubleClickEvent(QMouseEvent * event);
46 virtual void mousePressEvent(QMouseEvent * event);
47 virtual void mouseReleaseEvent(QMouseEvent *event);
48 virtual void mouseMoveEvent(QMouseEvent *event);
49 //virtual void paintEvent(QPaintEvent *event);
50 virtual void wheelEvent(QWheelEvent * event);
53 QPoint m_dragStartPosition;
54 QPoint m_dragLastPosition;
60 void slotValueInc(double factor = 1);
61 void slotValueDec(double factor = 1);
62 void setNewValue(double, bool);
65 void valueChanged(double, bool);
71 * @brief A widget for modifing numbers by dragging, using the mouse wheel or entering them with the keyboard.
74 class DragValue : public QWidget
79 DragValue(const QString &label, double defaultValue, int decimals, int id, const QString suffix, bool showSlider = true, QWidget* parent = 0);
82 /** @brief Returns the precision = number of decimals */
83 int precision() const;
84 /** @brief Returns the maximum value */
85 qreal minimum() const;
86 /** @brief Returns the minimum value */
87 qreal maximum() const;
89 /** @brief Sets the precision (number of decimals) to @param precision. */
90 void setPrecision(int precision);
91 /** @brief Sets the minimum value. */
92 void setMinimum(qreal min);
93 /** @brief Sets the maximum value. */
94 void setMaximum(qreal max);
95 /** @brief Sets minimum and maximum value. */
96 void setRange(qreal min, qreal max);
97 /** @brief Sets the size of a step (when dragging or using the mouse wheel). */
98 void setStep(qreal step);
100 /** @brief Returns the current value */
102 /** @brief Change the "inTimeline" property to paint the intimeline widget differently. */
103 void setInTimelineProperty(bool intimeline);
104 /** @brief Returns minimum size for QSpinBox, used to set all spinboxes to the same width. */
106 /** @brief Sets the minimum size for QSpinBox, used to set all spinboxes to the same width. */
107 void setSpinSize(int width);
110 /** @brief Sets the value (forced to be in the valid range) and emits valueChanged. */
111 void setValue(double value, bool final = true);
112 /** @brief Resets to default value */
116 void valueChanged(int value, bool final = true);
117 void valueChanged(double value, bool final = true);
118 void inTimeline(int);
127 /*virtual void mousePressEvent(QMouseEvent *e);
128 virtual void mouseMoveEvent(QMouseEvent *e);
129 virtual void mouseReleaseEvent(QMouseEvent *e);*/
130 /** @brief Forwards tab focus to lineedit since it is disabled. */
131 virtual void focusInEvent(QFocusEvent *e);
132 //virtual void keyPressEvent(QKeyEvent *e);
133 //virtual void wheelEvent(QWheelEvent *e);
134 //virtual void paintEvent( QPaintEvent * event );
138 void slotEditingFinished();
140 void slotSetScaleMode(int mode);
141 void slotSetDirectUpdate(bool directUpdate);
142 void slotShowContextMenu(const QPoint &pos);
143 void slotSetValue(int value);
144 void slotSetValue(double value);
145 void slotSetInTimeline();
154 QDoubleSpinBox *m_doubleEdit;
157 KSelectAction *m_scale;
158 QAction *m_directUpdate;
159 CustomLabel *m_label;