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 {