1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Merge pull request #463 from Seanstoppable/weathermultisource

Flip weather over to a multi-source widget
This commit is contained in:
Chris Cummer 2019-05-24 17:43:29 -07:00 committed by GitHub
commit 725b0ee79b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 31 deletions

View File

@ -4,9 +4,10 @@ import "github.com/gdamore/tcell"
func (widget *Widget) initializeKeyboardControls() { func (widget *Widget) initializeKeyboardControls() {
widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt") widget.SetKeyboardChar("/", widget.ShowHelp, "Show/hide this help prompt")
widget.SetKeyboardChar("h", widget.Prev, "Select previous item") widget.SetKeyboardChar("r", widget.Refresh, "Refresh Widget")
widget.SetKeyboardChar("l", widget.Next, "Select next item") widget.SetKeyboardChar("h", widget.PrevSource, "Select previous city")
widget.SetKeyboardChar("l", widget.NextSource, "Select next city")
widget.SetKeyboardKey(tcell.KeyLeft, widget.Prev, "Select previous item") widget.SetKeyboardKey(tcell.KeyLeft, widget.PrevSource, "Select previous city")
widget.SetKeyboardKey(tcell.KeyRight, widget.Next, "Select next item") widget.SetKeyboardKey(tcell.KeyRight, widget.NextSource, "Select next city")
} }

View File

@ -9,29 +9,32 @@ import (
// Widget is the container for weather data. // Widget is the container for weather data.
type Widget struct { type Widget struct {
wtf.KeyboardWidget wtf.KeyboardWidget
wtf.MultiSourceWidget
wtf.TextWidget wtf.TextWidget
// APIKey string // APIKey string
Data []*owm.CurrentWeatherData Data []*owm.CurrentWeatherData
Idx int
pages *tview.Pages
settings *Settings settings *Settings
} }
// NewWidget creates and returns a new instance of the weather Widget // NewWidget creates and returns a new instance of the weather Widget
func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget {
widget := Widget{ widget := Widget{
KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common), KeyboardWidget: wtf.NewKeyboardWidget(app, pages, settings.common),
TextWidget: wtf.NewTextWidget(app, settings.common, true), MultiSourceWidget: wtf.NewMultiSourceWidget(settings.common, "cityid", "cityids"),
TextWidget: wtf.NewTextWidget(app, settings.common, true),
Idx: 0,
pages: pages,
settings: settings, settings: settings,
} }
widget.initializeKeyboardControls() widget.initializeKeyboardControls()
widget.View.SetInputCapture(widget.InputCapture) widget.View.SetInputCapture(widget.InputCapture)
widget.SetDisplayFunction(widget.display)
widget.KeyboardWidget.SetView(widget.View) widget.KeyboardWidget.SetView(widget.View)
return &widget return &widget
@ -65,28 +68,6 @@ func (widget *Widget) Refresh() {
widget.display() widget.display()
} }
// Next displays data for the next city data in the list. If the current city is the last
// city, it wraps to the first city.
func (widget *Widget) Next() {
widget.Idx++
if widget.Idx == len(widget.Data) {
widget.Idx = 0
}
widget.display()
}
// Prev displays data for the previous city in the list. If the previous city is the first
// city, it wraps to the last city.
func (widget *Widget) Prev() {
widget.Idx--
if widget.Idx < 0 {
widget.Idx = len(widget.Data) - 1
}
widget.display()
}
func (widget *Widget) HelpText() string { func (widget *Widget) HelpText() string {
return widget.KeyboardWidget.HelpText() return widget.KeyboardWidget.HelpText()
} }