#ifndef STATUSFIELD_H #define STATUSFIELD_H #include "guiSQLiteStudio_global.h" #include #include class QMenu; class QAbstractAnimation; class QTableWidgetItem; namespace Ui { class StatusField; } class GUI_API_EXPORT StatusField : public QDockWidget { Q_OBJECT public: explicit StatusField(QWidget *parent = 0); ~StatusField(); bool hasMessages() const; protected: void changeEvent(QEvent *e); private: enum EntryRole { INFO, WARN, ERROR }; void addEntry(const QIcon& icon, const QString& text, const QColor& color, EntryRole role); void flashItems(const QList& items, const QColor& color); void setupMenu(); void readRecentMessages(); Ui::StatusField *ui = nullptr; QMenu* menu = nullptr; QAction* copyAction = nullptr; QAction* clearAction = nullptr; QList itemAnimations; static const int timeStampColumnWidth = 70; static const int itemCountLimit = 30; static const int itemRole = Qt::UserRole; static constexpr const char* timeStampFormat = "hh:mm:ss"; static const QString colorTpl; private slots: void customContextMenuRequested(const QPoint& pos); void info(const QString& text); void warn(const QString& text); void error(const QString& text); void reset(); void fontChanged(const QVariant& variant); public slots: void refreshColors(); signals: void linkActivated(const QString& link); }; #endif // STATUSFIELD_H