syncthingtray/plasmoid/package6/contents/ui/RecentChangesPage.qml

128 lines
5.4 KiB
QML

import QtQuick 2.3
import QtQuick.Layouts 1.1
import QtQml.Models 2.2
import org.kde.plasma.components 3.0 as PlasmaComponents3
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.kirigami 2.20 as Kirigami
Item {
property alias view: recentChangesView
objectName: "RecentChangesPage"
PlasmaComponents3.ScrollView {
anchors.fill: parent
// HACK: workaround for https://bugreports.qt.io/browse/QTBUG-83890
PlasmaComponents3.ScrollBar.horizontal.policy: PlasmaComponents3.ScrollBar.AlwaysOff
contentItem: TopLevelView {
id: recentChangesView
model: plasmoid.recentChangesModel
delegate: TopLevelItem {
width: recentChangesView.effectiveWidth()
ColumnLayout {
width: parent.width
spacing: 0
RowLayout {
Layout.fillWidth: true
Kirigami.Icon {
Layout.preferredWidth: Kirigami.Units.iconSizes.small
Layout.preferredHeight: Kirigami.Units.iconSizes.small
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
source: actionIcon
}
PlasmaComponents3.Label {
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
Layout.fillWidth: true
elide: Text.ElideRight
text: extendedAction
}
Item {
width: Kirigami.Units.smallSpacing
}
Image {
Layout.preferredWidth: Kirigami.Units.iconSizes.small
Layout.preferredHeight: Kirigami.Units.iconSizes.small
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
height: parent.height
fillMode: Image.PreserveAspectFit
source: plasmoid.faUrl + "calendar"
}
PlasmaComponents3.Label {
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
elide: Text.ElideRight
text: eventTime
}
Item {
width: Kirigami.Units.smallSpacing
}
Image {
Layout.preferredWidth: Kirigami.Units.iconSizes.small
Layout.preferredHeight: Kirigami.Units.iconSizes.small
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
height: parent.height
fillMode: Image.PreserveAspectFit
source: plasmoid.faUrl + "qrcode"
}
PlasmaComponents3.Label {
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
elide: Text.ElideRight
text: modifiedBy
}
}
RowLayout {
Layout.fillWidth: true
Image {
Layout.preferredWidth: Kirigami.Units.iconSizes.small
Layout.preferredHeight: Kirigami.Units.iconSizes.small
Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft
height: parent.height
fillMode: Image.PreserveAspectFit
source: plasmoid.faUrl + (itemType === "file" ? "file-o" : "folder-o")
}
PlasmaComponents3.Label {
text: directoryId + ": "
font.weight: Font.DemiBold
}
PlasmaComponents3.Label {
Layout.fillWidth: true
text: path
elide: Text.ElideRight
}
}
}
function copyPath() {
plasmoid.copyToClipboard(path)
}
function copyDeviceId() {
plasmoid.copyToClipboard(modifiedBy)
}
function copyFolderId() {
plasmoid.copyToClipboard(folderId)
}
}
PlasmaExtras.Menu {
id: contextMenu
PlasmaExtras.MenuItem {
text: qsTr("Copy path")
icon: "edit-copy"
onClicked: recentChangesView.currentItem.copyPath()
}
PlasmaExtras.MenuItem {
text: qsTr("Copy device ID")
icon: "network-server-symbolic"
onClicked: recentChangesView.currentItem.copyDeviceId()
}
PlasmaExtras.MenuItem {
text: qsTr("Copy folder ID")
icon: "folder"
onClicked: recentChangesView.currentItem.copyFolderId()
}
}
}
}
}