blob: 6973633b7e0b5b907e6c535d8ff8d0bf7fc21168 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
import QtQuick 2.15
import QtQuick.Controls 2.15
import com.nextcloud.desktopclient 1.0 as NC
import Style 1.0
ScrollView {
id: controlRoot
property alias model: activityList.model
property bool isFileActivityList: false
signal openFile(string filePath)
signal activityItemClicked(int index)
contentWidth: availableWidth
padding: 1
focus: false
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
data: NC.WheelHandler {
target: controlRoot.contentItem
}
ListView {
id: activityList
Accessible.role: Accessible.List
Accessible.name: qsTr("Activity list")
clip: true
spacing: 0
currentIndex: -1
interactive: true
highlight: Rectangle {
id: activityHover
width: activityList.currentItem.width
height: activityList.currentItem.height
color: Style.lightHover
visible: activityList.activeFocus
}
highlightFollowsCurrentItem: true
highlightMoveDuration: 0
highlightResizeDuration: 0
highlightRangeMode: ListView.ApplyRange
preferredHighlightBegin: 0
preferredHighlightEnd: controlRoot.height
delegate: ActivityItem {
isFileActivityList: controlRoot.isFileActivityList
width: activityList.contentWidth
flickable: activityList
onHoveredChanged: if (hovered) {
// When we set the currentIndex the list view will scroll...
// unless we tamper with the preferred highlight points to stop this.
const savedPreferredHighlightBegin = activityList.preferredHighlightBegin;
const savedPreferredHighlightEnd = activityList.preferredHighlightEnd;
// Set overkill values to make sure no scroll happens when we hover with mouse
activityList.preferredHighlightBegin = -controlRoot.height;
activityList.preferredHighlightEnd = controlRoot.height * 2;
activityList.currentIndex = index
// Reset original values so keyboard navigation makes list view scroll
activityList.preferredHighlightBegin = savedPreferredHighlightBegin;
activityList.preferredHighlightEnd = savedPreferredHighlightEnd;
forceActiveFocus();
}
onClicked: {
if (model.isCurrentUserFileActivity && model.openablePath) {
openFile("file://" + model.openablePath);
} else {
activityItemClicked(model.index)
}
}
}
}
}
|