00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef CANVASITEMPARTS_H
00012 #define CANVASITEMPARTS_H
00013
00014 #include <qcanvas.h>
00015 #include <qguardedptr.h>
00016 #include <qslider.h>
00017 #include <qtoolbutton.h>
00018
00019 class Cells;
00020 class CIWidgetMgr;
00021 class CNItem;
00022 class SliderWidget;
00023 class ToolButton;
00024 class QString;
00025
00026 class GuiPart : public QObject, public QCanvasRectangle
00027 {
00028 Q_OBJECT
00029 public:
00035 GuiPart( CNItem *parent, const QRect & r, QCanvas * canvas );
00036 virtual ~GuiPart();
00037
00038 virtual QRect recommendedRect() const { return m_originalRect; }
00039 void setOriginalRect( const QRect & r ) { m_originalRect = r; }
00040
00041 virtual void updateConnectorPoints( bool add );
00042
00050 void setAngleDegrees( int angleDegrees );
00055 void setGuiPartSize( int width, int height );
00060 QRect drawRect();
00061
00062 int angleDegrees() const { return m_angleDegrees; }
00063 CNItem *parent() const { return p_parent; }
00064
00065 protected:
00069 virtual void posChanged() {;}
00074 void initPainter( QPainter & p );
00079 void deinitPainter( QPainter & p );
00080 int m_angleDegrees;
00081 CNItem *p_parent;
00082 bool b_pointsAdded;
00083 QRect m_originalRect;
00084
00085 private slots:
00086 void slotMoveBy( double dx, double dy );
00087 };
00088
00089
00094 class Text : public GuiPart
00095 {
00096 Q_OBJECT
00097 public:
00098 Text( const QString &text, CNItem *parent, const QRect & r, QCanvas * canvas, int flags = Qt::AlignHCenter | Qt::AlignVCenter );
00099 ~Text();
00100
00105 bool setText( const QString & text );
00106 virtual QRect recommendedRect() const;
00107 virtual void drawShape ( QPainter & p );
00112 int flags() const { return m_flags; }
00116 void setFlags( int flags );
00117
00118 protected:
00119 QString m_text;
00120 int m_flags;
00121 };
00122 typedef QMap<QString, QGuardedPtr<Text> > TextMap;
00123
00124
00129 class Widget : public GuiPart
00130 {
00131 public:
00132 Widget( const QString & id, CNItem *parent, const QRect & r, QCanvas * canvas );
00133 ~Widget();
00134
00135 virtual int rtti() const;
00136
00137 virtual QWidget *widget() const = 0;
00138 QString id() const { return m_id; }
00139
00143 void setEnabled( bool enabled );
00144
00145 virtual void enterEvent() {};
00146 virtual void leaveEvent() {};
00147
00151 virtual void mousePressEvent( QMouseEvent *e ) { Q_UNUSED(e); }
00155 virtual void mouseReleaseEvent( QMouseEvent *e ) { Q_UNUSED(e); }
00159 virtual void mouseDoubleClickEvent( QMouseEvent *e ) { Q_UNUSED(e); }
00163 virtual void mouseMoveEvent( QMouseEvent *e ) { Q_UNUSED(e); }
00167 virtual void wheelEvent( QWheelEvent *e ) { Q_UNUSED(e); }
00168
00169 virtual void drawShape( QPainter &p );
00170
00171 protected:
00172 virtual void posChanged();
00173 QString m_id;
00174 };
00175
00176
00177 class ToolButton : public QToolButton
00178 {
00179 public:
00180 ToolButton( QWidget* parent );
00181
00182 virtual void mousePressEvent( QMouseEvent *e ) { QToolButton::mousePressEvent(e); }
00183 virtual void mouseReleaseEvent( QMouseEvent *e ) { QToolButton::mouseReleaseEvent(e); }
00184 virtual void mouseDoubleClickEvent ( QMouseEvent *e ) { QToolButton::mouseDoubleClickEvent(e); }
00185 virtual void mouseMoveEvent( QMouseEvent *e ) { QToolButton::mouseMoveEvent(e); }
00186 virtual void wheelEvent( QWheelEvent *e ) { QToolButton::wheelEvent(e); }
00187 virtual void enterEvent() { QToolButton::enterEvent(0); }
00188 virtual void leaveEvent() { QToolButton::leaveEvent(0); }
00189
00190 void setAngleDegrees( int angleDegrees ) { m_angleDegrees = angleDegrees; }
00191
00192 protected:
00193 virtual void drawButtonLabel( QPainter * p );
00194
00195 int m_angleDegrees;
00196 QFont m_font;
00197 };
00198
00199
00204 class Button : public Widget
00205 {
00206 Q_OBJECT
00207 public:
00208 Button( const QString & id, CNItem *parent, bool isToggle, const QRect & r, QCanvas * canvas );
00209 ~Button();
00210
00211 virtual void mousePressEvent( QMouseEvent *e );
00212 virtual void mouseReleaseEvent( QMouseEvent *e );
00213 virtual void enterEvent();
00214 virtual void leaveEvent();
00215
00219 void setText( const QString &text );
00220 void setToggle( bool toggle );
00221 bool isToggle() const { return b_isToggle; }
00222 virtual QWidget *widget() const;
00223 bool state() const;
00224 void setPixmap( const QPixmap & );
00225 void setState( bool state );
00226 virtual QRect recommendedRect() const;
00227
00228 protected:
00229 virtual void posChanged();
00230
00231 private slots:
00232 void slotStateChanged();
00233
00234 private:
00235 bool b_isToggle;
00236 ToolButton *m_button;
00237 };
00238
00239
00240 class SliderWidget : public QSlider
00241 {
00242 public:
00243 SliderWidget( QWidget* parent );
00244
00245 virtual void mousePressEvent( QMouseEvent *e ) { QSlider::mousePressEvent(e); }
00246 virtual void mouseReleaseEvent( QMouseEvent *e ) { QSlider::mouseReleaseEvent(e); }
00247 virtual void mouseDoubleClickEvent ( QMouseEvent *e ) { QSlider::mouseDoubleClickEvent(e); }
00248 virtual void mouseMoveEvent( QMouseEvent *e ) { QSlider::mouseMoveEvent(e); }
00249 virtual void wheelEvent( QWheelEvent *e ) { QSlider::wheelEvent(e); }
00250 virtual void enterEvent() { QSlider::enterEvent(0); }
00251 virtual void leaveEvent() { QSlider::leaveEvent(0); }
00252 };
00253
00254
00259 class Slider : public Widget
00260 {
00261 Q_OBJECT
00262 public:
00263 Slider( const QString & id, CNItem *parent, const QRect & r, QCanvas * canvas );
00264 ~Slider();
00265
00266 virtual void mousePressEvent( QMouseEvent *e );
00267 virtual void mouseReleaseEvent( QMouseEvent *e );
00268 virtual void mouseDoubleClickEvent ( QMouseEvent *e );
00269 virtual void mouseMoveEvent( QMouseEvent *e );
00270 virtual void wheelEvent( QWheelEvent *e );
00271 virtual void enterEvent();
00272 virtual void leaveEvent();
00273
00274 virtual QWidget *widget() const;
00275 int value() const;
00276 void setValue( int value );
00277 void setOrientation( Qt::Orientation o );
00278
00279 protected:
00280 virtual void posChanged();
00281
00282 private slots:
00283 void slotValueChanged( int value );
00284
00285 private:
00286 SliderWidget *m_slider;
00287 Orientation m_orientation;
00288 };
00289
00290 #endif
00291