itom 2.2.1
|
00001 /* ******************************************************************** 00002 itom software 00003 URL: http://www.uni-stuttgart.de/ito 00004 Copyright (C) 2016, Institut fuer Technische Optik (ITO), 00005 Universitaet Stuttgart, Germany 00006 00007 This file is part of itom and its software development toolkit (SDK). 00008 00009 itom is free software; you can redistribute it and/or modify it 00010 under the terms of the GNU Library General Public Licence as published by 00011 the Free Software Foundation; either version 2 of the Licence, or (at 00012 your option) any later version. 00013 00014 In addition, as a special exception, the Institut fuer Technische 00015 Optik (ITO) gives you certain additional rights. 00016 These rights are described in the ITO LGPL Exception version 1.0, 00017 which can be found in the file LGPL_EXCEPTION.txt in this package. 00018 00019 itom is distributed in the hope that it will be useful, but 00020 WITHOUT ANY WARRANTY; without even the implied warranty of 00021 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library 00022 General Public Licence for more details. 00023 00024 You should have received a copy of the GNU Library General Public License 00025 along with itom. If not, see <http://www.gnu.org/licenses/>. 00026 00027 This file is a port and modified version of the 00028 Common framework (http://www.commontk.org) 00029 *********************************************************************** */ 00030 00031 #ifndef SLIDERWIDGET_H 00032 #define SLIDERWIDGET_H 00033 00034 // Qt includes 00035 #include <QSlider> 00036 00037 00038 #include "commonWidgets.h" 00039 00040 class DoubleSlider; 00041 class PopupWidget; 00042 class SliderWidgetPrivate; 00043 class DoubleSpinBox; 00044 class ValueProxy; 00045 00051 class ITOMWIDGETS_EXPORT SliderWidget : public QWidget 00052 { 00053 Q_OBJECT 00054 Q_FLAGS(SynchronizeSiblings) 00055 00056 00057 00058 00059 Q_PROPERTY(int decimals READ decimals WRITE setDecimals NOTIFY decimalsChanged) 00060 Q_PROPERTY(double singleStep READ singleStep WRITE setSingleStep) 00061 Q_PROPERTY(double pageStep READ pageStep WRITE setPageStep) 00062 Q_PROPERTY(double minimum READ minimum WRITE setMinimum) 00063 Q_PROPERTY(double maximum READ maximum WRITE setMaximum) 00064 Q_PROPERTY(double value READ value WRITE setValue) 00065 Q_PROPERTY(QString prefix READ prefix WRITE setPrefix) 00066 Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) 00067 Q_PROPERTY(double tickInterval READ tickInterval WRITE setTickInterval) 00068 Q_PROPERTY(QSlider::TickPosition tickPosition READ tickPosition WRITE setTickPosition) 00069 Q_PROPERTY(SynchronizeSiblings synchronizeSiblings READ synchronizeSiblings WRITE setSynchronizeSiblings) 00070 Q_PROPERTY(Qt::Alignment spinBoxAlignment READ spinBoxAlignment WRITE setSpinBoxAlignment) 00071 Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking) 00072 Q_PROPERTY(bool spinBoxVisible READ isSpinBoxVisible WRITE setSpinBoxVisible); 00073 Q_PROPERTY(bool popupSlider READ hasPopupSlider WRITE setPopupSlider); 00074 Q_PROPERTY(bool invertedAppearance READ invertedAppearance WRITE setInvertedAppearance) 00075 Q_PROPERTY(bool invertedControls READ invertedControls WRITE setInvertedControls) 00076 00077 public: 00078 00092 enum SynchronizeSibling 00093 { 00094 NoSynchronize = 0x000, 00095 SynchronizeWidth = 0x001, 00096 SynchronizeDecimals = 0x002, 00097 }; 00098 Q_DECLARE_FLAGS(SynchronizeSiblings, SynchronizeSibling) 00099 00100 00101 typedef QWidget Superclass; 00102 00104 explicit SliderWidget(QWidget* parent = 0); 00105 virtual ~SliderWidget(); 00106 00113 virtual double minimum()const; 00114 virtual void setMinimum(double minimum); 00115 00122 virtual double maximum()const; 00123 virtual void setMaximum(double maximum); 00126 virtual void setRange(double min, double max); 00127 00131 //double sliderPosition()const; 00132 //void setSliderPosition(double position); 00133 00138 virtual double value()const; 00139 00145 virtual double singleStep()const; 00146 virtual void setSingleStep(double step); 00147 00152 virtual double pageStep()const; 00153 virtual void setPageStep(double step); 00154 00158 virtual int decimals()const; 00159 00164 virtual QString prefix()const; 00165 virtual void setPrefix(const QString& prefix); 00166 00171 virtual QString suffix()const; 00172 virtual void setSuffix(const QString& suffix); 00173 00179 virtual double tickInterval()const; 00180 virtual void setTickInterval(double tick); 00181 00186 virtual void setTickPosition(QSlider::TickPosition position); 00187 virtual QSlider::TickPosition tickPosition()const; 00188 00193 virtual void setSpinBoxAlignment(Qt::Alignment alignment); 00194 virtual Qt::Alignment spinBoxAlignment()const; 00195 00202 virtual void setTracking(bool enable); 00203 virtual bool hasTracking()const; 00204 00210 virtual SliderWidget::SynchronizeSiblings synchronizeSiblings() const; 00211 virtual void setSynchronizeSiblings(SliderWidget::SynchronizeSiblings options); 00212 00222 virtual void setInvertedAppearance(bool invertedAppearance); 00223 virtual bool invertedAppearance()const; 00224 00232 virtual void setInvertedControls(bool invertedControls); 00233 virtual bool invertedControls()const; 00234 00238 virtual bool isSpinBoxVisible()const; 00239 00247 virtual bool hasPopupSlider()const; 00248 virtual void setPopupSlider(bool popup); 00249 00254 virtual PopupWidget* popup()const; 00255 00260 virtual DoubleSpinBox* spinBox(); 00261 00266 virtual DoubleSlider* slider(); 00267 00273 virtual void setValueProxy(ValueProxy* proxy); 00274 virtual ValueProxy* valueProxy() const; 00275 00276 public Q_SLOTS: 00279 virtual void reset(); 00280 virtual void setValue(double value); 00281 virtual void setSpinBoxVisible(bool); 00282 00285 virtual void setDecimals(int decimals); 00286 00287 Q_SIGNALS: 00293 void valueChanged(double value); 00294 00299 void valueIsChanging(double value); 00300 00303 void decimalsChanged(int decimals); 00304 00305 protected Q_SLOTS: 00306 00307 virtual void startChanging(); 00308 virtual void stopChanging(); 00309 virtual void setSpinBoxValue(double sliderValue); 00310 virtual void setSliderValue(double spinBoxValue); 00311 virtual void onValueProxyAboutToBeModified(); 00312 virtual void onValueProxyModified(); 00313 00314 protected: 00315 virtual bool eventFilter(QObject *obj, QEvent *event); 00316 00317 protected: 00318 QScopedPointer<SliderWidgetPrivate> d_ptr; 00319 00320 private: 00321 Q_DECLARE_PRIVATE(SliderWidget); 00322 Q_DISABLE_COPY(SliderWidget); 00323 00324 }; 00325 00326 Q_DECLARE_OPERATORS_FOR_FLAGS(SliderWidget::SynchronizeSiblings); 00327 00328 #endif