diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2013-08-26 16:03:22 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-08-28 13:15:01 +0200 |
commit | 2a11286469bf28b348821f015d72f8cb06f54b95 (patch) | |
tree | 3063cf7af91332fed17876a714aba67deab519cd /src/winextras/qwintaskbarprogress.cpp | |
parent | 637901270b9342d3804342ae301dc0569efe7fb5 (diff) |
Refactor QWinTaskbarProgress out of QWinTaskbarButton
Change-Id: I8b95d7804d9070c8e93993ad6acf5c22d964880d
Reviewed-by: Ivan Vizir <define-true-false@yandex.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Diffstat (limited to 'src/winextras/qwintaskbarprogress.cpp')
-rw-r--r-- | src/winextras/qwintaskbarprogress.cpp | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/src/winextras/qwintaskbarprogress.cpp b/src/winextras/qwintaskbarprogress.cpp new file mode 100644 index 0000000..607798e --- /dev/null +++ b/src/winextras/qwintaskbarprogress.cpp @@ -0,0 +1,226 @@ +/**************************************************************************** + ** + ** Copyright (C) 2013 Ivan Vizir <define-true-false@yandex.com> + ** Contact: http://www.qt-project.org/legal + ** + ** This file is part of the QtWinExtras module of the Qt Toolkit. + ** + ** $QT_BEGIN_LICENSE:LGPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and Digia. For licensing terms and + ** conditions see http://qt.digia.com/licensing. For further information + ** use the contact form at http://qt.digia.com/contact-us. + ** + ** GNU Lesser General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU Lesser + ** General Public License version 2.1 as published by the Free Software + ** Foundation and appearing in the file LICENSE.LGPL included in the + ** packaging of this file. Please review the following information to + ** ensure the GNU Lesser General Public License version 2.1 requirements + ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. + ** + ** In addition, as a special exception, Digia gives you certain additional + ** rights. These rights are described in the Digia Qt LGPL Exception + ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU + ** General Public License version 3.0 as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL included in the + ** packaging of this file. Please review the following information to + ** ensure the GNU General Public License version 3.0 requirements will be + ** met: http://www.gnu.org/copyleft/gpl.html. + ** + ** + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + +#include "qwintaskbarprogress.h" + +QT_BEGIN_NAMESPACE + +/*! + \class QWinTaskbarProgress + \inmodule QtWinExtras + \brief The QWinTaskbarProgress class represents the Windows taskbar progress indicator. + + \since 5.2 + + The QWinTaskbarProgress class enables you to to display a progress indicator + on a taskbar button. + */ + +/*! + \fn void QWinTaskbarProgress::stateChanged(ProgressState state) + + This signal is emitted when the \c state property changes its value. + The \a state argument contains the new value. + */ + +/*! + \fn void QWinTaskbarProgress::valueChanged(int value) + + This signal is emitted when the progress indicator \a value changes. + */ + +/*! + \enum QWinTaskbarProgress::ProgressState + + This enum type specifies the state of the progress indicator. + + \value NoProgressState + No progress indicator is displayed. + \value IndeterminateState + The progress indicator cycles repeatedly. + \value NormalState + The progress indicator is green. + \value PausedState + The progress indicator turns yellow. Use this state to show that the + operation has been paused, but it can be continued. + \value ErrorState + The progress indicator turns red. + */ + +class QWinTaskbarProgressPrivate +{ +public: + QWinTaskbarProgressPrivate(); + + int value; + int minimum; + int maximum; + QWinTaskbarProgress::ProgressState state; +}; + +QWinTaskbarProgressPrivate::QWinTaskbarProgressPrivate() : + value(0), minimum(0), maximum(100), state(QWinTaskbarProgress::NoProgressState) +{ +} + +/*! + Constructs a QWinTaskbarProgress with the parent object \a parent. + */ +QWinTaskbarProgress::QWinTaskbarProgress(QObject *parent) : + QObject(parent), d_ptr(new QWinTaskbarProgressPrivate) +{ +} + +/*! + Destroys the QWinTaskbarProgress. + */ +QWinTaskbarProgress::~QWinTaskbarProgress() +{ +} + +/*! + \property QWinTaskbarProgress::state + \brief the state of the progress indicator + + The default value is \c NoProgressState. + */ +QWinTaskbarProgress::ProgressState QWinTaskbarProgress::state() const +{ + Q_D(const QWinTaskbarProgress); + return d->state; +} + +void QWinTaskbarProgress::setState(QWinTaskbarProgress::ProgressState state) +{ + Q_D(QWinTaskbarProgress); + if (state == d->state) + return; + + d->state = state; + emit stateChanged(d->state); +} + +/*! + \property QWinTaskbarProgress::value + \brief the current value of the progress indicator + + The default value is \c 0. + */ +int QWinTaskbarProgress::value() const +{ + Q_D(const QWinTaskbarProgress); + return d->value; +} + +void QWinTaskbarProgress::setValue(int value) +{ + Q_D(QWinTaskbarProgress); + if ((value == d->value) || value < d->minimum || value > d->maximum) + return; + + d->value = value; + emit valueChanged(d->value); +} + +/*! + \property QWinTaskbarProgress::minimum + \brief the minimum value of the progress indicator + + The default value is \c 0. + */ +int QWinTaskbarProgress::minimum() const +{ + Q_D(const QWinTaskbarProgress); + return d->minimum; +} + +void QWinTaskbarProgress::setMinimum(int minimum) +{ + Q_D(QWinTaskbarProgress); + setRange(minimum, qMax(minimum, d->maximum)); +} + +/*! + \property QWinTaskbarProgress::maximum + \brief the maximum value of the progress indicator + + The default value is \c 100. + */ +int QWinTaskbarProgress::maximum() const +{ + Q_D(const QWinTaskbarProgress); + return d->maximum; +} + +void QWinTaskbarProgress::setMaximum(int maximum) +{ + Q_D(QWinTaskbarProgress); + setRange(qMin(d->minimum, maximum), maximum); +} + +/*! + Sets both the \a minimum and \a maximum values. + */ +void QWinTaskbarProgress::setRange(int minimum, int maximum) +{ + Q_D(QWinTaskbarProgress); + if (minimum != d->minimum || maximum != d->maximum) { + d->minimum = minimum; + d->maximum = qMax(minimum, maximum); + + if (d->value < d->minimum || d->value > d->maximum) + reset(); + } +} + +/*! + Resets the progress indicator. + + This function sets the state to \c NoProgressState and rewinds the + value to the minimum value. + */ +void QWinTaskbarProgress::reset() +{ + setValue(minimum()); + setState(NoProgressState); +} + +QT_END_NAMESPACE |