blob: 7ffa8b9cef810259707dbc6034fc390a3110242c (
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
pragma ComponentBehavior: Bound
import QtQuick 2.15 // Removing version break onCurrentItemChanged
import QtQuick.Layouts
import QtQuick.Controls as QQC2
import org.kde.kirigamiaddons.delegates as Delegates
import org.kde.kitemmodels 1 as KItemModels
import org.kde.kirigami as Kirigami
import org.deprecated.kodereviewer
Kirigami.Page {
id: root
required property NetworkManager connection
required property Project project
signal pullRequestSelected(var pullRequest)
readonly property int currentWidth: _private.currentWidth + 1
onCurrentWidthChanged: pageStack.defaultColumnWidth = root.currentWidth
Component.onCompleted: {
pageStack.defaultColumnWidth = root.currentWidth
connection.getPullRequests()
}
Kirigami.Theme.colorSet: Kirigami.Theme.View
Kirigami.Theme.inherit: false
PullRequestModel {
id: pullRequestModel
project: root.project
}
KItemModels.KSortFilterProxyModel {
id: pullRequestFilterModel
sourceModel: pullRequestModel
filterRoleName: "title"
}
title: "Pull Requests"
actions: [
Kirigami.Action {
id: searchAction
icon.name: "search"
shortcut: Shortcut {
sequence: "Ctrl+F"
onActivated: {
print("Shortcut triggered")
searchAction.trigger()
}
}
onTriggered: print("search triggered")
}
]
contentItem: QQC2.StackView {
id: stackView
anchors.fill: parent
initialItem: pullRequestListView
Component {
id: pullRequestListView
QQC2.ScrollView {
ListView {
id: view
model: pullRequestFilterModel
clip: true
delegate: Delegates.RoundedItemDelegate {
required property int number
required property string title
required property int index
highlighted: ListView.isCurrentItem
text: `${number} - ${title}`
icon.name: "vcs-merge-request"
onClicked: root.pullRequestSelected(pullRequestModel.get(index))
}
}
}
}
}
MouseArea {
anchors.top: parent.top
anchors.bottom: parent.bottom
parent: applicationWindow().overlay.parent
x: root.currentWidth - width / 2
width: Kirigami.Units.smallSpacing * 2
z: root.z + 1
enabled: true
visible: enabled
cursorShape: Qt.SplitHCursor
property int _lastX
onPressed: mouse => {
_lastX = mouse.x;
}
onPositionChanged: mouse => {
if (_lastX == -1) {
return;
}
if (mouse.x > _lastX) {
// _private.currentWidth = _private.currentWidth + (_lastX + mouse.x);
_private.currentWidth = Math.min(_private.defaultWidth, _private.currentWidth + (mouse.x - _lastX))
} else if (mouse.x < _lastX) {
const tmpWidth = _private.currentWidth - (_lastX - mouse.x);
if (tmpWidth > _private.minWidth)
_private.currentWidth = tmpWidth;
}
}
}
/*
* Hold the modifiable currentWidth in a private object so that only internal
* members can modify it.
*/
QtObject {
id: _private
property int currentWidth: defaultWidth
readonly property int defaultWidth: Kirigami.Units.gridUnit * 17
readonly property int minWidth: Kirigami.Units.gridUnit * 2
}
}
|