Go to the documentation of this file.00001
00002
00003
00004
00005
00008
00009
00010 #ifndef multiBoxSlider_H_
00011 #define multiBoxSlider_H_
00012
00013 #include <list>
00014 #include "lgrGui.h"
00015
00016 class QPainter;
00017 class QString;
00018 class QRectF;
00019 class QPoint;
00020 class QPointF;
00021
00022 namespace MAKLogger
00023 {
00024
00025 class DtSliderBox;
00026 class DtSliderBar;
00027
00028 typedef std::list<DtSliderBox*> DtSliderBoxList;
00029 typedef std::list<DtSliderBar*> DtSliderBarList;
00030
00032 class DT_DLL_LGRGUI DtMultiBoxSlider
00033 {
00034 public:
00035
00037 DtMultiBoxSlider();
00038
00040 virtual ~DtMultiBoxSlider();
00041
00043 void addBar(DtSliderBar* bar);
00044
00046 DtSliderBar* addBar(float start,float end);
00047
00049 DtSliderBar* bar(QString name);
00050
00052 void removeBarByName(QString name);
00053
00055 void removeBar(DtSliderBar* bar);
00056
00057 virtual float maxBoxWidth() const;
00058 virtual float minBoxWidth() const;
00059 virtual float maxBoxHeight() const;
00060 virtual float minBoxHeight() const;
00061
00062 virtual float minimumDistance() const;
00063 virtual void setMinimumDistance(float distance);
00064
00065 virtual void saveMinimumDistance();
00066 virtual void restoreMinimumDistance();
00067
00068
00069 virtual void movePressedBoxes(float v);
00070 virtual void restorePressedBoxes();
00071
00072 virtual void unselectAll();
00073 virtual void unpressAll();
00074
00076 virtual void pushToTop(DtSliderBox* box);
00077 virtual void pushToTop(DtSliderBar* bar);
00078
00079 virtual DtSliderBar* pickBar(QRectF viewport,QPoint pos);
00080 virtual DtSliderBox* pickBox(QRectF viewport,QPoint pos);
00081
00082 virtual void selectBox(DtSliderBox* box);
00083 virtual void selectBar(DtSliderBar* bar);
00084
00085 virtual void pressBox(DtSliderBox* box);
00086 virtual void pressBar(DtSliderBar* bar);
00087
00088 virtual void releaseBox(DtSliderBox* box);
00089 virtual void releaseBar(DtSliderBar* bar);
00090
00091 protected:
00092
00095 virtual float canBoxMove(DtSliderBox* box,float dv);
00096
00098 virtual void moveBox(DtSliderBox* box,float v);
00099
00100 QPointF getBoxPositionBounds(DtSliderBox* box) const;
00101
00102 static bool lessPosition(DtSliderBox* box1,DtSliderBox* box2);
00103 static bool lessWidth(DtSliderBox* box1,DtSliderBox* box2);
00104 static bool lessHeight(DtSliderBox* box1,DtSliderBox* box2);
00105
00106 virtual void drawBars(QPainter& painter) const;
00107 virtual void drawBoxes(QPainter& painter) const;
00108
00109 virtual void drawBar(QPainter& painter,DtSliderBar* bar) const = 0;
00110 virtual void drawBox(QPainter& painter,DtSliderBox* box) const = 0;
00111
00112 void calcMinMax() const;
00113
00114 DtSliderBoxList myBoxes;
00115 DtSliderBarList myBars;
00116
00117 bool myAllowOverlap;
00118 float myMinimumDistance;
00119 float mySavedMinimumDistance;
00120
00121 mutable bool myMutableListChanged;
00122 mutable float myMutableMaxWidth;
00123 mutable float myMutableMinWidth;
00124 mutable float myMutableMaxHeight;
00125 mutable float myMutableMinHeight;
00126
00127 };
00128
00129 }
00130
00131 #endif