85 lines
1.8 KiB
Go
85 lines
1.8 KiB
Go
package tui
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/gdamore/tcell/v2"
|
|
"github.com/rivo/tview"
|
|
)
|
|
|
|
func (ui *UI) toggleStatusBar(show bool) {
|
|
var textColor, textBgColor tcell.Color
|
|
if ui.UseColors {
|
|
textColor = tcell.NewRGBColor(0, 0, 0)
|
|
textBgColor = tcell.NewRGBColor(36, 121, 208)
|
|
} else {
|
|
textColor = tcell.NewRGBColor(0, 0, 0)
|
|
textBgColor = tcell.NewRGBColor(255, 255, 255)
|
|
}
|
|
|
|
ui.grid.Clear()
|
|
|
|
ui.statusMut.Lock()
|
|
defer ui.statusMut.Unlock()
|
|
|
|
if show {
|
|
ui.status = tview.NewTextView().SetDynamicColors(true)
|
|
ui.status.SetTextColor(textColor)
|
|
ui.status.SetBackgroundColor(textBgColor)
|
|
|
|
ui.grid.SetRows(1, 1, 0, 1, 1)
|
|
ui.grid.AddItem(ui.header, 0, 0, 1, 1, 0, 0, false).
|
|
AddItem(ui.currentDirLabel, 1, 0, 1, 1, 0, 0, false).
|
|
AddItem(ui.table, 2, 0, 1, 1, 0, 0, true).
|
|
AddItem(ui.status, 3, 0, 1, 1, 0, 0, false).
|
|
AddItem(ui.footer, 4, 0, 1, 1, 0, 0, false)
|
|
return
|
|
}
|
|
ui.status = nil
|
|
ui.grid.SetRows(1, 1, 0, 1)
|
|
ui.grid.AddItem(ui.header, 0, 0, 1, 1, 0, 0, false).
|
|
AddItem(ui.currentDirLabel, 1, 0, 1, 1, 0, 0, false).
|
|
AddItem(ui.table, 2, 0, 1, 1, 0, 0, true).
|
|
AddItem(ui.footer, 3, 0, 1, 1, 0, 0, false)
|
|
}
|
|
|
|
func (ui *UI) updateStatusWorker() {
|
|
for {
|
|
ui.updateStatus()
|
|
time.Sleep(500 * time.Millisecond)
|
|
}
|
|
}
|
|
|
|
func (ui *UI) updateStatus() {
|
|
ui.workersMut.Lock()
|
|
cnt := ui.activeWorkers
|
|
ui.workersMut.Unlock()
|
|
|
|
ui.statusMut.RLock()
|
|
status := ui.status
|
|
ui.statusMut.RUnlock()
|
|
|
|
if cnt == 0 && status == nil {
|
|
return
|
|
}
|
|
|
|
if cnt > 0 && status == nil {
|
|
ui.app.QueueUpdateDraw(func() {
|
|
ui.toggleStatusBar(true)
|
|
})
|
|
} else if cnt == 0 {
|
|
ui.app.QueueUpdateDraw(func() {
|
|
ui.toggleStatusBar(false)
|
|
})
|
|
return
|
|
}
|
|
|
|
ui.app.QueueUpdateDraw(func() {
|
|
msg := fmt.Sprintf(" Active background deletions: %d", cnt)
|
|
ui.statusMut.RLock()
|
|
ui.status.SetText(msg)
|
|
ui.statusMut.RUnlock()
|
|
})
|
|
}
|