Migrate BusyIndicator to QtQuick.Controls
Comes with a test for the seamless pause/resume REVIEW: 121070
This commit is contained in:
parent
2c65e911e8
commit
65a6861476
@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Copyright (C) 2010 by Artur Duque de Souza <asouzakde.org>
|
||||
* Copyright (C) 2011 by Daker Fernandes Pinheiro <dakerfp@gmail.com>
|
||||
* Copyright (C) 2014 by Kai Uwe Broulik <kde@privat.broulik.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
@ -19,26 +20,17 @@
|
||||
*/
|
||||
|
||||
import QtQuick 2.2
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import QtQuick.Controls 1.2
|
||||
import "styles" as Styles
|
||||
|
||||
/**
|
||||
* A simple busy indicator,
|
||||
* It is used to indicate a task whose duration is unknown. If the task
|
||||
* duration/number of steps is known, a ProgressBar should be used instead.
|
||||
*
|
||||
* @inherit QtQuick.Item
|
||||
* @inherit QtQuick.Controls.BusyIndicator
|
||||
*/
|
||||
Item {
|
||||
id: busy
|
||||
|
||||
/**
|
||||
* This property holds whether the busy animation is running.
|
||||
*
|
||||
* The default value is false.
|
||||
*/
|
||||
property bool running: false
|
||||
|
||||
// Plasma API
|
||||
BusyIndicator {
|
||||
/**
|
||||
* Set this property if you don't want to apply a filter to smooth
|
||||
* the busy icon while animating.
|
||||
@ -51,33 +43,6 @@ Item {
|
||||
implicitWidth: 52
|
||||
implicitHeight: 52
|
||||
|
||||
// Should use animation's pause to keep the
|
||||
// rotation smooth when running changes but
|
||||
// it has lot's of side effects on
|
||||
// initialization.
|
||||
onRunningChanged: {
|
||||
rotationAnimation.from = rotation;
|
||||
rotationAnimation.to = rotation + 360;
|
||||
}
|
||||
style: Styles.BusyIndicatorStyle {}
|
||||
|
||||
RotationAnimator on rotation {
|
||||
id: rotationAnimation
|
||||
|
||||
from: 0
|
||||
to: 360
|
||||
duration: 1500
|
||||
running: busy.running
|
||||
loops: Animation.Infinite
|
||||
}
|
||||
|
||||
PlasmaCore.SvgItem {
|
||||
id: widget
|
||||
svg: PlasmaCore.Svg { imagePath: "widgets/busywidget" }
|
||||
elementId: "busywidget"
|
||||
|
||||
anchors.centerIn: parent
|
||||
width: Math.min(busy.width, busy.height)
|
||||
height: width
|
||||
smooth: !running || smoothAnimation
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (C) 2014 Kai Uwe Broulik <kde@privat.broulik.de>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Library General Public License as
|
||||
* published by the Free Software Foundation; either version 2, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Library General Public License for more details
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA.
|
||||
*/
|
||||
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls.Styles 1.2
|
||||
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
|
||||
BusyIndicatorStyle {
|
||||
indicator: PlasmaCore.SvgItem {
|
||||
svg: PlasmaCore.Svg { imagePath: "widgets/busywidget" }
|
||||
elementId: "busywidget"
|
||||
|
||||
anchors.centerIn: parent
|
||||
width: Math.min(control.width, control.height)
|
||||
height: width
|
||||
smooth: !control.running || control.smoothAnimation
|
||||
|
||||
Connections {
|
||||
target: control
|
||||
onRunningChanged: {
|
||||
rotationAnimator.from = rotation
|
||||
rotationAnimator.to = rotation + 360
|
||||
}
|
||||
}
|
||||
|
||||
RotationAnimator on rotation {
|
||||
id: rotationAnimator
|
||||
from: 0
|
||||
to: 360
|
||||
duration: 1500
|
||||
running: control.running
|
||||
loops: Animation.Infinite
|
||||
}
|
||||
}
|
||||
}
|
37
tests/components/busyindicator.qml
Normal file
37
tests/components/busyindicator.qml
Normal file
@ -0,0 +1,37 @@
|
||||
import QtQuick 2.0
|
||||
import org.kde.plasma.components 2.0 as PlasmaComponents
|
||||
|
||||
Rectangle {
|
||||
width: 600
|
||||
height: 300
|
||||
color: "white"
|
||||
|
||||
Column {
|
||||
anchors.fill: parent
|
||||
anchors.margins: 20
|
||||
spacing: 20
|
||||
|
||||
PlasmaComponents.Label {
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: "When checking and unchecking the checkbox, " +
|
||||
"the busy indicator should resume where it has " +
|
||||
"paused and not glitch around"
|
||||
}
|
||||
|
||||
Row {
|
||||
spacing: 20
|
||||
|
||||
PlasmaComponents.BusyIndicator {
|
||||
running: runningButton.checked
|
||||
}
|
||||
|
||||
PlasmaComponents.CheckBox {
|
||||
id: runningButton
|
||||
text: "Running"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user