forked from qt-creator/qt-creator
Add documentation to ProgressIndicator
Change-Id: I40dd1168aa7df0fd1db221c29468868abb850af7 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
This commit is contained in:
@@ -33,6 +33,46 @@
|
|||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Utils::ProgressIndicator
|
||||||
|
\brief The ProgressIndicator class shows an circular, endlessly animated progress indicator.
|
||||||
|
|
||||||
|
Use it if you want to indicate that some work is being done, but you do not have the detailed
|
||||||
|
progress information needed for a progress bar. You can either create the widget on demand,
|
||||||
|
or create the widget once and only show it on demand. The animation only runs while the widget
|
||||||
|
is visible.
|
||||||
|
|
||||||
|
\inmodule Qt Creator
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class Utils::ProgressIndicatorPainter
|
||||||
|
\brief The ProgressIndicatorPainter class is the painting backend for the ProgressIndicator
|
||||||
|
class.
|
||||||
|
|
||||||
|
You can use it to paint a circular, endlessly animated progress indicator directly onto a
|
||||||
|
QPaintDevice, for example, if you want to show a progress indicator where you cannot use
|
||||||
|
a QWidget.
|
||||||
|
|
||||||
|
\inmodule Qt Creator
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\enum Utils::ProgressIndicatorSize
|
||||||
|
|
||||||
|
Size of a progress indicator.
|
||||||
|
\sa Utils::ProgressIndicator
|
||||||
|
\sa Utils::ProgressIndicatorPainter
|
||||||
|
|
||||||
|
\value Small
|
||||||
|
Small icon size. Useful for tool bars, status bars, rows in tree views,
|
||||||
|
and so on.
|
||||||
|
\value Medium
|
||||||
|
Larger progress indicator useful for covering whole medium sized widgets.
|
||||||
|
\value Large
|
||||||
|
Very large progress indicator that can be used to cover large parts of a UI.
|
||||||
|
*/
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
static QString imageFileNameForIndicatorSize(Utils::ProgressIndicatorSize size)
|
static QString imageFileNameForIndicatorSize(Utils::ProgressIndicatorSize size)
|
||||||
@@ -52,6 +92,11 @@ static QString imageFileNameForIndicatorSize(Utils::ProgressIndicatorSize size)
|
|||||||
|
|
||||||
namespace Utils {
|
namespace Utils {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Constructs a progress indicator painter for the indicator \a size.
|
||||||
|
|
||||||
|
\sa setUpdateCallback
|
||||||
|
*/
|
||||||
ProgressIndicatorPainter::ProgressIndicatorPainter(ProgressIndicatorSize size)
|
ProgressIndicatorPainter::ProgressIndicatorPainter(ProgressIndicatorSize size)
|
||||||
{
|
{
|
||||||
m_timer.setSingleShot(false);
|
m_timer.setSingleShot(false);
|
||||||
@@ -64,6 +109,13 @@ ProgressIndicatorPainter::ProgressIndicatorPainter(ProgressIndicatorSize size)
|
|||||||
setIndicatorSize(size);
|
setIndicatorSize(size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Changes the size of the progress indicator to \a size. Users of the class need
|
||||||
|
to adapt their painting or layouting code to the change in resulting pixel size.
|
||||||
|
|
||||||
|
\sa indicatorSize
|
||||||
|
\sa size
|
||||||
|
*/
|
||||||
void ProgressIndicatorPainter::setIndicatorSize(ProgressIndicatorSize size)
|
void ProgressIndicatorPainter::setIndicatorSize(ProgressIndicatorSize size)
|
||||||
{
|
{
|
||||||
m_size = size;
|
m_size = size;
|
||||||
@@ -73,22 +125,43 @@ void ProgressIndicatorPainter::setIndicatorSize(ProgressIndicatorSize size)
|
|||||||
Theme::PanelTextColorMid}}, Icon::Tint).pixmap();
|
Theme::PanelTextColorMid}}, Icon::Tint).pixmap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the current indicator size. Use \l size to get the resulting
|
||||||
|
pixel size.
|
||||||
|
|
||||||
|
\sa setIndicatorSize
|
||||||
|
*/
|
||||||
ProgressIndicatorSize ProgressIndicatorPainter::indicatorSize() const
|
ProgressIndicatorSize ProgressIndicatorPainter::indicatorSize() const
|
||||||
{
|
{
|
||||||
return m_size;
|
return m_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Sets the callback \a cb that is called whenever the progress indicator needs a repaint, because
|
||||||
|
its animation progressed. The callback is a void function taking no parameters, and should
|
||||||
|
usually trigger a QWidget::update on the widget that does the actual painting.
|
||||||
|
*/
|
||||||
void ProgressIndicatorPainter::setUpdateCallback(const UpdateCallback &cb)
|
void ProgressIndicatorPainter::setUpdateCallback(const UpdateCallback &cb)
|
||||||
{
|
{
|
||||||
m_callback = cb;
|
m_callback = cb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the size of the progress indicator in device independent pixels.
|
||||||
|
|
||||||
|
\sa setIndicatorSize
|
||||||
|
\sa paint
|
||||||
|
*/
|
||||||
QSize ProgressIndicatorPainter::size() const
|
QSize ProgressIndicatorPainter::size() const
|
||||||
{
|
{
|
||||||
return m_pixmap.size() / m_pixmap.devicePixelRatio();
|
return m_pixmap.size() / m_pixmap.devicePixelRatio();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Paint indicator centered on the rect
|
/*!
|
||||||
|
Paints the progress indicator centered in the \a rect on the given \a painter.
|
||||||
|
|
||||||
|
\sa size
|
||||||
|
*/
|
||||||
void ProgressIndicatorPainter::paint(QPainter &painter, const QRect &rect) const
|
void ProgressIndicatorPainter::paint(QPainter &painter, const QRect &rect) const
|
||||||
{
|
{
|
||||||
painter.save();
|
painter.save();
|
||||||
@@ -106,22 +179,46 @@ void ProgressIndicatorPainter::paint(QPainter &painter, const QRect &rect) const
|
|||||||
painter.restore();
|
painter.restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Starts the progress indicator animation.
|
||||||
|
|
||||||
|
\sa setUpdateCallback
|
||||||
|
\sa stopAnimation
|
||||||
|
*/
|
||||||
void ProgressIndicatorPainter::startAnimation()
|
void ProgressIndicatorPainter::startAnimation()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_callback, return);
|
QTC_ASSERT(m_callback, return);
|
||||||
m_timer.start();
|
m_timer.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Stops the progress indicator animation.
|
||||||
|
|
||||||
|
\sa setUpdateCallback
|
||||||
|
\sa startAnimation
|
||||||
|
*/
|
||||||
void ProgressIndicatorPainter::stopAnimation()
|
void ProgressIndicatorPainter::stopAnimation()
|
||||||
{
|
{
|
||||||
m_timer.stop();
|
m_timer.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
void Utils::ProgressIndicatorPainter::nextAnimationStep()
|
void Utils::ProgressIndicatorPainter::nextAnimationStep()
|
||||||
{
|
{
|
||||||
m_rotation = (m_rotation + m_rotationStep + 360) % 360;
|
m_rotation = (m_rotation + m_rotationStep + 360) % 360;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Constructs a ProgressIndicator of the size \a size and with the parent \a parent.
|
||||||
|
|
||||||
|
Use \l attachToWidget to make the progress indicator automatically resize and center on the
|
||||||
|
parent widget.
|
||||||
|
|
||||||
|
\sa attachToWidget
|
||||||
|
\sa setIndicatorSize
|
||||||
|
*/
|
||||||
ProgressIndicator::ProgressIndicator(ProgressIndicatorSize size, QWidget *parent)
|
ProgressIndicator::ProgressIndicator(ProgressIndicatorSize size, QWidget *parent)
|
||||||
: QWidget(parent), m_paint(size)
|
: QWidget(parent), m_paint(size)
|
||||||
{
|
{
|
||||||
@@ -130,17 +227,31 @@ ProgressIndicator::ProgressIndicator(ProgressIndicatorSize size, QWidget *parent
|
|||||||
updateGeometry();
|
updateGeometry();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Changes the size of the progress indicator to \a size.
|
||||||
|
|
||||||
|
\sa indicatorSize
|
||||||
|
*/
|
||||||
void ProgressIndicator::setIndicatorSize(ProgressIndicatorSize size)
|
void ProgressIndicator::setIndicatorSize(ProgressIndicatorSize size)
|
||||||
{
|
{
|
||||||
m_paint.setIndicatorSize(size);
|
m_paint.setIndicatorSize(size);
|
||||||
updateGeometry();
|
updateGeometry();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the size of the indicator in device independent pixels.
|
||||||
|
|
||||||
|
\sa indicatorSize
|
||||||
|
*/
|
||||||
QSize ProgressIndicator::sizeHint() const
|
QSize ProgressIndicator::sizeHint() const
|
||||||
{
|
{
|
||||||
return m_paint.size();
|
return m_paint.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Makes the indicator a child of \a parent, automatically centering on it,
|
||||||
|
and adapting to size changes.
|
||||||
|
*/
|
||||||
void ProgressIndicator::attachToWidget(QWidget *parent)
|
void ProgressIndicator::attachToWidget(QWidget *parent)
|
||||||
{
|
{
|
||||||
if (parentWidget())
|
if (parentWidget())
|
||||||
@@ -151,22 +262,34 @@ void ProgressIndicator::attachToWidget(QWidget *parent)
|
|||||||
raise();
|
raise();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
void ProgressIndicator::paintEvent(QPaintEvent *)
|
void ProgressIndicator::paintEvent(QPaintEvent *)
|
||||||
{
|
{
|
||||||
QPainter p(this);
|
QPainter p(this);
|
||||||
m_paint.paint(p, rect());
|
m_paint.paint(p, rect());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
void ProgressIndicator::showEvent(QShowEvent *)
|
void ProgressIndicator::showEvent(QShowEvent *)
|
||||||
{
|
{
|
||||||
m_paint.startAnimation();
|
m_paint.startAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
void ProgressIndicator::hideEvent(QHideEvent *)
|
void ProgressIndicator::hideEvent(QHideEvent *)
|
||||||
{
|
{
|
||||||
m_paint.stopAnimation();
|
m_paint.stopAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
bool ProgressIndicator::eventFilter(QObject *obj, QEvent *ev)
|
bool ProgressIndicator::eventFilter(QObject *obj, QEvent *ev)
|
||||||
{
|
{
|
||||||
if (obj == parent() && ev->type() == QEvent::Resize) {
|
if (obj == parent() && ev->type() == QEvent::Resize) {
|
||||||
@@ -175,6 +298,9 @@ bool ProgressIndicator::eventFilter(QObject *obj, QEvent *ev)
|
|||||||
return QWidget::eventFilter(obj, ev);
|
return QWidget::eventFilter(obj, ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\internal
|
||||||
|
*/
|
||||||
void ProgressIndicator::resizeToParent()
|
void ProgressIndicator::resizeToParent()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(parentWidget(), return);
|
QTC_ASSERT(parentWidget(), return);
|
||||||
|
|||||||
Reference in New Issue
Block a user