Files
neochat/src/timeline/JourneySectionStopDelegateLineSegment.qml
James Graham ba45318b56 Improved itinerary delegates
Steal the look of itinerary items from itinerary but simplified. Also includes new support for flights and restaurants

![image](/uploads/a574d2362edad52ecf91ce89a1849f27/image.png)
2024-03-23 09:33:51 +00:00

81 lines
2.2 KiB
QML

// SPDX-FileCopyrightText: 2020 Volker Krause <vkrause@kde.org>
// SPDX-License-Identifier: LGPL-2.0-or-later
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls as QQC2
import org.kde.kirigami as Kirigami
/**
* @brief Line segment drawn on the left in the journey section view.
*
* Can be used in a fully drawn form, or partially drawn as a progress
* overlay over the full variant.
*/
Item {
id: root
/**
* @brief Whether the segment is representing the start of the journey.
*
* I.e. this will show a segment rounded at the top with a stop marker.
*/
property bool isDeparture: false
/**
* @brief Whether the segment is representing the end of the journey.
*
* I.e. this will show a segment rounded at the bottom with a stop marker.
*/
property bool isArrival: false
/**
* @brief The color of the segment.
*/
property color lineColor: Kirigami.Theme.textColor
/**
* @brief The width of the segment.
*/
property int lineWidth: Kirigami.Units.smallSpacing *4
implicitWidth: root.lineWidth * 2
clip: true
Kirigami.ShadowedRectangle {
id: line
x: root.lineWidth / 2
y: isDeparture? parent.height-height:0
width: root.lineWidth
color: root.lineColor
corners {
topRightRadius: isDeparture ? Math.round(width / 2) : 0
topLeftRadius: isDeparture ? Math.round(width / 2) : 0
bottomRightRadius: isArrival ? Math.round(width / 2) : 0
bottomLeftRadius: isArrival ? Math.round(width / 2) : 0
}
height:
if (isArrival) {
Math.round(parent.height / 2) + root.lineWidth / 2
} else if (isDeparture) {
Math.round(parent.height / 2) + root.lineWidth / 2
} else {
parent.height
}
}
Rectangle {
id: stopDot
x: line.x + (line.width - width) / 2
y: parent.height / 2 - width / 2
radius: width / 2
width: root.lineWidth * 0.6
height: width
color: Kirigami.Theme.backgroundColor
visible: root.isArrival || root.isDeparture
}
}