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 RANGEWIDGET_H 00032 #define RANGEWIDGET_H 00033 00034 // Qt includes 00035 #include <QSlider> 00036 00037 00038 #include "commonWidgets.h" 00039 00040 class RangeSlider; 00041 class QSpinBox; 00042 class RangeWidgetPrivate; 00043 00044 namespace ito { 00045 class IntervalMeta; //forward declaration 00046 } 00047 00053 class ITOMWIDGETS_EXPORT RangeWidget : public QWidget 00054 { 00055 Q_OBJECT 00056 Q_PROPERTY(int singleStep READ singleStep WRITE setSingleStep) 00057 Q_PROPERTY(int minimum READ minimum WRITE setMinimum) 00058 Q_PROPERTY(int maximum READ maximum WRITE setMaximum) 00059 Q_PROPERTY(int minimumValue READ minimumValue WRITE setMinimumValue) 00060 Q_PROPERTY(int maximumValue READ maximumValue WRITE setMaximumValue) 00061 Q_PROPERTY(uint stepSizeValue READ stepSizeValue WRITE setStepSizeValue) 00062 Q_PROPERTY(uint minimumRange READ minimumRange WRITE setMinimumRange) 00063 Q_PROPERTY(uint maximumRange READ maximumRange WRITE setMaximumRange) 00064 Q_PROPERTY(uint stepSizeRange READ stepSizeRange WRITE setStepSizeRange) 00065 Q_PROPERTY(bool rangeIncludeLimits READ rangeIncludeLimits WRITE setRangeIncludeLimits) 00066 Q_PROPERTY(QString prefix READ prefix WRITE setPrefix) 00067 Q_PROPERTY(QString suffix READ suffix WRITE setSuffix) 00068 Q_PROPERTY(int tickInterval READ tickInterval WRITE setTickInterval) 00069 Q_PROPERTY(bool autoSpinBoxWidth READ isAutoSpinBoxWidth WRITE setAutoSpinBoxWidth) 00070 Q_PROPERTY(Qt::Alignment spinBoxTextAlignment READ spinBoxTextAlignment WRITE setSpinBoxTextAlignment) 00071 Q_PROPERTY(Qt::Alignment spinBoxAlignment READ spinBoxAlignment WRITE setSpinBoxAlignment) 00072 Q_PROPERTY(bool tracking READ hasTracking WRITE setTracking) 00073 Q_PROPERTY(bool symmetricMoves READ symmetricMoves WRITE setSymmetricMoves) 00074 00075 public: 00077 typedef QWidget Superclass; 00078 00082 explicit RangeWidget(QWidget* parent = 0); 00083 00085 virtual ~RangeWidget(); 00086 00093 virtual int minimum()const; 00094 virtual void setMinimum(int minimum); 00095 00102 virtual int maximum()const; 00103 virtual void setMaximum(int maximum); 00106 virtual void setRange(int min, int max); 00107 virtual void range(int minimumAndMaximum[2])const; 00108 00113 virtual int minimumValue()const; 00114 00119 virtual int maximumValue()const; 00120 00124 virtual void values(int &minValue, int &maxValue)const; 00125 00131 virtual int singleStep()const; 00132 virtual void setSingleStep(int step); 00133 00137 uint stepSizeValue() const; 00138 void setStepSizeValue(uint stepSize); 00139 00143 uint minimumRange() const; 00144 void setMinimumRange(uint min); 00145 00149 uint maximumRange() const; 00150 void setMaximumRange(uint max); 00151 00155 uint stepSizeRange() const; 00156 void setStepSizeRange(uint stepSize); 00157 00162 bool rangeIncludeLimits() const; 00163 void setRangeIncludeLimits(bool include); 00164 00169 virtual QString prefix()const; 00170 virtual void setPrefix(const QString& prefix); 00171 00176 virtual QString suffix()const; 00177 virtual void setSuffix(const QString& suffix); 00178 00184 virtual int tickInterval()const; 00185 virtual void setTickInterval(int ti); 00186 00191 virtual void setSpinBoxAlignment(Qt::Alignment alignment); 00192 virtual Qt::Alignment spinBoxAlignment()const; 00193 00198 virtual void setSpinBoxTextAlignment(Qt::Alignment alignment); 00199 virtual Qt::Alignment spinBoxTextAlignment()const; 00200 00207 virtual void setTracking(bool enable); 00208 virtual bool hasTracking()const; 00209 00214 // RangeWidget siblings. 00215 virtual bool isAutoSpinBoxWidth()const; 00216 virtual void setAutoSpinBoxWidth(bool autoWidth); 00217 00221 virtual bool symmetricMoves()const; 00222 virtual void setSymmetricMoves(bool symmetry); 00223 00226 virtual RangeSlider* slider()const; 00229 virtual QSpinBox* minimumSpinBox()const; 00232 virtual QSpinBox* maximumSpinBox()const; 00233 00238 void setLimitsFromIntervalMeta(const ito::IntervalMeta &intervalMeta); 00239 00240 public Q_SLOTS: 00243 virtual void reset(); 00244 virtual void setMinimumValue(int value); 00245 virtual void setMaximumValue(int value); 00248 virtual void setValues(int minValue, int maxValue); 00249 00250 Q_SIGNALS: 00253 //void sliderMoved(int position); 00254 void minimumValueChanged(int value); 00255 void minimumValueIsChanging(int value); 00256 void maximumValueChanged(int value); 00257 void maximumValueIsChanging(int value); 00258 void valuesChanged(int minValue, int maxValue); 00259 void rangeChanged(int min, int max); 00260 00261 protected Q_SLOTS: 00262 virtual void startChanging(); 00263 virtual void stopChanging(); 00264 virtual void changeValues(int newMinValue, int newMaxValue); 00265 virtual void changeMinimumValue(int value); 00266 virtual void changeMaximumValue(int value); 00268 virtual void setSliderValues(); 00269 virtual void setMinimumToMaximumSpinBox(int minimum); 00270 virtual void setMaximumToMinimumSpinBox(int maximum); 00271 virtual void onSliderRangeChanged(int min, int max); 00272 00273 protected: 00274 virtual bool eventFilter(QObject *obj, QEvent *event); 00275 00277 void setSlider(RangeSlider* slider); 00278 00279 protected: 00280 QScopedPointer<RangeWidgetPrivate> d_ptr; 00281 00282 private: 00283 Q_DECLARE_PRIVATE(RangeWidget); 00284 Q_DISABLE_COPY(RangeWidget); 00285 00286 }; 00287 00288 #endif