/******************************************************************************
 * QSkinny - Copyright (C) The authors
 *           SPDX-License-Identifier: BSD-3-Clause
 *****************************************************************************/

#ifndef QSK_PROGRESS_RING_H
#define QSK_PROGRESS_RING_H

#include "QskProgressIndicator.h"

class QSK_EXPORT QskProgressRing : public QskProgressIndicator
{
    Q_OBJECT

    Q_PROPERTY( Size size READ size
        WRITE setSize NOTIFY sizeChanged )

    using Inherited = QskProgressIndicator;

  public:
    QSK_SUBCONTROLS( Groove, Fill )

    enum Size
    {
        SmallSize  = -1,
        NormalSize = 0,
        LargeSize  = 1
    };
    Q_ENUM( Size )

    QskProgressRing( QQuickItem* parent = nullptr );
    QskProgressRing( qreal min, qreal max, QQuickItem* parent = nullptr );
    QskProgressRing( const QskIntervalF&, QQuickItem* parent = nullptr );

    ~QskProgressRing() override;

    QskAspect::Variation effectiveVariation() const override;

    void setSize( Size );
    Size size() const;

  Q_SIGNALS:
    void sizeChanged( Size );

  private:
    class PrivateData;
    std::unique_ptr< PrivateData > m_data;
};

#endif
