add keyboard shortcuts for back, forward, and play-pause

This commit is contained in:
Drew Weymouth
2023-01-19 17:28:01 -08:00
parent 9f42bd6607
commit e04b4d1902
+33
View File
@@ -1,6 +1,7 @@
package ui
import (
"runtime"
"supersonic/backend"
"supersonic/res"
"supersonic/ui/browsing"
@@ -8,13 +9,22 @@ import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/driver/desktop"
"fyne.io/fyne/v2/widget"
"github.com/dweymouth/go-subsonic"
)
var (
ShortcutBack = desktop.CustomShortcut{KeyName: fyne.KeyLeft, Modifier: fyne.KeyModifierAlt}
ShortcutBackDarwin = desktop.CustomShortcut{KeyName: fyne.KeyLeft, Modifier: fyne.KeyModifierSuper}
ShortcutForward = desktop.CustomShortcut{KeyName: fyne.KeyRight, Modifier: fyne.KeyModifierAlt}
ShortcutForwardDarwin = desktop.CustomShortcut{KeyName: fyne.KeyRight, Modifier: fyne.KeyModifierSuper}
)
type MainWindow struct {
Window fyne.Window
App *backend.App
Router browsing.Router
BrowsingPane *browsing.BrowsingPane
BottomPanel *BottomPanel
@@ -28,6 +38,7 @@ var (
func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App) MainWindow {
m := MainWindow{
App: app,
Window: fyneApp.NewWindow(appName),
BrowsingPane: browsing.NewBrowsingPane(app),
}
@@ -50,6 +61,7 @@ func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App) MainWindo
m.Router.OpenRoute(HomePage)
})
m.addNavigationButtons()
m.addShortcuts()
return m
}
@@ -75,6 +87,27 @@ func (m *MainWindow) addNavigationButtons() {
})
}
func (m *MainWindow) addShortcuts() {
back := &ShortcutBack
fwd := &ShortcutForward
if runtime.GOOS == "darwin" {
back = &ShortcutBackDarwin
fwd = &ShortcutForwardDarwin
}
m.Canvas().AddShortcut(back, func(_ fyne.Shortcut) {
m.BrowsingPane.GoBack()
})
m.Canvas().AddShortcut(fwd, func(_ fyne.Shortcut) {
m.BrowsingPane.GoForward()
})
m.Canvas().SetOnTypedKey(func(e *fyne.KeyEvent) {
if e.Name == fyne.KeySpace {
m.App.Player.PlayPause()
}
})
}
func (m *MainWindow) Show() {
m.Window.Show()
}