#include <QWidget>
#include <kselectaction.h>
-#include <KIntSpinBox>
+#include <QSpinBox>
+#include <QDoubleSpinBox>
#include <QLabel>
#include <QProgressBar>
-class QValidator;
-class QToolButton;
-class QLineEdit;
class QAction;
class QMenu;
class KSelectAction;
{
Q_OBJECT
public:
- CustomLabel(const QString &label, QWidget *parent = 0);
+ explicit CustomLabel(const QString &label, bool showSlider = true, int range = 1000, QWidget *parent = 0);
+ void setProgressValue(double value);
+ void setStep(double step);
protected:
//virtual void mouseDoubleClickEvent(QMouseEvent * event);
- virtual void mousePressEvent(QMouseEvent * event);
- virtual void mouseReleaseEvent(QMouseEvent *event);
- virtual void mouseMoveEvent(QMouseEvent *event);
+ void mousePressEvent(QMouseEvent * event);
+ void mouseReleaseEvent(QMouseEvent *event);
+ void mouseMoveEvent(QMouseEvent *event);
//virtual void paintEvent(QPaintEvent *event);
- virtual void wheelEvent(QWheelEvent * event);
+ void wheelEvent(QWheelEvent * event);
+ void focusInEvent(QFocusEvent *e);
+ void focusOutEvent(QFocusEvent *e);
private:
QPoint m_dragStartPosition;
QPoint m_dragLastPosition;
bool m_dragMode;
+ bool m_showSlider;
double m_step;
- //QStyleOptionProgressBarV2 m_progressOptions;
- void slotValueInc(int factor = 1);
- void slotValueDec(int factor = 1);
- void setNewValue(int, bool);
+ void slotValueInc(double factor = 1);
+ void slotValueDec(double factor = 1);
+ void setNewValue(double, bool);
signals:
- void valueChanged(int, bool);
+ void valueChanged(double, bool);
void setInTimeline();
+ void resetValue();
};
/**
Q_OBJECT
public:
- DragValue(const QString &label, int defaultValue, int id, const QString suffix, QWidget* parent = 0);
+ /**
+ * @brief Default constructor.
+ * @param label The label that will be displayed in the progress bar
+ * @param defaultValue The default value
+ * @param decimals The number of decimals for the parameter. 0 means it is an integer
+ * @param min The minimum value
+ * @param max The maximum value
+ * @param id Used to identify this widget. If this parameter is set, "Show in Timeline" will be available in context menu.
+ * @param suffix The suffix that will be displayed in the spinbox (for example '%')
+ * @param showSlider If disabled, user can still drag on the label but no progress bar is shown
+ */
+ explicit DragValue(const QString &label, double defaultValue, int decimals, double min = 0, double max = 100, int id = -1, const QString &suffix = QString(), bool showSlider = true, QWidget* parent = 0);
virtual ~DragValue();
/** @brief Returns the precision = number of decimals */
int spinSize();
/** @brief Sets the minimum size for QSpinBox, used to set all spinboxes to the same width. */
void setSpinSize(int width);
-
+
public slots:
/** @brief Sets the value (forced to be in the valid range) and emits valueChanged. */
- void setValue(int value, bool final = true);
+ void setValue(double value, bool final = true);
+ void setValueFromProgress(double value, bool final);
/** @brief Resets to default value */
void slotReset();
signals:
- void valueChanged(int value, bool final = true);
+ void valueChanged(double value, bool final = true);
void inTimeline(int);
virtual void mouseReleaseEvent(QMouseEvent *e);*/
/** @brief Forwards tab focus to lineedit since it is disabled. */
virtual void focusInEvent(QFocusEvent *e);
+ virtual void focusOutEvent(QFocusEvent *e);
//virtual void keyPressEvent(QKeyEvent *e);
//virtual void wheelEvent(QWheelEvent *e);
//virtual void paintEvent( QPaintEvent * event );
void slotSetDirectUpdate(bool directUpdate);
void slotShowContextMenu(const QPoint &pos);
void slotSetValue(int value);
+ void slotSetValue(double value);
void slotSetInTimeline();
private:
- int m_maximum;
- int m_minimum;
- int m_precision;
- KIntSpinBox *m_edit;
- int m_default;
+ double m_maximum;
+ double m_minimum;
+ int m_decimals;
+ double m_default;
+ int m_id;
+ QSpinBox *m_intEdit;
+ QDoubleSpinBox *m_doubleEdit;
QMenu *m_menu;
KSelectAction *m_scale;
QAction *m_directUpdate;
CustomLabel *m_label;
- int m_id;
};
#endif