summary refs log tree commit diff
path: root/include/ui
diff options
context:
space:
mode:
Diffstat (limited to 'include/ui')
-rw-r--r--include/ui/CircularProgress.h120
-rw-r--r--include/ui/LoadingIndicator.h49
2 files changed, 49 insertions, 120 deletions
diff --git a/include/ui/CircularProgress.h b/include/ui/CircularProgress.h
deleted file mode 100644

index 291cce1c..00000000 --- a/include/ui/CircularProgress.h +++ /dev/null
@@ -1,120 +0,0 @@ -#pragma once - -#include <QObject> -#include <QProgressBar> - -#include "Theme.h" - -class CircularProgressDelegate; - -class CircularProgress : public QProgressBar -{ - Q_OBJECT - - Q_PROPERTY(qreal lineWidth WRITE setLineWidth READ lineWidth) - Q_PROPERTY(qreal size WRITE setSize READ size) - Q_PROPERTY(QColor color WRITE setColor READ color) - -public: - explicit CircularProgress(QWidget *parent = nullptr); - ~CircularProgress(); - - void setProgressType(ui::ProgressType type); - void setLineWidth(qreal width); - void setSize(int size); - void setColor(const QColor &color); - - ui::ProgressType progressType() const; - qreal lineWidth() const; - int size() const; - QColor color() const; - - QSize sizeHint() const override; - -protected: - void paintEvent(QPaintEvent *event) override; - -private: - CircularProgressDelegate *delegate_; - - ui::ProgressType progress_type_; - - QColor color_; - - // Circle width. - qreal width_; - - // Circle radius. - int size_; - - // Animation duration. - int duration_; -}; - -class CircularProgressDelegate : public QObject -{ - Q_OBJECT - - Q_PROPERTY(qreal dashOffset WRITE setDashOffset READ dashOffset) - Q_PROPERTY(qreal dashLength WRITE setDashLength READ dashLength) - Q_PROPERTY(int angle WRITE setAngle READ angle) - -public: - explicit CircularProgressDelegate(CircularProgress *parent); - ~CircularProgressDelegate(); - - inline void setDashOffset(qreal offset); - inline void setDashLength(qreal length); - inline void setAngle(int angle); - - inline qreal dashOffset() const; - inline qreal dashLength() const; - inline int angle() const; - -private: - CircularProgress *const progress_; - - qreal dash_offset_; - qreal dash_length_; - - int angle_; -}; - -inline void -CircularProgressDelegate::setDashOffset(qreal offset) -{ - dash_offset_ = offset; - progress_->update(); -} - -inline void -CircularProgressDelegate::setDashLength(qreal length) -{ - dash_length_ = length; - progress_->update(); -} - -inline void -CircularProgressDelegate::setAngle(int angle) -{ - angle_ = angle; - progress_->update(); -} - -inline qreal -CircularProgressDelegate::dashOffset() const -{ - return dash_offset_; -} - -inline qreal -CircularProgressDelegate::dashLength() const -{ - return dash_length_; -} - -inline int -CircularProgressDelegate::angle() const -{ - return angle_; -} diff --git a/include/ui/LoadingIndicator.h b/include/ui/LoadingIndicator.h new file mode 100644
index 00000000..2641955a --- /dev/null +++ b/include/ui/LoadingIndicator.h
@@ -0,0 +1,49 @@ +#pragma once + +#include <QColor> +#include <QPaintEvent> +#include <QPainter> +#include <QTimer> +#include <QWidget> + +class LoadingIndicator : public QWidget +{ + Q_OBJECT + +public: + LoadingIndicator(QWidget *parent = 0); + virtual ~LoadingIndicator(); + + void paintEvent(QPaintEvent *e); + + void start(); + void stop(); + + QColor color() + { + return color_; + } + void setColor(QColor color) + { + color_ = color; + } + + int interval() + { + return interval_; + } + void setInterval(int interval) + { + interval_ = interval; + } + +private slots: + void onTimeout(); + +private: + int interval_; + int angle_; + + QColor color_; + QTimer *timer_; +};