Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef RQT_MULTIPLOT_STATUS_WIDGET_H
00020 #define RQT_MULTIPLOT_STATUS_WIDGET_H
00021
00022 #include <QGridLayout>
00023 #include <QImage>
00024 #include <QLabel>
00025 #include <QList>
00026 #include <QMap>
00027 #include <QPixmap>
00028 #include <QTimer>
00029 #include <QWidget>
00030
00031 namespace rqt_multiplot {
00032 class StatusWidget :
00033 public QWidget {
00034 Q_OBJECT
00035 public:
00036 enum Role {
00037 Okay,
00038 Error,
00039 Busy
00040 };
00041
00042 StatusWidget(QWidget* parent = 0, Role role = Okay);
00043 virtual ~StatusWidget();
00044
00045 void setIcon(Role role, const QPixmap& icon);
00046 const QPixmap& getIcon(Role role) const;
00047 void setFrames(Role role, const QPixmap& frames, size_t numFrames,
00048 double frameRate = 10.0);
00049 void setFrames(Role role, const QList<QPixmap>& frameList, double
00050 frameRate = 10.0);
00051 const QList<QPixmap>& getFrames(Role role) const;
00052 void setFrameRate(Role role, double frameRate);
00053 double getFrameRate(Role role) const;
00054 void setCurrentRole(Role role, const QString& toolTip = QString());
00055 Role getCurrentRole() const;
00056
00057 void pushCurrentRole();
00058 bool popCurrentRole();
00059
00060 signals:
00061 void currentRoleChanged(Role role);
00062
00063 private:
00064 QGridLayout* layout_;
00065 QLabel* labelIcon_;
00066 QTimer* timer_;
00067
00068 QMap<Role, QList<QPixmap> > frames_;
00069 QMap<Role, double> frameRates_;
00070 QList<Role> roleStack_;
00071 QList<QString> toolTipStack_;
00072
00073 Role currentRole_;
00074 size_t currentFrame_;
00075
00076 void start();
00077 void step();
00078 void stop();
00079
00080 private slots:
00081 void timerTimeout();
00082 };
00083 };
00084
00085 #endif