commit 01863cb
Kalyan Sriram
·
2021-12-09 01:06:10 +0000 UTC
parent 8d2b4a9
ui: buffers: sort buffer list Implements sorting of both network names and buffer names inside networks.
1 files changed,
+31,
-24
+31,
-24
1@@ -251,39 +251,46 @@ func (bs *BufferList) Previous() {
2 }
3
4 func (bs *BufferList) Add(netID, netName, title string) (i int, added bool) {
5+ i = 0
6 lTitle := strings.ToLower(title)
7- gotNetID := false
8- for i, b := range bs.list {
9+ for bi, b := range bs.list {
10+ if netName == "" && b.netID == netID {
11+ netName = b.netName
12+ }
13+ if netName == "" || b.netName < netName {
14+ i = bi + 1
15+ continue
16+ }
17+ if b.netName > netName {
18+ break
19+ }
20 lbTitle := strings.ToLower(b.title)
21- if b.netID == netID {
22- gotNetID = true
23- if lbTitle == lTitle {
24- return i, false
25- }
26- } else if gotNetID || (b.netID == netID && lbTitle < lTitle) {
27- b := buffer{
28- netID: netID,
29- netName: netName,
30- title: title,
31- }
32- bs.list = append(bs.list[:i+1], bs.list[i:]...)
33- bs.list[i] = b
34- if i <= bs.current && bs.current < len(bs.list) {
35- bs.current++
36- }
37- return i, true
38+ if lbTitle < lTitle {
39+ i = bi + 1
40+ continue
41 }
42+ if lbTitle == lTitle {
43+ return i, false
44+ }
45+ break
46 }
47
48- if netName == "" {
49- netName = netID
50+ if i <= bs.current && bs.current < len(bs.list) {
51+ bs.current++
52 }
53- bs.list = append(bs.list, buffer{
54+
55+ b := buffer{
56 netID: netID,
57 netName: netName,
58 title: title,
59- })
60- return len(bs.list) - 1, true
61+ }
62+ if i == len(bs.list) {
63+ bs.list = append(bs.list, b)
64+ } else {
65+ bs.list = append(bs.list[:i+1], bs.list[i:]...)
66+ bs.list[i] = b
67+ }
68+ return i, true
69 }
70
71 func (bs *BufferList) Remove(netID, title string) bool {