slint/internal/compiler/widgets/cupertino-base/progressindicator.slint

44 lines
1.5 KiB
Text

// Copyright © SixtyFPS GmbH <info@slint.dev>
// SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-Slint-Royalty-free-2.0 OR LicenseRef-Slint-Software-3.0
import { CupertinoPalette } from "styling.slint";
export component ProgressIndicator {
in property <float> progress;
in property <bool> indeterminate;
min-height: 6px;
horizontal-stretch: 1;
vertical-stretch: 0;
accessible-role: progress-indicator;
accessible-value: !root.indeterminate ? root.progress : "";
accessible-value-minimum: 0.0;
accessible-value-maximum: 1.0;
Rectangle {
clip: true;
border-radius: 3px;
i-rail := Rectangle {
border-radius: parent.border-radius;
background: CupertinoPalette.alternate-control-background;
border-width: 0.5px;
border-color: CupertinoPalette.border;
clip: true;
Rectangle {
border-width: 1px;
border-color: @radial-gradient(circle, #00000026, #00000000);
border-radius: parent.border-radius;
}
}
i-track := Rectangle {
width: !root.indeterminate ? parent.width * min(1, max(0, root.progress)) : parent.width;
height: 100%;
x: !root.indeterminate ? 0px : -parent.width + (parent.width * mod(animation-tick(), 2s) / 1s);
border-radius: parent.border-radius;
background: CupertinoPalette.accent-background;
}
}
}