Compare commits
2 Commits
0e258979d9
...
5f36c7a0e1
| Author | SHA1 | Date | |
|---|---|---|---|
| 5f36c7a0e1 | |||
| fb2f9b6e30 |
+43
-11
@@ -73,15 +73,46 @@ func logColumnWidth(events []event) float32 {
|
|||||||
return width
|
return width
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// historyHeader is a bold tappable label used in the History table header row.
|
||||||
|
// In Fyne 2.7+ OnSelected is not fired for header cells (Row < 0), so the sort
|
||||||
|
// toggle is wired through the Tappable interface instead.
|
||||||
|
type historyHeader struct {
|
||||||
|
widget.BaseWidget
|
||||||
|
label *widget.Label
|
||||||
|
OnTapped func()
|
||||||
|
}
|
||||||
|
|
||||||
|
func newHistoryHeader() *historyHeader {
|
||||||
|
h := &historyHeader{label: widget.NewLabel("")}
|
||||||
|
h.label.TextStyle = fyne.TextStyle{Bold: true}
|
||||||
|
h.label.Wrapping = fyne.TextTruncate
|
||||||
|
h.ExtendBaseWidget(h)
|
||||||
|
return h
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *historyHeader) CreateRenderer() fyne.WidgetRenderer {
|
||||||
|
return widget.NewSimpleRenderer(h.label)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *historyHeader) Tapped(*fyne.PointEvent) {
|
||||||
|
if h.OnTapped != nil {
|
||||||
|
h.OnTapped()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h *historyHeader) SetText(text string) {
|
||||||
|
h.label.SetText(text)
|
||||||
|
}
|
||||||
|
|
||||||
func newHistoryView(events *[]event) (*fyne.Container, func()) {
|
func newHistoryView(events *[]event) (*fyne.Container, func()) {
|
||||||
descending := false
|
descending := false
|
||||||
headerText := func(id widget.TableCellID) string {
|
headerText := func(id widget.TableCellID) string {
|
||||||
headers := []string{"Time", "Trigger", "Job", "State", "Detail", "Log"}
|
headers := []string{"Time", "Trigger", "Job", "State", "Detail", "Log"}
|
||||||
if id.Row < 0 && id.Col == 0 {
|
if id.Row < 0 && id.Col == 0 {
|
||||||
if descending {
|
if descending {
|
||||||
return "Time desc"
|
return "Time ▼"
|
||||||
}
|
}
|
||||||
return "Time asc"
|
return "Time ▲"
|
||||||
}
|
}
|
||||||
if id.Row < 0 && id.Col >= 0 && id.Col < len(headers) {
|
if id.Row < 0 && id.Col >= 0 && id.Col < len(headers) {
|
||||||
return headers[id.Col]
|
return headers[id.Col]
|
||||||
@@ -117,21 +148,22 @@ func newHistoryView(events *[]event) (*fyne.Container, func()) {
|
|||||||
)
|
)
|
||||||
table.ShowHeaderRow = true
|
table.ShowHeaderRow = true
|
||||||
table.CreateHeader = func() fyne.CanvasObject {
|
table.CreateHeader = func() fyne.CanvasObject {
|
||||||
label := widget.NewLabel("")
|
return newHistoryHeader()
|
||||||
label.Wrapping = fyne.TextTruncate
|
|
||||||
return label
|
|
||||||
}
|
}
|
||||||
table.UpdateHeader = func(id widget.TableCellID, item fyne.CanvasObject) {
|
table.UpdateHeader = func(id widget.TableCellID, item fyne.CanvasObject) {
|
||||||
label := item.(*widget.Label)
|
h := item.(*historyHeader)
|
||||||
label.SetText(headerText(id))
|
h.SetText(headerText(id))
|
||||||
label.TextStyle = fyne.TextStyle{Bold: true}
|
|
||||||
label.Refresh()
|
|
||||||
}
|
|
||||||
table.OnSelected = func(id widget.TableCellID) {
|
|
||||||
if id.Row < 0 && id.Col == 0 {
|
if id.Row < 0 && id.Col == 0 {
|
||||||
|
h.OnTapped = func() {
|
||||||
descending = !descending
|
descending = !descending
|
||||||
table.Refresh()
|
table.Refresh()
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
h.OnTapped = nil
|
||||||
|
}
|
||||||
|
h.Refresh()
|
||||||
|
}
|
||||||
|
table.OnSelected = func(id widget.TableCellID) {
|
||||||
table.Unselect(id)
|
table.Unselect(id)
|
||||||
}
|
}
|
||||||
table.SetColumnWidth(0, 150)
|
table.SetColumnWidth(0, 150)
|
||||||
|
|||||||
+5
-5
@@ -202,9 +202,9 @@ func newJobsView(w fyne.Window, svc *app.Service) (fyne.CanvasObject, func()) {
|
|||||||
refreshView()
|
refreshView()
|
||||||
})
|
})
|
||||||
|
|
||||||
stopAllText, stopAllIcon := "Pause all", theme.MediaStopIcon()
|
stopAllText, stopAllIcon := "Disable auto", theme.MediaPauseIcon()
|
||||||
if schedulerPaused {
|
if schedulerPaused {
|
||||||
stopAllText, stopAllIcon = "Resume all", theme.MediaPlayIcon()
|
stopAllText, stopAllIcon = "Enable auto", theme.MediaPlayIcon()
|
||||||
}
|
}
|
||||||
schedulerStateText := "Scheduler running"
|
schedulerStateText := "Scheduler running"
|
||||||
if schedulerPaused {
|
if schedulerPaused {
|
||||||
@@ -223,12 +223,12 @@ func newJobsView(w fyne.Window, svc *app.Service) (fyne.CanvasObject, func()) {
|
|||||||
}
|
}
|
||||||
if schedulerPaused {
|
if schedulerPaused {
|
||||||
schedulerState.SetText("Scheduler paused")
|
schedulerState.SetText("Scheduler paused")
|
||||||
stopAllButton.SetText("Resume all")
|
stopAllButton.SetText("Enable auto")
|
||||||
stopAllButton.SetIcon(theme.MediaPlayIcon())
|
stopAllButton.SetIcon(theme.MediaPlayIcon())
|
||||||
} else {
|
} else {
|
||||||
schedulerState.SetText("Scheduler running")
|
schedulerState.SetText("Scheduler running")
|
||||||
stopAllButton.SetText("Pause all")
|
stopAllButton.SetText("Disable auto")
|
||||||
stopAllButton.SetIcon(theme.MediaStopIcon())
|
stopAllButton.SetIcon(theme.MediaPauseIcon())
|
||||||
}
|
}
|
||||||
list.Refresh()
|
list.Refresh()
|
||||||
refreshView()
|
refreshView()
|
||||||
|
|||||||
Reference in New Issue
Block a user