multiBoxSlider.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002 ** Copyright (c) 1992-2010 VT MAK
00003 ** All rights reserved.
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

Document ID: Generated on Tue Oct 11 19:41:03 EDT 2011 from SVN revision 107422
Copyright © 2005-2011 VT MÄK Inc. All Rights Reserved (www.mak.com)