47 lines
1.2 KiB
Swift
47 lines
1.2 KiB
Swift
//
|
|
// Progressbar.swift
|
|
// Adwaita
|
|
//
|
|
// Created by david-swift on 03.01.24.
|
|
//
|
|
|
|
import Libadwaita
|
|
|
|
/// A progress bar widget.
|
|
public struct ProgressBar: Widget {
|
|
|
|
/// The value.
|
|
var value: Double
|
|
|
|
/// Initialize a progress bar widget.
|
|
/// - Parameters:
|
|
/// - value: The value.
|
|
/// - total: The maximum value.
|
|
public init(value: Double, total: Double) {
|
|
if total != 0 {
|
|
self.value = value / total
|
|
} else {
|
|
self.value = 0
|
|
}
|
|
}
|
|
|
|
/// Update the view storage of the progress bar widget.
|
|
/// - Parameters:
|
|
/// - storage: The view storage.
|
|
/// - modifiers: Modify views before being updated.
|
|
public func update(_ storage: ViewStorage, modifiers: [(View) -> View]) {
|
|
if let bar = storage.view as? Libadwaita.ProgressBar {
|
|
_ = bar.fraction(value)
|
|
}
|
|
}
|
|
|
|
/// Get the container of the progress bar widget.
|
|
/// - Returns: The view storage.
|
|
public func container(modifiers: [(View) -> View]) -> ViewStorage {
|
|
let bar = Libadwaita.ProgressBar().fraction(value)
|
|
_ = bar.sensitive(false)
|
|
return .init(bar)
|
|
}
|
|
|
|
}
|