C

Qt Cluster: Rendering and Recovery from Main UI Failure

// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

// This file is part of the Qt Safe Renderer module

#ifndef CIRCULARINDICATOR_H
#define CIRCULARINDICATOR_H

#include <QQuickPaintedItem>
#include <QPainter>

class CircularIndicator : public QQuickPaintedItem
{
    Q_OBJECT
    Q_PROPERTY(int startAngle READ startAngle WRITE setStartAngle NOTIFY startAngleChanged)
    Q_PROPERTY(int endAngle READ endAngle WRITE setEndAngle NOTIFY endAngleChanged)
    Q_PROPERTY(qreal minimumValue READ minimumValue WRITE setMinimumValue NOTIFY minimumValueChanged)
    Q_PROPERTY(qreal maximumValue READ maximumValue WRITE setMaximumValue NOTIFY maximumValueChanged)
    Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged)
    Q_PROPERTY(int lineWidth READ lineWidth WRITE setLineWidth NOTIFY lineWidthChanged)
    Q_PROPERTY(QColor progressColor READ progressColor WRITE setProgressColor NOTIFY progressColorChanged)
    Q_PROPERTY(QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged)
    Q_PROPERTY(int padding READ padding WRITE setPadding NOTIFY paddingChanged)

public:
    CircularIndicator(QQuickItem *parent = 0);
    ~CircularIndicator();

    int startAngle() const;
    int endAngle() const;
    qreal minimumValue() const;
    qreal maximumValue() const;
    qreal value() const;
    int lineWidth() const;
    QColor progressColor() const;
    QColor backgroundColor() const;
    int padding() const;

public slots:
    void setStartAngle(int angle);
    void setEndAngle(int angle);
    void setMinimumValue(qreal value);
    void setMaximumValue(qreal value);
    void setValue(qreal value);
    void setLineWidth(int width);
    void setProgressColor(QColor color);
    void setBackgroundColor(QColor color);
    void setPadding(int padding);

signals:
    void startAngleChanged(int);
    void endAngleChanged(int);
    void minimumValueChanged(qreal);
    void maximumValueChanged(qreal);
    void valueChanged(qreal);
    void lineWidthChanged(int);
    void progressColorChanged(QColor);
    void backgroundColorChanged(QColor);
    void paddingChanged(int);

protected:
    void paint(QPainter *painter);

private:
    int mStartAngle;
    int mEndAngle;
    qreal mMinimumValue;
    qreal mMaximumValue;
    qreal mValue;
    int mLineWidth;
    QColor mProgressColor;
    QColor mBackgroundColor;
    int mPadding;
};

#endif // CIRCULARINDICATOR_H