summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ui/buffers.go42
-rw-r--r--ui/draw_utils.go14
-rw-r--r--ui/ui.go24
3 files changed, 43 insertions, 37 deletions
diff --git a/ui/buffers.go b/ui/buffers.go
index 823ece0..8fdd4b6 100644
--- a/ui/buffers.go
+++ b/ui/buffers.go
@@ -368,51 +368,45 @@ func (bs *BufferList) idx(title string) int {
func (bs *BufferList) DrawVerticalBufferList(screen tcell.Screen, x0, y0, width, height int) {
width--
- st := tcell.StyleDefault
-
- for y := y0; y < y0+height; y++ {
- for x := x0; x < x0+width; x++ {
- screen.SetContent(x, y, ' ', nil, st)
- }
- screen.SetContent(x0+width, y, 0x2502, nil, st)
- }
+ drawVerticalLine(screen, x0+width, y0, height)
+ clearArea(screen, x0, y0, width, height)
indexPadding := 1 + int(math.Ceil(math.Log10(float64(len(bs.list)))))
for i, b := range bs.list {
- st = tcell.StyleDefault
x := x0
y := y0 + i
+ st := tcell.StyleDefault
if b.unread {
st = st.Bold(true)
- } else if y == bs.current {
+ } else if i == bs.current {
st = st.Underline(true)
}
if i == bs.clicked {
st = st.Reverse(true)
}
if bs.showBufferNumbers {
+ indexSt := st.Foreground(tcell.ColorGray)
indexText := fmt.Sprintf("%d:", i)
- for ; x < x0+indexPadding-len(indexText); x++ {
- screen.SetContent(x, y, ' ', nil, tcell.StyleDefault)
- }
- printString(screen, &x, y, Styled(indexText, st.Foreground(tcell.ColorGrey)))
+ printString(screen, &x, y, Styled(indexText, indexSt))
+ x = x0 + indexPadding
}
+
title := truncate(b.title, width-(x-x0), "\u2026")
printString(screen, &x, y, Styled(title, st))
- if 0 < b.highlights {
- st = st.Foreground(tcell.ColorRed).Reverse(true)
- screen.SetContent(x, y, ' ', nil, st)
- x++
- printNumber(screen, &x, y, st, b.highlights)
- screen.SetContent(x, y, ' ', nil, st)
- x++
- }
+
if i == bs.clicked {
- st = tcell.StyleDefault.Reverse(true)
+ st := tcell.StyleDefault.Reverse(true)
for ; x < x0+width; x++ {
screen.SetContent(x, y, ' ', nil, st)
}
- screen.SetContent(x0+width, y, 0x2590, nil, st)
+ screen.SetContent(x, y, 0x2590, nil, st)
+ }
+
+ if b.highlights != 0 {
+ highlightSt := st.Foreground(tcell.ColorRed).Reverse(true)
+ highlightText := fmt.Sprintf(" %d ", b.highlights)
+ x = x0 + width - len(highlightText)
+ printString(screen, &x, y, Styled(highlightText, highlightSt))
}
}
}
diff --git a/ui/draw_utils.go b/ui/draw_utils.go
index 947e71b..45e81db 100644
--- a/ui/draw_utils.go
+++ b/ui/draw_utils.go
@@ -53,3 +53,17 @@ func printTime(screen tcell.Screen, x int, y int, st tcell.Style, t time.Time) {
screen.SetContent(x+3, y, mn0, nil, st)
screen.SetContent(x+4, y, mn1, nil, st)
}
+
+func clearArea(screen tcell.Screen, x0, y0, width, height int) {
+ for x := x0; x < x0+width; x++ {
+ for y := y0; y < y0+height; y++ {
+ screen.SetContent(x, y, ' ', nil, tcell.StyleDefault)
+ }
+ }
+}
+
+func drawVerticalLine(screen tcell.Screen, x, y0, height int) {
+ for y := y0; y < y0+height; y++ {
+ screen.SetContent(x, y, 0x2502, nil, tcell.StyleDefault)
+ }
+}
diff --git a/ui/ui.go b/ui/ui.go
index e445e17..31968f4 100644
--- a/ui/ui.go
+++ b/ui/ui.go
@@ -355,24 +355,22 @@ func drawVerticalMemberList(screen tcell.Screen, x0, y0, width, height int, memb
}
}
- for y := y0; y < y0+height; y++ {
- screen.SetContent(x0, y, 0x2502, nil, tcell.StyleDefault)
- for x := x0 + 1; x < x0+width; x++ {
- screen.SetContent(x, y, ' ', nil, tcell.StyleDefault)
- }
- }
+ drawVerticalLine(screen, x0, y0, height)
+ x0++
+ width--
+ clearArea(screen, x0, y0, width, height)
for i, m := range members[*offset:] {
- x := x0 + 1
+ x := x0
y := y0 + i
-
if m.PowerLevel != "" {
- powerLevel := Styled(string([]rune(m.PowerLevel)[0]), tcell.StyleDefault.Foreground(tcell.ColorGreen))
- printString(screen, &x, y, powerLevel)
+ powerLevelText := m.PowerLevel[:1]
+ powerLevelSt := tcell.StyleDefault.Foreground(tcell.ColorGreen)
+ printString(screen, &x, y, Styled(powerLevelText, powerLevelSt))
} else {
- x += 1
+ x++
}
- name := truncate(m.Name.Name, width-(x-x0), "\u2026")
- printString(screen, &x, y, Styled(name, tcell.StyleDefault))
+ name := truncate(m.Name.Name, width-1, "\u2026")
+ printString(screen, &x, y, PlainString(name))
}
}