diff options
-rw-r--r-- | ui/buffers.go | 42 | ||||
-rw-r--r-- | ui/draw_utils.go | 14 | ||||
-rw-r--r-- | ui/ui.go | 24 |
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) + } +} @@ -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)) } } |